Snippets

Lucas Correia 4.4 Patch

Created by Lucas Correia last modified
1
(function(b,a){typeof exports==="object"&&typeof module!=="undefined"?(module.exports=a()):typeof define==="function"&&define.amd?define(a):(b.moment=a())})(this,function(){var ce;function eG(){return ce.apply(null,arguments)}function aV(e8){ce=e8}function Z(e8){return e8 instanceof Array||Object.prototype.toString.call(e8)==="[object Array]"}function z(e8){return e8!=null&&Object.prototype.toString.call(e8)==="[object Object]"}function cl(e9){if(Object.getOwnPropertyNames){return Object.getOwnPropertyNames(e9).length===0}else{var e8;for(e8 in e9){if(e9.hasOwnProperty(e8)){return false}}return true}}function J(e8){return e8===void 0}function t(e8){return typeof e8==="number"||Object.prototype.toString.call(e8)==="[object Number]"}function ez(e8){return e8 instanceof Date||Object.prototype.toString.call(e8)==="[object Date]"}function br(e8,fb){var fa=[],e9;for(e9=0;e9<e8.length;++e9){fa.push(fb(e8[e9],e9))}return fa}function dp(e9,e8){return Object.prototype.hasOwnProperty.call(e9,e8)}function e1(e9,e8){for(var fa in e8){if(dp(e8,fa)){e9[fa]=e8[fa]}}if(dp(e8,"toString")){e9.toString=e8.toString}if(dp(e8,"valueOf")){e9.valueOf=e8.valueOf}return e9}function cz(fa,fb,e8,e9){return ag(fa,fb,e8,e9,true).utc()}function cv(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false,parsedDateParts:[],meridiem:null,rfc2822:false,weekdayMismatch:false}}function bf(e8){if(e8._pf==null){e8._pf=cv()}return e8._pf}var dt;if(Array.prototype.some){dt=Array.prototype.some}else{dt=function(e9){var fb=Object(this);var e8=fb.length>>>0;for(var fa=0;fa<e8;fa++){if(fa in fb&&e9.call(this,fb[fa],fa,fb)){return true}}return false}}function ar(e9){if(e9._isValid==null){var fa=bf(e9);var fb=dt.call(fa.parsedDateParts,function(fc){return fc!=null});var e8=!isNaN(e9._d.getTime())&&fa.overflow<0&&!fa.empty&&!fa.invalidMonth&&!fa.invalidWeekday&&!fa.weekdayMismatch&&!fa.nullInput&&!fa.invalidFormat&&!fa.userInvalidated&&(!fa.meridiem||fa.meridiem&&fb);if(e9._strict){e8=e8&&fa.charsLeftOver===0&&fa.unusedTokens.length===0&&fa.bigHour===undefined}if(Object.isFrozen==null||!Object.isFrozen(e9)){e9._isValid=e8}else{return e8}}return e9._isValid}function R(e9){var e8=cz(NaN);if(e9!=null){e1(bf(e8),e9)}else{bf(e8).userInvalidated=true}return e8}var cW=eG.momentProperties=[];function s(fc,fb){var e8,fa,e9;if(!J(fb._isAMomentObject)){fc._isAMomentObject=fb._isAMomentObject}if(!J(fb._i)){fc._i=fb._i}if(!J(fb._f)){fc._f=fb._f}if(!J(fb._l)){fc._l=fb._l}if(!J(fb._strict)){fc._strict=fb._strict}if(!J(fb._tzm)){fc._tzm=fb._tzm}if(!J(fb._isUTC)){fc._isUTC=fb._isUTC}if(!J(fb._offset)){fc._offset=fb._offset}if(!J(fb._pf)){fc._pf=bf(fb)}if(!J(fb._locale)){fc._locale=fb._locale}if(cW.length>0){for(e8=0;e8<cW.length;e8++){fa=cW[e8];e9=fb[fa];if(!J(e9)){fc[fa]=e9}}}return fc}var dh=false;function eu(e8){s(this,e8);this._d=new Date(e8._d!=null?e8._d.getTime():NaN);if(!this.isValid()){this._d=new Date(NaN)}if(dh===false){dh=true;eG.updateOffset(this);dh=false}}function cf(e8){return e8 instanceof eu||e8!=null&&e8._isAMomentObject!=null}function dl(e8){if(e8<0){return Math.ceil(e8)||0}else{return Math.floor(e8)}}function cT(e8){var fa=+e8,e9=0;if(fa!==0&&isFinite(fa)){e9=dl(fa)}return e9}function b3(fd,fc,e9){var e8=Math.min(fd.length,fc.length),fa=Math.abs(fd.length-fc.length),fe=0,fb;for(fb=0;fb<e8;fb++){if(e9&&fd[fb]!==fc[fb]||!e9&&cT(fd[fb])!==cT(fc[fb])){fe++}}return fe+fa}function dg(e8){if(eG.suppressDeprecationWarnings===false&&typeof console!=="undefined"&&console.warn){console.warn("Deprecation warning: "+e8)}}function ei(e9,e8){var fa=true;return e1(function(){if(eG.deprecationHandler!=null){eG.deprecationHandler(null,e9)}if(fa){var fc=[];var fb;for(var fe=0;fe<arguments.length;fe++){fb="";if(typeof arguments[fe]==="object"){fb+="\n["+fe+"] ";for(var fd in arguments[0]){fb+=fd+": "+arguments[0][fd]+", "}fb=fb.slice(0,-2)}else{fb=arguments[fe]}fc.push(fb)}dg(e9+"\nArguments: "+Array.prototype.slice.call(fc).join("")+"\n"+(new Error).stack);fa=false}return e8.apply(this,arguments)},e8)}var ae={};function eT(e8,e9){if(eG.deprecationHandler!=null){eG.deprecationHandler(e8,e9)}if(!ae[e8]){dg(e9);ae[e8]=true}}eG.suppressDeprecationWarnings=false;eG.deprecationHandler=null;function ba(e8){return e8 instanceof Function||Object.prototype.toString.call(e8)==="[object Function]"}function dr(e8){var fa,e9;for(e9 in e8){fa=e8[e9];if(ba(fa)){this[e9]=fa}else{this["_"+e9]=fa}}this._config=e8;this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function ea(fa,e8){var e9=e1({},fa),fb;for(fb in e8){if(dp(e8,fb)){if(z(fa[fb])&&z(e8[fb])){e9[fb]={};e1(e9[fb],fa[fb]);e1(e9[fb],e8[fb])}else{if(e8[fb]!=null){e9[fb]=e8[fb]}else{delete e9[fb]}}}}for(fb in fa){if(dp(fa,fb)&&!dp(e8,fb)&&z(fa[fb])){e9[fb]=e1({},e9[fb])}}return e9}function cG(e8){if(e8!=null){this.set(e8)}}var b0;if(Object.keys){b0=Object.keys}else{b0=function(fa){var e9,e8=[];for(e9 in fa){if(dp(fa,e9)){e8.push(e9)}}return e8}}var cn={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function d(fa,fb,e9){var e8=this._calendar[fa]||this._calendar.sameElse;return ba(e8)?e8.call(fb,e9):e8}var d0={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function cN(e8){var e9=this._longDateFormat[e8],fa=this._longDateFormat[e8.toUpperCase()];if(e9||!fa){return e9}this._longDateFormat[e8]=fa.replace(/MMMM|MM|DD|dddd/g,function(fb){return fb.slice(1)});return this._longDateFormat[e8]}var ap="Invalid date";function es(){return this._invalidDate}var ca="%d";var e6=/\d{1,2}/;function eE(e8){return this._ordinal.replace("%d",e8)}var eD={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function X(fb,fa,e9,fc){var e8=this._relativeTime[e9];return ba(e8)?e8(fb,fa,e9,fc):e8.replace(/%d/i,fb)}function d1(fa,e8){var e9=this._relativeTime[fa>0?"future":"past"];return ba(e9)?e9(e8):e9.replace(/%s/i,e8)}var cO={};function ci(fa,e8){var e9=fa.toLowerCase();cO[e9]=cO[e9+"s"]=cO[e8]=fa}function cS(e8){return typeof e8==="string"?cO[e8]||cO[e8.toLowerCase()]:undefined}function dO(fa){var e9={},e8,fb;for(fb in fa){if(dp(fa,fb)){e8=cS(fb);if(e8){e9[e8]=fa[fb]}}}return e9}var bw={};function dZ(e9,e8){bw[e9]=e8}function bt(e8){var e9=[];for(var fa in e8){e9.push({unit:fa,priority:bw[fa]})}e9.sort(function(fc,fb){return fc.priority-fb.priority});return e9}function cs(fd,fc,e9){var fb=""+Math.abs(fd),fa=fc-fb.length,e8=fd>=0;return(e8?e9?"+":"":"-")+Math.pow(10,Math.max(0,fa)).toString().substr(1)+fb}var bU=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;var bT=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;var bS={};var bd={};function cB(e9,fa,e8,fc){var fb=fc;if(typeof fc==="string"){fb=function(){return this[fc]()}}if(e9){bd[e9]=fb}if(fa){bd[fa[0]]=function(){return cs(fb.apply(this,arguments),fa[1],fa[2])}}if(e8){bd[e8]=function(){return this.localeData().ordinal(fb.apply(this,arguments),e9)}}}function aA(e8){if(e8.match(/\[[\s\S]/)){return e8.replace(/^\[|\]$/g,"")}return e8.replace(/\\/g,"")}function bB(fa){var fb=fa.match(bU),e8,e9;for(e8=0,e9=fb.length;e8<e9;e8++){if(bd[fb[e8]]){fb[e8]=bd[fb[e8]]}else{fb[e8]=aA(fb[e8])}}return function(fe){var fc="",fd;for(fd=0;fd<e9;fd++){fc+=ba(fb[fd])?fb[fd].call(fe,fa):fb[fd]}return fc}}function aj(e8,e9){if(!e8.isValid()){return e8.localeData().invalidDate()}e9=bJ(e9,e8.localeData());bS[e9]=bS[e9]||bB(e9);return bS[e9](e8)}function bJ(fb,e8){var e9=5;function fa(fc){return e8.longDateFormat(fc)||fc}bT.lastIndex=0;while(e9>=0&&bT.test(fb)){fb=fb.replace(bT,fa);bT.lastIndex=0;e9-=1}return fb}var aO=/\d/;var aN=/\d\d/;var aM=/\d{3}/;var aL=/\d{4}/;var aK=/[+-]?\d{6}/;var av=/\d\d?/;var co=/\d\d\d\d?/;var eh=/\d\d\d\d\d\d?/;var au=/\d{1,3}/;var at=/\d{1,4}/;var aq=/[+-]?\d{1,6}/;var u=/\d+/;var F=/[+-]?\d+/;var bL=/Z|[+-]\d\d:?\d\d/gi;var cI=/Z|[+-]\d\d(?::?\d\d)?/gi;var eU=/[+-]?\d+(\.\d{1,3})?/;var bc=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;var a7={};function bh(e8,e9,fa){a7[e8]=ba(e9)?e9:function(fc,fb){return fc&&fa?fa:e9}}function bI(e9,e8){if(!dp(a7,e9)){return new RegExp(dm(e9))}return a7[e9](e8._strict,e8._locale)}function dm(e8){return ck(e8.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e9,fd,fc,fb,fa){return fd||fc||fb||fa}))}function ck(e8){return e8.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var h={};function bY(e9,fb){var e8,fa=fb;if(typeof e9==="string"){e9=[e9]}if(t(fb)){fa=function(fc,fd){fd[fb]=cT(fc)}}for(e8=0;e8<e9.length;e8++){h[e9[e8]]=fa}}function ab(e8,e9){bY(e8,function(fa,fd,fb,fc){fb._w=fb._w||{};e9(fa,fb._w,fb,fc)})}function y(fa,e8,e9){if(e8!=null&&dp(h,fa)){h[fa](e8,e9._a,e9,fa)}}var eV=0;var k=1;var ex=2;var eK=3;var dL=4;var am=5;var bN=6;var cm=7;var j=8;cB("Y",0,0,function(){var e8=this.year();return e8<=9999?""+e8:"+"+e8});cB(0,["YY",2],0,function(){return this.year()%100});cB(0,["YYYY",4],0,"year");cB(0,["YYYYY",5],0,"year");cB(0,["YYYYYY",6,true],0,"year");ci("year","y");dZ("year",1);bh("Y",F);bh("YY",av,aN);bh("YYYY",at,aL);bh("YYYYY",aq,aK);bh("YYYYYY",aq,aK);bY(["YYYYY","YYYYYY"],eV);bY("YYYY",function(e8,e9){e9[eV]=e8.length===2?eG.parseTwoDigitYear(e8):cT(e8)});bY("YY",function(e8,e9){e9[eV]=eG.parseTwoDigitYear(e8)});bY("Y",function(e8,e9){e9[eV]=parseInt(e8,10)});function dJ(e8){return d3(e8)?366:365}function d3(e8){return e8%4===0&&e8%100!==0||e8%400===0}eG.parseTwoDigitYear=function(e8){return cT(e8)+(cT(e8)>68?1900:2000)};var cK=ef("FullYear",true);function cZ(){return d3(this.year())}function ef(e8,e9){return function(fa){if(fa!=null){aQ(this,e8,fa);eG.updateOffset(this,e9);return this}else{return dE(this,e8)}}}function dE(e9,e8){return e9.isValid()?e9._d["get"+(e9._isUTC?"UTC":"")+e8]():NaN}function aQ(e9,e8,fa){if(e9.isValid()&&!isNaN(fa)){if(e8==="FullYear"&&d3(e9.year())&&e9.month()===1&&e9.date()===29){e9._d["set"+(e9._isUTC?"UTC":"")+e8](fa,e9.month(),bK(fa,e9.month()))}else{e9._d["set"+(e9._isUTC?"UTC":"")+e8](fa)}}}function aD(e8){e8=cS(e8);if(ba(this[e8])){return this[e8]()}return this}function ax(e8,fb){if(typeof e8==="object"){e8=dO(e8);var fa=bt(e8);for(var e9=0;e9<fa.length;e9++){this[fa[e9].unit](e8[fa[e9].unit])}}else{e8=cS(e8);if(ba(this[e8])){return this[e8](fb)}}return this}function ee(e9,e8){return(e9%e8+e8)%e8}var cU;if(Array.prototype.indexOf){cU=Array.prototype.indexOf}else{cU=function(e9){var e8;for(e8=0;e8<this.length;++e8){if(this[e8]===e9){return e8}}return -1}}function bK(e9,fa){if(isNaN(e9)||isNaN(fa)){return NaN}var e8=ee(fa,12);e9+=(fa-e8)/12;return e8===1?d3(e9)?29:28:31-e8%7%2}cB("M",["MM",2],"Mo",function(){return this.month()+1});cB("MMM",0,0,function(e8){return this.localeData().monthsShort(this,e8)});cB("MMMM",0,0,function(e8){return this.localeData().months(this,e8)});ci("month","M");dZ("month",8);bh("M",av);bh("MM",av,aN);bh("MMM",function(e9,e8){return e8.monthsShortRegex(e9)});bh("MMMM",function(e9,e8){return e8.monthsRegex(e9)});bY(["M","MM"],function(e8,e9){e9[k]=cT(e8)-1});bY(["MMM","MMMM"],function(e8,fc,e9,fa){var fb=e9._locale.monthsParse(e8,fa,e9._strict);if(fb!=null){fc[k]=fb}else{bf(e9).invalidMonth=e8}});var b7=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;var T="January_February_March_April_May_June_July_August_September_October_November_December".split("_");function a5(e8,e9){if(!e8){return Z(this._months)?this._months:this._months.standalone}return Z(this._months)?this._months[e8.month()]:this._months[(this._months.isFormat||b7).test(e9)?"format":"standalone"][e8.month()]}var d4="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function be(e8,e9){if(!e8){return Z(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}return Z(this._monthsShort)?this._monthsShort[e8.month()]:this._monthsShort[b7.test(e9)?"format":"standalone"][e8.month()]}function bG(e9,fe,e8){var fb,fc,fd,fa=e9.toLocaleLowerCase();if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];for(fb=0;fb<12;++fb){fd=cz([2000,fb]);this._shortMonthsParse[fb]=this.monthsShort(fd,"").toLocaleLowerCase();this._longMonthsParse[fb]=this.months(fd,"").toLocaleLowerCase()}}if(e8){if(fe==="MMM"){fc=cU.call(this._shortMonthsParse,fa);return fc!==-1?fc:null}else{fc=cU.call(this._longMonthsParse,fa);return fc!==-1?fc:null}}else{if(fe==="MMM"){fc=cU.call(this._shortMonthsParse,fa);if(fc!==-1){return fc}fc=cU.call(this._longMonthsParse,fa);return fc!==-1?fc:null}else{fc=cU.call(this._longMonthsParse,fa);if(fc!==-1){return fc}fc=cU.call(this._shortMonthsParse,fa);return fc!==-1?fc:null}}}function de(e9,fd,e8){var fa,fc,fb;if(this._monthsParseExact){return bG.call(this,e9,fd,e8)}if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[]}for(fa=0;fa<12;fa++){fc=cz([2000,fa]);if(e8&&!this._longMonthsParse[fa]){this._longMonthsParse[fa]=new RegExp("^"+this.months(fc,"").replace(".","")+"$","i");this._shortMonthsParse[fa]=new RegExp("^"+this.monthsShort(fc,"").replace(".","")+"$","i")}if(!e8&&!this._monthsParse[fa]){fb="^"+this.months(fc,"")+"|^"+this.monthsShort(fc,"");this._monthsParse[fa]=new RegExp(fb.replace(".",""),"i")}if(e8&&fd==="MMMM"&&this._longMonthsParse[fa].test(e9)){return fa}else{if(e8&&fd==="MMM"&&this._shortMonthsParse[fa].test(e9)){return fa}else{if(!e8&&this._monthsParse[fa].test(e9)){return fa}}}}}function aZ(e8,e9){var fa;if(!e8.isValid()){return e8}if(typeof e9==="string"){if(/^\d+$/.test(e9)){e9=cT(e9)}else{e9=e8.localeData().monthsParse(e9);if(!t(e9)){return e8}}}fa=Math.min(e8.date(),bK(e8.year(),e9));e8._d["set"+(e8._isUTC?"UTC":"")+"Month"](e9,fa);return e8}function eJ(e8){if(e8!=null){aZ(this,e8);eG.updateOffset(this,true);return this}else{return dE(this,"Month")}}function bQ(){return bK(this.year(),this.month())}var dj=bc;function dn(e8){if(this._monthsParseExact){if(!dp(this,"_monthsRegex")){dq.call(this)}if(e8){return this._monthsShortStrictRegex}else{return this._monthsShortRegex}}else{if(!dp(this,"_monthsShortRegex")){this._monthsShortRegex=dj}return this._monthsShortStrictRegex&&e8?this._monthsShortStrictRegex:this._monthsShortRegex}}var eB=bc;function c2(e8){if(this._monthsParseExact){if(!dp(this,"_monthsRegex")){dq.call(this)}if(e8){return this._monthsStrictRegex}else{return this._monthsRegex}}else{if(!dp(this,"_monthsRegex")){this._monthsRegex=eB}return this._monthsStrictRegex&&e8?this._monthsStrictRegex:this._monthsRegex}}function dq(){function fd(ff,fe){return fe.length-ff.length}var fc=[],e8=[],fb=[],e9,fa;for(e9=0;e9<12;e9++){fa=cz([2000,e9]);fc.push(this.monthsShort(fa,""));e8.push(this.months(fa,""));fb.push(this.months(fa,""));fb.push(this.monthsShort(fa,""))}fc.sort(fd);e8.sort(fd);fb.sort(fd);for(e9=0;e9<12;e9++){fc[e9]=ck(fc[e9]);e8[e9]=ck(e8[e9])}for(e9=0;e9<24;e9++){fb[e9]=ck(fb[e9])}this._monthsRegex=new RegExp("^("+fb.join("|")+")","i");this._monthsShortRegex=this._monthsRegex;this._monthsStrictRegex=new RegExp("^("+e8.join("|")+")","i");this._monthsShortStrictRegex=new RegExp("^("+fc.join("|")+")","i")}function eb(ff,e8,fd,fc,fe,fb,fa){var e9=new Date(ff,e8,fd,fc,fe,fb,fa);if(ff<100&&ff>=0&&isFinite(e9.getFullYear())){e9.setFullYear(ff)}return e9}function dy(e9){var e8=new Date(Date.UTC.apply(null,arguments));if(e9<100&&e9>=0&&isFinite(e8.getUTCFullYear())){e8.setUTCFullYear(e9)}return e8}function bm(e9,fc,fb){var e8=7+fc-fb,fa=(7+dy(e9,0,e8).getUTCDay()-fc)%7;return -fa+e8-1}function bE(fb,e9,fa,fh,ff){var fg=(7+fa-fh)%7,e8=bm(fb,fh,ff),fd=1+7*(e9-1)+fg+e8,fe,fc;if(fd<=0){fe=fb-1;fc=dJ(fe)+fd}else{if(fd>dJ(fb)){fe=fb+1;fc=fd-dJ(fb)}else{fe=fb;fc=fd}}return{year:fe,dayOfYear:fc}}function ev(fc,fe,fd){var fa=bm(fc.year(),fe,fd),fb=Math.floor((fc.dayOfYear()-fa-1)/7)+1,e8,e9;if(fb<1){e9=fc.year()-1;e8=fb+I(e9,fe,fd)}else{if(fb>I(fc.year(),fe,fd)){e8=fb-I(fc.year(),fe,fd);e9=fc.year()+1}else{e9=fc.year();e8=fb}}return{week:e8,year:e9}}function I(e9,fc,fa){var e8=bm(e9,fc,fa),fb=bm(e9+1,fc,fa);return(dJ(e9)-e8+fb)/7}cB("w",["ww",2],"wo","week");cB("W",["WW",2],"Wo","isoWeek");ci("week","w");ci("isoWeek","W");dZ("week",5);dZ("isoWeek",5);bh("w",av);bh("ww",av,aN);bh("W",av);bh("WW",av,aN);ab(["w","ww","W","WW"],function(e8,fb,e9,fa){fb[fa.substr(0,1)]=cT(e8)});function bs(e8){return ev(e8,this._week.dow,this._week.doy).week}var b6={dow:0,doy:6};function ak(){return this._week.dow}function dc(){return this._week.doy}function N(e8){var e9=this.localeData().week(this);return e8==null?e9:this.add((e8-e9)*7,"d")}function B(e8){var e9=ev(this,1,4).week;return e8==null?e9:this.add((e8-e9)*7,"d")}cB("d",0,"do","day");cB("dd",0,0,function(e8){return this.localeData().weekdaysMin(this,e8)});cB("ddd",0,0,function(e8){return this.localeData().weekdaysShort(this,e8)});cB("dddd",0,0,function(e8){return this.localeData().weekdays(this,e8)});cB("e",0,0,"weekday");cB("E",0,0,"isoWeekday");ci("day","d");ci("weekday","e");ci("isoWeekday","E");dZ("day",11);dZ("weekday",11);dZ("isoWeekday",11);bh("d",av);bh("e",av);bh("E",av);bh("dd",function(e9,e8){return e8.weekdaysMinRegex(e9)});bh("ddd",function(e9,e8){return e8.weekdaysShortRegex(e9)});bh("dddd",function(e9,e8){return e8.weekdaysRegex(e9)});ab(["dd","ddd","dddd"],function(e8,fb,e9,fa){var fc=e9._locale.weekdaysParse(e8,fa,e9._strict);if(fc!=null){fb.d=fc}else{bf(e9).invalidWeekday=e8}});ab(["d","e","E"],function(e8,fb,e9,fa){fb[fa]=cT(e8)});function bl(e9,e8){if(typeof e9!=="string"){return e9}if(!isNaN(e9)){return parseInt(e9,10)}e9=e8.weekdaysParse(e9);if(typeof e9==="number"){return e9}return null}function bH(e9,e8){if(typeof e9==="string"){return e8.weekdaysParse(e9)%7||7}return isNaN(e9)?null:e9}var W="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");function aB(e8,e9){if(!e8){return Z(this._weekdays)?this._weekdays:this._weekdays.standalone}return Z(this._weekdays)?this._weekdays[e8.day()]:this._weekdays[this._weekdays.isFormat.test(e9)?"format":"standalone"][e8.day()]}var m="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");function Q(e8){return e8?this._weekdaysShort[e8.day()]:this._weekdaysShort}var bx="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function eH(e8){return e8?this._weekdaysMin[e8.day()]:this._weekdaysMin}function dQ(fd,fe,e8){var fa,fb,fc,e9=fd.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(fa=0;fa<7;++fa){fc=cz([2000,1]).day(fa);this._minWeekdaysParse[fa]=this.weekdaysMin(fc,"").toLocaleLowerCase();this._shortWeekdaysParse[fa]=this.weekdaysShort(fc,"").toLocaleLowerCase();this._weekdaysParse[fa]=this.weekdays(fc,"").toLocaleLowerCase()}}if(e8){if(fe==="dddd"){fb=cU.call(this._weekdaysParse,e9);return fb!==-1?fb:null}else{if(fe==="ddd"){fb=cU.call(this._shortWeekdaysParse,e9);return fb!==-1?fb:null}else{fb=cU.call(this._minWeekdaysParse,e9);return fb!==-1?fb:null}}}else{if(fe==="dddd"){fb=cU.call(this._weekdaysParse,e9);if(fb!==-1){return fb}fb=cU.call(this._shortWeekdaysParse,e9);if(fb!==-1){return fb}fb=cU.call(this._minWeekdaysParse,e9);return fb!==-1?fb:null}else{if(fe==="ddd"){fb=cU.call(this._shortWeekdaysParse,e9);if(fb!==-1){return fb}fb=cU.call(this._weekdaysParse,e9);if(fb!==-1){return fb}fb=cU.call(this._minWeekdaysParse,e9);return fb!==-1?fb:null}else{fb=cU.call(this._minWeekdaysParse,e9);if(fb!==-1){return fb}fb=cU.call(this._weekdaysParse,e9);if(fb!==-1){return fb}fb=cU.call(this._shortWeekdaysParse,e9);return fb!==-1?fb:null}}}}function bP(fc,fd,e8){var e9,fb,fa;if(this._weekdaysParseExact){return dQ.call(this,fc,fd,e8)}if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(e9=0;e9<7;e9++){fb=cz([2000,1]).day(e9);if(e8&&!this._fullWeekdaysParse[e9]){this._fullWeekdaysParse[e9]=new RegExp("^"+this.weekdays(fb,"").replace(".",".?")+"$","i");this._shortWeekdaysParse[e9]=new RegExp("^"+this.weekdaysShort(fb,"").replace(".",".?")+"$","i");this._minWeekdaysParse[e9]=new RegExp("^"+this.weekdaysMin(fb,"").replace(".",".?")+"$","i")}if(!this._weekdaysParse[e9]){fa="^"+this.weekdays(fb,"")+"|^"+this.weekdaysShort(fb,"")+"|^"+this.weekdaysMin(fb,"");this._weekdaysParse[e9]=new RegExp(fa.replace(".",""),"i")}if(e8&&fd==="dddd"&&this._fullWeekdaysParse[e9].test(fc)){return e9}else{if(e8&&fd==="ddd"&&this._shortWeekdaysParse[e9].test(fc)){return e9}else{if(e8&&fd==="dd"&&this._minWeekdaysParse[e9].test(fc)){return e9}else{if(!e8&&this._weekdaysParse[e9].test(fc)){return e9}}}}}}function en(e9){if(!this.isValid()){return e9!=null?this:NaN}var e8=this._isUTC?this._d.getUTCDay():this._d.getDay();if(e9!=null){e9=bl(e9,this.localeData());return this.add(e9-e8,"d")}else{return e8}}function ah(e8){if(!this.isValid()){return e8!=null?this:NaN}var e9=(this.day()+7-this.localeData()._week.dow)%7;return e8==null?e9:this.add(e8-e9,"d")}function cx(e8){if(!this.isValid()){return e8!=null?this:NaN}if(e8!=null){var e9=bH(e8,this.localeData());return this.day(this.day()%7?e9:e9-7)}else{return this.day()||7}}var af=bc;function eX(e8){if(this._weekdaysParseExact){if(!dp(this,"_weekdaysRegex")){D.call(this)}if(e8){return this._weekdaysStrictRegex}else{return this._weekdaysRegex}}else{if(!dp(this,"_weekdaysRegex")){this._weekdaysRegex=af}return this._weekdaysStrictRegex&&e8?this._weekdaysStrictRegex:this._weekdaysRegex}}var A=bc;function aJ(e8){if(this._weekdaysParseExact){if(!dp(this,"_weekdaysRegex")){D.call(this)}if(e8){return this._weekdaysShortStrictRegex}else{return this._weekdaysShortRegex}}else{if(!dp(this,"_weekdaysShortRegex")){this._weekdaysShortRegex=A}return this._weekdaysShortStrictRegex&&e8?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}var dX=bc;function H(e8){if(this._weekdaysParseExact){if(!dp(this,"_weekdaysRegex")){D.call(this)}if(e8){return this._weekdaysMinStrictRegex}else{return this._weekdaysMinRegex}}else{if(!dp(this,"_weekdaysMinRegex")){this._weekdaysMinRegex=dX}return this._weekdaysMinStrictRegex&&e8?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function D(){function fb(fj,fi){return fi.length-fj.length}var fd=[],fe=[],fh=[],e8=[],fc,fa,e9,ff,fg;for(fc=0;fc<7;fc++){fa=cz([2000,1]).day(fc);e9=this.weekdaysMin(fa,"");ff=this.weekdaysShort(fa,"");fg=this.weekdays(fa,"");fd.push(e9);fe.push(ff);fh.push(fg);e8.push(e9);e8.push(ff);e8.push(fg)}fd.sort(fb);fe.sort(fb);fh.sort(fb);e8.sort(fb);for(fc=0;fc<7;fc++){fe[fc]=ck(fe[fc]);fh[fc]=ck(fh[fc]);e8[fc]=ck(e8[fc])}this._weekdaysRegex=new RegExp("^("+e8.join("|")+")","i");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp("^("+fh.join("|")+")","i");this._weekdaysShortStrictRegex=new RegExp("^("+fe.join("|")+")","i");this._weekdaysMinStrictRegex=new RegExp("^("+fd.join("|")+")","i")}function dC(){return this.hours()%12||12}function S(){return this.hours()||24}cB("H",["HH",2],0,"hour");cB("h",["hh",2],0,dC);cB("k",["kk",2],0,S);cB("hmm",0,0,function(){return""+dC.apply(this)+cs(this.minutes(),2)});cB("hmmss",0,0,function(){return""+dC.apply(this)+cs(this.minutes(),2)+cs(this.seconds(),2)});cB("Hmm",0,0,function(){return""+this.hours()+cs(this.minutes(),2)});cB("Hmmss",0,0,function(){return""+this.hours()+cs(this.minutes(),2)+cs(this.seconds(),2)});function eq(e8,e9){cB(e8,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e9)})}eq("a",true);eq("A",false);ci("hour","h");dZ("hour",13);function V(e9,e8){return e8._meridiemParse}bh("a",V);bh("A",V);bh("H",av);bh("h",av);bh("k",av);bh("HH",av,aN);bh("hh",av,aN);bh("kk",av,aN);bh("hmm",co);bh("hmmss",eh);bh("Hmm",co);bh("Hmmss",eh);bY(["H","HH"],eK);bY(["k","kk"],function(e9,fb,fa){var e8=cT(e9);fb[eK]=e8===24?0:e8});bY(["a","A"],function(e8,fa,e9){e9._isPm=e9._locale.isPM(e8);e9._meridiem=e8});bY(["h","hh"],function(e8,fa,e9){fa[eK]=cT(e8);bf(e9).bigHour=true});bY("hmm",function(e8,fb,e9){var fa=e8.length-2;fb[eK]=cT(e8.substr(0,fa));fb[dL]=cT(e8.substr(fa));bf(e9).bigHour=true});bY("hmmss",function(e8,fc,e9){var fb=e8.length-4;var fa=e8.length-2;fc[eK]=cT(e8.substr(0,fb));fc[dL]=cT(e8.substr(fb,2));fc[am]=cT(e8.substr(fa));bf(e9).bigHour=true});bY("Hmm",function(e8,fb,e9){var fa=e8.length-2;fb[eK]=cT(e8.substr(0,fa));fb[dL]=cT(e8.substr(fa))});bY("Hmmss",function(e8,fc,e9){var fb=e8.length-4;var fa=e8.length-2;fc[eK]=cT(e8.substr(0,fb));fc[dL]=cT(e8.substr(fb,2));fc[am]=cT(e8.substr(fa))});function ch(e8){return(e8+"").toLowerCase().charAt(0)==="p"}var b9=/[ap]\.?m?\.?/i;function aX(e8,e9,fa){if(e8>11){return fa?"pm":"PM"}else{return fa?"am":"AM"}}var ct=ef("Hours",true);var b5={calendar:cn,longDateFormat:d0,invalidDate:ap,ordinal:ca,dayOfMonthOrdinalParse:e6,relativeTime:eD,months:T,monthsShort:d4,week:b6,weekdays:W,weekdaysMin:bx,weekdaysShort:m,meridiemParse:b9};var bC={};var n={};var c1;function ds(e8){return e8?e8.toLowerCase().replace("_","-"):e8}function c0(fd){var fb=0,e9,fc,e8,fa;while(fb<fd.length){fa=ds(fd[fb]).split("-");e9=fa.length;fc=ds(fd[fb+1]);fc=fc?fc.split("-"):null;while(e9>0){e8=aF(fa.slice(0,e9).join("-"));if(e8){return e8}if(fc&&fc.length>=e9&&b3(fa,fc,true)>=e9-1){break}e9--}fb++}return c1}function aF(e8){var fb=null;if(!bC[e8]&&typeof module!=="undefined"&&module&&module.exports){try{fb=c1._abbr;var e9=require;e9("./locale/"+e8);E(fb)}catch(fa){}}return bC[e8]}function E(e9,e8){var fa;if(e9){if(J(e8)){fa=U(e9)}else{fa=cE(e9,e8)}if(fa){c1=fa}else{if(typeof console!=="undefined"&&console.warn){console.warn("Locale "+e9+" not found. Did you forget to load it?")}}}return c1._abbr}function cE(fa,e9){if(e9!==null){var e8,fb=b5;e9.abbr=fa;if(bC[fa]!=null){eT("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.");fb=bC[fa]._config}else{if(e9.parentLocale!=null){if(bC[e9.parentLocale]!=null){fb=bC[e9.parentLocale]._config}else{e8=aF(e9.parentLocale);if(e8!=null){fb=e8._config}else{if(!n[e9.parentLocale]){n[e9.parentLocale]=[]}n[e9.parentLocale].push({name:fa,config:e9});return null}}}}bC[fa]=new cG(ea(fb,e9));if(n[fa]){n[fa].forEach(function(fc){cE(fc.name,fc.config)})}E(fa);return bC[fa]}else{delete bC[fa];return null}}function eo(fa,e9){if(e9!=null){var e8,fc,fb=b5;fc=aF(fa);if(fc!=null){fb=fc._config}e9=ea(fb,e9);e8=new cG(e9);e8.parentLocale=bC[fa];bC[fa]=e8;E(fa)}else{if(bC[fa]!=null){if(bC[fa].parentLocale!=null){bC[fa]=bC[fa].parentLocale}else{if(bC[fa]!=null){delete bC[fa]}}}}return bC[fa]}function U(e9){var e8;if(e9&&e9._locale&&e9._locale._abbr){e9=e9._locale._abbr}if(!e9){return c1}if(!Z(e9)){e8=aF(e9);if(e8){return e8}e9=[e9]}return c0(e9)}function b8(){return b0(bC)}function cR(e8){var fa;var e9=e8._a;if(e9&&bf(e8).overflow===-2){fa=e9[k]<0||e9[k]>11?k:e9[ex]<1||e9[ex]>bK(e9[eV],e9[k])?ex:e9[eK]<0||e9[eK]>24||e9[eK]===24&&(e9[dL]!==0||e9[am]!==0||e9[bN]!==0)?eK:e9[dL]<0||e9[dL]>59?dL:e9[am]<0||e9[am]>59?am:e9[bN]<0||e9[bN]>999?bN:-1;if(bf(e8)._overflowDayOfYear&&(fa<eV||fa>ex)){fa=ex}if(bf(e8)._overflowWeeks&&fa===-1){fa=cm}if(bf(e8)._overflowWeekday&&fa===-1){fa=j}bf(e8).overflow=fa}return e8}function ec(e9,e8,fa){if(e9!=null){return e9}if(e8!=null){return e8}return fa}function a6(e9){var e8=new Date(eG.now());if(e9._useUTC){return[e8.getUTCFullYear(),e8.getUTCMonth(),e8.getUTCDate()]}return[e8.getFullYear(),e8.getMonth(),e8.getDate()]}function e(fc){var fd,fb,fa=[],e9,fe,e8;if(fc._d){return}e9=a6(fc);if(fc._w&&fc._a[ex]==null&&fc._a[k]==null){c5(fc)}if(fc._dayOfYear!=null){e8=ec(fc._a[eV],e9[eV]);if(fc._dayOfYear>dJ(e8)||fc._dayOfYear===0){bf(fc)._overflowDayOfYear=true}fb=dy(e8,0,fc._dayOfYear);fc._a[k]=fb.getUTCMonth();fc._a[ex]=fb.getUTCDate()}for(fd=0;fd<3&&fc._a[fd]==null;++fd){fc._a[fd]=fa[fd]=e9[fd]}for(;fd<7;fd++){fc._a[fd]=fa[fd]=fc._a[fd]==null?fd===2?1:0:fc._a[fd]}if(fc._a[eK]===24&&fc._a[dL]===0&&fc._a[am]===0&&fc._a[bN]===0){fc._nextDay=true;fc._a[eK]=0}fc._d=(fc._useUTC?dy:eb).apply(null,fa);fe=fc._useUTC?fc._d.getUTCDay():fc._d.getDay();if(fc._tzm!=null){fc._d.setUTCMinutes(fc._d.getUTCMinutes()-fc._tzm)}if(fc._nextDay){fc._a[eK]=24}if(fc._w&&typeof fc._w.d!=="undefined"&&fc._w.d!==fe){bf(fc).weekdayMismatch=true}}function c5(fb){var fe,e8,e9,fc,fh,ff,fg,fd;fe=fb._w;if(fe.GG!=null||fe.W!=null||fe.E!=null){fh=1;ff=4;e8=ec(fe.GG,fb._a[eV],ev(dF(),1,4).year);e9=ec(fe.W,1);fc=ec(fe.E,1);if(fc<1||fc>7){fd=true}}else{fh=fb._locale._week.dow;ff=fb._locale._week.doy;var fa=ev(dF(),fh,ff);e8=ec(fe.gg,fb._a[eV],fa.year);e9=ec(fe.w,fa.week);if(fe.d!=null){fc=fe.d;if(fc<0||fc>6){fd=true}}else{if(fe.e!=null){fc=fe.e+fh;if(fe.e<0||fe.e>6){fd=true}}else{fc=fh}}}if(e9<1||e9>I(e8,fh,ff)){bf(fb)._overflowWeeks=true}else{if(fd!=null){bf(fb)._overflowWeekday=true}else{fg=bE(e8,e9,fc,fh,ff);fb._a[eV]=fg.year;fb._dayOfYear=fg.dayOfYear}}}var l=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var aW=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var cJ=/Z|[+-]\d\d(?::?\d\d)?/;var cV=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/]];var cu=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]];var bZ=/^\/?Date\((\-?\d+)/i;function G(e9){var fd,fb,ff=e9._i,fe=l.exec(ff)||aW.exec(ff),fg,e8,fc,fa;if(fe){bf(e9).iso=true;for(fd=0,fb=cV.length;fd<fb;fd++){if(cV[fd][1].exec(fe[1])){e8=cV[fd][0];fg=cV[fd][2]!==false;break}}if(e8==null){e9._isValid=false;return}if(fe[3]){for(fd=0,fb=cu.length;fd<fb;fd++){if(cu[fd][1].exec(fe[3])){fc=(fe[2]||" ")+cu[fd][0];break}}if(fc==null){e9._isValid=false;return}}if(!fg&&fc!=null){e9._isValid=false;return}if(fe[4]){if(cJ.exec(fe[4])){fa="Z"}else{e9._isValid=false;return}}e9._f=e8+(fc||"")+(fa||"");b1(e9)}else{e9._isValid=false}}var dk=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function ew(fc,fb,fd,e9,fe,fa){var e8=[cr(fc),d4.indexOf(fb),parseInt(fd,10),parseInt(e9,10),parseInt(fe,10)];if(fa){e8.push(parseInt(fa,10))}return e8}function cr(e8){var e9=parseInt(e8,10);if(e9<=49){return 2000+e9}else{if(e9<=999){return 1900+e9}}return e9}function aP(e8){return e8.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}function az(e8,fc,fa){if(e8){var fb=m.indexOf(e8),e9=(new Date(fc[0],fc[1],fc[2])).getDay();if(fb!==e9){bf(fa).weekdayMismatch=true;fa._isValid=false;return false}}return true}var by={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function e4(fd,e9,fb){if(fd){return by[fd]}else{if(e9){return 0}else{var fc=parseInt(fb,10);var e8=fc%100,fa=(fc-e8)/100;return fa*60+e8}}}function bW(e9){var e8=dk.exec(aP(e9._i));if(e8){var fa=ew(e8[4],e8[3],e8[2],e8[5],e8[6],e8[7]);if(!az(e8[1],fa,e9)){return}e9._a=fa;e9._tzm=e4(e8[8],e8[9],e8[10]);e9._d=dy.apply(null,e9._a);e9._d.setUTCMinutes(e9._d.getUTCMinutes()-e9._tzm);bf(e9).rfc2822=true}else{e9._isValid=false}}function bg(e9){var e8=bZ.exec(e9._i);if(e8!==null){e9._d=new Date(+e8[1]);return}G(e9);if(e9._isValid===false){delete e9._isValid}else{return}bW(e9);if(e9._isValid===false){delete e9._isValid}else{return}eG.createFromInputFallback(e9)}eG.createFromInputFallback=ei("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e8){e8._d=new Date(e8._i+(e8._useUTC?" UTC":""))});eG.ISO_8601=function(){};eG.RFC_2822=function(){};function b1(fa){if(fa._f===eG.ISO_8601){G(fa);return}if(fa._f===eG.RFC_2822){bW(fa);return}fa._a=[];bf(fa).empty=true;var fd=""+fa._i,fc,e9,fg,fb,ff,e8=fd.length,fe=0;fg=bJ(fa._f,fa._locale).match(bU)||[];for(fc=0;fc<fg.length;fc++){fb=fg[fc];e9=(fd.match(bI(fb,fa))||[])[0];if(e9){ff=fd.substr(0,fd.indexOf(e9));if(ff.length>0){bf(fa).unusedInput.push(ff)}fd=fd.slice(fd.indexOf(e9)+e9.length);fe+=e9.length}if(bd[fb]){if(e9){bf(fa).empty=false}else{bf(fa).unusedTokens.push(fb)}y(fb,e9,fa)}else{if(fa._strict&&!e9){bf(fa).unusedTokens.push(fb)}}}bf(fa).charsLeftOver=e8-fe;if(fd.length>0){bf(fa).unusedInput.push(fd)}if(fa._a[eK]<=12&&bf(fa).bigHour===true&&fa._a[eK]>0){bf(fa).bigHour=undefined}bf(fa).parsedDateParts=fa._a.slice(0);bf(fa).meridiem=fa._meridiem;fa._a[eK]=ej(fa._locale,fa._a[eK],fa._meridiem);e(fa);cR(fa)}function ej(e8,fa,fb){var e9;if(fb==null){return fa}if(e8.meridiemHour!=null){return e8.meridiemHour(fa,fb)}else{if(e8.isPM!=null){e9=e8.isPM(fb);if(e9&&fa<12){fa+=12}if(!e9&&fa===12){fa=0}return fa}else{return fa}}}function dH(e8){var fc,fa,fb,e9,fd;if(e8._f.length===0){bf(e8).invalidFormat=true;e8._d=new Date(NaN);return}for(e9=0;e9<e8._f.length;e9++){fd=0;fc=s({},e8);if(e8._useUTC!=null){fc._useUTC=e8._useUTC}fc._f=e8._f[e9];b1(fc);if(!ar(fc)){continue}fd+=bf(fc).charsLeftOver;fd+=bf(fc).unusedTokens.length*10;bf(fc).score=fd;if(fb==null||fd<fb){fb=fd;fa=fc}}e1(e8,fa||fc)}function a8(e8){if(e8._d){return}var e9=dO(e8._i);e8._a=br([e9.year,e9.month,e9.day||e9.date,e9.hour,e9.minute,e9.second,e9.millisecond],function(fa){return fa&&parseInt(fa,10)});e(e8)}function ao(e8){var e9=new eu(cR(bv(e8)));if(e9._nextDay){e9.add(1,"d");e9._nextDay=undefined}return e9}function bv(e9){var e8=e9._i,fa=e9._f;e9._locale=e9._locale||U(e9._l);if(e8===null||fa===undefined&&e8===""){return R({nullInput:true})}if(typeof e8==="string"){e9._i=e8=e9._locale.preparse(e8)}if(cf(e8)){return new eu(cR(e8))}else{if(ez(e8)){e9._d=e8}else{if(Z(fa)){dH(e9)}else{if(fa){b1(e9)}else{cy(e9)}}}}if(!ar(e9)){e9._d=null}return e9}function cy(e9){var e8=e9._i;if(J(e8)){e9._d=new Date(eG.now())}else{if(ez(e8)){e9._d=new Date(e8.valueOf())}else{if(typeof e8==="string"){bg(e9)}else{if(Z(e8)){e9._a=br(e8.slice(0),function(fa){return parseInt(fa,10)});e(e9)}else{if(z(e8)){a8(e9)}else{if(t(e8)){e9._d=new Date(e8)}else{eG.createFromInputFallback(e9)}}}}}}}function ag(fb,fc,e8,fa,e9){var fd={};if(e8===true||e8===false){fa=e8;e8=undefined}if(z(fb)&&cl(fb)||Z(fb)&&fb.length===0){fb=undefined}fd._isAMomentObject=true;fd._useUTC=fd._isUTC=e9;fd._l=e8;fd._i=fb;fd._f=fc;fd._strict=fa;return ao(fd)}function dF(fa,fb,e8,e9){return ag(fa,fb,e8,e9,false)}var cM=ei("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e8=dF.apply(null,arguments);if(this.isValid()&&e8.isValid()){return e8<this?this:e8}else{return R()}});var er=ei("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e8=dF.apply(null,arguments);if(this.isValid()&&e8.isValid()){return e8>this?this:e8}else{return R()}});function e2(fa,fb){var e9,e8;if(fb.length===1&&Z(fb[0])){fb=fb[0]}if(!fb.length){return dF()}e9=fb[0];for(e8=1;e8<fb.length;++e8){if(!fb[e8].isValid()||fb[e8][fa](e9)){e9=fb[e8]}}return e9}function p(){var e8=[].slice.call(arguments,0);return e2("isBefore",e8)}function bp(){var e8=[].slice.call(arguments,0);return e2("isAfter",e8)}var cC=function(){return Date.now?Date.now():+new Date};var e0=["year","quarter","month","week","day","hour","minute","second","millisecond"];function aw(e9){for(var fb in e9){if(!(cU.call(e0,fb)!==-1&&(e9[fb]==null||!isNaN(e9[fb])))){return false}}var e8=false;for(var fa=0;fa<e0.length;++fa){if(e9[e0[fa]]){if(e8){return false}if(parseFloat(e9[e0[fa]])!==cT(e9[e0[fa]])){e8=true}}}return true}function w(){return this._isValid}function a0(){return di(NaN)}function dR(fd){var ff=dO(fd),fe=ff.year||0,e9=ff.quarter||0,fa=ff.month||0,e8=ff.week||0,fi=ff.day||0,fg=ff.hour||0,fc=ff.minute||0,fh=ff.second||0,fb=ff.millisecond||0;this._isValid=aw(ff);this._milliseconds=+fb+fh*1000+fc*60000+fg*1000*60*60;this._days=+fi+e8*7;this._months=+fa+e9*3+fe*12;this._data={};this._locale=U();this._bubble()}function ai(e8){return e8 instanceof dR}function em(e8){if(e8<0){return Math.round(-1*e8)*-1}else{return Math.round(e8)}}function bA(e8,e9){cB(e8,0,0,function(){var fb=this.utcOffset();var fa="+";if(fb<0){fb=-fb;fa="-"}return fa+cs(~~(fb/60),2)+e9+cs(~~fb%60,2)})}bA("Z",":");bA("ZZ","");bh("Z",cI);bh("ZZ",cI);bY(["Z","ZZ"],function(e8,fa,e9){e9._useUTC=true;e9._tzm=o(cI,e8)});var eF=/([\+\-]|\d\d)/gi;function o(fd,e9){var fb=(e9||"").match(fd);if(fb===null){return null}var e8=fb[fb.length-1]||[];var fc=(e8+"").match(eF)||["-",0,0];var fa=+(fc[1]*60)+cT(fc[2]);return fa===0?0:fc[0]==="+"?fa:-fa}function aG(e8,e9){var fa,fb;if(e9._isUTC){fa=e9.clone();fb=(cf(e8)||ez(e8)?e8.valueOf():dF(e8).valueOf())-fa.valueOf();fa._d.setTime(fa._d.valueOf()+fb);eG.updateOffset(fa,false);return fa}else{return dF(e8).local()}}function aS(e8){return -Math.round(e8._d.getTimezoneOffset()/15)*15}eG.updateOffset=function(){};function dz(e8,fb,fc){var fa=this._offset||0,e9;if(!this.isValid()){return e8!=null?this:NaN}if(e8!=null){if(typeof e8==="string"){e8=o(cI,e8);if(e8===null){return this}}else{if(Math.abs(e8)<16&&!fc){e8=e8*60}}if(!this._isUTC&&fb){e9=aS(this)}this._offset=e8;this._isUTC=true;if(e9!=null){this.add(e9,"m")}if(fa!==e8){if(!fb||this._changeInProgress){a3(this,di(e8-fa,"m"),1,false)}else{if(!this._changeInProgress){this._changeInProgress=true;eG.updateOffset(this,true);this._changeInProgress=null}}}return this}else{return this._isUTC?fa:aS(this)}}function du(e8,e9){if(e8!=null){if(typeof e8!=="string"){e8=-e8}this.utcOffset(e8,e9);return this}else{return -this.utcOffset()}}function a4(e8){return this.utcOffset(0,e8)}function dw(e8){if(this._isUTC){this.utcOffset(0,e8);this._isUTC=false;if(e8){this.subtract(aS(this),"m")}}return this}function cc(){if(this._tzm!=null){this.utcOffset(this._tzm,false,true)}else{if(typeof this._i==="string"){var e8=o(bL,this._i);if(e8!=null){this.utcOffset(e8)}else{this.utcOffset(0,true)}}}return this}function aE(e8){if(!this.isValid()){return false}e8=e8?dF(e8).utcOffset():0;return(this.utcOffset()-e8)%60===0}function aR(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function b(){if(!J(this._isDSTShifted)){return this._isDSTShifted}var e9={};s(e9,this);e9=bv(e9);if(e9._a){var e8=e9._isUTC?cz(e9._a):dF(e9._a);this._isDSTShifted=this.isValid()&&b3(e9._a,e8.toArray())>0}else{this._isDSTShifted=false}return this._isDSTShifted}function dA(){return this.isValid()?!this._isUTC:false}function bV(){return this.isValid()?this._isUTC:false}function dG(){return this.isValid()?this._isUTC&&this._offset===0:false}var ad=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;var cA=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function di(fa,fd){var fe=fa,fc=null,e9,fb,e8;if(ai(fa)){fe={ms:fa._milliseconds,d:fa._days,M:fa._months}}else{if(t(fa)){fe={};if(fd){fe[fd]=fa}else{fe.milliseconds=fa}}else{if(!!(fc=ad.exec(fa))){e9=fc[1]==="-"?-1:1;fe={y:0,d:cT(fc[ex])*e9,h:cT(fc[eK])*e9,m:cT(fc[dL])*e9,s:cT(fc[am])*e9,ms:cT(em(fc[bN]*1000))*e9}}else{if(!!(fc=cA.exec(fa))){e9=fc[1]==="-"?-1:fc[1]==="+"?1:1;fe={y:eW(fc[2],e9),M:eW(fc[3],e9),w:eW(fc[4],e9),d:eW(fc[5],e9),h:eW(fc[6],e9),m:eW(fc[7],e9),s:eW(fc[8],e9)}}else{if(fe==null){fe={}}else{if(typeof fe==="object"&&("from" in fe||"to" in fe)){e8=bR(dF(fe.from),dF(fe.to));fe={};fe.ms=e8.milliseconds;fe.M=e8.months}}}}}}fb=new dR(fe);if(ai(fa)&&dp(fa,"_locale")){fb._locale=fa._locale}return fb}di.fn=dR.prototype;di.invalid=a0;function eW(fa,e8){var e9=fa&&parseFloat(fa.replace(",","."));return(isNaN(e9)?0:e9)*e8}function dD(fa,e8){var e9={milliseconds:0,months:0};e9.months=e8.month()-fa.month()+(e8.year()-fa.year())*12;if(fa.clone().add(e9.months,"M").isAfter(e8)){--e9.months}e9.milliseconds=+e8-+fa.clone().add(e9.months,"M");return e9}function bR(fa,e8){var e9;if(!(fa.isValid()&&e8.isValid())){return{milliseconds:0,months:0}}e8=aG(e8,fa);if(fa.isBefore(e8)){e9=dD(fa,e8)}else{e9=dD(e8,fa);e9.milliseconds=-e9.milliseconds;e9.months=-e9.months}return e9}function a9(e9,e8){return function(fd,fc){var fb,fa;if(fc!==null&&!isNaN(+fc)){eT(e8,"moment()."+e8+"(period, number) is deprecated. Please use moment()."+e8+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.");fa=fd;fd=fc;fc=fa}fd=typeof fd==="string"?+fd:fd;fb=di(fd,fc);a3(this,fb,e9);return this}}function a3(fa,fd,fc,fb){var e9=fd._milliseconds,fe=em(fd._days),e8=em(fd._months);if(!fa.isValid()){return}fb=fb==null?true:fb;if(e8){aZ(fa,dE(fa,"Month")+e8*fc)}if(fe){aQ(fa,"Date",dE(fa,"Date")+fe*fc)}if(e9){fa._d.setTime(fa._d.valueOf()+e9*fc)}if(fb){eG.updateOffset(fa,fe||e8)}}var a2=a9(1,"add");var aC=a9(-1,"subtract");function ay(fa,e8){var e9=fa.diff(e8,"days",true);return e9<-6?"sameElse":e9<-1?"lastWeek":e9<0?"lastDay":e9<1?"sameDay":e9<2?"nextDay":e9<7?"nextWeek":"sameElse"}function cj(fd,e8){var fb=fd||dF(),fa=aG(fb,this).startOf("day"),fc=eG.calendarFormat(this,fa)||"sameElse";var e9=e8&&(ba(e8[fc])?e8[fc].call(this,fb):e8[fc]);return this.format(e9||this.localeData().calendar(fc,this,dF(fb)))}function dv(){return new eu(this)}function cH(e9,e8){var fa=cf(e9)?e9:dF(e9);if(!(this.isValid()&&fa.isValid())){return false}e8=cS(!J(e8)?e8:"millisecond");if(e8==="millisecond"){return this.valueOf()>fa.valueOf()}else{return fa.valueOf()<this.clone().startOf(e8).valueOf()}}function eR(e9,e8){var fa=cf(e9)?e9:dF(e9);if(!(this.isValid()&&fa.isValid())){return false}e8=cS(!J(e8)?e8:"millisecond");if(e8==="millisecond"){return this.valueOf()<fa.valueOf()}else{return this.clone().endOf(e8).valueOf()<fa.valueOf()}}function et(fb,fa,e8,e9){e9=e9||"()";return(e9[0]==="("?this.isAfter(fb,e8):!this.isBefore(fb,e8))&&(e9[1]===")"?this.isBefore(fa,e8):!this.isAfter(fa,e8))}function cL(e9,e8){var fb=cf(e9)?e9:dF(e9),fa;if(!(this.isValid()&&fb.isValid())){return false}e8=cS(e8||"millisecond");if(e8==="millisecond"){return this.valueOf()===fb.valueOf()}else{fa=fb.valueOf();return this.clone().startOf(e8).valueOf()<=fa&&fa<=this.clone().endOf(e8).valueOf()}}function eM(e9,e8){return this.isSame(e9,e8)||this.isAfter(e9,e8)}function eP(e9,e8){return this.isSame(e9,e8)||this.isBefore(e9,e8)}function O(fb,fa,e8){var fd,fc,e9;if(!this.isValid()){return NaN}fd=aG(fb,this);if(!fd.isValid()){return NaN}fc=(fd.utcOffset()-this.utcOffset())*60000;fa=cS(fa);switch(fa){case"year":e9=ep(this,fd)/12;break;case"month":e9=ep(this,fd);break;case"quarter":e9=ep(this,fd)/3;break;case"second":e9=(this-fd)/1000;break;case"minute":e9=(this-fd)/60000;break;case"hour":e9=(this-fd)/3600000;break;case"day":e9=(this-fd-fc)/86400000;break;case"week":e9=(this-fd-fc)/604800000;break;default:e9=this-fd}return e8?e9:dl(e9)}function ep(e9,e8){var fd=(e8.year()-e9.year())*12+(e8.month()-e9.month()),fa=e9.clone().add(fd,"months"),fb,fc;if(e8-fa<0){fb=e9.clone().add(fd-1,"months");fc=(e8-fa)/(fa-fb)}else{fb=e9.clone().add(fd+1,"months");fc=(e8-fa)/(fb-fa)}return -(fd+fc)||0}eG.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";eG.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";function d5(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function c7(fa){if(!this.isValid()){return null}var e9=fa!==true;var e8=e9?this.clone().utc():this;if(e8.year()<0||e8.year()>9999){return aj(e8,e9?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ")}if(ba(Date.prototype.toISOString)){if(e9){return this.toDate().toISOString()}else{return(new Date(this.valueOf()+this.utcOffset()*60*1000)).toISOString().replace("Z",aj(e8,"Z"))}}return aj(e8,e9?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function aU(){if(!this.isValid()){return"moment.invalid(/* "+this._i+" */)"}var fa="moment";var e8="";if(!this.isLocal()){fa=this.utcOffset()===0?"moment.utc":"moment.parseZone";e8="Z"}var fb="["+fa+'("]';var e9=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";var fd="-MM-DD[T]HH:mm:ss.SSS";var fc=e8+'[")]';return this.format(fb+e9+fd+fc)}function da(e9){if(!e9){e9=this.isUtc()?eG.defaultFormatUtc:eG.defaultFormat}var e8=aj(this,e9);return this.localeData().postformat(e8)}function dU(e9,e8){if(this.isValid()&&(cf(e9)&&e9.isValid()||dF(e9).isValid())){return di({to:this,from:e9}).locale(this.locale()).humanize(!e8)}else{return this.localeData().invalidDate()}}function dP(e8){return this.from(dF(),e8)}function al(e9,e8){if(this.isValid()&&(cf(e9)&&e9.isValid()||dF(e9).isValid())){return di({from:this,to:e9}).locale(this.locale()).humanize(!e8)}else{return this.localeData().invalidDate()}}function aT(e8){return this.to(dF(),e8)}function e7(e9){var e8;if(e9===undefined){return this._locale._abbr}else{e8=U(e9);if(e8!=null){this._locale=e8}return this}}var C=ei("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e8){if(e8===undefined){return this.localeData()}else{return this.locale(e8)}});function dV(){return this._locale}function cb(e8){e8=cS(e8);switch(e8){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}if(e8==="week"){this.weekday(0)}if(e8==="isoWeek"){this.isoWeekday(1)}if(e8==="quarter"){this.month(Math.floor(this.month()/3)*3)}return this}function eA(e8){e8=cS(e8);if(e8===undefined||e8==="millisecond"){return this}if(e8==="date"){e8="day"}return this.startOf(e8).add(1,e8==="isoWeek"?"week":e8).subtract(1,"ms")}function dY(){return this._d.valueOf()-(this._offset||0)*60000}function bD(){return Math.floor(this.valueOf()/1000)}function c4(){return new Date(this.valueOf())}function dN(){var e8=this;return[e8.year(),e8.month(),e8.date(),e8.hour(),e8.minute(),e8.second(),e8.millisecond()]}function dW(){var e8=this;return{years:e8.year(),months:e8.month(),date:e8.date(),hours:e8.hours(),minutes:e8.minutes(),seconds:e8.seconds(),milliseconds:e8.milliseconds()}}function db(){return this.isValid()?this.toISOString():null}function q(){return ar(this)}function dI(){return e1({},bf(this))}function cD(){return bf(this).overflow}function eS(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}cB(0,["gg",2],0,function(){return this.weekYear()%100});cB(0,["GG",2],0,function(){return this.isoWeekYear()%100});function aa(e9,e8){cB(0,[e9,e9.length],0,e8)}aa("gggg","weekYear");aa("ggggg","weekYear");aa("GGGG","isoWeekYear");aa("GGGGG","isoWeekYear");ci("weekYear","gg");ci("isoWeekYear","GG");dZ("weekYear",1);dZ("isoWeekYear",1);bh("G",F);bh("g",F);bh("GG",av,aN);bh("gg",av,aN);bh("GGGG",at,aL);bh("gggg",at,aL);bh("GGGGG",aq,aK);bh("ggggg",aq,aK);ab(["gggg","ggggg","GGGG","GGGGG"],function(e8,fb,e9,fa){fb[fa.substr(0,2)]=cT(e8)});ab(["gg","GG"],function(e8,fb,e9,fa){fb[fa]=eG.parseTwoDigitYear(e8)});function bu(e8){return cw.call(this,e8,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function d2(e8){return cw.call(this,e8,this.isoWeek(),this.isoWeekday(),1,4)}function dd(){return I(this.year(),1,4)}function M(){var e8=this.localeData()._week;return I(this.year(),e8.dow,e8.doy)}function cw(e8,e9,fb,fd,fc){var fa;if(e8==null){return ev(this,fd,fc).year}else{fa=I(e8,fd,fc);if(e9>fa){e9=fa}return bb.call(this,e8,e9,fb,fd,fc)}}function bb(fa,e9,fc,fe,fd){var fb=bE(fa,e9,fc,fe,fd),e8=dy(fb.year,0,fb.dayOfYear);this.year(e8.getUTCFullYear());this.month(e8.getUTCMonth());this.date(e8.getUTCDate());return this}cB("Q",0,"Qo","quarter");ci("quarter","Q");dZ("quarter",7);bh("Q",aO);bY("Q",function(e8,e9){e9[k]=(cT(e8)-1)*3});function b4(e8){return e8==null?Math.ceil((this.month()+1)/3):this.month((e8-1)*3+this.month()%3)}cB("D",["DD",2],"Do","date");ci("date","D");dZ("date",9);bh("D",av);bh("DD",av,aN);bh("Do",function(e9,e8){return e9?e8._dayOfMonthOrdinalParse||e8._ordinalParse:e8._dayOfMonthOrdinalParseLenient});bY(["D","DD"],ex);bY("Do",function(e8,e9){e9[ex]=cT(e8.match(av)[0])});var cq=ef("Date",true);cB("DDD",["DDDD",3],"DDDo","dayOfYear");ci("dayOfYear","DDD");dZ("dayOfYear",4);bh("DDD",au);bh("DDDD",aM);bY(["DDD","DDDD"],function(e8,fa,e9){e9._dayOfYear=cT(e8)});function bj(e8){var e9=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/86400000)+1;return e8==null?e9:this.add(e8-e9,"d")}cB("m",["mm",2],0,"minute");ci("minute","m");dZ("minute",14);bh("m",av);bh("mm",av,aN);bY(["m","mm"],dL);var eQ=ef("Minutes",false);cB("s",["ss",2],0,"second");ci("second","s");dZ("second",15);bh("s",av);bh("ss",av,aN);bY(["s","ss"],am);var bz=ef("Seconds",false);cB("S",0,0,function(){return ~~(this.millisecond()/100)});cB(0,["SS",2],0,function(){return ~~(this.millisecond()/10)});cB(0,["SSS",3],0,"millisecond");cB(0,["SSSS",4],0,function(){return this.millisecond()*10});cB(0,["SSSSS",5],0,function(){return this.millisecond()*100});cB(0,["SSSSSS",6],0,function(){return this.millisecond()*1000});cB(0,["SSSSSSS",7],0,function(){return this.millisecond()*10000});cB(0,["SSSSSSSS",8],0,function(){return this.millisecond()*100000});cB(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1000000});ci("millisecond","ms");dZ("millisecond",16);bh("S",au,aO);bh("SS",au,aN);bh("SSS",au,aM);var bo;for(bo="SSSS";bo.length<=9;bo+="S"){bh(bo,u)}function c8(e8,e9){e9[bN]=cT(("0."+e8)*1000)}for(bo="S";bo.length<=9;bo+="S"){bY(bo,c8)}var b2=ef("Milliseconds",false);cB("z",0,0,"zoneAbbr");cB("zz",0,0,"zoneName");function eN(){return this._isUTC?"UTC":""}function ek(){return this._isUTC?"Coordinated Universal Time":""}var cg=eu.prototype;cg.add=a2;cg.calendar=cj;cg.clone=dv;cg.diff=O;cg.endOf=eA;cg.format=da;cg.from=dU;cg.fromNow=dP;cg.to=al;cg.toNow=aT;cg.get=aD;cg.invalidAt=cD;cg.isAfter=cH;cg.isBefore=eR;cg.isBetween=et;cg.isSame=cL;cg.isSameOrAfter=eM;cg.isSameOrBefore=eP;cg.isValid=q;cg.lang=C;cg.locale=e7;cg.localeData=dV;cg.max=er;cg.min=cM;cg.parsingFlags=dI;cg.set=ax;cg.startOf=cb;cg.subtract=aC;cg.toArray=dN;cg.toObject=dW;cg.toDate=c4;cg.toISOString=c7;cg.inspect=aU;cg.toJSON=db;cg.toString=d5;cg.unix=bD;cg.valueOf=dY;cg.creationData=eS;cg.year=cK;cg.isLeapYear=cZ;cg.weekYear=bu;cg.isoWeekYear=d2;cg.quarter=cg.quarters=b4;cg.month=eJ;cg.daysInMonth=bQ;cg.week=cg.weeks=N;cg.isoWeek=cg.isoWeeks=B;cg.weeksInYear=M;cg.isoWeeksInYear=dd;cg.date=cq;cg.day=cg.days=en;cg.weekday=ah;cg.isoWeekday=cx;cg.dayOfYear=bj;cg.hour=cg.hours=ct;cg.minute=cg.minutes=eQ;cg.second=cg.seconds=bz;cg.millisecond=cg.milliseconds=b2;cg.utcOffset=dz;cg.utc=a4;cg.local=dw;cg.parseZone=cc;cg.hasAlignedHourOffset=aE;cg.isDST=aR;cg.isLocal=dA;cg.isUtcOffset=bV;cg.isUtc=dG;cg.isUTC=dG;cg.zoneAbbr=eN;cg.zoneName=ek;cg.dates=ei("dates accessor is deprecated. Use date instead.",cq);cg.months=ei("months accessor is deprecated. Use month instead",eJ);cg.years=ei("years accessor is deprecated. Use year instead",cK);cg.zone=ei("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",du);cg.isDSTShifted=ei("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",b);function df(e8){return dF(e8*1000)}function cQ(){return dF.apply(null,arguments).parseZone()}function dB(e8){return e8}var d7=cG.prototype;d7.calendar=d;d7.longDateFormat=cN;d7.invalidDate=es;d7.ordinal=eE;d7.preparse=dB;d7.postformat=dB;d7.relativeTime=X;d7.pastFuture=d1;d7.set=dr;d7.months=a5;d7.monthsShort=be;d7.monthsParse=de;d7.monthsRegex=c2;d7.monthsShortRegex=dn;d7.week=bs;d7.firstDayOfYear=dc;d7.firstDayOfWeek=ak;d7.weekdays=aB;d7.weekdaysMin=eH;d7.weekdaysShort=Q;d7.weekdaysParse=bP;d7.weekdaysRegex=eX;d7.weekdaysShortRegex=aJ;d7.weekdaysMinRegex=H;d7.isPM=ch;d7.meridiem=aX;function L(fc,e9,fb,fd){var e8=U();var fa=cz().set(fd,e9);return e8[fb](fa,fc)}function a1(fc,e9,fb){if(t(fc)){e9=fc;fc=undefined}fc=fc||"";if(e9!=null){return L(fc,e9,fb,"month")}var fa;var e8=[];for(fa=0;fa<12;fa++){e8[fa]=L(fc,fa,fb,"month")}return e8}function eZ(fd,ff,fb,fe){if(typeof fd==="boolean"){if(t(ff)){fb=ff;ff=undefined}ff=ff||""}else{ff=fd;fb=ff;fd=false;if(t(ff)){fb=ff;ff=undefined}ff=ff||""}var e8=U(),e9=fd?e8._week.dow:0;if(fb!=null){return L(ff,(fb+e9)%7,fe,"day")}var fc;var fa=[];for(fc=0;fc<7;fc++){fa[fc]=L(ff,(fc+e9)%7,fe,"day")}return fa}function cX(e9,e8){return a1(e9,e8,"months")}function cF(e9,e8){return a1(e9,e8,"monthsShort")}function c9(e9,fa,e8){return eZ(e9,fa,e8,"weekdays")}function cP(e9,fa,e8){return eZ(e9,fa,e8,"weekdaysShort")}function ac(e9,fa,e8){return eZ(e9,fa,e8,"weekdaysMin")}E("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(fa){var e8=fa%10,e9=cT(fa%100/10)===1?"th":e8===1?"st":e8===2?"nd":e8===3?"rd":"th";return fa+e9}});eG.lang=ei("moment.lang is deprecated. Use moment.locale instead.",E);eG.langData=ei("moment.langData is deprecated. Use moment.localeData instead.",U);var eC=Math.abs;function bq(){var e8=this._data;this._milliseconds=eC(this._milliseconds);this._days=eC(this._days);this._months=eC(this._months);e8.milliseconds=eC(e8.milliseconds);e8.seconds=eC(e8.seconds);e8.minutes=eC(e8.minutes);e8.hours=eC(e8.hours);e8.months=eC(e8.months);e8.years=eC(e8.years);return this}function aI(fc,e9,fa,fb){var e8=di(e9,fa);fc._milliseconds+=fb*e8._milliseconds;fc._days+=fb*e8._days;fc._months+=fb*e8._months;return fc._bubble()}function bF(e8,e9){return aI(this,e8,e9,1)}function dS(e8,e9){return aI(this,e8,e9,-1)}function eI(e8){if(e8<0){return Math.floor(e8)}else{return Math.ceil(e8)}}function cY(){var fa=this._milliseconds;var fg=this._days;var e8=this._months;var fc=this._data;var ff,fb,fe,fd,e9;if(!(fa>=0&&fg>=0&&e8>=0||fa<=0&&fg<=0&&e8<=0)){fa+=eI(e3(e8)+fg)*86400000;fg=0;e8=0}fc.milliseconds=fa%1000;ff=dl(fa/1000);fc.seconds=ff%60;fb=dl(ff/60);fc.minutes=fb%60;fe=dl(fb/60);fc.hours=fe%24;fg+=dl(fe/24);e9=dl(g(fg));e8+=e9;fg-=eI(e3(e9));fd=dl(e8/12);e8%=12;fc.days=fg;fc.months=e8;fc.years=fd;return this}function g(e8){return e8*4800/146097}function e3(e8){return e8*146097/4800}function eL(e9){if(!this.isValid()){return NaN}var fb;var e8;var fa=this._milliseconds;e9=cS(e9);if(e9==="month"||e9==="year"){fb=this._days+fa/86400000;e8=this._months+g(fb);return e9==="month"?e8:e8/12}else{fb=this._days+Math.round(e3(this._months));switch(e9){case"week":return fb/7+fa/604800000;case"day":return fb+fa/86400000;case"hour":return fb*24+fa/3600000;case"minute":return fb*1440+fa/60000;case"second":return fb*86400+fa/1000;case"millisecond":return Math.floor(fb*86400000)+fa;default:throw new Error("Unknown unit "+e9)}}}function c6(){if(!this.isValid()){return NaN}return this._milliseconds+this._days*86400000+this._months%12*2592000000+cT(this._months/12)*31536000000}function d9(e8){return function(){return this.as(e8)}}var e5=d9("ms");var P=d9("s");var dx=d9("m");var x=d9("h");var ed=d9("d");var dT=d9("w");var d8=d9("M");var bn=d9("y");function eY(){return di(this)}function K(e8){e8=cS(e8);return this.isValid()?this[e8+"s"]():NaN}function cd(e8){return function(){return this.isValid()?this._data[e8]:NaN}}var c=cd("milliseconds");var bk=cd("seconds");var aH=cd("minutes");var Y=cd("hours");var bi=cd("days");var eO=cd("months");var bO=cd("years");function eg(){return dl(this.days()/7)}var c3=Math.round;var dK={ss:44,s:45,m:45,h:22,d:26,M:11};function an(e9,fb,fa,fc,e8){return e8.relativeTime(fb||1,!!fa,e9,fc)}function dM(fc,e9,fg){var fa=di(fc).abs();var fh=c3(fa.as("s"));var fb=c3(fa.as("m"));var ff=c3(fa.as("h"));var fi=c3(fa.as("d"));var e8=c3(fa.as("M"));var fd=c3(fa.as("y"));var fe=fh<=dK.ss&&["s",fh]||fh<dK.s&&["ss",fh]||fb<=1&&["m"]||fb<dK.m&&["mm",fb]||ff<=1&&["h"]||ff<dK.h&&["hh",ff]||fi<=1&&["d"]||fi<dK.d&&["dd",fi]||e8<=1&&["M"]||e8<dK.M&&["MM",e8]||fd<=1&&["y"]||["yy",fd];fe[2]=e9;fe[3]=+fc>0;fe[4]=fg;return an.apply(null,fe)}function ey(e8){if(e8===undefined){return c3}if(typeof e8==="function"){c3=e8;return true}return false}function cp(e8,e9){if(dK[e8]===undefined){return false}if(e9===undefined){return dK[e8]}dK[e8]=e9;if(e8==="s"){dK.ss=e9-1}return true}function a(fa){if(!this.isValid()){return this.localeData().invalidDate()}var e8=this.localeData();var e9=dM(this,!fa,e8);if(fa){e9=e8.pastFuture(+this,e9)}return e8.postformat(e9)}var aY=Math.abs;function bX(e8){return(e8>0)-(e8<0)||+e8}function bM(){if(!this.isValid()){return this.localeData().invalidDate()}var fm=aY(this._milliseconds)/1000;var fo=aY(this._days);var fb=aY(this._months);var ff,fl,fi;ff=dl(fm/60);fl=dl(ff/60);fm%=60;ff%=60;fi=dl(fb/12);fb%=12;var fa=fi;var fj=fb;var e9=fo;var fh=fl;var fe=ff;var fp=fm?fm.toFixed(3).replace(/\.?0+$/,""):"";var fk=this.asSeconds();if(!fk){return"P0D"}var e8=fk<0?"-":"";var fc=bX(this._months)!==bX(fk)?"-":"";var fd=bX(this._days)!==bX(fk)?"-":"";var fg=bX(this._milliseconds)!==bX(fk)?"-":"";return e8+"P"+(fa?fc+fa+"Y":"")+(fj?fc+fj+"M":"")+(e9?fd+e9+"D":"")+(fh||fe||fp?"T":"")+(fh?fg+fh+"H":"")+(fe?fg+fe+"M":"")+(fp?fg+fp+"S":"")}var d6=dR.prototype;d6.isValid=w;d6.abs=bq;d6.add=bF;d6.subtract=dS;d6.as=eL;d6.asMilliseconds=e5;d6.asSeconds=P;d6.asMinutes=dx;d6.asHours=x;d6.asDays=ed;d6.asWeeks=dT;d6.asMonths=d8;d6.asYears=bn;d6.valueOf=c6;d6._bubble=cY;d6.clone=eY;d6.get=K;d6.milliseconds=c;d6.seconds=bk;d6.minutes=aH;d6.hours=Y;d6.days=bi;d6.weeks=eg;d6.months=eO;d6.years=bO;d6.humanize=a;d6.toISOString=bM;d6.toString=bM;d6.toJSON=bM;d6.locale=e7;d6.localeData=dV;d6.toIsoString=ei("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",bM);d6.lang=C;cB("X",0,0,"unix");cB("x",0,0,"valueOf");bh("x",F);bh("X",eU);bY("X",function(e8,fa,e9){e9._d=new Date(parseFloat(e8,10)*1000)});bY("x",function(e8,fa,e9){e9._d=new Date(cT(e8))});eG.version="2.21.0";aV(dF);eG.fn=cg;eG.min=p;eG.max=bp;eG.now=cC;eG.utc=cz;eG.unix=df;eG.months=cX;eG.isDate=ez;eG.locale=E;eG.invalid=R;eG.duration=di;eG.isMoment=cf;eG.weekdays=c9;eG.parseZone=cQ;eG.localeData=U;eG.isDuration=ai;eG.monthsShort=cF;eG.weekdaysMin=ac;eG.defineLocale=cE;eG.updateLocale=eo;eG.locales=b8;eG.weekdaysShort=cP;eG.normalizeUnits=cS;eG.relativeTimeRounding=ey;eG.relativeTimeThreshold=cp;eG.calendarFormat=ay;eG.prototype=cg;eG.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"};return eG});(function(q,h){function s(y){var e="";y=parseInt(y,10);if(!y||y<1){return e}while(y){e+="0";y-=1}return e}function b(z,e,y){if(z==null){z=""}z=""+z;return(y?z:"")+s(e-z.length)+(y?"":z)}function m(e){return Object.prototype.toString.call(e)==="[object Array]"}function l(e){return Object.prototype.toString.call(e)==="[object Object]"}function a(z,y){var e=z.length;while(e-=1){if(y(z[e])){return z[e]}}}function p(B,A){var z=0,e=B.length,y;if(typeof A!=="function"){y=A;A=function(C){return C===y}}while(z<e){if(A(B[z])){return B[z]}z+=1}}function g(A,z){var y=0,e=A.length;if(!A||!e){return}while(y<e){if(z(A[y],y)===false){return}y+=1}}function x(B,A){var z=0,e=B.length,y=[];if(!B||!e){return y}while(z<e){y[z]=A(B[z],z);z+=1}return y}function j(y,e){return x(y,function(z){return z[e]})}function o(y){var e=[];g(y,function(z){if(z){e.push(z)}});return e}function c(y){var e=[];g(y,function(z){if(!p(e,z)){e.push(z)}});return e}function k(y,e){var z=[];g(y,function(A){g(e,function(B){if(A===B){z.push(A)}})});return c(z)}function n(z,y){var e=[];g(z,function(B,A){if(!y(B)){e=z.slice(A);return false}});return e}function d(z,y){var e=z.slice().reverse();return n(e,y).reverse()}function u(y,e){for(var z in e){if(e.hasOwnProperty(z)){y[z]=e[z]}}return y}var w;if(typeof require==="function"){try{w=require("moment")}catch(t){}}if(!w&&q.moment){w=q.moment}if(!w){throw"Moment Duration Format cannot find Moment.js"}w.duration.fn.format=function(){var F,E,A,e,B,C,z,D=[].slice.call(arguments),y=u({},this.format.defaults),G=w.duration(this);y.duration=this;g(D,function(H){if(typeof H==="string"||typeof H==="function"){y.template=H;return}if(typeof H==="number"){y.precision=H;return}if(l(H)){u(y,H)}});A=y.types=m(y.types)?y.types:y.types.split(" ");if(typeof y.template==="function"){y.template=y.template.apply(y)}F=new RegExp(x(A,function(H){return y[H].source}).join("|"),"g");e=function(H){return p(A,function(I){return y[I].test(H)})};E=x(y.template.match(F),function(I,H){var J=e(I),K=I.length;return{index:H,length:K,token:J==="escape"?I.replace(y.escape,"$1"):I,type:J==="escape"||J==="general"?null:J}},this);B=k(A,c(o(j(E,"type"))));if(!B.length){return j(E,"token").join("")}g(B,function(H,J){var N,K,M,L,I;N=G.as(H);K=N>0?Math.floor(N):Math.ceil(N);M=N-K;L=J+1===B.length;I=!J;g(E,function(O){if(O.type===H){u(O,{value:N,wholeValue:K,decimalValue:M,isLeast:L,isMost:I});if(I){if(y.forceLength==null&&O.length>1){y.forceLength=true}}}});G.subtract(K,H)});if(y.trim){E=(y.trim==="left"?n:d)(E,function(H){return !(H.isLeast||H.type!=null&&H.wholeValue)})}C=false;if(y.trim==="right"){E.reverse()}E=x(E,function(H){var J,I;if(!H.type){return H.token}if(H.isLeast&&y.precision<0){J=(Math.floor(H.wholeValue*Math.pow(10,y.precision))*Math.pow(10,-y.precision)).toString()}else{J=H.wholeValue.toString()}J=J.replace(/^\-/,"");if(H.length>1&&(C||H.isMost||y.forceLength)){J=b(J,H.length)}if(H.isLeast&&y.precision>0){I=H.decimalValue.toString().replace(/^\-/,"").split(/\.|e\-/);switch(I.length){case 1:J+="."+b(I[0],y.precision,true).slice(0,y.precision);break;case 2:J+="."+b(I[1],y.precision,true).slice(0,y.precision);break;case 3:J+="."+b(s(+I[2]-1)+(I[0]||"0")+I[1],y.precision,true).slice(0,y.precision);break;default:throw"Moment Duration Format: unable to parse token decimal value."}}if(H.isMost&&H.value<0){J="-"+J}C=true;return J});if(y.trim==="right"){E.reverse()}return E.join("")};w.duration.fn.format.defaults={escape:/\[(.+?)\]/,years:/[Yy]+/,months:/M+/,weeks:/[Ww]+/,days:/[Dd]+/,hours:/[Hh]+/,minutes:/m+/,seconds:/s+/,milliseconds:/S+/,general:/.+?/,types:"escape years months weeks days hours minutes seconds milliseconds general",trim:"left",precision:0,forceLength:null,template:function(){var e=this.types,z=this.duration,y=a(e,function(A){return z._data[A]});switch(y){case"seconds":return"h:mm:ss";case"minutes":return"d[d] h:mm";case"hours":return"d[d] h[h]";case"days":return"M[m] d[d]";case"weeks":return"y[y] w[w]";case"months":return"y[y] M[m]";case"years":return"y[y]";default:return"y[y] M[m] d[d] h:mm:ss"}}}})(this);moment.locale("en",{calendar:{lastDay:"[Yesterday at] LT",sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",lastWeek:"[Last] dddd [at] LT",nextWeek:"dddd [at] LT",sameElse:"MMMM Do"}});var Ext=Ext||{};Ext._startTime=(new Date).getTime();(function(){var a=this,c=Object.prototype,b=c.toString,k=true,l={toString:1},e=function(){},j=function(){var m=j.caller.caller;return m.$owner.prototype[m.$name].apply(this,arguments)},d,h=/\S/,g;Function.prototype.$extIsFunction=true;Ext.global=a;for(d in l){k=null}if(k){k=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]}Ext.enumerables=k;Ext.apply=function(p,o,s){if(s){Ext.apply(p,s)}if(p&&o&&typeof o==="object"){var q,n,m;for(q in o){p[q]=o[q]}if(k){for(n=k.length;n--;){m=k[n];if(o.hasOwnProperty(m)){p[m]=o[m]}}}}return p};Ext.buildSettings=Ext.apply({baseCSSPrefix:"x-"},Ext.buildSettings||{});Ext.apply(Ext,{name:Ext.sandboxName||"Ext",emptyFn:e,identityFn:function(m){return m},emptyString:new String,baseCSSPrefix:Ext.buildSettings.baseCSSPrefix,applyIf:function(n,m){var o;if(n){for(o in m){if(n[o]===undefined){n[o]=m[o]}}}return n},iterate:function(m,o,n){if(Ext.isEmpty(m)){return}if(n===undefined){n=m}if(Ext.isIterable(m)){Ext.Array.each.call(Ext.Array,m,o,n)}else{Ext.Object.each.call(Ext.Object,m,o,n)}}});Ext.apply(Ext,{extend:function(){var m=c.constructor,n=function(q){for(var p in q){if(!q.hasOwnProperty(p)){continue}this[p]=q[p]}};return function(o,u,s){if(Ext.isObject(u)){s=u;u=o;o=s.constructor!==m?s.constructor:function(){u.apply(this,arguments)}}var q=function(){},p,t=u.prototype;q.prototype=t;p=o.prototype=new q;p.constructor=o;o.superclass=t;if(t.constructor===m){t.constructor=u}o.override=function(w){Ext.override(o,w)};p.override=n;p.proto=p;o.override(s);o.extend=function(w){return Ext.extend(o,w)};return o}}(),override:function(p,q){if(p.$isClass){p.override(q)}else{if(typeof p=="function"){Ext.apply(p.prototype,q)}else{var m=p.self,n,o;if(m&&m.$isClass){for(n in q){if(q.hasOwnProperty(n)){o=q[n];if(typeof o=="function"){o.$name=n;o.$owner=m;o.$previous=p.hasOwnProperty(n)?p[n]:j}p[n]=o}}}else{Ext.apply(p,q)}}}return p}});Ext.apply(Ext,{valueFrom:function(o,m,n){return Ext.isEmpty(o,n)?m:o},typeOf:function(n){var m,o;if(n===null){return"null"}m=typeof n;if(m==="undefined"||m==="string"||m==="number"||m==="boolean"){return m}o=b.call(n);switch(o){case"[object Array]":return"array";case"[object Date]":return"date";case"[object Boolean]":return"boolean";case"[object Number]":return"number";case"[object RegExp]":return"regexp"}if(m==="function"){return"function"}if(m==="object"){if(n.nodeType!==undefined){if(n.nodeType===3){return h.test(n.nodeValue)?"textnode":"whitespace"}else{return"element"}}return"object"}},coerce:function(q,p){var o=Ext.typeOf(q),n=Ext.typeOf(p),m=typeof q==="string";if(o!==n){switch(n){case"string":return String(q);case"number":return Number(q);case"boolean":return m&&(!q||q==="false")?false:Boolean(q);case"null":return m&&(!q||q==="null")?null:q;case"undefined":return m&&(!q||q==="undefined")?undefined:q;case"date":return m&&isNaN(q)?Ext.Date.parse(q,Ext.Date.defaultFormat):Date(Number(q))}}return q},isEmpty:function(m,n){return m===null||m===undefined||(!n?m==="":false)||Ext.isArray(m)&&m.length===0},isArray:"isArray" in Array?Array.isArray:function(m){return b.call(m)==="[object Array]"},isDate:function(m){return b.call(m)==="[object Date]"},isObject:b.call(null)==="[object Object]"?function(m){return m!==null&&m!==undefined&&b.call(m)==="[object Object]"&&m.ownerDocument===undefined}:function(m){return b.call(m)==="[object Object]"},isSimpleObject:function(m){return m instanceof Object&&m.constructor===Object},isPrimitive:function(n){var m=typeof n;return m==="string"||m==="number"||m==="boolean"},isFunction:function(m){return !!(m&&m.$extIsFunction)},isNumber:function(m){return typeof m==="number"&&isFinite(m)},isNumeric:function(m){return !isNaN(parseFloat(m))&&isFinite(m)},isString:function(m){return typeof m==="string"},isBoolean:function(m){return typeof m==="boolean"},isElement:function(m){return m?m.nodeType===1:false},isTextNode:function(m){return m?m.nodeName==="#text":false},isDefined:function(m){return typeof m!=="undefined"},isIterable:function(n){var m=typeof n,o=false;if(n&&m!="string"){if(m=="function"){if(Ext.isSafari){o=n instanceof NodeList||n instanceof HTMLCollection}}else{o=true}}return o?n.length!==undefined:false}});Ext.apply(Ext,{clone:function(s){var q,p,n,m,t,o;if(s===null||s===undefined){return s}if(s.nodeType&&s.cloneNode){return s.cloneNode(true)}q=b.call(s);if(q==="[object Date]"){return new Date(s.getTime())}if(q==="[object Array]"){p=s.length;t=[];while(p--){t[p]=Ext.clone(s[p])}}else{if(q==="[object Object]"&&s.constructor===Object){t={};for(o in s){t[o]=Ext.clone(s[o])}if(k){for(n=k.length;n--;){m=k[n];t[m]=s[m]}}}}return t||s},getUniqueGlobalNamespace:function(){var n=this.uniqueGlobalNamespace,m;if(n===undefined){m=0;do{n="ExtBox"+ ++m}while(Ext.global[n]!==undefined);Ext.global[n]=Ext;this.uniqueGlobalNamespace=n}return n},functionFactoryCache:{},cacheableFunctionFactory:function(){var s=this,o=Array.prototype.slice.call(arguments),n=s.functionFactoryCache,m,p,q;if(Ext.isSandboxed){q=o.length;if(q>0){q--;o[q]="var Ext=window."+Ext.name+";"+o[q]}}m=o.join("");p=n[m];if(!p){p=Function.prototype.constructor.apply(Function.prototype,o);n[m]=p}return p},functionFactory:function(){var o=this,m=Array.prototype.slice.call(arguments),n;if(Ext.isSandboxed){n=m.length;if(n>0){n--;m[n]="var Ext=window."+Ext.name+";"+m[n]}}return Function.prototype.constructor.apply(Function.prototype,m)},Logger:{verbose:e,log:e,info:e,warn:e,error:function(m){throw new Error(m)},deprecate:e}});Ext.type=Ext.typeOf;g=Ext.app;if(!g){g=Ext.app={}}Ext.apply(g,{namespaces:{},collectNamespaces:function(o){var m=Ext.app.namespaces,n;for(n in o){if(o.hasOwnProperty(n)){m[n]=true}}},addNamespaces:function(o){var p=Ext.app.namespaces,n,m;if(!Ext.isArray(o)){o=[o]}for(n=0,m=o.length;n<m;n++){p[o[n]]=true}},clearNamespaces:function(){Ext.app.namespaces={}},getNamespace:function(n){var p=Ext.app.namespaces,m="",o;for(o in p){if(p.hasOwnProperty(o)&&o.length>m.length&&o+"."===n.substring(0,o.length+1)){m=o}}return m===""?undefined:m}})})();Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){var Ext=this.Ext;eval($$code)})()};(function(){var a="4.2.0.663",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10)},compare:function(h,g){var d,e,c;h=(new b(h)).toArray();g=(new b(g)).toArray();for(c=0;c<Math.max(h.length,g.length);c++){d=this.getComponentValue(h[c]);e=this.getComponentValue(g[c]);if(d<e){return -1}else{if(d>e){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)})();Ext.String=function(){var k=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,o=/('|\\)/g,j=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,p=/^\s+|\s+$/g,l=/\s+/,n=/(^[^a-z]*|[^\w])/gi,e,a,h,d,g=function(s,q){return e[q]},m=function(s,q){return q in a?a[q]:String.fromCharCode(parseInt(q.substr(2),10))},c=function(t,q){if(t===null||t===undefined||q===null||q===undefined){return false}return q.length<=t.length};return{insert:function(u,w,t){if(!u){return w}if(!w){return u}var q=u.length;if(!t&&t!==0){t=q}if(t<0){t*=-1;if(t>=q){t=0}else{t=q-t}}if(t===0){u=w+u}else{if(t>=u.length){u+=w}else{u=u.substr(0,t)+w+u.substr(t)}}return u},startsWith:function(u,w,t){var q=c(u,w);if(q){if(t){u=u.toLowerCase();w=w.toLowerCase()}q=u.lastIndexOf(w,0)===0}return q},endsWith:function(w,t,u){var q=c(w,t);if(q){if(u){w=w.toLowerCase();t=t.toLowerCase()}q=w.indexOf(t,w.length-t.length)!==-1}return q},createVarName:function(q){return q.replace(n,"")},htmlEncode:function(q){return !q?q:String(q).replace(h,g)},htmlDecode:function(q){return !q?q:String(q).replace(d,m)},addCharacterEntities:function(s){var q=[],w=[],t,u;for(t in s){u=s[t];a[t]=u;e[u]=t;q.push(u);w.push(t)}h=new RegExp("("+q.join("|")+")","g");d=new RegExp("("+w.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){e={};a={};this.addCharacterEntities({"&amp;":"&","&gt;":">","&lt;":"<","&quot;":'"',"&#39;":"'"})},urlAppend:function(s,q){if(!Ext.isEmpty(q)){return s+(s.indexOf("?")===-1?"?":"&")+q}return s},trim:function(q){return q.replace(k,"")},capitalize:function(q){return q.charAt(0).toUpperCase()+q.substr(1)},uncapitalize:function(q){return q.charAt(0).toLowerCase()+q.substr(1)},ellipsis:function(t,q,u){if(t&&t.length>q){if(u){var w=t.substr(0,q-2),s=Math.max(w.lastIndexOf(" "),w.lastIndexOf("."),w.lastIndexOf("!"),w.lastIndexOf("?"));if(s!==-1&&s>=q-15){return w.substr(0,s)+"..."}}return t.substr(0,q-3)+"..."}return t},escapeRegex:function(q){return q.replace(b,"\\$1")},escape:function(q){return q.replace(o,"\\$1")},toggle:function(s,t,q){return s===t?q:t},leftPad:function(s,t,u){var q=String(s);u=u||" ";while(q.length<t){q=u+q}return q},format:function(s){var q=Ext.Array.toArray(arguments,1);return s.replace(j,function(t,u){return q[u]})},repeat:function(w,u,s){if(u<1){u=0}for(var q=[],t=u;t--;){q.push(w)}return q.join(s||"")},splitWords:function(q){if(q&&typeof q=="string"){return q.replace(p,"").split(l)}return q||[]}}}();Ext.String.resetCharacterEntities();Ext.htmlEncode=Ext.String.htmlEncode;Ext.htmlDecode=Ext.String.htmlDecode;Ext.urlAppend=Ext.String.urlAppend;Ext.Number=new (function(){var b=this,c=(0.9).toFixed()!=="1",a=Math;Ext.apply(this,{constrain:function(h,g,e){var d=parseFloat(h);return d<g?g:d>e?e:d},snap:function(h,e,g,j){var d;if(h===undefined||h<g){return g||0}if(e){d=h%e;if(d!==0){h-=d;if(d*2>=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,j)},snapInRange:function(h,d,g,j){var e;g=g||0;if(h===undefined||h<g){return g}if(d&&(e=(h-g)%d)){h-=e;e*=2;if(e>=d){h+=d}}if(j!==undefined){if(h>(j=b.snapInRange(j,d,g))){h=j}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)},correctFloat:function(d){return parseFloat(d.toPrecision(14))}});Ext.num=function(){return b.from.apply(this,arguments)}});(function(){var g=Array.prototype,p=g.slice,s=function(){var D=[],e,C=20;if(!D.splice){return false}while(C--){D.push("A")}D.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=D.length;D.splice(13,0,"XXX");if(e+1!=D.length){return false}return true}(),k="forEach" in g,x="map" in g,q="indexOf" in g,B="every" in g,c="some" in g,d="filter" in g,o=function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}(),l=true,a,z,w,y;try{if(typeof document!=="undefined"){p.call(document.getElementsByTagName("body"))}}catch(u){l=false}function n(C,e){return e<0?Math.max(0,C.length+e):Math.min(C.length,e)}function A(J,I,C,M){var N=M?M.length:0,E=J.length,K=n(J,I),H,L,D,e,F,G;if(K===E){if(N){J.push.apply(J,M)}}else{H=Math.min(C,E-K);L=K+H;D=L+N-H;e=E-L;F=E-H;if(D<L){for(G=0;G<e;++G){J[D+G]=J[L+G]}}else{if(D>L){for(G=e;G--;){J[D+G]=J[L+G]}}}if(N&&K===F){J.length=F;J.push.apply(J,M)}else{J.length=F+N;for(G=0;G<N;++G){J[K+G]=M[G]}}}return J}function j(E,e,D,C){if(C&&C.length){if(e===0&&!D){E.unshift.apply(E,C)}else{if(e<E.length){E.splice.apply(E,[e,D].concat(C))}else{E.push.apply(E,C)}}}else{E.splice(e,D)}return E}function b(D,e,C){return A(D,e,C)}function t(D,e,C){D.splice(e,C);return D}function m(F,e,D){var E=n(F,e),C=F.slice(e,n(F,E+D));if(arguments.length<4){A(F,E,D)}else{A(F,E,D,p.call(arguments,3))}return C}function h(e){return e.splice.apply(e,p.call(arguments,1))}z=s?t:b;w=s?j:A;y=s?h:m;a=Ext.Array={each:function(G,E,D,e){G=a.from(G);var C,F=G.length;if(e!==true){for(C=0;C<F;C++){if(E.call(D||G[C],G[C],C,G)===false){return C}}}else{for(C=F-1;C>-1;C--){if(E.call(D||G[C],G[C],C,G)===false){return C}}}return true},forEach:k?function(D,C,e){D.forEach(C,e)}:function(F,D,C){var e=0,E=F.length;for(;e<E;e++){D.call(C,F[e],e,F)}},indexOf:q?function(D,e,C){return g.indexOf.call(D,e,C)}:function(F,D,E){var e,C=F.length;for(e=E<0?Math.max(0,C+E):E||0;e<C;e++){if(F[e]===D){return e}}return -1},contains:q?function(C,e){return g.indexOf.call(C,e)!==-1}:function(E,D){var e,C;for(e=0,C=E.length;e<C;e++){if(E[e]===D){return true}}return false},toArray:function(D,F,e){if(!D||!D.length){return[]}if(typeof D==="string"){D=D.split("")}if(l){return p.call(D,F||0,e||D.length)}var E=[],C;F=F||0;e=e?e<0?D.length+e:e:D.length;for(C=F;C<e;C++){E.push(D[C])}return E},pluck:function(G,e){var C=[],D,F,E;for(D=0,F=G.length;D<F;D++){E=G[D];C.push(E[e])}return C},map:x?function(D,C,e){return D.map(C,e)}:function(G,F,E){var D=[],C=0,e=G.length;for(;C<e;C++){D[C]=F.call(E,G[C],C,G)}return D},every:B?function(D,C,e){return D.every(C,e)}:function(F,D,C){var e=0,E=F.length;for(;e<E;++e){if(!D.call(C,F[e],e,F)){return false}}return true},some:c?function(D,C,e){return D.some(C,e)}:function(F,D,C){var e=0,E=F.length;for(;e<E;++e){if(D.call(C,F[e],e,F)){return true}}return false},equals:function(F,E){var C=F.length,e=E.length,D;if(F===E){return true}if(C!==e){return false}for(D=0;D<C;++D){if(F[D]!==E[D]){return false}}return true},clean:function(F){var C=[],e=0,E=F.length,D;for(;e<E;e++){D=F[e];if(!Ext.isEmpty(D)){C.push(D)}}return C},unique:function(F){var E=[],e=0,D=F.length,C;for(;e<D;e++){C=F[e];if(a.indexOf(E,C)===-1){E.push(C)}}return E},filter:d?function(D,C,e){return D.filter(C,e)}:function(G,E,D){var C=[],e=0,F=G.length;for(;e<F;e++){if(E.call(D,G[e],e,G)){C.push(G[e])}}return C},findBy:function(F,E,D){var C=0,e=F.length;for(;C<e;C++){if(E.call(D||F,F[C],C)){return F[C]}}return null},from:function(D,C){if(D===undefined||D===null){return[]}if(Ext.isArray(D)){return C?p.call(D):D}var e=typeof D;if(D&&D.length!==undefined&&e!=="string"&&(e!=="function"||!D.apply)){return a.toArray(D)}return[D]},remove:function(D,C){var e=a.indexOf(D,C);if(e!==-1){z(D,e,1)}return D},include:function(C,e){if(!a.contains(C,e)){C.push(e)}},clone:function(e){return p.call(e)},merge:function(){var e=p.call(arguments),E=[],C,D;for(C=0,D=e.length;C<D;C++){E=E.concat(e[C])}return a.unique(E)},intersect:function(){var e=[],D=p.call(arguments),O,M,I,L,P,E,C,K,N,F,J,H,G;if(!D.length){return e}O=D.length;for(J=P=0;J<O;J++){E=D[J];if(!L||E.length<L.length){L=E;P=J}}L=a.unique(L);z(D,P,1);C=L.length;O=D.length;for(J=0;J<C;J++){K=L[J];F=0;for(H=0;H<O;H++){M=D[H];I=M.length;for(G=0;G<I;G++){N=M[G];if(K===N){F++;break}}}if(F===O){e.push(K)}}return e},difference:function(C,e){var H=p.call(C),F=H.length,E,D,G;for(E=0,G=e.length;E<G;E++){for(D=0;D<F;D++){if(H[D]===e[E]){z(H,D,1);D--;F--}}}return H},slice:[1,2].slice(1,undefined).length?function(D,C,e){return p.call(D,C,e)}:function(D,C,e){if(typeof C==="undefined"){return p.call(D)}if(typeof e==="undefined"){return p.call(D,C)}return p.call(D,C,e)},sort:o?function(C,e){if(e){return C.sort(e)}else{return C.sort()}}:function(I,H){var F=I.length,E=0,G,e,D,C;for(;E<F;E++){D=E;for(e=E+1;e<F;e++){if(H){G=H(I[e],I[D]);if(G<0){D=e}}else{if(I[e]<I[D]){D=e}}}if(D!==E){C=I[E];I[E]=I[D];I[D]=C}}return I},flatten:function(D){var C=[];function e(E){var G,H,F;for(G=0,H=E.length;G<H;G++){F=E[G];if(Ext.isArray(F)){e(F)}else{C.push(F)}}return C}return e(D)},min:function(G,F){var C=G[0],e,E,D;for(e=0,E=G.length;e<E;e++){D=G[e];if(F){if(F(C,D)===1){C=D}}else{if(D<C){C=D}}}return C},max:function(G,F){var e=G[0],C,E,D;for(C=0,E=G.length;C<E;C++){D=G[C];if(F){if(F(e,D)===-1){e=D}}else{if(D>e){e=D}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(F){var C=0,e,E,D;for(e=0,E=F.length;e<E;e++){D=F[e];C+=D}return C},toMap:function(F,e,D){var E={},C=F.length;if(!e){while(C--){E[F[C]]=C+1}}else{if(typeof e=="string"){while(C--){E[F[C][e]]=C+1}}else{while(C--){E[e.call(D,F[C])]=C+1}}}return E},toValueMap:function(F,e,D){var E={},C=F.length;if(!e){while(C--){E[F[C]]=F[C]}}else{if(typeof e=="string"){while(C--){E[F[C][e]]=F[C]}}else{while(C--){E[e.call(D,F[C])]=F[C]}}}return E},erase:z,insert:function(D,C,e){return w(D,C,0,e)},replace:w,splice:y,push:function(E){var e=arguments.length,D=1,C;if(E===undefined){E=[]}else{if(!Ext.isArray(E)){E=[E]}}for(;D<e;D++){C=arguments[D];Array.prototype.push[Ext.isIterable(C)?"apply":"call"](E,C)}return E}};Ext.each=a.each;a.union=a.merge;Ext.min=a.min;Ext.max=a.max;Ext.sum=a.sum;Ext.mean=a.mean;Ext.flatten=a.flatten;Ext.clean=a.clean;Ext.unique=a.unique;Ext.pluck=a.pluck;Ext.toArray=function(){return a.toArray.apply(a,arguments)}})();Ext.Function={flexSetter:function(a){return function(d,c){var e,g;if(d===null){return this}if(typeof d!=="string"){for(e in d){if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}if(Ext.enumerables){for(g=Ext.enumerables.length;g--;){e=Ext.enumerables[g];if(d.hasOwnProperty(e)){a.call(this,e,d[e])}}}}else{a.call(this,d,c)}return this}},bind:function(d,c,b,a){if(arguments.length===2){return function(){return d.apply(c,arguments)}}var g=d,e=Array.prototype.slice;return function(){var h=b||arguments;if(a===true){h=e.call(arguments,0);h=h.concat(b)}else{if(typeof a=="number"){h=e.call(arguments,0);Ext.Array.insert(h,a,b)}}return g.apply(c||Ext.global,h)}},pass:function(c,a,b){if(!Ext.isArray(a)){if(Ext.isIterable(a)){a=Ext.Array.clone(a)}else{a=a!==undefined?[a]:[]}}return function(){var d=[].concat(a);d.push.apply(d,arguments);return c.apply(b||this,d)}},alias:function(b,a){return function(){return b[a].apply(b,arguments)}},clone:function(a){return function(){return a.apply(this,arguments)}},createInterceptor:function(d,c,b,a){var e=d;if(!Ext.isFunction(c)){return d}else{a=Ext.isDefined(a)?a:null;return function(){var h=this,g=arguments;c.target=h;c.method=d;return c.apply(b||h||Ext.global,g)!==false?d.apply(h||Ext.global,g):a}}},createDelayed:function(e,c,d,b,a){if(d||b){e=Ext.Function.bind(e,d,b,a)}return function(){var h=this,g=Array.prototype.slice.call(arguments);setTimeout(function(){e.apply(h,g)},c)}},defer:function(e,c,d,b,a){e=Ext.Function.bind(e,d,b,a);if(c>0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,j,h=function(){e.apply(d||this,c);g=(new Date).getTime()};return function(){a=(new Date).getTime()-g;c=arguments;clearTimeout(j);if(!g||a>=b){h()}else{j=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g}},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)}}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:Object.create||function(d){a.prototype=d;var c=new a;a.prototype=null;return c},toQueryObjects:function(e,k,d){var c=b.toQueryObjects,j=[],g,h;if(Ext.isArray(k)){for(g=0,h=k.length;g<h;g++){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}else{if(Ext.isObject(k)){for(g in k){if(k.hasOwnProperty(g)){if(d){j=j.concat(c(e+"["+g+"]",k[g],true))}else{j.push({name:e,value:k[g]})}}}}else{j.push({name:e,value:k})}}return j},toQueryString:function(g,d){var h=[],e=[],l,k,m,c,n;for(l in g){if(g.hasOwnProperty(l)){h=h.concat(b.toQueryObjects(l,g[l],d))}}for(k=0,m=h.length;k<m;k++){c=h[k];n=c.value;if(Ext.isEmpty(n)){n=""}else{if(Ext.isDate(n)){n=Ext.Date.toString(n)}}e.push(encodeURIComponent(c.name)+"="+encodeURIComponent(String(n)))}return e.join("&")},fromQueryString:function(d,s){var m=d.replace(/^\?/,"").split("&"),w={},t,k,y,n,q,g,o,p,c,h,u,l,x,e;for(q=0,g=m.length;q<g;q++){o=m[q];if(o.length>0){k=o.split("=");y=decodeURIComponent(k[0]);n=k[1]!==undefined?decodeURIComponent(k[1]):"";if(!s){if(w.hasOwnProperty(y)){if(!Ext.isArray(w[y])){w[y]=[w[y]]}w[y].push(n)}else{w[y]=n}}else{h=y.match(/(\[):?([^\]]*)\]/g);u=y.match(/^([^\[]+)/);y=u[0];l=[];if(h===null){w[y]=n;continue}for(p=0,c=h.length;p<c;p++){x=h[p];x=x.length===2?"":x.substring(1,x.length-1);l.push(x)}l.unshift(y);t=w;for(p=0,c=l.length;p<c;p++){x=l[p];if(p===c-1){if(Ext.isArray(t)&&x===""){t.push(n)}else{t[x]=n}}else{if(t[x]===undefined||typeof t[x]==="string"){e=l[p+1];t[x]=Ext.isNumeric(e)||e===""?[]:{}}t=t[x]}}}}}return w},each:function(c,e,d){for(var g in c){if(c.hasOwnProperty(g)){if(e.call(d||c,g,c[g],c)===false){return}}}},merge:function(k){var h=1,j=arguments.length,c=b.merge,e=Ext.clone,g,m,l,d;for(;h<j;h++){g=arguments[h];for(m in g){l=g[m];if(l&&l.constructor===Object){d=k[m];if(d&&d.constructor===Object){c(d,l)}else{k[m]=e(l)}}else{k[m]=l}}}return k},mergeIf:function(c){var h=1,j=arguments.length,e=Ext.clone,d,g,k;for(;h<j;h++){d=arguments[h];for(g in d){if(!(g in c)){k=d[g];if(k&&k.constructor===Object){c[g]=e(k)}else{c[g]=k}}}}return c},getKey:function(c,e){for(var d in c){if(c.hasOwnProperty(d)&&c[d]===e){return d}}return null},getValues:function(d){var c=[],e;for(e in d){if(d.hasOwnProperty(e)){c.push(d[e])}}return c},getKeys:typeof Object.keys=="function"?function(c){if(!c){return[]}return Object.keys(c)}:function(c){var d=[],e;for(e in c){if(c.hasOwnProperty(e)){d.push(e)}}return d},getSize:function(c){var d=0,e;for(e in c){if(c.hasOwnProperty(e)){d++}}return d},isEmpty:function(c){for(var d in c){if(c.hasOwnProperty(d)){return false}}return true},equals:function(){var c=function(g,e){var d;for(d in g){if(g.hasOwnProperty(d)){if(g[d]!==e[d]){return false}}}return true};return function(e,d){if(e===d){return true}if(e&&d){return c(e,d)&&c(d,e)}else{if(!e&&!d){return e===d}else{return false}}}}(),classify:function(g){var e=g,j=[],d={},c=function(){var l=0,m=j.length,n;for(;l<m;l++){n=j[l];this[n]=new d[n]}},h,k;for(h in g){if(g.hasOwnProperty(h)){k=g[h];if(k&&k.constructor===Object){j.push(h);d[h]=b.classify(k)}}}c.prototype=e;return c}};Ext.merge=Ext.Object.merge;Ext.mergeIf=Ext.Object.mergeIf;Ext.urlEncode=function(){var c=Ext.Array.from(arguments),d="";if(typeof c[1]==="string"){d=c[1]+"&";c[1]=false}return d+b.toQueryString.apply(b,c)};Ext.urlDecode=function(){return b.fromQueryString.apply(b,arguments)}})();Ext.Date=new (function(){var d=this,k=/(\\.)/g,a=/([gGhHisucUOPZ]|MS)/,e=/([djzmnYycU]|MS)/,j=/\\/gi,c=/\{(\d+)\}/g,g=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/"),b=["var me = this, dt, y, m, d, h, i, s, ms, o, O, z, zz, u, v, W, year, jan4, week1monday,","def = me.defaults,","from = Ext.Number.from,","results = String(input).match(me.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = me.clearTime(new Date);","y = from(y, from(def.y, dt.getFullYear()));","m = from(m, from(def.m - 1, dt.getMonth()));","d = from(d, from(def.d, dt.getDate()));","h  = from(h, from(def.h, dt.getHours()));","i  = from(i, from(def.i, dt.getMinutes()));","s  = from(s, from(def.s, dt.getSeconds()));","ms = from(ms, from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);","}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","if (W) {","year = y || (new Date()).getFullYear(),","jan4 = new Date(year, 0, 4, 0, 0, 0),","week1monday = new Date(jan4.getTime() - ((jan4.getDay() - 1) * 86400000));","v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000)));","} else {","v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","}","}","}","}","if(v){","if(zz != null){","v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");function h(m){var l=Array.prototype.slice.call(arguments,1);return m.replace(c,function(n,o){return l[o]})}Ext.apply(d,{now:Date.now||function(){return +new Date},toString:function(l){var m=Ext.String.leftPad;return l.getFullYear()+"-"+m(l.getMonth()+1,2,"0")+"-"+m(l.getDate(),2,"0")+"T"+m(l.getHours(),2,"0")+":"+m(l.getMinutes(),2,"0")+":"+m(l.getSeconds(),2,"0")},getElapsed:function(m,l){return Math.abs(m-(l||new Date))},useStrict:false,formatCodeToRegex:function(m,l){var n=d.parseCodes[m];if(n){n=typeof n=="function"?n():n;d.parseCodes[m]=n}return n?Ext.applyIf({c:n.c?h(n.c,l||"{0}"):n.c},n):{g:0,c:null,s:Ext.String.escapeRegex(m)}},parseFunctions:{MS:function(m,l){var n=(m||"").match(g);return n?new Date(((n[1]||"")+n[2])*1):null},time:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n)}return null},timestamp:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n*1000)}return null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"},time:function(){return this.getTime().toString()},timestamp:function(){return d.format(this,"U")}},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:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(l){return Ext.Date.monthNames[l].substring(0,3)},getShortDayName:function(l){return Ext.Date.dayNames[l].substring(0,3)},getMonthNumber:function(l){return Ext.Date.monthNumbers[l.substring(0,1).toUpperCase()+l.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(l){return a.test(l.replace(k,""))},formatContainsDateInfo:function(l){return e.test(l.replace(k,""))},unescapeFormat:function(l){return l.replace(j,"")},formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.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:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var q,o,n,m,p;for(q="Y-m-dTH:i:sP",o=[],n=0,m=q.length;n<m;++n){p=q.charAt(n);o.push(p=="T"?"'T'":d.getFormatCode(p))}return o.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(w,l,u,q,o,p,n){q=q||0;o=o||0;p=p||0;n=n||0;var t=d.add(new Date(w<100?100:w,l-1,u,q,o,p,n),d.YEAR,w<100?w-100:0);return w==t.getFullYear()&&l==t.getMonth()+1&&u==t.getDate()&&q==t.getHours()&&o==t.getMinutes()&&p==t.getSeconds()&&n==t.getMilliseconds()},parse:function(m,o,l){var n=d.parseFunctions;if(n[o]==null){d.createParser(o)}return n[o].call(d,m,Ext.isDefined(l)?l:d.useStrict)},parseDate:function(m,n,l){return d.parse(m,n,l)},getFormatCode:function(m){var l=d.formatCodes[m];if(l){l=typeof l=="function"?l():l;d.formatCodes[m]=l}return l||"'"+Ext.String.escape(m)+"'"},createFormat:function(p){var o=[],l=false,n="",m;for(m=0;m<p.length;++m){n=p.charAt(m);if(!l&&n=="\\"){l=true}else{if(l){l=false;o.push("'"+Ext.String.escape(n)+"'")}else{o.push(d.getFormatCode(n))}}}d.formatFunctions[p]=Ext.functionFactory("return "+o.join("+"))},createParser:function(w){var m=d.parseRegexes.length,x=1,n=[],u=[],s=false,l="",p=0,q=w.length,t=[],o;for(;p<q;++p){l=w.charAt(p);if(!s&&l=="\\"){s=true}else{if(s){s=false;u.push(Ext.String.escape(l))}else{o=d.formatCodeToRegex(l,x);x+=o.g;u.push(o.s);if(o.g&&o.c){if(o.calcAtEnd){t.push(o.c)}else{n.push(o.c)}}}}}n=n.concat(t);d.parseRegexes[m]=new RegExp("^"+u.join("")+"$","i");d.parseFunctions[w]=Ext.functionFactory("input","strict",h(b,m,n.join("")))},parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|0[1-9])"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|[1-9])"},D:function(){for(var l=[],m=0;m<7;l.push(d.getShortDayName(m)),++m){}return{g:0,c:null,s:"(?:"+l.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+d.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:1,c:"W = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},F:function(){return{g:1,c:"m = parseInt(me.getMonthNumber(results[{0}]), 10);\n",s:"("+d.monthNames.join("|")+")"}},M:function(){for(var l=[],m=0;m<12;l.push(d.getShortMonthName(m)),++m){}return Ext.applyIf({s:"("+l.join("|")+")"},d.formatCodeToRegex("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|0[1-9])"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|[1-9])"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},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 > me.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{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)",calcAtEnd:true},A:{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)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},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 + Ext.String.leftPad(hr, 2, '0') + Ext.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 + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,5}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var o=[],m=[d.formatCodeToRegex("Y",1),d.formatCodeToRegex("m",2),d.formatCodeToRegex("d",3),d.formatCodeToRegex("H",4),d.formatCodeToRegex("i",5),d.formatCodeToRegex("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){",d.formatCodeToRegex("P",8).c,"}else{",d.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],p,n;for(p=0,n=m.length;p<n;++p){o.push(m[p].c)}return{g:1,c:o.join(""),s:[m[0].s,"(?:","-",m[1].s,"(?:","-",m[2].s,"(?:","(?:T| )?",m[3].s,":",m[4].s,"(?::",m[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}},dateFormat:function(l,m){return d.format(l,m)},isEqual:function(m,l){if(m&&l){return m.getTime()===l.getTime()}return !(m||l)},format:function(m,n){var l=d.formatFunctions;if(!Ext.isDate(m)){return""}if(l[n]==null){d.createFormat(n)}return l[n].call(m)+""},getTimezone:function(l){return l.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,5})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(l,m){var n=l.getTimezoneOffset();return(n>0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(n)/60),2,"0")+(m?":":"")+Ext.String.leftPad(Math.abs(n%60),2,"0")},getDayOfYear:function(o){var n=0,q=Ext.Date.clone(o),l=o.getMonth(),p;for(p=0,q.setDate(1),q.setMonth(0);p<l;q.setMonth(++p)){n+=d.getDaysInMonth(q)}return n+o.getDate()-1},getWeekOfYear:function(){var l=86400000,m=7*l;return function(o){var p=Date.UTC(o.getFullYear(),o.getMonth(),o.getDate()+3)/l,n=Math.floor(p/7),q=(new Date(n*m)).getUTCFullYear();return n-Math.floor(Date.UTC(q,0,7)/m)+1}}(),isLeapYear:function(l){var m=l.getFullYear();return !!((m&3)==0&&(m%100||m%400==0&&m))},getFirstDayOfMonth:function(m){var l=(m.getDay()-(m.getDate()-1))%7;return l<0?l+7:l},getLastDayOfMonth:function(l){return d.getLastDateOfMonth(l).getDay()},getFirstDateOfMonth:function(l){return new Date(l.getFullYear(),l.getMonth(),1)},getLastDateOfMonth:function(l){return new Date(l.getFullYear(),l.getMonth(),d.getDaysInMonth(l))},getDaysInMonth:function(){var l=[31,28,31,30,31,30,31,31,30,31,30,31];return function(o){var n=o.getMonth();return n==1&&d.isLeapYear(o)?29:l[n]}}(),getSuffix:function(l){switch(l.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(l){return new Date(l.getTime())},isDST:function(l){return(new Date(l.getFullYear(),0,1)).getTimezoneOffset()!=l.getTimezoneOffset()},clearTime:function(l,p){if(p){return Ext.Date.clearTime(Ext.Date.clone(l))}var n=l.getDate(),m,o;l.setHours(0);l.setMinutes(0);l.setSeconds(0);l.setMilliseconds(0);if(l.getDate()!=n){for(m=1,o=d.add(l,Ext.Date.HOUR,m);o.getDate()!=n;m++,o=d.add(l,Ext.Date.HOUR,m)){}l.setDate(n);l.setHours(o.getHours())}return l},add:function(o,n,s){var t=Ext.Date.clone(o),l=Ext.Date,m,q,p=0;if(!n||s===0){return t}q=s-parseInt(s,10);s=parseInt(s,10);if(s){switch(n.toLowerCase()){case Ext.Date.MILLI:t.setTime(t.getTime()+s);break;case Ext.Date.SECOND:t.setTime(t.getTime()+s*1000);break;case Ext.Date.MINUTE:t.setTime(t.getTime()+s*60*1000);break;case Ext.Date.HOUR:t.setTime(t.getTime()+s*60*60*1000);break;case Ext.Date.DAY:t.setDate(t.getDate()+s);break;case Ext.Date.MONTH:m=o.getDate();if(m>28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.MONTH,s)).getDate())}t.setDate(m);t.setMonth(o.getMonth()+s);break;case Ext.Date.YEAR:m=o.getDate();if(m>28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.YEAR,s)).getDate())}t.setDate(m);t.setFullYear(o.getFullYear()+s);break}}if(q){switch(n.toLowerCase()){case Ext.Date.MILLI:p=1;break;case Ext.Date.SECOND:p=1000;break;case Ext.Date.MINUTE:p=1000*60;break;case Ext.Date.HOUR:p=1000*60*60;break;case Ext.Date.DAY:p=1000*60*60*24;break;case Ext.Date.MONTH:m=d.getDaysInMonth(t);p=1000*60*60*24*m;break;case Ext.Date.YEAR:m=d.isLeapYear(t)?366:365;p=1000*60*60*24*m;break}if(p){t.setTime(t.getTime()+p*q)}}return t},subtract:function(m,l,n){return d.add(m,l,-n)},between:function(m,o,l){var n=m.getTime();return o.getTime()<=n&&n<=l.getTime()},compat:function(){var m=window.Date,l,u=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],q=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],t=u.length,n=q.length,o,w,x;for(x=0;x<t;x++){o=u[x];m[o]=d[o]}for(l=0;l<n;l++){w=q[l];m.prototype[w]=function(){var p=Array.prototype.slice.call(arguments);p.unshift(this);return d[w].apply(d,p)}}}})});(function(a){var d=[],b=function(){},c=function(k,g,j,h){var e=function(){var l=this.callParent(arguments);k.apply(this,arguments);return l};e.$name=j;e.$owner=h;if(g){e.$previous=g.$previous;g.$previous=e}return e};Ext.apply(b,{$className:"Ext.Base",$isClass:true,create:function(){return Ext.create.apply(Ext,[this].concat(Array.prototype.slice.call(arguments,0)))},extend:function(k){var e=k.prototype,n,h,j,l,g,m;h=this.prototype=Ext.Object.chain(e);h.self=this;this.superclass=h.superclass=e;if(!k.$isClass){n=Ext.Base.prototype;for(j in n){if(j in h){h[j]=n[j]}}}m=e.$inheritableStatics;if(m){for(j=0,l=m.length;j<l;j++){g=m[j];if(!this.hasOwnProperty(g)){this[g]=k[g]}}}if(k.$onExtended){this.$onExtended=k.$onExtended.slice()}h.config=new h.configClass;h.initConfigList=h.initConfigList.slice();h.initConfigMap=Ext.clone(h.initConfigMap);h.configMap=Ext.Object.chain(h.configMap)},$onExtended:[],triggerExtended:function(){var h=this.$onExtended,g=h.length,e,j;if(g>0){for(e=0;e<g;e++){j=h[e];j.fn.apply(j.scope||this,arguments)}}},onExtended:function(g,e){this.$onExtended.push({fn:g,scope:e});return this},addConfig:function(j,n){var p=this.prototype,o=Ext.Class.configNameCache,k=p.configMap,l=p.initConfigList,h=p.initConfigMap,m=p.config,e,g,q;for(g in j){if(j.hasOwnProperty(g)){if(!k[g]){k[g]=true}q=j[g];e=o[g].initialized;if(!h[g]&&q!==null&&!p[e]){h[g]=true;l.push(g)}}}if(n){Ext.merge(m,j)}else{Ext.mergeIf(m,j)}p.configClass=Ext.Object.classify(m)},addStatics:function(e){var h,g;for(g in e){if(e.hasOwnProperty(g)){h=e[g];if(typeof h=="function"&&!h.$isClass&&h!==Ext.emptyFn&&h!==Ext.identityFn){h.$owner=this;h.$name=g}this[g]=h}}return this},addInheritableStatics:function(g){var k,e,j=this.prototype,h,l;k=j.$inheritableStatics;e=j.$hasInheritableStatics;if(!k){k=j.$inheritableStatics=[];e=j.$hasInheritableStatics={}}for(h in g){if(g.hasOwnProperty(h)){l=g[h];this[h]=l;if(!e[h]){e[h]=true;k.push(h)}}}return this},addMembers:function(g){var j=this.prototype,e=Ext.enumerables,m=[],k,l,h,n;for(h in g){m.push(h)}if(e){m.push.apply(m,e)}for(k=0,l=m.length;k<l;k++){h=m[k];if(g.hasOwnProperty(h)){n=g[h];if(typeof n=="function"&&!n.$isClass&&n!==Ext.emptyFn&&n!==Ext.identityFn){n.$owner=this;n.$name=h}j[h]=n}}return this},addMember:function(e,g){if(typeof g=="function"&&!g.$isClass&&g!==Ext.emptyFn&&g!==Ext.identityFn){g.$owner=this;g.$name=e}this.prototype[e]=g;return this},implement:function(){this.addMembers.apply(this,arguments)},borrow:function(k,h){var o=this.prototype,n=k.prototype,j,l,g,m,e;h=Ext.Array.from(h);for(j=0,l=h.length;j<l;j++){g=h[j];e=n[g];if(typeof e=="function"){m=Ext.Function.clone(e);m.$owner=this;m.$name=g;o[g]=m}else{o[g]=e}}return this},override:function(g){var o=this,q=Ext.enumerables,m=o.prototype,j=Ext.Function.clone,e,l,h,p,n,k;if(arguments.length===2){e=g;g={};g[e]=arguments[1];q=null}do{n=[];p=null;for(e in g){if(e=="statics"){p=g[e]}else{if(e=="inheritableStatics"){o.addInheritableStatics(g[e])}else{if(e=="config"){o.addConfig(g[e],true)}else{n.push(e)}}}}if(q){n.push.apply(n,q)}for(l=n.length;l--;){e=n[l];if(g.hasOwnProperty(e)){h=g[e];if(typeof h=="function"&&!h.$className&&h!==Ext.emptyFn&&h!==Ext.identityFn){if(typeof h.$owner!="undefined"){h=j(h)}h.$owner=o;h.$name=e;k=m[e];if(k){h.$previous=k}}m[e]=h}}m=o;g=p}while(g);return this},callParent:function(e){var g;return(g=this.callParent.caller)&&(g.$previous||(g=g.$owner?g:g.caller)&&g.$owner.superclass.self[g.$name]).apply(this,e||d)},callSuper:function(e){var g;return(g=this.callSuper.caller)&&((g=g.$owner?g:g.caller)&&g.$owner.superclass.self[g.$name]).apply(this,e||d)},mixin:function(g,h){var l=this,t=h.prototype,n=l.prototype,s,m,j,k,q,p,o,e;if(typeof t.onClassMixedIn!="undefined"){t.onClassMixedIn.call(h,l)}if(!n.hasOwnProperty("mixins")){if("mixins" in n){n.mixins=Ext.Object.chain(n.mixins)}else{n.mixins={}}}for(s in t){p=t[s];if(s==="mixins"){Ext.merge(n.mixins,p)}else{if(s==="xhooks"){for(o in p){e=p[o];e.$previous=Ext.emptyFn;if(n.hasOwnProperty(o)){c(e,n[o],o,l)}else{n[o]=c(e,null,o,l)}}}else{if(!(s==="mixinId"||s==="config")&&n[s]===undefined){n[s]=p}}}}m=t.$inheritableStatics;if(m){for(j=0,k=m.length;j<k;j++){q=m[j];if(!l.hasOwnProperty(q)){l[q]=h[q]}}}if("config" in t){l.addConfig(t.config,false)}n.mixins[g]=t;return l},getName:function(){return Ext.getClassName(this)},createAlias:a(function(g,e){this.override(g,function(){return this[e].apply(this,arguments)})}),addXtype:function(k){var g=this.prototype,j=g.xtypesMap,h=g.xtypes,e=g.xtypesChain;if(!g.hasOwnProperty("xtypesMap")){j=g.xtypesMap=Ext.merge({},g.xtypesMap||{});h=g.xtypes=g.xtypes?[].concat(g.xtypes):[];e=g.xtypesChain=g.xtypesChain?[].concat(g.xtypesChain):[];g.xtype=k}if(!j[k]){j[k]=true;h.push(k);e.push(k);Ext.ClassManager.setAlias(this,"widget."+k)}return this}});b.implement({isInstance:true,$className:"Ext.Base",configClass:Ext.emptyFn,initConfigList:[],configMap:{},initConfigMap:{},statics:function(){var g=this.statics.caller,e=this.self;if(!g){return e}return g.$owner},callParent:function(g){var h,e=(h=this.callParent.caller)&&(h.$previous||(h=h.$owner?h:h.caller)&&h.$owner.superclass[h.$name]);return e.apply(this,g||d)},callSuper:function(g){var h,e=(h=this.callSuper.caller)&&(h=h.$owner?h:h.caller)&&h.$owner.superclass[h.$name];return e.apply(this,g||d)},self:b,constructor:function(){return this},initConfig:function(h){var n=h,m=Ext.Class.configNameCache,k=new this.configClass,q=this.initConfigList,j=this.configMap,p,l,o,g,e;this.initConfig=Ext.emptyFn;this.initialConfig=n||{};this.config=h=n?Ext.merge(k,h):k;if(n){q=q.slice();for(g in n){if(j[g]){if(n[g]!==null){q.push(g);this[m[g].initialized]=false}}}}for(l=0,o=q.length;l<o;l++){g=q[l];p=m[g];e=p.initialized;if(!this[e]){this[e]=true;this[p.set].call(this,h[g])}}return this},hasConfig:function(e){return Boolean(this.configMap[e])},setConfig:function(j,n){if(!j){return this}var h=Ext.Class.configNameCache,e=this.config,m=this.configMap,l=this.initialConfig,g,k;n=Boolean(n);for(g in j){if(n&&l.hasOwnProperty(g)){continue}k=j[g];e[g]=k;if(m[g]){this[h[g].set](k)}}return this},getConfig:function(g){var e=Ext.Class.configNameCache;return this[e[g].get]()},getInitialConfig:function(g){var e=this.config;if(!g){return e}else{return e[g]}},onConfigUpdate:function(l,n,o){var p=this.self,h,k,e,j,m,g;l=Ext.Array.from(l);o=o||this;for(h=0,k=l.length;h<k;h++){e=l[h];j="update"+Ext.String.capitalize(e);m=this[j]||Ext.emptyFn;g=function(){m.apply(this,arguments);o[n].apply(o,arguments)};g.$name=j;g.$owner=p;this[j]=g}},destroy:function(){this.destroy=Ext.emptyFn}});b.prototype.callOverridden=b.prototype.callParent;Ext.Base=b})(Ext.Function.flexSetter);(function(){var c,b=Ext.Base,g=[],e,d;for(e in b){if(b.hasOwnProperty(e)){g.push(e)}}d=g.length;function a(j){function h(){return this.constructor.apply(this,arguments)||null}return h}Ext.Class=c=function(j,k,h){if(typeof j!="function"){h=k;k=j;j=null}if(!k){k={}}j=c.create(j,k);c.process(j,k,h);return j};Ext.apply(c,{onBeforeCreated:function(j,k,h){j.addMembers(k);h.onCreated.call(j,j)},create:function(h,l){var j,k;if(!h){h=a()}for(k=0;k<d;k++){j=g[k];h[j]=b[j]}return h},process:function(h,p,l){var k=p.preprocessors||c.defaultPreprocessors,t=this.preprocessors,x={onBeforeCreated:this.onBeforeCreated},w=[],y,o,n,u,m,s,q;delete p.preprocessors;for(n=0,u=k.length;n<u;n++){y=k[n];if(typeof y=="string"){y=t[y];o=y.properties;if(o===true){w.push(y.fn)}else{if(o){for(m=0,s=o.length;m<s;m++){q=o[m];if(p.hasOwnProperty(q)){w.push(y.fn);break}}}}}else{w.push(y)}}x.onCreated=l?l:Ext.emptyFn;x.preprocessors=w;this.doProcess(h,p,x)},doProcess:function(j,n,h){var m=this,o=h.preprocessors,k=o.shift(),l=m.doProcess;for(;k;k=o.shift()){if(k.call(m,j,n,h,l)===false){return}}h.onBeforeCreated.apply(m,arguments)},preprocessors:{},registerPreprocessor:function(j,m,k,h,l){if(!h){h="last"}if(!k){k=[j]}this.preprocessors[j]={name:j,properties:k||false,fn:m};this.setDefaultPreprocessorPosition(j,h,l);return this},getPreprocessor:function(h){return this.preprocessors[h]},getPreprocessors:function(){return this.preprocessors},defaultPreprocessors:[],getDefaultPreprocessors:function(){return this.defaultPreprocessors},setDefaultPreprocessors:function(h){this.defaultPreprocessors=Ext.Array.from(h);return this},setDefaultPreprocessorPosition:function(k,m,l){var h=this.defaultPreprocessors,j;if(typeof m=="string"){if(m==="first"){h.unshift(k);return this}else{if(m==="last"){h.push(k);return this}}m=m==="after"?1:-1}j=Ext.Array.indexOf(h,l);if(j!==-1){Ext.Array.splice(h,Math.max(0,j+m),0,k)}return this},configNameCache:{},getConfigNameMap:function(k){var j=this.configNameCache,l=j[k],h;if(!l){h=k.charAt(0).toUpperCase()+k.substr(1);l=j[k]={internal:k,initialized:"_is"+h+"Initialized",apply:"apply"+h,update:"update"+h,set:"set"+h,get:"get"+h,doSet:"doSet"+h,changeEvent:k.toLowerCase()+"change"}}return l}});c.registerPreprocessor("extend",function(j,l,q){var m=Ext.Base,n=m.prototype,o=l.extend,h,p,k;delete l.extend;if(o&&o!==Object){h=o}else{h=m}p=h.prototype;if(!h.$isClass){for(k in n){if(!p[k]){p[k]=n[k]}}}j.extend(h);j.triggerExtended.apply(j,arguments);if(l.onClassExtended){j.onExtended(l.onClassExtended,j);delete l.onClassExtended}},true);c.registerPreprocessor("statics",function(h,j){h.addStatics(j.statics);delete j.statics});c.registerPreprocessor("inheritableStatics",function(h,j){h.addInheritableStatics(j.inheritableStatics);delete j.inheritableStatics});c.registerPreprocessor("config",function(h,l){var k=l.config,j=h.prototype;delete l.config;Ext.Object.each(k,function(o,z){var x=c.getConfigNameMap(o),s=x.internal,m=x.initialized,y=x.apply,p=x.update,w=x.set,n=x.get,B=w in j||l.hasOwnProperty(w),q=y in j||l.hasOwnProperty(y),t=p in j||l.hasOwnProperty(p),A,u;if(z===null||!B&&!q&&!t){j[s]=z;j[m]=true}else{j[m]=false}if(!B){l[w]=function(E){var D=this[s],C=this[y],F=this[p];if(!this[m]){this[m]=true}if(C){E=C.call(this,E,D)}if(typeof E!="undefined"){this[s]=E;if(F&&E!==D){F.call(this,E,D)}}return this}}if(!(n in j)||l.hasOwnProperty(n)){u=l[n]||false;if(u){A=function(){return u.apply(this,arguments)}}else{A=function(){return this[s]}}l[n]=function(){var C;if(!this[m]){this[m]=true;this[w](this.config[o])}C=this[n];if("$previous" in C){C.$previous=A}else{this[n]=A}return A.apply(this,arguments)}}});h.addConfig(k,true)});c.registerPreprocessor("mixins",function(l,p,h){var j=p.mixins,m,k,n,o;delete p.mixins;Ext.Function.interceptBefore(h,"onCreated",function(){if(j instanceof Array){for(n=0,o=j.length;n<o;n++){k=j[n];m=k.prototype.mixinId||k.$className;l.mixin(m,k)}}else{for(var q in j){if(j.hasOwnProperty(q)){l.mixin(q,j[q])}}}})});Ext.extend=function(k,l,j){if(arguments.length===2&&Ext.isObject(l)){j=l;l=k;k=null}var h;if(!l){throw new Error("[Ext.extend] Attempting to extend from a class which has not been loaded on the page.")}j.extend=l;j.preprocessors=["extend","statics","inheritableStatics","mixins","config"];if(k){h=new c(k,j);h.prototype.constructor=k}else{h=new c(j)}h.prototype.override=function(p){for(var n in p){if(p.hasOwnProperty(n)){this[n]=p[n]}}};return h}})();(function(c,e,h,d,g){function a(){function j(){return this.constructor.apply(this,arguments)||null}return j}var b=Ext.ClassManager={classes:{},existCache:{},namespaceRewrites:[{from:"Ext.",to:Ext}],maps:{alternateToName:{},aliasToName:{},nameToAliases:{},nameToAlternates:{}},enableNamespaceParseCache:true,namespaceParseCache:{},instantiators:[],isCreated:function(n){var m=this.existCache,l,o,k,j,p;if(this.classes[n]||m[n]){return true}j=g;p=this.parseNamespace(n);for(l=0,o=p.length;l<o;l++){k=p[l];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return false}j=j[k]}}m[n]=true;this.triggerCreated(n);return true},createdListeners:[],nameCreatedListeners:{},triggerCreated:function(t){var w=this.createdListeners,m=this.nameCreatedListeners,n=this.maps.nameToAlternates[t],u=[t],p,s,o,q,l,k;for(p=0,s=w.length;p<s;p++){l=w[p];l.fn.call(l.scope,t)}if(n){u.push.apply(u,n)}for(p=0,s=u.length;p<s;p++){k=u[p];w=m[k];if(w){for(o=0,q=w.length;o<q;o++){l=w[o];l.fn.call(l.scope,k)}delete m[k]}}},onCreated:function(n,m,l){var k=this.createdListeners,j=this.nameCreatedListeners,o={fn:n,scope:m};if(l){if(this.isCreated(l)){n.call(m,l);return}if(!j[l]){j[l]=[]}j[l].push(o)}else{k.push(o)}},parseNamespace:function(l){var j=this.namespaceParseCache,m,o,q,k,u,t,s,n,p;if(this.enableNamespaceParseCache){if(j.hasOwnProperty(l)){return j[l]}}m=[];o=this.namespaceRewrites;q=g;k=l;for(n=0,p=o.length;n<p;n++){u=o[n];t=u.from;s=u.to;if(k===t||k.substring(0,t.length)===t){k=k.substring(t.length);if(typeof s!="string"){q=s}else{m=m.concat(s.split("."))}break}}m.push(q);m=m.concat(k.split("."));if(this.enableNamespaceParseCache){j[l]=m}return m},setNamespace:function(m,p){var k=g,q=this.parseNamespace(m),o=q.length-1,j=q[o],n,l;for(n=0;n<o;n++){l=q[n];if(typeof l!="string"){k=l}else{if(!k[l]){k[l]={}}k=k[l]}}k[j]=p;return k[j]},createNamespaces:function(){var k=g,p,m,n,l,o,q;for(n=0,o=arguments.length;n<o;n++){p=this.parseNamespace(arguments[n]);for(l=0,q=p.length;l<q;l++){m=p[l];if(typeof m!="string"){k=m}else{if(!k[m]){k[m]={}}k=k[m]}}}return k},set:function(j,n){var m=this,p=m.maps,o=p.nameToAlternates,l=m.getName(n),k;m.classes[j]=m.setNamespace(j,n);if(l&&l!==j){p.alternateToName[j]=l;k=o[l]||(o[l]=[]);k.push(j)}return this},get:function(l){var n=this.classes,j,p,k,m,o;if(n[l]){return n[l]}j=g;p=this.parseNamespace(l);for(m=0,o=p.length;m<o;m++){k=p[m];if(typeof k!="string"){j=k}else{if(!j||!j[k]){return null}j=j[k]}}return j},setAlias:function(j,k){var m=this.maps.aliasToName,n=this.maps.nameToAliases,l;if(typeof j=="string"){l=j}else{l=this.getName(j)}if(k&&m[k]!==l){m[k]=l}if(!n[l]){n[l]=[]}if(k){Ext.Array.include(n[l],k)}return this},addNameAliasMappings:function(j){var o=this.maps.aliasToName,p=this.maps.nameToAliases,m,n,l,k;for(m in j){n=p[m]||(p[m]=[]);for(k=0;k<j[m].length;k++){l=j[m][k];if(!o[l]){o[l]=m;n.push(l)}}}return this},addNameAlternateMappings:function(m){var j=this.maps.alternateToName,p=this.maps.nameToAlternates,l,n,o,k;for(l in m){n=p[l]||(p[l]=[]);for(k=0;k<m[l].length;k++){o=m[l];if(!j[o]){j[o]=l;n.push(o)}}}return this},getByAlias:function(j){return this.get(this.getNameByAlias(j))},getNameByAlias:function(j){return this.maps.aliasToName[j]||""},getNameByAlternate:function(j){return this.maps.alternateToName[j]||""},getAliasesByName:function(j){return this.maps.nameToAliases[j]||[]},getName:function(j){return j&&j.$className||""},getClass:function(j){return j&&j.self||null},create:function(k,m,j){var l=a();if(typeof m=="function"){m=m(l)}m.$className=k;return new c(l,m,function(){var n=m.postprocessors||b.defaultPostprocessors,w=b.postprocessors,x=[],u,p,t,o,s,q,y;delete m.postprocessors;for(p=0,t=n.length;p<t;p++){u=n[p];if(typeof u=="string"){u=w[u];q=u.properties;if(q===true){x.push(u.fn)}else{if(q){for(o=0,s=q.length;o<s;o++){y=q[o];if(m.hasOwnProperty(y)){x.push(u.fn);break}}}}}else{x.push(u)}}m.postprocessors=x;m.createdFn=j;b.processCreate(k,this,m)})},processCreate:function(m,k,o){var n=this,j=o.postprocessors.shift(),l=o.createdFn;if(!j){if(m){n.set(m,k)}if(l){l.call(k,k)}if(m){n.triggerCreated(m)}return}if(j.call(n,m,k,o,n.processCreate)!==false){n.processCreate(m,k,o)}},createOverride:function(m,q,k){var p=this,o=q.override,l=q.requires,j=q.uses,n=function(){var s,t;if(l){t=l;l=null;Ext.Loader.require(t,n)}else{s=p.get(o);delete q.override;delete q.requires;delete q.uses;Ext.override(s,q);p.triggerCreated(m);if(j){Ext.Loader.addUsedClasses(j)}if(k){k.call(s)}}};p.existCache[m]=true;p.onCreated(n,p,o);return p},instantiateByAlias:function(){var k=arguments[0],j=h.call(arguments),l=this.getNameByAlias(k);if(!l){l=this.maps.aliasToName[k];Ext.syncRequire(l)}j[0]=l;return this.instantiate.apply(this,j)},instantiate:function(){var l=arguments[0],n=typeof l,k=h.call(arguments,1),m=l,o,j;if(n!="function"){if(n!="string"&&k.length===0){k=[l];l=l.xclass}j=this.get(l)}else{j=l}if(!j){o=this.getNameByAlias(l);if(o){l=o;j=this.get(l)}}if(!j){o=this.getNameByAlternate(l);if(o){l=o;j=this.get(l)}}if(!j){Ext.syncRequire(l);j=this.get(l)}return this.getInstantiator(k.length)(j,k)},dynInstantiate:function(k,j){j=d(j,true);j.unshift(k);return this.instantiate.apply(this,j)},getInstantiator:function(m){var l=this.instantiators,n,k,j;n=l[m];if(!n){k=m;j=[];for(k=0;k<m;k++){j.push("a["+k+"]")}n=l[m]=new Function("c","a","return new c("+j.join(",")+")")}return n},postprocessors:{},defaultPostprocessors:[],registerPostprocessor:function(k,n,l,j,m){if(!j){j="last"}if(!l){l=[k]}this.postprocessors[k]={name:k,properties:l||false,fn:n};this.setDefaultPostprocessorPosition(k,j,m);return this},setDefaultPostprocessors:function(j){this.defaultPostprocessors=d(j);return this},setDefaultPostprocessorPosition:function(k,n,m){var l=this.defaultPostprocessors,j;if(typeof n=="string"){if(n==="first"){l.unshift(k);return this}else{if(n==="last"){l.push(k);return this}}n=n==="after"?1:-1}j=Ext.Array.indexOf(l,m);if(j!==-1){Ext.Array.splice(l,Math.max(0,j+n),0,k)}return this},getNamesByExpression:function(q){var o=this.maps.nameToAliases,s=[],j,n,l,k,t,m,p;if(q.indexOf("*")!==-1){q=q.replace(/\*/g,"(.*?)");t=new RegExp("^"+q+"$");for(j in o){if(o.hasOwnProperty(j)){l=o[j];if(j.search(t)!==-1){s.push(j)}else{for(m=0,p=l.length;m<p;m++){n=l[m];if(n.search(t)!==-1){s.push(j);break}}}}}}else{k=this.getNameByAlias(q);if(k){s.push(k)}else{k=this.getNameByAlternate(q);if(k){s.push(k)}else{s.push(q)}}}return s}};b.registerPostprocessor("alias",function(l,k,o){var j=o.alias,m,n;for(m=0,n=j.length;m<n;m++){e=j[m];this.setAlias(k,e)}},["xtype","alias"]);b.registerPostprocessor("singleton",function(k,j,m,l){if(m.singleton){l.call(this,k,new j,m)}else{return true}return false});b.registerPostprocessor("alternateClassName",function(k,j,o){var m=o.alternateClassName,l,n,p;if(!(m instanceof Array)){m=[m]}for(l=0,n=m.length;l<n;l++){p=m[l];this.set(p,j)}});Ext.apply(Ext,{create:e(b,"instantiate"),widget:function(l,k){var p=l,m,n,j,o;if(typeof p!="string"){k=l;p=k.xtype}else{k=k||{}}if(k.isComponent){return k}m="widget."+p;n=b.getNameByAlias(m);if(!n){o=true}j=b.get(n);if(o||!j){return b.instantiateByAlias(m,k)}return new j(k)},createByAlias:e(b,"instantiateByAlias"),define:function(k,l,j){if(l.override){return b.createOverride.apply(b,arguments)}return b.create.apply(b,arguments)},getClassName:e(b,"getName"),getDisplayName:function(j){if(j){if(j.displayName){return j.displayName}if(j.$name&&j.$class){return Ext.getClassName(j.$class)+"#"+j.$name}if(j.$className){return j.$className}}return"Anonymous"},getClass:e(b,"getClass"),namespace:e(b,"createNamespaces")});Ext.createWidget=Ext.widget;Ext.ns=Ext.namespace;c.registerPreprocessor("className",function(j,k){if(k.$className){j.$className=k.$className}},true,"first");c.registerPreprocessor("alias",function(w,o){var t=w.prototype,l=d(o.xtype),j=d(o.alias),x="widget.",u=x.length,p=Array.prototype.slice.call(t.xtypesChain||[]),m=Ext.merge({},t.xtypesMap||{}),n,s,q,k;for(n=0,s=j.length;n<s;n++){q=j[n];if(q.substring(0,u)===x){k=q.substring(u);Ext.Array.include(l,k)}}w.xtype=o.xtype=l[0];o.xtypes=l;for(n=0,s=l.length;n<s;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}o.xtypesChain=p;o.xtypesMap=m;Ext.Function.interceptAfter(o,"onClassCreated",function(){var y=t.mixins,A,z;for(A in y){if(y.hasOwnProperty(A)){z=y[A];l=z.xtypes;if(l){for(n=0,s=l.length;n<s;n++){k=l[n];if(!m[k]){m[k]=true;p.push(k)}}}}}});for(n=0,s=l.length;n<s;n++){k=l[n];Ext.Array.include(j,x+k)}o.alias=j},["xtype","alias"])})(Ext.Class,Ext.Function.alias,Array.prototype.slice,Ext.Array.from,Ext.global);if(Ext._alternatesMetadata){Ext.ClassManager.addNameAlternateMappings(Ext._alternatesMetadata);Ext._alternatesMetadata=null}if(Ext._aliasMetadata){Ext.ClassManager.addNameAliasMappings(Ext._aliasMetadata);Ext._aliasMetadata=null}Ext.Loader=new (function(){var l=this,b=Ext.ClassManager,w=Ext.Class,e=Ext.Function.flexSetter,p=Ext.Function.alias,a=Ext.Function.pass,d=Ext.Function.defer,h=Ext.Array.erase,o=["extend","mixins","requires"],y={},n=[],c=/\/\.\//g,g=/\./g,k=0;Ext.apply(l,{isInHistory:y,history:n,config:{enabled:false,scriptChainDelay:false,disableCaching:true,disableCachingParam:"_dc",garbageCollect:false,paths:{Ext:"."},preserveScripts:true,scriptCharset:undefined},setConfig:function(B,C){if(Ext.isObject(B)&&arguments.length===1){Ext.merge(l.config,B);if("paths" in B){Ext.app.collectNamespaces(B.paths)}}else{l.config[B]=Ext.isObject(C)?Ext.merge(l.config[B],C):C;if(B==="paths"){Ext.app.collectNamespaces(C)}}return l},getConfig:function(B){if(B){return l.config[B]}return l.config},setPath:e(function(B,C){l.config.paths[B]=C;Ext.app.namespaces[B]=true;k++;return l}),addClassPathMappings:function(C){var B;if(k==0){l.config.paths=C}else{for(B in C){l.config.paths[B]=C[B]}}k++;return l},getPath:function(B){var D="",E=l.config.paths,C=l.getPrefix(B);if(C.length>0){if(C===B){return E[C]}D=E[C];B=B.substring(C.length+1)}if(D.length>0){D+="/"}return D.replace(c,"/")+B.replace(g,"/")+".js"},getPrefix:function(C){var E=l.config.paths,D,B="";if(E.hasOwnProperty(C)){return C}for(D in E){if(E.hasOwnProperty(D)&&D+"."===C.substring(0,D.length+1)){if(D.length>B.length){B=D}}}return B},isAClassNameWithAKnownPrefix:function(B){var C=l.getPrefix(B);return C!==""&&C!==B},require:function(D,C,B,E){if(C){C.call(B)}},syncRequire:function(){},exclude:function(B){return{require:function(E,D,C){return l.require(E,D,C,B)},syncRequire:function(E,D,C){return l.syncRequire(E,D,C,B)}}},onReady:function(E,D,F,B){var C;if(F!==false&&Ext.onDocumentReady){C=E;E=function(){Ext.onDocumentReady(C,D,B)}}E.call(D)}});var s=[],t={},x={},u={},q={},z=[],A=[],j={},m=function(B,C){return C.priority-B.priority};Ext.apply(l,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:s,isClassFileLoaded:t,isFileLoaded:x,readyListeners:z,optionalRequires:A,requiresMap:j,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:u,scriptsLoading:0,syncModeEnabled:false,scriptElements:q,refreshQueue:function(){var F=s.length,C,E,B,D;if(!F&&!l.scriptsLoading){return l.triggerReady()}for(C=0;C<F;C++){E=s[C];if(E){D=E.requires;if(D.length>l.numLoadedFiles){continue}for(B=0;B<D.length;){if(b.isCreated(D[B])){h(D,B,1)}else{B++}}if(E.requires.length===0){h(s,C,1);E.callback.call(E.scope);l.refreshQueue();break}}}return l},injectScriptElement:function(B,I,F,K,D){var J=document.createElement("script"),G=false,C=l.config,H=function(){if(!G){G=true;J.onload=J.onreadystatechange=J.onerror=null;if(typeof C.scriptChainDelay=="number"){d(I,C.scriptChainDelay,K)}else{I.call(K)}l.cleanupScriptElement(J,C.preserveScripts===false,C.garbageCollect)}},E=function(L){d(F,1,K);l.cleanupScriptElement(J,C.preserveScripts===false,C.garbageCollect)};J.type="text/javascript";J.onerror=E;D=D||C.scriptCharset;if(D){J.charset=D}if("addEventListener" in J){J.onload=H}else{if("readyState" in J){J.onreadystatechange=function(){if(this.readyState=="loaded"||this.readyState=="complete"){H()}}}else{J.onload=H}}J.src=B;(l.documentHead||document.getElementsByTagName("head")[0]).appendChild(J);return J},removeScriptElement:function(B){if(q[B]){l.cleanupScriptElement(q[B],true,!!l.getConfig("garbageCollect"));delete q[B]}return l},cleanupScriptElement:function(D,C,E){var F;D.onload=D.onreadystatechange=D.onerror=null;if(C){Ext.removeNode(D);if(E){for(F in D){try{if(F!="src"){D[F]=null}delete D[F]}catch(B){}}}}return l},loadScript:function(K){var E=l.getConfig(),D=typeof K=="string",C=D?K:K.url,G=!D&&K.onError,H=!D&&K.onLoad,J=!D&&K.scope,I=function(){l.numPendingFiles--;l.scriptsLoading--;if(G){G.call(J,"Failed loading '"+C+"', please verify that the file exists")}if(l.numPendingFiles+l.scriptsLoading===0){l.refreshQueue()}},F=function(){l.numPendingFiles--;l.scriptsLoading--;if(H){H.call(J)}if(l.numPendingFiles+l.scriptsLoading===0){l.refreshQueue()}},B;l.isLoading=true;l.numPendingFiles++;l.scriptsLoading++;B=E.disableCaching?C+"?"+E.disableCachingParam+"="+Ext.Date.now():C;q[C]=l.injectScriptElement(B,F,I)},loadScriptFile:function(C,J,H,M,B){if(x[C]){return l}var E=l.getConfig(),N=C+(E.disableCaching?"?"+E.disableCachingParam+"="+Ext.Date.now():""),D=false,L,F,K,G="";M=M||l;l.isLoading=true;if(!B){K=function(){};q[C]=l.injectScriptElement(N,J,K,M)}else{if(typeof XMLHttpRequest!="undefined"){L=new XMLHttpRequest}else{L=new ActiveXObject("Microsoft.XMLHTTP")}try{L.open("GET",N,false);L.send(null)}catch(I){D=true}F=L.status===1223?204:L.status===0&&((self.location||{}).protocol=="file:"||(self.location||{}).protocol=="ionp:")?200:L.status;D=D||F===0;if(D){}else{if(F>=200&&F<300||F===304){if(!Ext.isIE){G="\n//@ sourceURL="+C}Ext.globalEval(L.responseText+G);J.call(M)}else{}}L=null}},syncRequire:function(){var B=l.syncModeEnabled;if(!B){l.syncModeEnabled=true}l.require.apply(l,arguments);if(!B){l.syncModeEnabled=false}l.refreshQueue()},require:function(T,K,E,G){var M={},D={},J=[],V=[],S=[],C=[],I,U,O,N,B,H,R,Q,P,L,F;if(G){G=typeof G==="string"?[G]:G;for(Q=0,L=G.length;Q<L;Q++){B=G[Q];if(typeof B=="string"&&B.length>0){J=b.getNamesByExpression(B);for(P=0,F=J.length;P<F;P++){M[J[P]]=true}}}}T=typeof T==="string"?[T]:T?T:[];if(K){if(K.length>0){I=function(){var X=[],W,Y;for(W=0,Y=C.length;W<Y;W++){X.push(b.get(C[W]))}return K.apply(this,X)}}else{I=K}}else{I=Ext.emptyFn}E=E||Ext.global;for(Q=0,L=T.length;Q<L;Q++){N=T[Q];if(typeof N=="string"&&N.length>0){V=b.getNamesByExpression(N);F=V.length;for(P=0;P<F;P++){R=V[P];if(M[R]!==true){C.push(R);if(!b.isCreated(R)&&!D[R]){D[R]=true;S.push(R)}}}}}if(S.length>0){if(!l.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+(S.length>1?"es":"")+": "+S.join(", "))}}else{I.call(E);return l}U=l.syncModeEnabled;if(!U){s.push({requires:S.slice(),callback:I,scope:E})}L=S.length;for(Q=0;Q<L;Q++){H=S[Q];O=l.getPath(H);if(U&&t.hasOwnProperty(H)){if(!t[H]){l.numPendingFiles--;l.removeScriptElement(O);delete t[H]}}if(!t.hasOwnProperty(H)){t[H]=false;u[H]=O;l.numPendingFiles++;l.loadScriptFile(O,a(l.onFileLoaded,[H,O],l),a(l.onFileLoadError,[H,O],l),l,U)}}if(U){I.call(E);if(L===1){return b.get(H)}}return l},onFileLoaded:function(D,C){var B=t[D];l.numLoadedFiles++;t[D]=true;x[C]=true;if(!B){l.numPendingFiles--}if(l.numPendingFiles===0){l.refreshQueue()}},onFileLoadError:function(D,C,B,E){l.numPendingFiles--;l.hasFileLoadError=true},addUsedClasses:function(D){var B,C,E;if(D){D=typeof D=="string"?[D]:D;for(C=0,E=D.length;C<E;C++){B=D[C];if(typeof B=="string"&&!Ext.Array.contains(A,B)){A.push(B)}}}return l},triggerReady:function(){var B,C=A;if(l.isLoading){l.isLoading=false;if(C.length!==0){C=C.slice();A.length=0;l.require(C,l.triggerReady,l);return l}}Ext.Array.sort(z,m);while(z.length&&!l.isLoading){B=z.shift();B.fn.call(B.scope)}return l},onReady:function(E,D,F,B){var C;if(F!==false&&Ext.onDocumentReady){C=E;E=function(){Ext.onDocumentReady(C,D,B)}}if(!l.isLoading){E.call(D)}else{z.push({fn:E,scope:D,priority:B&&B.priority||0})}},historyPush:function(B){if(B&&t.hasOwnProperty(B)&&!y[B]){y[B]=true;n.push(B)}return l}});Ext.disableCacheBuster=function(C,D){var B=new Date;B.setTime(B.getTime()+(C?10*365:-1)*24*60*60*1000);B=B.toGMTString();document.cookie="ext-cache=1; expires="+B+"; path="+(D||"/")};Ext.require=p(l,"require");Ext.syncRequire=p(l,"syncRequire");Ext.exclude=p(l,"exclude");Ext.onReady=function(D,C,B){l.onReady(D,C,true,B)};w.registerPreprocessor("loader",function(R,F,Q,P){var M=this,K=[],B,L=b.getName(R),E,D,J,I,O,H,C,N,G;for(E=0,J=o.length;E<J;E++){H=o[E];if(F.hasOwnProperty(H)){C=F[H];if(typeof C=="string"){K.push(C)}else{if(C instanceof Array){for(D=0,I=C.length;D<I;D++){O=C[D];if(typeof O=="string"){K.push(O)}}}else{if(typeof C!="function"){for(D in C){if(C.hasOwnProperty(D)){O=C[D];if(typeof O=="string"){K.push(O)}}}}}}}}if(K.length===0){return}l.require(K,function(){for(E=0,J=o.length;E<J;E++){H=o[E];if(F.hasOwnProperty(H)){C=F[H];if(typeof C=="string"){F[H]=b.get(C)}else{if(C instanceof Array){for(D=0,I=C.length;D<I;D++){O=C[D];if(typeof O=="string"){F[H][D]=b.get(O)}}}else{if(typeof C!="function"){for(var S in C){if(C.hasOwnProperty(S)){O=C[S];if(typeof O=="string"){F[H][S]=b.get(O)}}}}}}}}P.call(M,R,F,Q)});return false},true,"after","className");b.registerPostprocessor("uses",function(D,C,E){var B=E.uses;if(B){l.addUsedClasses(B)}});b.onCreated(l.historyPush)});if(Ext._classPathMetadata){Ext.Loader.addClassPathMappings(Ext._classPathMetadata);Ext._classPathMetadata=null}(function(){var a=document.getElementsByTagName("script"),b=a[a.length-1],d=b.src,c=d.substring(0,d.lastIndexOf("/")+1),e=Ext.Loader;e.setConfig({enabled:true,disableCaching:true,paths:{Ext:c+"src"}})})();Ext._endTime=(new Date).getTime();if(Ext._beforereadyhandler){Ext._beforereadyhandler()}Ext.Error=Ext.extend(Error,{statics:{ignore:false,raise:function(a){a=a||{};if(Ext.isString(a)){a={msg:a}}var c=this.raise.caller,b;if(c){if(c.$name){a.sourceMethod=c.$name}if(c.$owner){a.sourceClass=c.$owner.$className}}if(Ext.Error.handle(a)!==true){b=Ext.Error.prototype.toString.call(a);Ext.log({msg:b,level:"error",dump:a,stack:true});throw new Ext.Error(a)}},handle:function(){return Ext.Error.ignore}},name:"Ext.Error",constructor:function(a){if(Ext.isString(a)){a={msg:a}}var b=this;Ext.apply(b,a);b.message=b.message||b.msg},toString:function(){var c=this,b=c.sourceClass?c.sourceClass:"",a=c.sourceMethod?"."+c.sourceMethod+"(): ":"",d=c.msg||"(No description provided)";return b+a+d}});Ext.deprecated=function(a){return Ext.emptyFn};Ext.JSON=new (function(){var me=this,encodingFunction,decodingFunction,useNative=null,useHasOwn=!!{}.hasOwnProperty,isNative=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,newline){if(o===null||o===undefined){return"null"}else{if(Ext.isDate(o)){return Ext.JSON.encodeDate(o)}else{if(Ext.isString(o)){return Ext.JSON.encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{if(o.toJSON){return o.toJSON()}else{if(Ext.isArray(o)){return encodeArray(o,newline)}else{if(Ext.isObject(o)){return encodeObject(o,newline)}else{if(typeof o==="function"){return"null"}}}}}}}}}return"undefined"},m={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\","\u000b":"\\u000b"},charToReplace=/[\\\"\x00-\x1f\x7f-\uffff]/g,encodeString=function(s){return'"'+s.replace(charToReplace,function(a){var c=m[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'},encodeArray=function(o,newline){var a=["[",""],len=o.length,i;for(i=0;i<len;i+=1){a.push(Ext.JSON.encodeValue(o[i]),",")}a[a.length-1]="]";return a.join("")},encodeObject=function(o,newline){var a=["{",""],i,val;for(i in o){val=o[i];if(!useHasOwn||o.hasOwnProperty(i)){if(typeof val==="function"||val===undefined){continue}a.push(Ext.JSON.encodeValue(i),":",Ext.JSON.encodeValue(val),",")}}a[a.length-1]="}";return a.join("")};me.encodeString=encodeString;me.encodeValue=doEncode;me.encodeDate=function(o){return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'};me.encode=function(o){if(!encodingFunction){encodingFunction=isNative()?JSON.stringify:me.encodeValue}return encodingFunction(o)};me.decode=function(json,safe){if(!decodingFunction){decodingFunction=isNative()?JSON.parse:doDecode}try{return decodingFunction(json)}catch(e){if(safe===true){return null}Ext.Error.raise({sourceClass:"Ext.JSON",sourceMethod:"decode",msg:"You're trying to decode an invalid JSON String: "+json})}}});Ext.encode=Ext.JSON.encode;Ext.decode=Ext.JSON.decode;Ext.apply(Ext,{userAgent:navigator.userAgent.toLowerCase(),cache:{},idSeed:1000,windowId:"ext-window",documentId:"ext-document",isReady:false,enableGarbageCollector:true,enableListenerCollection:true,rootHierarchyState:{},addCacheEntry:function(g,c,e){e=e||c.dom;var a=Ext.cache,b=g||c&&c.id||e.id,d=a[b]||(a[b]={data:{},events:{},dom:e,skipGarbageCollection:!!(e.getElementById||e.navigator)});if(c){c.$cache=d;d.el=c}return d},updateCacheEntry:function(a,b){a.dom=b;if(a.el){a.el.dom=b}return a},id:function(a,c){var b=this,d="";a=Ext.getDom(a,true)||{};if(a===document){a.id=b.documentId}else{if(a===window){a.id=b.windowId}}if(!a.id){if(b.isSandboxed){d=Ext.sandboxName.toLowerCase()+"-"}a.id=d+(c||"ext-gen")+ ++Ext.idSeed}return a.id},escapeId:function(){var c=/^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,d=/([\W]{1})/g,b=/^(\d)/g,a=function(h,g){return"\\"+g},e=function(h,g){return"\\00"+g.charCodeAt(0).toString(16)+" "};return function(g){return c.test(g)?g:g.replace(d,a).replace(b,e)}}(),getBody:function(){var a;return function(){return a||(a=Ext.get(document.body))}}(),getHead:function(){var a;return function(){return a||(a=Ext.get(document.getElementsByTagName("head")[0]))}}(),getDoc:function(){var a;return function(){return a||(a=Ext.get(document))}}(),getOrientation:function(){return window.innerHeight>window.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b<c;b++){a=arguments[b];if(a){if(Ext.isArray(a)){this.destroy.apply(this,a)}else{if(Ext.isFunction(a.destroy)){a.destroy()}else{if(a.dom){a.remove()}}}}}},callback:function(d,c,b,a){if(Ext.isFunction(d)){b=b||[];c=c||window;if(a){Ext.defer(d,a,c,b)}else{d.apply(c,b)}}},htmlEncode:function(a){return Ext.String.htmlEncode(a)},htmlDecode:function(a){return Ext.String.htmlDecode(a)},urlAppend:function(a,b){return Ext.String.urlAppend(a,b)}});Ext.ns=Ext.namespace;window.undefined=window.undefined;(function(){var q=function(e){return e.test(Ext.userAgent)},x=document.compatMode=="CSS1Compat",J=function(V,U){var e;return V&&(e=U.exec(Ext.userAgent))?parseFloat(e[1]):0},s=document.documentMode,a=q(/opera/),z=a&&q(/version\/10\.5/),O=q(/\bchrome\b/),D=q(/webkit/),c=!O&&q(/safari/),M=c&&q(/applewebkit\/4/),K=c&&q(/version\/3/),H=c&&q(/version\/4/),l=c&&q(/version\/5\.0/),G=c&&q(/version\/5/),k=!a&&q(/msie/),N=k&&(q(/msie 7/)&&s!=8&&s!=9&&s!=10||s==7),L=k&&(q(/msie 8/)&&s!=7&&s!=9&&s!=10||s==8),I=k&&(q(/msie 9/)&&s!=7&&s!=8&&s!=10||s==9),h=k&&(q(/msie 10/)&&s!=7&&s!=8&&s!=9||s==10),Q=k&&q(/msie 6/),b=!D&&q(/gecko/),T=b&&q(/rv:1\.9/),S=b&&q(/rv:2\.0/),R=b&&q(/rv:5\./),u=b&&q(/rv:10\./),C=T&&q(/rv:1\.9\.0/),A=T&&q(/rv:1\.9\.1/),y=T&&q(/rv:1\.9\.2/),g=q(/windows|win32/),F=q(/macintosh|mac os x/),B=q(/linux/),n=null,o=J(true,/\bchrome\/(\d+\.\d+)/),j=J(true,/\bfirefox\/(\d+\.\d+)/),p=J(k,/msie (\d+\.\d+)/),w=J(a,/version\/(\d+\.\d+)/),d=J(c,/version\/(\d+\.\d+)/),E=J(D,/webkit\/(\d+\.\d+)/),t=/^https/i.test(window.location.protocol),m;try{document.execCommand("BackgroundImageCache",false,true)}catch(P){}m=function(){};m.info=m.warn=m.error=Ext.emptyFn;Ext.setVersion("extjs","4.2.0.663");Ext.apply(Ext,{SSL_SECURE_URL:t&&k?"javascript:''":"about:blank",plainTableCls:Ext.buildSettings.baseCSSPrefix+"table-plain",plainListCls:Ext.buildSettings.baseCSSPrefix+"list-plain",enableNestedListenerRemoval:false,USE_NATIVE_JSON:false,getDom:function(V,U){if(!V||!document){return null}if(V.dom){return V.dom}else{if(typeof V=="string"){var W=Ext.getElementById(V);if(W&&k&&U){if(V==W.getAttribute("id")){return W}else{return null}}return W}else{return V}}},removeNode:Q||N||L?function(){var e;return function(W){if(W&&W.tagName.toUpperCase()!="BODY"){Ext.enableNestedListenerRemoval?Ext.EventManager.purgeElement(W):Ext.EventManager.removeAll(W);var U=Ext.cache,V=W.id;if(U[V]){delete U[V].dom;delete U[V]}if(L&&W.parentNode){W.parentNode.removeChild(W)}e=e||document.createElement("div");e.appendChild(W);e.innerHTML=""}}}():function(V){if(V&&V.parentNode&&V.tagName.toUpperCase()!="BODY"){Ext.enableNestedListenerRemoval?Ext.EventManager.purgeElement(V):Ext.EventManager.removeAll(V);var e=Ext.cache,U=V.id;if(e[U]){delete e[U].dom;delete e[U]}V.parentNode.removeChild(V)}},isStrict:x,isIEQuirks:k&&!x&&(Q||N||L||I),isOpera:a,isOpera10_5:z,isWebKit:D,isChrome:O,isSafari:c,isSafari3:K,isSafari4:H,isSafari5:G,isSafari5_0:l,isSafari2:M,isIE:k,isIE6:Q,isIE7:N,isIE7m:Q||N,isIE7p:k&&!Q,isIE8:L,isIE8m:Q||N||L,isIE8p:k&&!(Q||N),isIE9:I,isIE9m:Q||N||L||I,isIE9p:k&&!(Q||N||L),isIE10:h,isIE10m:Q||N||L||I||h,isIE10p:k&&!(Q||N||L||I),isGecko:b,isGecko3:T,isGecko4:S,isGecko5:R,isGecko10:u,isFF3_0:C,isFF3_5:A,isFF3_6:y,isFF4:4<=j&&j<5,isFF5:5<=j&&j<6,isFF10:10<=j&&j<11,isLinux:B,isWindows:g,isMac:F,chromeVersion:o,firefoxVersion:j,ieVersion:p,operaVersion:w,safariVersion:d,webKitVersion:E,isSecure:t,BLANK_IMAGE_URL:Q||N?"//www.sencha.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",value:function(V,e,U){return Ext.isEmpty(V,U)?e:V},escapeRe:function(e){return e.replace(/([-.*+?\^${}()|\[\]\/\\])/g,"\\$1")},addBehaviors:function(X){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(X)})}else{var U={},W,e,V;for(e in X){if((W=e.split("@"))[1]){V=W[0];if(!U[V]){U[V]=Ext.select(V)}U[V].on(W[1],X[e])}}U=null}},getScrollbarSize:function(U){if(!Ext.isReady){return{}}if(U||!n){var e=document.body,V=document.createElement("div");V.style.width=V.style.height="100px";V.style.overflow="scroll";V.style.position="absolute";e.appendChild(V);n={width:V.offsetWidth-V.clientWidth,height:V.offsetHeight-V.clientHeight};e.removeChild(V)}return n},getScrollBarWidth:function(U){var e=Ext.getScrollbarSize(U);return e.width+2},copyTo:function(U,W,Y,X){if(typeof Y=="string"){Y=Y.split(/[,;\s]/)}var Z,V=Y?Y.length:0,e;for(Z=0;Z<V;Z++){e=Y[Z];if(X||W.hasOwnProperty(e)){U[e]=W[e]}}return U},destroyMembers:function(W){for(var V=1,U=arguments,e=U.length;V<e;V++){Ext.destroy(W[U[V]]);delete W[U[V]]}},log:m,partition:function(e,X){var Y=[[],[]],U,W,V=e.length;for(U=0;U<V;U++){W=e[U];Y[X&&X(W,U,e)||!X&&W?0:1].push(W)}return Y},invoke:function(e,X){var Z=[],Y=Array.prototype.slice.call(arguments,2),U,W,V=e.length;for(U=0;U<V;U++){W=e[U];if(W&&typeof W[X]=="function"){Z.push(W[X].apply(W,Y))}else{Z.push(undefined)}}return Z},zip:function(){var aa=Ext.partition(arguments,function(ab){return typeof ab!="function"}),X=aa[0],Z=aa[1][0],e=Ext.max(Ext.pluck(X,"length")),W=[],Y,V,U;for(Y=0;Y<e;Y++){W[Y]=[];if(Z){W[Y]=Z.apply(Z,Ext.pluck(X,Y))}else{for(V=0,U=X.length;V<U;V++){W[Y].push(X[V][Y])}}}return W},toSentence:function(U,e){var X=U.length,W,V;if(X<=1){return U[0]}else{W=U.slice(0,X-1);V=U[X-1];return Ext.util.Format.format("{0} {1} {2}",W.join(", "),e||"and",V)}},setGlyphFontFamily:function(e){Ext._glyphFontFamily=e},useShims:Q})})();Ext.application=function(a){var c,d,b;if(typeof a==="string"){Ext.require(a,function(){c=Ext.ClassManager.get(a)})}else{Ext.Loader.setPath(a.name,a.appFolder||"app");if(d=a.paths){for(b in d){if(d.hasOwnProperty(b)){Ext.Loader.setPath(b,d[b])}}}a["paths processed"]=true;Ext.define(a.name+".$application",Ext.apply({extend:"Ext.app.Application"},a),function(){c=this})}Ext.onReady(function(){Ext.app.Application.instance=new c})};(function(){Ext.ns("Ext.util");Ext.util.Format={};var g=Ext.util.Format,e=/<\/?[^>]+>/gi,c=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,b=/\r?\n/g,d=/[^\d\.]/g,a;Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(h){return h!==undefined?h:""},defaultValue:function(j,h){return j!==undefined&&j!==""?j:h},substr:"ab".substr(-1)!="b"?function(j,l,h){var k=String(j);return l<0?k.substr(Math.max(k.length+l,0),h):k.substr(l,h)}:function(j,k,h){return String(j).substr(k,h)},lowercase:function(h){return String(h).toLowerCase()},uppercase:function(h){return String(h).toUpperCase()},usMoney:function(h){return g.currency(h,"$",2)},currency:function(k,m,j,h){var o="",n=",0",l=0;k=k-0;if(k<0){k=-k;o="-"}j=Ext.isDefined(j)?j:g.currencyPrecision;n+=n+(j>0?".":"");for(;l<j;l++){n+="0"}k=g.number(k,n);if((h||g.currencyAtEnd)===true){return Ext.String.format("{0}{1}{2}",o,k,m||g.currencySign)}else{return Ext.String.format("{0}{1}{2}",o,m||g.currencySign,k)}},date:function(h,j){if(!h){return""}if(!Ext.isDate(h)){h=new Date(Date.parse(h))}return Ext.Date.dateFormat(h,j||Ext.Date.defaultFormat)},dateRenderer:function(h){return function(j){return g.date(j,h)}},stripTags:function(h){return !h?h:String(h).replace(e,"")},stripScripts:function(h){return !h?h:String(h).replace(c,"")},fileSize:function(h){if(h<1024){return h+" bytes"}else{if(h<1048576){return Math.round(h*10/1024)/10+" KB"}else{return Math.round(h*10/1048576)/10+" MB"}}},math:function(){var h={};return function(k,j){if(!h[j]){h[j]=Ext.functionFactory("v","return v "+j+";")}return h[j](k)}}(),round:function(k,j){var h=Number(k);if(typeof j=="number"){j=Math.pow(10,j);h=Math.round(k*j)/j}return h},number:function(z,t){if(!t){return z}z=Ext.Number.from(z,NaN);if(isNaN(z)){return""}var A=g.thousandSeparator,q=g.decimalSeparator,s=z<0,k,h,y,x,p,u,o,l,w;z=Math.abs(z);if(t.substr(t.length-2)=="/i"){if(!a){a=new RegExp("[^\\d\\"+g.decimalSeparator+"]","g")}t=t.substr(0,t.length-2);k=t.indexOf(A)!=-1;h=t.replace(a,"").split(q)}else{k=t.indexOf(",")!=-1;h=t.replace(d,"").split(".")}if(h.length>2){}else{if(h.length>1){z=Ext.Number.toFixed(z,h[1].length)}else{z=Ext.Number.toFixed(z,0)}}y=z.toString();h=y.split(".");if(k){x=h[0];p=[];u=x.length;o=Math.floor(u/3);l=x.length%3||3;for(w=0;w<u;w+=l){if(w!==0){l=3}p[p.length]=x.substr(w,l);o-=1}y=p.join(A);if(h[1]){y+=q+h[1]}}else{if(h[1]){y=h[0]+q+h[1]}}if(s){s=y.replace(/[^1-9]/g,"")!==""}return(s?"-":"")+t.replace(/[\d,?\.?]+/,y)},numberRenderer:function(h){return function(j){return g.number(j,h)}},attributes:function(j){if(typeof j==="object"){var h=[],k;for(k in j){h.push(k,'="',k==="style"?Ext.DomHelper.generateStyles(j[k]):Ext.htmlEncode(j[k]),'"')}j=h.join("")}return j||""},plural:function(h,j,k){return h+" "+(h==1?j:k?k:j+"s")},nl2br:function(h){return Ext.isEmpty(h)?"":h.replace(b,"<br/>")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(j){j=j||0;if(typeof j==="number"){return{top:j,right:j,bottom:j,left:j}}var k=j.split(" "),h=k.length;if(h==1){k[1]=k[2]=k[3]=k[0]}else{if(h==2){k[2]=k[0];k[3]=k[1]}else{if(h==3){k[3]=k[1]}}}return{top:parseInt(k[0],10)||0,right:parseInt(k[1],10)||0,bottom:parseInt(k[2],10)||0,left:parseInt(k[3],10)||0}},escapeRegex:function(h){return h.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})})();Ext.define("Ext.util.TaskRunner",{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=(new Date).getTime();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var m=this,e=m.tasks,a=(new Date).getTime(),n=1e+99,k=e.length,c,o,h,b,d,g;m.timerId=null;m.firing=true;for(h=0;h<k||h<(k=e.length);++h){b=e[h];if(!(g=b.stopped)){c=b.taskRunTime+b.interval;if(c<=a){d=1;try{d=b.run.apply(b.scope||b,b.args||[++b.taskRunCount])}catch(j){try{if(b.onError){d=b.onError.call(b.scope||b,b,j)}}catch(l){}}b.taskRunTime=a;if(d===false||b.taskRunCount===b.repeat){m.stop(b);g=true}else{g=b.stopped;c=a+b.interval}}if(!g&&b.duration&&b.duration<=a-b.taskStartTime){m.stop(b);g=true}}if(g){b.pending=false;if(!o){o=e.slice(0,h)}}else{if(o){o.push(b)}if(n>c){n=c}}}if(o){m.tasks=o}m.firing=false;if(m.tasks.length){m.startTimer(n-a,(new Date).getTime())}if(m.fireIdleEvent!==false){Ext.EventManager.idleEvent.fire()}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e<d.interval){e=d.interval}d.timerId=setTimeout(d.timerFn,e);d.nextExpires=b}}},function(){var b=this,a=b.prototype;a.destroy=a.stopAll;Ext.util.TaskManager=Ext.TaskManager=new b;b.Task=new Ext.Class({isTask:true,stopped:true,fireOnStart:false,constructor:function(c){Ext.apply(this,c)},restart:function(c){if(c!==undefined){this.interval=c}this.manager.start(this)},start:function(c){if(this.stopped){this.restart(c)}},stop:function(){this.manager.stop(this)}});a=b.Task.prototype;a.destroy=a.stop});Ext.define("Ext.util.TaskManager",{extend:Ext.util.TaskRunner,alternateClassName:["Ext.TaskManager"],singleton:true});Ext.define("Ext.perf.Accumulator",function(){var c=null,h=Ext.global.chrome,d,b=function(){b=function(){return(new Date).getTime()};var m,n;if(Ext.isChrome&&h&&h.Interval){m=new h.Interval;m.start();b=function(){return m.microseconds()/1000}}else{if(window.ActiveXObject){try{n=new ActiveXObject("SenchaToolbox.Toolbox");Ext.senchaToolbox=n;b=function(){return n.milliseconds}}catch(o){}}else{if(Date.now){b=Date.now}}}Ext.perf.getTimestamp=Ext.perf.Accumulator.getTimestamp=b;return b()};function j(n,m){n.sum+=m;n.min=Math.min(n.min,m);n.max=Math.max(n.max,m)}function e(p){var n=p?p:b()-this.time,o=this,m=o.accum;++m.count;if(!--m.depth){j(m.total,n)}j(m.pure,n-o.childTime);c=o.parent;if(c){++c.accum.childCount;c.childTime+=n}}function a(){return{min:Number.MAX_VALUE,max:0,sum:0}}function k(n,m){return function(){var p=n.enter(),o=m.apply(this,arguments);p.leave();return o}}function l(m){return Math.round(m*100)/100}function g(o,n,m,q){var p={avg:0,min:q.min,max:q.max,sum:0};if(o){m=m||0;p.sum=q.sum-n*m;p.avg=p.sum/o}return p}return{constructor:function(m){var n=this;n.count=n.childCount=n.depth=n.maxDepth=0;n.pure=a();n.total=a();n.name=m},statics:{getTimestamp:b},format:function(m){if(!d){d=new Ext.XTemplate(["{name} - {count} call(s)",'<tpl if="count">','<tpl if="childCount">'," ({childCount} children)","</tpl>",'<tpl if="depth - 1">'," ({depth} deep)","</tpl>",'<tpl for="times">',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","</tpl>","</tpl>"].join(""),{time:function(o){return Math.round(o*100)/100}})}var n=this.getData(m);n.name=this.name;n.pure.type="Pure";n.total.type="Total";n.times=[n.pure,n.total];return d.apply(n)},getData:function(m){var n=this;return{count:n.count,childCount:n.childCount,depth:n.maxDepth,pure:g(n.count,n.childCount,m,n.pure),total:g(n.count,n.childCount,m,n.total)}},enter:function(){var m=this,n={accum:m,leave:e,childTime:0,parent:c};++m.depth;if(m.maxDepth<m.depth){m.maxDepth=m.depth}c=n;n.time=b();return n},monitor:function(o,n,m){var p=this.enter();if(m){o.apply(n,m)}else{o.call(n)}p.leave()},report:function(){Ext.log(this.format())},tap:function(w,y){var x=this,p=typeof y=="string"?[y]:y,u,z,s,q,o,n,m,t;t=function(){if(typeof w=="string"){u=Ext.global;q=w.split(".");for(s=0,o=q.length;s<o;++s){u=u[q[s]]}}else{u=w}for(s=0,o=p.length;s<o;++s){n=p[s];z=n.charAt(0)=="!";if(z){n=n.substring(1)}else{z=!(n in u.prototype)}m=z?u:u.prototype;m[n]=k(x,m[n])}};Ext.ClassManager.onCreated(t,x,w);return x}}}(),function(){Ext.perf.getTimestamp=this.getTimestamp});Ext.define("Ext.perf.Monitor",{singleton:true,alternateClassName:"Ext.Perf",constructor:function(){this.accumulators=[];this.accumulatorsByName={}},calibrate:function(){var b=new Ext.perf.Accumulator("$"),g=b.total,c=Ext.perf.Accumulator.getTimestamp,e=0,h,a,d;d=c();do{h=b.enter();h.leave();++e}while(g.sum<100);a=c();return(a-d)/e},get:function(b){var c=this,a=c.accumulatorsByName[b];if(!a){c.accumulatorsByName[b]=a=new Ext.perf.Accumulator(b);c.accumulators.push(a)}return a},enter:function(a){return this.get(a).enter()},monitor:function(a,c,b){this.get(a).monitor(c,b)},report:function(){var c=this,b=c.accumulators,a=c.calibrate();b.sort(function(e,d){return e.name<d.name?-1:d.name<e.name?1:0});c.updateGC();Ext.log("Calibration: "+Math.round(a*100)/100+" msec/sample");Ext.each(b,function(d){Ext.log(d.format(a))})},getData:function(c){var b={},a=this.accumulators;Ext.each(a,function(d){if(c||d.count){b[d.name]=d.getData()}});return b},reset:function(){Ext.each(this.accumulators,function(a){var b=a;b.count=b.childCount=b.depth=b.maxDepth=0;b.pure={min:Number.MAX_VALUE,max:0,sum:0};b.total={min:Number.MAX_VALUE,max:0,sum:0}})},updateGC:function(){var a=this.accumulatorsByName.GC,b=Ext.senchaToolbox,c;if(a){a.count=b.garbageCollectionCounter||0;if(a.count){c=a.pure;a.total.sum=c.sum=b.garbageCollectionMilliseconds;c.min=c.max=c.sum/a.count;c=a.total;c.min=c.max=c.sum/a.count}}},watchGC:function(){Ext.perf.getTimestamp();var a=Ext.senchaToolbox;if(a){this.get("GC");a.watchGarbageCollector(false)}},setup:function(c){if(!c){c={render:{"Ext.AbstractComponent":"render"},layout:{"Ext.layout.Context":"run"}}}this.currentConfig=c;var d,g,b,e,a;for(d in c){if(c.hasOwnProperty(d)){g=c[d];b=Ext.Perf.get(d);for(e in g){if(g.hasOwnProperty(e)){a=g[e];b.tap(e,a)}}}}this.watchGC()}});Ext.is={init:function(b){var c=this.platforms,e=c.length,d,a;b=b||window.navigator;for(d=0;d<e;d++){a=c[d];this[a.identity]=a.regex.test(b[a.property])}this.Desktop=this.Mac||this.Windows||this.Linux&&!this.Android;this.Tablet=this.iPad;this.Phone=!this.Desktop&&!this.Tablet;this.iOS=this.iPhone||this.iPad||this.iPod;this.Standalone=!!window.navigator.standalone},platforms:[{property:"platform",regex:/iPhone/i,identity:"iPhone"},{property:"platform",regex:/iPod/i,identity:"iPod"},{property:"userAgent",regex:/iPad/i,identity:"iPad"},{property:"userAgent",regex:/Blackberry/i,identity:"Blackberry"},{property:"userAgent",regex:/Android/i,identity:"Android"},{property:"platform",regex:/Mac/i,identity:"Mac"},{property:"platform",regex:/Win/i,identity:"Windows"},{property:"platform",regex:/Linux/i,identity:"Linux"}]};Ext.is.init();(function(){var a=function(g,e){var d=g.ownerDocument.defaultView,h=(d?d.getComputedStyle(g,null):g.currentStyle)||g.style;return h[e]},c={"IE6-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0],"IE6-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,0],"IE7-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0],"IE7-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0],"IE8-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0],"IE8-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,0,1,0,0],"IE9-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0],"IE9-strict":[0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0],"IE10-quirks":[1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,0,0],"IE10-strict":[1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,0,0]};function b(){var d=Ext.isIE6?"IE6":Ext.isIE7?"IE7":Ext.isIE8?"IE8":Ext.isIE9?"IE9":Ext.isIE10?"IE10":"";return d?d+(Ext.isStrict?"-strict":"-quirks"):""}Ext.supports={init:function(){var l=this,p=document,j=l.toRun||l.tests,h=j.length,d=h&&Ext.isReady&&p.createElement("div"),e=[],m=b(),k,g,o;if(d){d.innerHTML=['<div style="height:30px;width:50px;">','<div style="height:20px;width:20px;"></div>',"</div>",'<div style="width: 200px; height: 200px; position: relative; padding: 5px;">','<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>',"</div>",'<div style="position: absolute; left: 10%; top: 10%;"></div>','<div style="float:left; background-color:transparent;"></div>'].join("");p.body.appendChild(d)}g=c[m];while(h--){k=j[h];o=g&&g[h];if(o!==undefined){l[k.identity]=o}else{if(d||k.early){l[k.identity]=k.fn.call(l,p,d)}else{e.push(k)}}}if(d){p.body.removeChild(d)}l.toRun=e},PointerEvents:"pointerEvents" in document.documentElement.style,LocalStorage:function(){try{return"localStorage" in window&&window.localStorage!==null}catch(d){return false}}(),CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:typeof window.orientation!="undefined"&&"onorientationchange" in window,DeviceMotion:"ondevicemotion" in window,Touch:"ontouchstart" in window&&!Ext.is.Desktop,TimeoutActualLateness:function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}(),tests:[{identity:"Transitions",fn:function(k,m){var j=["webkit","Moz","o","ms","khtml"],l="TransitionEnd",d=[j[0]+l,"transitionend",j[2]+l,j[3]+l,j[4]+l],h=j.length,g=0,e=false;for(;g<h;g++){if(a(m,j[g]+"TransitionProperty")){Ext.supports.CSS3Prefix=j[g];Ext.supports.CSS3TransitionEnd=d[g];e=true;break}}return e}},{identity:"RightMargin",fn:function(e,g){var d=e.defaultView;return !(d&&d.getComputedStyle(g.firstChild.firstChild,null).marginRight!="0px")}},{identity:"DisplayChangeInputSelectionBug",early:true,fn:function(){var d=Ext.webKitVersion;return 0<d&&d<533}},{identity:"DisplayChangeTextAreaSelectionBug",early:true,fn:function(){var d=Ext.webKitVersion;return 0<d&&d<534.24}},{identity:"TransparentColor",fn:function(e,g,d){d=e.defaultView;return !(d&&d.getComputedStyle(g.lastChild,null).backgroundColor!="transparent")}},{identity:"ComputedStyle",fn:function(e,g,d){d=e.defaultView;return d&&d.getComputedStyle}},{identity:"Svg",fn:function(d){return !!d.createElementNS&&!!d.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect}},{identity:"Canvas",fn:function(d){return !!d.createElement("canvas").getContext}},{identity:"Vml",fn:function(e){var g=e.createElement("div");g.innerHTML="<!--[if vml]><br/><br/><![endif]-->";return g.childNodes.length==2}},{identity:"Float",fn:function(d,e){return !!e.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(d){return !!d.createElement("audio").canPlayType}},{identity:"History",fn:function(){var d=window.history;return !!(d&&d.pushState)}},{identity:"CSS3DTransform",fn:function(){return typeof WebKitCSSMatrix!="undefined"&&(new WebKitCSSMatrix).hasOwnProperty("m41")}},{identity:"CSS3LinearGradient",fn:function(k,d){var m="background-image:",l="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",j="linear-gradient(left top, black, white)",h="-moz-"+j,e="-ms-"+j,g="-o-"+j,n=[m+l,m+j,m+h,m+e,m+g];d.style.cssText=n.join(";");return(""+d.style.backgroundImage).indexOf("gradient")!==-1&&!Ext.isIE9}},{identity:"CSS3BorderRadius",fn:function(h,j){var e=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],g=false,d;for(d=0;d<e.length;d++){if(document.body.style[e[d]]!==undefined){return true}}return g}},{identity:"GeoLocation",fn:function(){return typeof navigator!="undefined"&&"geolocation" in navigator||typeof google!="undefined"&&typeof google.gears!="undefined"}},{identity:"MouseEnterLeave",fn:function(d,e){return"onmouseenter" in e&&"onmouseleave" in e}},{identity:"MouseWheel",fn:function(d,e){return"onmousewheel" in e}},{identity:"Opacity",fn:function(d,e){if(Ext.isIE6||Ext.isIE7||Ext.isIE8){return false}e.firstChild.style.cssText="opacity:0.73";return e.firstChild.style.opacity=="0.73"}},{identity:"Placeholder",fn:function(d){return"placeholder" in d.createElement("input")}},{identity:"Direct2DBug",fn:function(){return Ext.isString(document.body.style.msTransformOrigin)&&Ext.isIE10m}},{identity:"BoundingClientRect",fn:function(d,e){return Ext.isFunction(e.getBoundingClientRect)}},{identity:"RotatedBoundingClientRect",fn:function(){var d=document.body,e=false,h=document.createElement("div"),g=h.style;if(h.getBoundingClientRect){g.WebkitTransform=g.MozTransform=g.OTransform=g.transform="rotate(90deg)";g.width="100px";g.height="30px";d.appendChild(h);e=h.getBoundingClientRect().height!==100;d.removeChild(h)}return e}},{identity:"IncludePaddingInWidthCalculation",fn:function(d,e){return e.childNodes[1].firstChild.offsetWidth==210}},{identity:"IncludePaddingInHeightCalculation",fn:function(d,e){return e.childNodes[1].firstChild.offsetHeight==210}},{identity:"ArraySort",fn:function(){var d=[1,2,3,4,5].sort(function(){return 0});return d[0]===1&&d[1]===2&&d[2]===3&&d[3]===4&&d[4]===5}},{identity:"Range",fn:function(){return !!document.createRange}},{identity:"CreateContextualFragment",fn:function(){var d=Ext.supports.Range?document.createRange():false;return d&&!!d.createContextualFragment}},{identity:"WindowOnError",fn:function(){return Ext.isIE||Ext.isGecko||Ext.webKitVersion>=534.16}},{identity:"TextAreaMaxLength",fn:function(){var d=document.createElement("textarea");return"maxlength" in d}},{identity:"GetPositionPercentage",fn:function(d,e){return a(e.childNodes[2],"left")=="10%"}},{identity:"PercentageHeightOverflowBug",fn:function(h){var d=false,g,e;if(Ext.getScrollbarSize().height){e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.overflow="auto";g.position="absolute";e.innerHTML=['<div style="display:table;height:100%;">','<div style="width:51px;"></div>',"</div>"].join("");h.body.appendChild(e);if(e.firstChild.offsetHeight===50){d=true}h.body.removeChild(e)}return d}},{identity:"xOriginBug",fn:function(h,j){j.innerHTML='<div id="b1" style="height:100px;width:100px;direction:rtl;position:relative;overflow:scroll"><div id="b2" style="position:relative;width:100%;height:20px;"></div><div id="b3" style="position:absolute;width:20px;height:20px;top:0px;right:0px"></div></div>';var g=document.getElementById("b1").getBoundingClientRect(),e=document.getElementById("b2").getBoundingClientRect(),d=document.getElementById("b3").getBoundingClientRect();return e.left!==g.left&&d.right!==g.right}}]}})();Ext.supports.init();Ext.util.DelayedTask=function(e,d,b,h){var g=this,j,a,c=function(){clearInterval(j);j=null;e.apply(d,b||[]);Ext.EventManager.idleEvent.fire()};h=typeof h==="boolean"?h:true;g.delay=function(l,n,m,k){if(h){g.cancel()}a=l||a,e=n||e;d=m||d;b=k||b;if(!j){j=setInterval(c,a)}};g.cancel=function(){if(j){clearInterval(j);j=null}}};Ext.define("Ext.util.Event",function(){var d=Array.prototype.slice,a=Ext.Array.insert,b=Ext.Array.toArray,c=Ext.util.DelayedTask;return{isEvent:true,suspended:0,noOptions:{},constructor:function(g,e){this.name=e;this.observable=g;this.listeners=[]},addListener:function(p,s,u){var n=this,o,j,q,e,t,m,h,l,k,g;s=s||n.observable;if(!n.isListening(p,s)){j=n.createListener(p,s,u);if(n.firing){n.listeners=n.listeners.slice(0)}o=n.listeners;l=h=o.length;q=u&&u.priority;t=n._highestNegativePriorityIndex;m=t!==undefined;if(q){e=q<0;if(!e||m){for(k=e?t:0;k<h;k++){g=o[k].o?o[k].o.priority||0:0;if(g<q){l=k;break}}}else{n._highestNegativePriorityIndex=l}}else{if(m){l=t}}if(!e&&l<=t){n._highestNegativePriorityIndex++}if(l===h){n.listeners[h]=j}else{a(n.listeners,l,[j])}}},createListener:function(h,g,l){g=g||this.observable;var j=this,k={fn:h,scope:g,ev:j},e=h;if(l){k.o=l;if(l.single){e=j.createSingle(e,k,l,g)}if(l.target){e=j.createTargeted(e,k,l,g)}if(l.delay){e=j.createDelayed(e,k,l,g)}if(l.buffer){e=j.createBuffered(e,k,l,g)}}k.fireFn=e;return k},findListener:function(k,j){var h=this.listeners,e=h.length,l,g;while(e--){l=h[e];if(l){g=l.scope;if(l.fn==k&&g==(j||this.observable)){return e}}}return -1},isListening:function(g,e){return this.findListener(g,e)!==-1},removeListener:function(j,h){var l=this,g,n,m,e;g=l.findListener(j,h);if(g!=-1){n=l.listeners[g];m=l._highestNegativePriorityIndex;if(l.firing){l.listeners=l.listeners.slice(0)}if(n.task){n.task.cancel();delete n.task}e=n.tasks&&n.tasks.length;if(e){while(e--){n.tasks[e].cancel()}delete n.tasks}l.listeners.splice(g,1);if(m){if(g<m){l._highestNegativePriorityIndex--}else{if(g===m&&g===l.listeners.length){delete l._highestNegativePriorityIndex}}}return true}return false},clearListeners:function(){var g=this.listeners,e=g.length;while(e--){this.removeListener(g[e].fn,g[e].scope)}},suspend:function(){this.suspended+=1},resume:function(){if(this.suspended){this.suspended--}},fire:function(){var l=this,j=l.listeners,k=j.length,h,g,m,e;if(!l.suspended&&k>0){l.firing=true;g=arguments.length?d.call(arguments,0):[];e=g.length;for(h=0;h<k;h++){m=j[h];if(m.o){g[e]=m.o}if(m&&m.fireFn.apply(m.scope||l.observable,g)===false){return l.firing=false}}}l.firing=false;return true},createTargeted:function(g,h,j,e){return function(){if(j.target===arguments[0]){g.apply(e,arguments)}}},createBuffered:function(g,h,j,e){h.task=new c;return function(){h.task.delay(j.buffer,g,e,b(arguments))}},createDelayed:function(g,h,j,e){return function(){var k=new c;if(!h.tasks){h.tasks=[]}h.tasks.push(k);k.delay(j.delay||10,g,e,b(arguments))}},createSingle:function(g,h,j,e){return function(){var k=h.ev;if(k.removeListener(h.fn,e)&&k.observable){k.observable.hasListeners[k.name]--}return g.apply(e,arguments)}}}});Ext.EventManager=new (function(){var a=this,g=document,e=window,d=/\\/g,b=Ext.baseCSSPrefix,h,c=function(){var o=g.body||g.getElementsByTagName("body")[0],k=[b+"body"],j=[],l=Ext.supports.CSS3LinearGradient,n=Ext.supports.CSS3BorderRadius,m;if(!o){return false}m=o.parentNode;function p(q){k.push(b+q)}if(Ext.isIE&&Ext.isIE9m){p("ie");if(Ext.isIE6){p("ie6")}else{p("ie7p");if(Ext.isIE7){p("ie7")}else{p("ie8p");if(Ext.isIE8){p("ie8")}else{p("ie9p");if(Ext.isIE9){p("ie9")}}}}if(Ext.isIE7m){p("ie7m")}if(Ext.isIE8m){p("ie8m")}if(Ext.isIE9m){p("ie9m")}if(Ext.isIE7||Ext.isIE8){p("ie78")}}if(Ext.isIE10){p("ie10")}if(Ext.isGecko){p("gecko");if(Ext.isGecko3){p("gecko3")}if(Ext.isGecko4){p("gecko4")}if(Ext.isGecko5){p("gecko5")}}if(Ext.isOpera){p("opera")}if(Ext.isWebKit){p("webkit")}if(Ext.isSafari){p("safari");if(Ext.isSafari2){p("safari2")}if(Ext.isSafari3){p("safari3")}if(Ext.isSafari4){p("safari4")}if(Ext.isSafari5){p("safari5")}if(Ext.isSafari5_0){p("safari5_0")}}if(Ext.isChrome){p("chrome")}if(Ext.isMac){p("mac")}if(Ext.isLinux){p("linux")}if(!n){p("nbr")}if(!l){p("nlg")}if(m){if(Ext.isStrict&&(Ext.isIE6||Ext.isIE7)){Ext.isBorderBox=false}else{Ext.isBorderBox=true}if(Ext.isBorderBox){j.push(b+"border-box")}if(Ext.isStrict){j.push(b+"strict")}else{j.push(b+"quirks")}Ext.fly(m,"_internal").addCls(j)}Ext.fly(o,"_internal").addCls(k);return true};Ext.apply(a,{hasBoundOnReady:false,hasFiredReady:false,deferReadyEvent:1,onReadyChain:[],readyEvent:function(){h=new Ext.util.Event;h.fire=function(){Ext._beforeReadyTime=Ext._beforeReadyTime||(new Date).getTime();h.self.prototype.fire.apply(h,arguments);Ext._afterReadytime=(new Date).getTime()};return h}(),idleEvent:new Ext.util.Event,isReadyPaused:function(){return/[?&]ext-pauseReadyFire\b/i.test(location.search)&&!Ext._continueFireReady},bindReadyEvent:function(){if(a.hasBoundOnReady){return}if(g.readyState=="complete"){a.onReadyEvent({type:g.readyState||"body"})}else{g.addEventListener("DOMContentLoaded",a.onReadyEvent,false);e.addEventListener("load",a.onReadyEvent,false);a.hasBoundOnReady=true}},onReadyEvent:function(j){if(j&&j.type){a.onReadyChain.push(j.type)}if(a.hasBoundOnReady){g.removeEventListener("DOMContentLoaded",a.onReadyEvent,false);e.removeEventListener("load",a.onReadyEvent,false)}if(!Ext.isReady){a.fireDocReady()}},fireDocReady:function(){if(!Ext.isReady){Ext._readyTime=(new Date).getTime();Ext.isReady=true;Ext.supports.init();a.onWindowUnload();h.onReadyChain=a.onReadyChain;if(Ext.isNumber(a.deferReadyEvent)){Ext.Function.defer(a.fireReadyEvent,a.deferReadyEvent);a.hasDocReadyTimer=true}else{a.fireReadyEvent()}}},fireReadyEvent:function(){a.hasDocReadyTimer=false;a.isFiring=true;while(h.listeners.length&&!a.isReadyPaused()){h.fire()}a.isFiring=false;a.hasFiredReady=true;Ext.EventManager.idleEvent.fire()},onDocumentReady:function(l,k,j){j=j||{};j.single=true;h.addListener(l,k,j);if(!(a.isFiring||a.hasDocReadyTimer)){if(Ext.isReady){a.fireReadyEvent()}else{a.bindReadyEvent()}}},stoppedMouseDownEvent:new Ext.util.Event,propRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|freezeEvent)$/,getId:function(j){var k;j=Ext.getDom(j);if(j===g||j===e){k=j===g?Ext.documentId:Ext.windowId}else{k=Ext.id(j)}if(!Ext.cache[k]){Ext.addCacheEntry(k,null,j)}return k},prepareListenerConfig:function(m,k,o){var p=a.propRe,l,n,j;for(l in k){if(k.hasOwnProperty(l)){if(!p.test(l)){n=k[l];if(typeof n=="function"){j=[m,l,n,k.scope,k]}else{j=[m,l,n.fn,n.scope,n]}if(o){a.removeListener.apply(a,j)}else{a.addListener.apply(a,j)}}}}},mouseEnterLeaveRe:/mouseenter|mouseleave/,normalizeEvent:function(j,k){if(a.mouseEnterLeaveRe.test(j)&&!Ext.supports.MouseEnterLeave){if(k){k=Ext.Function.createInterceptor(k,a.contains)}j=j=="mouseenter"?"mouseover":"mouseout"}else{if(j=="mousewheel"&&!Ext.supports.MouseWheel&&!Ext.isOpera){j="DOMMouseScroll"}}return{eventName:j,fn:k}},contains:function(k){k=k.browserEvent||k;var j=k.currentTarget,l=a.getRelatedTarget(k);if(j&&j.firstChild){while(l){if(l===j){return false}l=l.parentNode;if(l&&l.nodeType!=1){l=null}}}return true},addListener:function(n,p,s,t,u){if(typeof p!=="string"){a.prepareListenerConfig(n,p);return}var m=n.dom||Ext.getDom(n),q,l,j,k,o;u=u||{};q=a.normalizeEvent(p,s);l=a.createListenerWrap(m,p,q.fn,t,u);j=a.getEventListenerCache(n.dom?n:m,p);p=q.eventName;if(m.attachEvent){k=a.normalizeId(m);if(k){o=Ext.cache[k][p];if(o&&o.firing){j=a.cloneEventListenerCache(m,p)}}}j.push({fn:s,wrap:l,scope:t});if(m.attachEvent){if(j.length===1){k=a.normalizeId(m,true);s=Ext.Function.bind(a.handleSingleEvent,a,[k,p],true);Ext.cache[k][p]={firing:false,fn:s};m.attachEvent("on"+p,s)}}else{m.addEventListener(p,l,u.capture||false)}if(m==g&&p=="mousedown"){a.stoppedMouseDownEvent.addListener(l)}},normalizeId:function(k,j){var l;if(k===document){l=Ext.documentId}else{if(k===window){l=Ext.windowId}else{l=k.id}}if(!l&&j){l=a.getId(k)}return l},handleSingleEvent:function(o,p,l){var m=a.getEventListenerCache(p,l),k=Ext.cache[p][l],j,n;if(k.firing){return}k.firing=true;for(n=0,j=m.length;n<j;++n){m[n].wrap(o)}k.firing=false},removeListener:function(t,w,x,z){if(typeof w!=="string"){a.prepareListenerConfig(t,w,true);return}var q=Ext.getDom(t),m,n=t.dom?t:Ext.get(q),k=a.getEventListenerCache(n,w),y=a.normalizeEvent(w).eventName,s=k.length,p,u,o,l;while(s--){o=k[s];if(o&&(!x||o.fn==x)&&(!z||o.scope===z)){l=o.wrap;if(l.task){clearTimeout(l.task);delete l.task}p=l.tasks&&l.tasks.length;if(p){while(p--){clearTimeout(l.tasks[p])}delete l.tasks}if(q.detachEvent){m=a.normalizeId(q,true);u=Ext.cache[m][y];if(u&&u.firing){k=a.cloneEventListenerCache(q,y)}if(k.length===1){x=u.fn;delete Ext.cache[m][y];q.detachEvent("on"+y,x)}}else{q.removeEventListener(y,l,false)}if(l&&q==g&&w=="mousedown"){a.stoppedMouseDownEvent.removeListener(l)}Ext.Array.erase(k,s,1)}}},removeAll:function(m){var n=typeof m==="string"?m:m.id,k,l,j;if(n&&(k=Ext.cache[n])){l=k.events;for(j in l){if(l.hasOwnProperty(j)){a.removeListener(m,j)}}k.events={}}},purgeElement:function(m,k){var o=Ext.getDom(m),l=0,j,n;if(k){a.removeListener(m,k)}else{a.removeAll(m)}if(o&&o.childNodes){n=o.childNodes;for(j=n.length;l<j;l++){a.purgeElement(n[l],k)}}},createListenerWrap:function(q,k,n,m,j){j=j||{};var o,p,l=function(t,s){if(!p){o=["if(!"+Ext.name+") {return;}"];if(j.buffer||j.delay||j.freezeEvent){if(j.freezeEvent){o.push("e = X.EventObject.setEvent(e);")}o.push("e = new X.EventObjectImpl(e, "+(j.freezeEvent?"true":"false")+");")}else{o.push("e = X.EventObject.setEvent(e);")}if(j.delegate){o.push('var result, t = e.getTarget("'+(j.delegate+"").replace(d,"\\\\")+'", this);');o.push("if(!t) {return;}")}else{o.push("var t = e.target, result;")}if(j.target){o.push("if(e.target !== options.target) {return;}")}if(j.stopEvent){o.push("e.stopEvent();")}else{if(j.preventDefault){o.push("e.preventDefault();")}if(j.stopPropagation){o.push("e.stopPropagation();")}}if(j.normalized===false){o.push("e = e.browserEvent;")}if(j.buffer){o.push("(wrap.task && clearTimeout(wrap.task));");o.push("wrap.task = setTimeout(function() {")}if(j.delay){o.push("wrap.tasks = wrap.tasks || [];");o.push("wrap.tasks.push(setTimeout(function() {")}o.push("result = fn.call(scope || dom, e, t, options);");if(j.single){o.push("evtMgr.removeListener(dom, ename, fn, scope);")}if(k!=="mousemove"&&k!=="unload"){o.push("if (evtMgr.idleEvent.listeners.length) {");o.push("evtMgr.idleEvent.fire();");o.push("}")}if(j.delay){o.push("}, "+j.delay+"));")}if(j.buffer){o.push("}, "+j.buffer+");")}o.push("return result;");p=Ext.cacheableFunctionFactory("e","options","fn","scope","ename","dom","wrap","args","X","evtMgr",o.join("\n"))}return p.call(q,t,j,n,m,k,q,l,s,Ext,a)};return l},getEventCache:function(l){var k,j,m;if(!l){return[]}if(l.$cache){k=l.$cache}else{if(typeof l==="string"){m=l}else{m=a.getId(l)}k=Ext.cache[m]}j=k.events||(k.events={});return j},getEventListenerCache:function(l,j){var k=a.getEventCache(l);return k[j]||(k[j]=[])},cloneEventListenerCache:function(m,j){var l=a.getEventCache(m),k;if(l[j]){k=l[j].slice(0)}else{k=[]}l[j]=k;return k},mouseLeaveRe:/(mouseout|mouseleave)/,mouseEnterRe:/(mouseover|mouseenter)/,stopEvent:function(j){a.stopPropagation(j);a.preventDefault(j)},stopPropagation:function(j){j=j.browserEvent||j;if(j.stopPropagation){j.stopPropagation()}else{j.cancelBubble=true}},preventDefault:function(j){j=j.browserEvent||j;if(j.preventDefault){j.preventDefault()}else{j.returnValue=false;try{if(j.ctrlKey||j.keyCode>111&&j.keyCode<124){j.keyCode=-1}}catch(k){}}},getRelatedTarget:function(j){j=j.browserEvent||j;var k=j.relatedTarget;if(!k){if(a.mouseLeaveRe.test(j.type)){k=j.toElement}else{if(a.mouseEnterRe.test(j.type)){k=j.fromElement}}}return a.resolveTextNode(k)},getPageX:function(j){return a.getPageXY(j)[0]},getPageY:function(j){return a.getPageXY(j)[1]},getPageXY:function(l){l=l.browserEvent||l;var k=l.pageX,n=l.pageY,m=g.documentElement,j=g.body;if(!k&&k!==0){k=l.clientX+(m&&m.scrollLeft||j&&j.scrollLeft||0)-(m&&m.clientLeft||j&&j.clientLeft||0);n=l.clientY+(m&&m.scrollTop||j&&j.scrollTop||0)-(m&&m.clientTop||j&&j.clientTop||0)}return[k,n]},getTarget:function(j){j=j.browserEvent||j;return a.resolveTextNode(j.target||j.srcElement)},resolveTextNode:Ext.isGecko?function(k){if(k){var j=HTMLElement.prototype.toString.call(k);if(j!=="[xpconnect wrapped native prototype]"&&j!=="[object XULElement]"){return k.nodeType==3?k.parentNode:k}}}:function(j){return j&&j.nodeType==3?j.parentNode:j},curWidth:0,curHeight:0,onWindowResize:function(m,l,k){var j=a.resizeEvent;if(!j){a.resizeEvent=j=new Ext.util.Event;a.on(e,"resize",a.fireResize,null,{buffer:100})}j.addListener(m,l,k)},fireResize:function(){var j=Ext.Element.getViewWidth(),k=Ext.Element.getViewHeight();if(a.curHeight!=k||a.curWidth!=j){a.curHeight=k;a.curWidth=j;a.resizeEvent.fire(j,k)}},removeResizeListener:function(l,k){var j=a.resizeEvent;if(j){j.removeListener(l,k)}},onWindowUnload:function(m,l,k){var j=a.unloadEvent;if(!j){a.unloadEvent=j=new Ext.util.Event;a.addListener(e,"unload",a.fireUnload)}if(m){j.addListener(m,l,k)}},fireUnload:function(){try{g=e=undefined;var o,k,m,l,j;a.unloadEvent.fire();if(Ext.isGecko3){o=Ext.ComponentQuery.query("gridview");k=0;m=o.length;for(;k<m;k++){o[k].scrollToTop()}}j=Ext.cache;for(l in j){if(j.hasOwnProperty(l)){a.removeAll(l)}}}catch(n){}},removeUnloadListener:function(l,k){var j=a.unloadEvent;if(j){j.removeListener(l,k)}},useKeyDown:Ext.isWebKit?parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1],10)>=525:!(Ext.isGecko&&!Ext.isWindows||Ext.isOpera),getKeyEvent:function(){return a.useKeyDown?"keydown":"keypress"}});if(!("addEventListener" in document)&&document.attachEvent){Ext.apply(a,{pollScroll:function(){var j=true;try{document.documentElement.doScroll("left")}catch(k){j=false}if(j&&document.body){a.onReadyEvent({type:"doScroll"})}else{a.scrollTimeout=setTimeout(a.pollScroll,20)}return j},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var j=document.readyState;if(a.readyStatesRe.test(j)){a.onReadyEvent({type:j})}},bindReadyEvent:function(){var j=true;if(a.hasBoundOnReady){return}try{j=window.frameElement===undefined}catch(k){j=false}if(!j||!g.documentElement.doScroll){a.pollScroll=Ext.emptyFn}if(a.pollScroll()===true){return}if(g.readyState=="complete"){a.onReadyEvent({type:"already "+(g.readyState||"body")})}else{g.attachEvent("onreadystatechange",a.checkReadyState);window.attachEvent("onload",a.onReadyEvent);a.hasBoundOnReady=true}},onReadyEvent:function(j){if(j&&j.type){a.onReadyChain.push(j.type)}if(a.hasBoundOnReady){document.detachEvent("onreadystatechange",a.checkReadyState);window.detachEvent("onload",a.onReadyEvent)}if(Ext.isNumber(a.scrollTimeout)){clearTimeout(a.scrollTimeout);delete a.scrollTimeout}if(!Ext.isReady){a.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(l,k,j){Ext.Loader.onReady(l,k,true,j)};Ext.onDocumentReady=a.onDocumentReady;a.on=a.addListener;a.un=a.removeListener;Ext.onReady(c)});Ext.define("Ext.util.Observable",function(a){var d=[],e=Array.prototype,g=e.slice,c=Ext.util.Event,b=function(h){if(h instanceof b){return h}this.observable=h;if(arguments[1].isObservable){this.managedListeners=true}this.args=g.call(arguments,1)};b.prototype.destroy=function(){this.observable[this.managedListeners?"mun":"un"].apply(this.observable,this.args)};return{statics:{releaseCapture:function(h){h.fireEvent=this.prototype.fireEvent},capture:function(k,j,h){k.fireEvent=Ext.Function.createInterceptor(k.fireEvent,j,h)},observe:function(h,j){if(h){if(!h.isObservable){Ext.applyIf(h,new this);this.capture(h.prototype,h.fireEvent,h)}if(Ext.isObject(j)){h.on(j)}}return h},prepareClass:function(k,j){if(!k.HasListeners){var l=function(){},h=k.superclass.HasListeners||j&&j.HasListeners||a.HasListeners;k.prototype.HasListeners=k.HasListeners=l;l.prototype=k.hasListeners=new h}}},isObservable:true,eventsSuspended:0,constructor:function(h){var j=this;Ext.apply(j,h);if(!j.hasListeners){j.hasListeners=new j.HasListeners}j.events=j.events||{};if(j.listeners){j.on(j.listeners);j.listeners=null}if(j.bubbleEvents){j.enableBubble(j.bubbleEvents)}},onClassExtended:function(h){if(!h.HasListeners){a.prepareClass(h)}},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/,addManagedListener:function(p,l,n,q,s,k){var m=this,o=m.managedListeners=m.managedListeners||[],j,h;if(typeof l!=="string"){h=arguments.length>4?s:l;s=l;for(l in s){if(s.hasOwnProperty(l)){j=s[l];if(!m.eventOptionsRe.test(l)){m.addManagedListener(p,l,j.fn||j,j.scope||s.scope||q,j.fn?j:h,true)}}}if(s&&s.destroyable){return new b(m,p,s)}}else{if(typeof n==="string"){q=q||m;n=q[n]}o.push({item:p,ename:l,fn:n,scope:q,options:s});p.on(l,n,q,s);if(!k&&s&&s.destroyable){return new b(m,p,l,n,q)}}},removeManagedListener:function(p,k,n,q){var m=this,s,j,o,h,l;if(typeof k!=="string"){s=k;for(k in s){if(s.hasOwnProperty(k)){j=s[k];if(!m.eventOptionsRe.test(k)){m.removeManagedListener(p,k,j.fn||j,j.scope||s.scope||q)}}}}else{o=m.managedListeners?m.managedListeners.slice():[];for(l=0,h=o.length;l<h;l++){m.removeManagedListenerItem(false,o[l],p,k,n,q)}}},fireEvent:function(h){return this.fireEventArgs(h,Array.prototype.slice.call(arguments,1))},fireEventArgs:function(h,k){h=h.toLowerCase();var n=this,l=n.events,m=l&&l[h],j=true;if(m&&n.hasListeners[h]){j=n.continueFireEvent(h,k||d,m.bubble)}return j},continueFireEvent:function(k,m,j){var o=this,h,n,l=true;do{if(o.eventsSuspended){if(h=o.eventQueue){h.push([k,m,j])}return l}else{n=o.events[k];if(n&&n!=true){if((l=n.fire.apply(n,m))===false){break}}}}while(j&&(o=o.getBubbleParent()));return l},getBubbleParent:function(){var j=this,h=j.getBubbleTarget&&j.getBubbleTarget();if(h&&h.isObservable){return h}return null},addListener:function(l,n,m,k){var p=this,j,o,h=0;if(typeof l!=="string"){k=l;for(l in k){if(k.hasOwnProperty(l)){j=k[l];if(!p.eventOptionsRe.test(l)){p.addListener(l,j.fn||j,j.scope||k.scope,j.fn?j:k)}}}if(k&&k.destroyable){return new b(p,k)}}else{l=l.toLowerCase();o=p.events[l];if(o&&o.isEvent){h=o.listeners.length}else{p.events[l]=o=new c(p,l)}if(typeof n==="string"){m=m||p;n=m[n]}o.addListener(n,m,k);if(o.listeners.length!==h){p.hasListeners._incr_(l)}if(k&&k.destroyable){return new b(p,l,n,m,k)}}},removeListener:function(k,m,l){var o=this,j,n,h;if(typeof k!=="string"){h=k;for(k in h){if(h.hasOwnProperty(k)){j=h[k];if(!o.eventOptionsRe.test(k)){o.removeListener(k,j.fn||j,j.scope||h.scope)}}}}else{k=k.toLowerCase();n=o.events[k];if(n&&n.isEvent){if(n.removeListener(m,l)){o.hasListeners._decr_(k)}}}},clearListeners:function(){var k=this.events,h=this.hasListeners,l,j;for(j in k){if(k.hasOwnProperty(j)){l=k[j];if(l.isEvent){delete h[j];l.clearListeners()}}}this.clearManagedListeners()},clearManagedListeners:function(){var j=this.managedListeners||[],k=0,h=j.length;for(;k<h;k++){this.removeManagedListenerItem(true,j[k])}this.managedListeners=[]},removeManagedListenerItem:function(j,h,n,k,m,l){if(j||h.item===n&&h.ename===k&&(!m||h.fn===m)&&(!l||h.scope===l)){h.item.un(h.ename,h.fn,h.scope);if(!j){Ext.Array.remove(this.managedListeners,h)}}},addEvents:function(n){var m=this,l=m.events||(m.events={}),h,j,k;if(typeof n=="string"){for(j=arguments,k=j.length;k--;){h=j[k];if(!l[h]){l[h]=true}}}else{Ext.applyIf(m.events,n)}},hasListener:function(h){return !!this.hasListeners[h.toLowerCase()]},suspendEvents:function(h){this.eventsSuspended+=1;if(h&&!this.eventQueue){this.eventQueue=[]}},suspendEvent:function(j){var h=arguments.length,k,l;for(k=0;k<h;k++){l=this.events[arguments[k]];if(l&&l.suspend){l.suspend()}}},resumeEvent:function(){var h=arguments.length,j,k;for(j=0;j<h;j++){k=this.events[arguments[j]];if(k&&k.resume){k.resume()}}},resumeEvents:function(){var h=this,l=h.eventQueue,k,j;if(h.eventsSuspended&&!--h.eventsSuspended){delete h.eventQueue;if(l){k=l.length;for(j=0;j<k;j++){h.continueFireEvent.apply(h,l[j])}}}},relayEvents:function(j,l,o){var n=this,h=l.length,k=0,m,p={};for(;k<h;k++){m=l[k];p[m]=n.createRelayer(o?o+m:m)}n.mon(j,p,null,null,undefined);return new b(n,j,p)},createRelayer:function(h,j){var k=this;return function(){return k.fireEventArgs.call(k,h,j?Array.prototype.slice.apply(arguments,j):arguments)}},enableBubble:function(p){if(p){var n=this,o=typeof p=="string"?arguments:p,m=o.length,k=n.events,j,l,h;for(h=0;h<m;++h){j=o[h].toLowerCase();l=k[j];if(!l||typeof l=="boolean"){k[j]=l=new c(n,j)}n.hasListeners._incr_(j);l.bubble=true}}}}},function(){var b=this,e=b.prototype,c=function(){},g=function(h){if(!h.HasListeners){var j=h.prototype;b.prepareClass(h,this);h.onExtended(function(k){b.prepareClass(k)});if(j.onClassMixedIn){Ext.override(h,{onClassMixedIn:function(k){g.call(this,k);this.callParent(arguments)}})}else{j.onClassMixedIn=function(k){g.call(this,k)}}}},a;c.prototype={_decr_:function(h){if(!--this[h]){delete this[h]}},_incr_:function(h){if(this.hasOwnProperty(h)){++this[h]}else{this[h]=1}}};e.HasListeners=b.HasListeners=c;b.createAlias({on:"addListener",un:"removeListener",mon:"addManagedListener",mun:"removeManagedListener"});b.observeClass=b.observe;Ext.globalEvents=a=new b({events:{idle:Ext.EventManager.idleEvent,ready:Ext.EventManager.readyEvent}});Ext.on=function(){return a.addListener.apply(a,arguments)};Ext.un=function(){return a.removeListener.apply(a,arguments)};function d(o){var n=(this.methodEvents=this.methodEvents||{})[o],k,j,l,m=this,h;if(!n){this.methodEvents[o]=n={};n.originalFn=this[o];n.methodName=o;n.before=[];n.after=[];h=function(s,q,p){if((j=s.apply(q||m,p))!==undefined){if(typeof j=="object"){if(j.returnValue!==undefined){k=j.returnValue}else{k=j}l=!!j.cancel}else{if(j===false){l=true}else{k=j}}}};this[o]=function(){var s=Array.prototype.slice.call(arguments,0),q,t,p;k=j=undefined;l=false;for(t=0,p=n.before.length;t<p;t++){q=n.before[t];h(q.fn,q.scope,s);if(l){return k}}if((j=n.originalFn.apply(m,s))!==undefined){k=j}for(t=0,p=n.after.length;t<p;t++){q=n.after[t];h(q.fn,q.scope,s);if(l){return k}}return k}}return n}Ext.apply(e,{onClassMixedIn:g,beforeMethod:function(k,j,h){d.call(this,k).before.push({fn:j,scope:h})},afterMethod:function(k,j,h){d.call(this,k).after.push({fn:j,scope:h})},removeMethodListener:function(n,l,k){var m=this.getMethodEvent(n),j,h;for(j=0,h=m.before.length;j<h;j++){if(m.before[j].fn==l&&m.before[j].scope==k){Ext.Array.erase(m.before,j,1);return}}for(j=0,h=m.after.length;j<h;j++){if(m.after[j].fn==l&&m.after[j].scope==k){Ext.Array.erase(m.after,j,1);return}}},toggleEventLogging:function(h){Ext.util.Observable[h?"capture":"releaseCapture"](this,function(j){if(Ext.isDefined(Ext.global.console)){Ext.global.console.log(j,arguments)}})}})});Ext.define("Ext.EventObjectImpl",{BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN: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,WHEEL_SCALE:function(){var a;if(Ext.isGecko){a=3}else{if(Ext.isMac){if(Ext.isSafari&&Ext.webKitVersion>=532){a=120}else{a=12}a*=3}else{a=120}}return a}(),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d===c||d&&d.browserEvent){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:d.which?d.which-1:-1;if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:e?c.getXY():null}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?this.safariKeys[a]||a:a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b&&this.relatedTarget){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=c<0?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d).contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},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(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:function(){var d,e={},c;if(!Ext.isIE&&document.createEvent){d={createHtmlEvent:function(l,j,h,g){var k=l.createEvent("HTMLEvents");k.initEvent(j,h,g);return k},createMouseEvent:function(x,u,n,m,p,l,j,k,g,t,s,o,q){var h=x.createEvent("MouseEvents"),w=x.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(u,n,m,w,p,l,j,l,j,k,g,t,s,o,q)}else{h=x.createEvent("UIEvents");h.initEvent(u,n,m);h.view=w;h.detail=p;h.screenX=l;h.screenY=j;h.clientX=l;h.clientY=j;h.ctrlKey=k;h.altKey=g;h.metaKey=s;h.shiftKey=t;h.button=o;h.relatedTarget=q}return h},createUIEvent:function(n,l,j,h,k){var m=n.createEvent("UIEvents"),g=n.defaultView||window;m.initUIEvent(l,j,h,g,k);return m},fireEvent:function(j,g,h){j.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(l,j,h,g){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},createMouseEvent:function(w,u,n,m,p,l,j,k,g,t,s,o,q){var h=w.createEventObject();h.bubbles=n;h.cancelable=m;h.detail=p;h.screenX=l;h.screenY=j;h.clientX=l;h.clientY=j;h.ctrlKey=k;h.altKey=g;h.shiftKey=t;h.metaKey=s;h.button=c[o]||o;h.relatedTarget=q;return h},createUIEvent:function(m,k,h,g,j){var l=m.createEventObject();l.bubbles=h;l.cancelable=g;return l},fireEvent:function(j,g,h){j.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(j,k){var h=k[0],g=k[1];e[j]=function(n,l){var m=d.createHtmlEvent(j,h,g);d.fireEvent(n,j,m)}});function b(j,h){var g=j!="mousemove";return function(n,k){var m=k.getXY(),l=d.createMouseEvent(n.ownerDocument,j,true,g,h,m[0],m[1],k.ctrlKey,k.altKey,k.shiftKey,k.metaKey,k.button,k.relatedTarget);d.fireEvent(n,j,l)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(j,k){var h=k[0],g=k[1];e[j]=function(n,l){var m=d.createUIEvent(n.ownerDocument,j,h,g,1);d.fireEvent(n,j,m)}});if(!d){e={};d={fixTarget:Ext.identityFn}}function a(h,g){}return function(k){var j=this,h=e[j.type]||a,g=k?k.dom||k:j.getTarget();g=d.fixTarget(g);h(g,j)}}()},function(){Ext.EventObject=new Ext.EventObjectImpl});Ext.define("Ext.dom.AbstractQuery",{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g<c;g++){if(typeof k[g]=="string"){if(typeof k[g][0]=="@"){d=b.getAttributeNode(k[g].substring(1));h.push(d)}else{d=b.querySelectorAll(k[g]);for(e=0,a=d.length;e<a;e++){h.push(d[e])}}}}return h},selectNode:function(b,a){return this.select(b,a)[0]},is:function(a,b){if(typeof a=="string"){a=document.getElementById(a)}return this.select(b).indexOf(a)!==-1}});Ext.define("Ext.dom.AbstractHelper",{emptyTags:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,confRe:/^(?:tag|children|cn|html|tpl|tplData)$/i,endRe:/end/i,styleSepRe:/\s*(?::|;)\s*/,attributeTransform:{cls:"class",htmlFor:"for"},closeTags:{},decamelizeName:function(){var c=/([a-z])([A-Z])/g,b={};function a(d,g,e){return g+"-"+e.toLowerCase()}return function(d){return b[d]||(b[d]=d.replace(c,a))}}(),generateMarkup:function(j,b){var h=this,g=typeof j,e,a,k,d,c;if(g=="string"||g=="number"){b.push(j)}else{if(Ext.isArray(j)){for(d=0;d<j.length;d++){if(j[d]){h.generateMarkup(j[d],b)}}}else{k=j.tag||"div";b.push("<",k);for(e in j){if(j.hasOwnProperty(e)){a=j[e];if(!h.confRe.test(e)){if(typeof a=="object"){b.push(" ",e,'="');h.generateStyles(a,b).push('"')}else{b.push(" ",h.attributeTransform[e]||e,'="',a,'"')}}}}if(h.emptyTags.test(k)){b.push("/>")}else{b.push(">");if(a=j.tpl){a.applyOut(j.tplData,b)}if(a=j.html){b.push(a)}if(a=j.cn||j.children){h.generateMarkup(a,b)}c=h.closeTags;b.push(c[k]||(c[k]="</"+k+">"))}}}return b},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(c,d){if(d){var b=0,a;c=Ext.fly(c,"_applyStyles");if(typeof d=="function"){d=d.call()}if(typeof d=="string"){d=Ext.util.Format.trim(d).split(this.styleSepRe);for(a=d.length;b<a;){c.setStyle(d[b++],d[b++])}}else{if(Ext.isObject(d)){c.setStyle(d)}}}},insertHtml:function(c,g,d){var h={},a,b,j,e;c=c.toLowerCase();h.beforebegin=["BeforeBegin","previousSibling"];h.afterend=["AfterEnd","nextSibling"];b=g.ownerDocument.createRange();a="setStart"+(this.endRe.test(c)?"After":"Before");if(h[c]){b[a](g);j=b.createContextualFragment(d);g.parentNode.insertBefore(j,c=="beforebegin"?g:g.nextSibling);return g[(c=="beforebegin"?"previous":"next")+"Sibling"]}else{e=(c=="afterbegin"?"first":"last")+"Child";if(g.firstChild){b[a](g[e]);j=b.createContextualFragment(d);if(c=="afterbegin"){g.insertBefore(j,g.firstChild)}else{g.appendChild(j)}}else{g.innerHTML=d}return g[e]}throw'Illegal insertion point -> "'+c+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}});Ext.define("Ext.dom.AbstractElement_static",{override:"Ext.dom.AbstractElement",inheritableStatics:{unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,msRe:/^-ms-/,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*)?;?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while(d=d.parentNode){a=d==b||a}}}}return a},parseBox:function(c){c=c||0;var a=typeof c,d,b;if(a==="number"){return{top:c,right:c,bottom:c,left:c}}else{if(a!=="string"){return c}}d=c.split(" ");b=d.length;if(b==1){d[1]=d[2]=d[3]=d[0]}else{if(b==2){d[2]=d[0];d[3]=d[1]}else{if(b==3){d[3]=d[1]}}}return{top:parseFloat(d[0])||0,right:parseFloat(d[1])||0,bottom:parseFloat(d[2])||0,left:parseFloat(d[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.msRe,"ms-").replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return window.orientation==0?"portrait":"landscape"}return window.innerHeight>window.innerWidth?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while(d=b.exec(c)){a[d[1]]=d[2]||""}}return a}}},function(){var c=document,b=null,a=c.compatMode=="CSS1Compat";if(!("activeElement" in c)&&c.addEventListener){c.addEventListener("focus",function(e){if(e&&e.target){b=e.target==c?null:e.target}},true)}function d(g,h,e){return function(){g.selectionStart=h;g.selectionEnd=e}}this.addInheritableStatics({getActiveElement:function(){var h;try{h=c.activeElement}catch(g){}h=h||b;if(!h){h=b=document.body}return h},getRightMarginFixCleaner:function(l){var h=Ext.supports,j=h.DisplayChangeInputSelectionBug,k=h.DisplayChangeTextAreaSelectionBug,m,e,n,g;if(j||k){m=c.activeElement||b;e=m&&m.tagName;if(k&&e=="TEXTAREA"||j&&e=="INPUT"&&m.type=="text"){if(Ext.dom.Element.isAncestor(l,m)){n=m.selectionStart;g=m.selectionEnd;if(Ext.isNumber(n)&&Ext.isNumber(g)){return d(m,n,g)}}}}return Ext.emptyFn},getViewWidth:function(e){return e?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(e){return e?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!a?c.body.scrollHeight:c.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!a?c.body.scrollWidth:c.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?Ext.isStrict?c.documentElement.clientHeight:c.body.clientHeight:self.innerHeight},getViewportWidth:function(){return !Ext.isStrict&&!Ext.isOpera?c.body.clientWidth:Ext.isIE9m?c.documentElement.clientWidth:self.innerWidth},serializeForm:function(j){var k=j.elements||(document.forms[j]||Ext.getDom(j)).elements,w=false,u=encodeURIComponent,n="",m=k.length,p,g,t,y,x,q,l,s,h;for(q=0;q<m;q++){p=k[q];g=p.name;t=p.type;y=p.options;if(!p.disabled&&g){if(/select-(one|multiple)/i.test(t)){s=y.length;for(l=0;l<s;l++){h=y[l];if(h.selected){x=h.hasAttribute?h.hasAttribute("value"):h.getAttributeNode("value").specified;n+=Ext.String.format("{0}={1}&",u(g),u(x?h.value:h.text))}}}else{if(!/file|undefined|reset|button/i.test(t)){if(!(/radio|checkbox/i.test(t)&&!p.checked)&&!(t=="submit"&&w)){n+=u(g)+"="+u(p.value)+"&";w=/submit/i.test(t)}}}}}return n.substr(0,n.length-1)}})});Ext.define("Ext.dom.AbstractElement_insertion",{override:"Ext.dom.AbstractElement",appendChild:function(d,c){var g=this,j,b,h,a;if(d.nodeType||d.dom||typeof d=="string"){d=Ext.getDom(d);g.dom.appendChild(d);return !c?Ext.get(d):d}else{if(d.length){j=Ext.fly(document.createDocumentFragment(),"_internal");b=d.length;Ext.DomHelper.useDom=true;for(h=0;h<b;h++){j.appendChild(d[h],c)}Ext.DomHelper.useDom=a;g.dom.appendChild(j.dom);return c?j.dom:j}else{return g.createChild(d,null,c)}}},appendTo:function(a){Ext.getDom(a).appendChild(this.dom);return this},insertBefore:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a);return this},insertAfter:function(a){a=Ext.getDom(a);a.parentNode.insertBefore(this.dom,a.nextSibling);return this},insertFirst:function(b,a){b=b||{};if(b.nodeType||b.dom||typeof b=="string"){b=Ext.getDom(b);this.dom.insertBefore(b,this.dom.firstChild);return !a?Ext.get(b):b}else{return this.createChild(b,this.dom.firstChild,a)}},insertSibling:function(b,g,k){var j=this,l=Ext.core.DomHelper,m=l.useDom,n=(g||"before").toLowerCase()=="after",d,a,c,h;if(Ext.isArray(b)){a=Ext.fly(document.createDocumentFragment(),"_internal");c=b.length;l.useDom=true;for(h=0;h<c;h++){d=a.appendChild(b[h],k)}l.useDom=m;j.dom.parentNode.insertBefore(a.dom,n?j.dom.nextSibling:j.dom);return d}b=b||{};if(b.nodeType||b.dom){d=j.dom.parentNode.insertBefore(Ext.getDom(b),n?j.dom.nextSibling:j.dom);if(!k){d=Ext.get(d)}}else{if(n&&!j.dom.nextSibling){d=l.append(j.dom.parentNode,b,!k)}else{d=l[n?"insertAfter":"insertBefore"](j.dom,b,!k)}}return d},replace:function(a){a=Ext.get(a);this.insertBefore(a);a.remove();return this},replaceWith:function(a){var b=this;if(a.nodeType||a.dom||typeof a=="string"){a=Ext.get(a);b.dom.parentNode.insertBefore(a.dom,b.dom)}else{a=Ext.core.DomHelper.insertBefore(b.dom,a)}delete Ext.cache[b.id];Ext.removeNode(b.dom);b.id=Ext.id(b.dom=a);Ext.dom.AbstractElement.addToCache(b.isFlyweight?new Ext.dom.AbstractElement(b.dom):b);return b},createChild:function(b,a,c){b=b||{tag:"div"};if(a){return Ext.core.DomHelper.insertBefore(a,b,c!==true)}else{return Ext.core.DomHelper.append(this.dom,b,c!==true)}},wrap:function(b,c,a){var e=Ext.core.DomHelper.insertBefore(this.dom,b||{tag:"div"},true),d=e;if(a){d=Ext.DomQuery.selectNode(a,e.dom)}d.appendChild(this.dom);return c?e.dom:e},insertHtml:function(b,c,a){var d=Ext.core.DomHelper.insertHtml(b,this.dom,c);return a?Ext.get(d):d}});Ext.define("Ext.dom.AbstractElement_style",{override:"Ext.dom.AbstractElement"},function(){var d=this,n=/\w/g,s=/\s+/,c=/^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,k=Ext.supports.ClassList,e="padding",j="margin",a="border",t="-left",b="-right",p="-top",l="-bottom",q="-width",m={l:a+t+q,r:a+b+q,t:a+p+q,b:a+l+q},g={l:e+t,r:e+b,t:e+p,b:e+l},o={l:j+t,r:j+b,t:j+p,b:j+l},h=new d.Fly;Ext.override(d,{styleHooks:{},addStyles:function(C,B){var x=0,A=(C||"").match(n),z,u=A.length,y,w=[];if(u==1){x=Math.abs(parseFloat(this.getStyle(B[A[0]]))||0)}else{if(u){for(z=0;z<u;z++){y=A[z];w.push(B[y])}w=this.getStyle(w);for(z=0;z<u;z++){y=A[z];x+=Math.abs(parseFloat(w[B[y]])||0)}}}return x},addCls:function(){var w=function(C){var D=this,z=D.dom,x=D.trimRe,E=C,y,F,A,B,G;if(typeof C=="string"){C=C.replace(x,"").split(s)}if(z&&C&&!!(B=C.length)){if(!z.className){z.className=C.join(" ")}else{y=z.classList;if(y){for(A=0;A<B;++A){G=C[A];if(G){if(!y.contains(G)){if(F){F.push(G)}else{F=z.className.replace(x,"");F=F?[F,G]:[G]}}}}if(F){z.className=F.join(" ")}}else{u(E)}}}return D},u=function(y){var z=this,A=z.dom,x;if(A&&y&&y.length){x=Ext.Element.mergeClsList(A.className,y);if(x.changed){A.className=x.join(" ")}}return z};return k?w:u}(),removeCls:function(x){var y=this,A=y.dom,z,u,w;if(typeof x=="string"){x=x.replace(y.trimRe,"").split(s)}if(A&&A.className&&x&&!!(u=x.length)){z=A.classList;if(u===1&&z){if(x[0]){z.remove(x[0])}}else{w=Ext.Element.removeCls(A.className,x);if(w.changed){A.className=w.join(" ")}}}return y},radioCls:function(y){var z=this.dom.parentNode.childNodes,w,x,u;y=Ext.isArray(y)?y:[y];for(x=0,u=z.length;x<u;x++){w=z[x];if(w&&w.nodeType==1){h.attach(w).removeCls(y)}}return this.addCls(y)},toggleCls:function(){var u=function(x){var y=this,A=y.dom,z;if(A){x=x.replace(y.trimRe,"");if(x){z=A.classList;if(z){z.toggle(x)}else{w(x)}}}return y},w=function(x){return this.hasCls(x)?this.removeCls(x):this.addCls(x)};return k?u:w}(),hasCls:function(){var u=function(y){var A=this.dom,x=false,z;if(A&&y){z=A.classList;if(z){x=z.contains(y)}else{x=w(y)}}return x},w=function(x){var y=this.dom;return y?x&&(" "+y.className+" ").indexOf(" "+x+" ")!==-1:false};return k?u:w}(),replaceCls:function(w,u){return this.removeCls(w).addCls(u)},isStyle:function(u,w){return this.getStyle(u)==w},getStyle:function(H,C){var D=this,y=D.dom,K=typeof H!="string",I=D.styleHooks,w=H,E=w,B=1,A,J,G,F,x,u,z;if(K){G={};w=E[0];z=0;if(!(B=E.length)){return G}}if(!y||y.documentElement){return G||""}A=y.style;if(C){u=A}else{u=y.ownerDocument.defaultView.getComputedStyle(y,null);if(!u){C=true;u=A}}do{F=I[w];if(!F){I[w]=F={name:d.normalize(w)}}if(F.get){x=F.get(y,D,C,u)}else{J=F.name;x=u[J]}if(!K){return x}G[w]=x;w=E[++z]}while(z<B);return G},getStyles:function(){var w=Ext.Array.slice(arguments),u=w.length,x;if(u&&typeof w[u-1]=="boolean"){x=w.pop()}return this.getStyle(w,x)},isTransparent:function(w){var u=this.getStyle(w);return u?c.test(u):false},setStyle:function(C,A){var y=this,B=y.dom,u=y.styleHooks,x=B.style,w=C,z;if(typeof w=="string"){z=u[w];if(!z){u[w]=z={name:d.normalize(w)}}A=A==null?"":A;if(z.set){z.set(B,A,y)}else{x[z.name]=A}if(z.afterSet){z.afterSet(B,A,y)}}else{for(w in C){if(C.hasOwnProperty(w)){z=u[w];if(!z){u[w]=z={name:d.normalize(w)}}A=C[w];A=A==null?"":A;if(z.set){z.set(B,A,y)}else{x[z.name]=A}if(z.afterSet){z.afterSet(B,A,y)}}}}return y},getHeight:function(w){var x=this.dom,u=w?x.clientHeight-this.getPadding("tb"):x.offsetHeight;return u>0?u:0},getWidth:function(u){var x=this.dom,w=u?x.clientWidth-this.getPadding("lr"):x.offsetWidth;return w>0?w:0},setWidth:function(u){var w=this;w.dom.style.width=d.addUnits(u);return w},setHeight:function(u){var w=this;w.dom.style.height=d.addUnits(u);return w},getBorderWidth:function(u){return this.addStyles(u,m)},getPadding:function(u){return this.addStyles(u,g)},margins:o,applyStyles:function(x){if(x){var w,u,y=this.dom;if(typeof x=="function"){x=x.call()}if(typeof x=="string"){x=Ext.util.Format.trim(x).split(/\s*(?::|;)\s*/);for(w=0,u=x.length;w<u;){y.style[d.normalize(x[w++])]=x[w++]}}else{if(typeof x=="object"){this.setStyle(x)}}}},setSize:function(x,u){var y=this,w=y.dom.style;if(Ext.isObject(x)){u=x.height;x=x.width}w.width=d.addUnits(x);w.height=d.addUnits(u);return y},getViewSize:function(){var u=document,w=this.dom;if(w==u||w==u.body){return{width:d.getViewportWidth(),height:d.getViewportHeight()}}else{return{width:w.clientWidth,height:w.clientHeight}}},getSize:function(w){var u=this.dom;return{width:Math.max(0,w?u.clientWidth-this.getPadding("lr"):u.offsetWidth),height:Math.max(0,w?u.clientHeight-this.getPadding("tb"):u.offsetHeight)}},repaint:function(){var u=this.dom;this.addCls(Ext.baseCSSPrefix+"repaint");setTimeout(function(){h.attach(u).removeCls(Ext.baseCSSPrefix+"repaint")},1);return this},getMargin:function(w){var x=this,z={t:"top",l:"left",r:"right",b:"bottom"},u,A,y;if(!w){y=[];for(u in x.margins){if(x.margins.hasOwnProperty(u)){y.push(x.margins[u])}}A=x.getStyle(y);if(A&&typeof A=="object"){for(u in x.margins){if(x.margins.hasOwnProperty(u)){A[z[u]]=parseFloat(A[x.margins[u]])||0}}}return A}else{return x.addStyles(w,x.margins)}},mask:function(w,A,E){var B=this,x=B.dom,y=(B.$cache||B.getCache()).data,u=y.mask,F,D,C="",z=Ext.baseCSSPrefix;B.addCls(z+"masked");if(B.getStyle("position")=="static"){B.addCls(z+"masked-relative")}if(u){u.remove()}if(A&&typeof A=="string"){C=" "+A}else{C=" "+z+"mask-gray"}F=B.createChild({cls:z+"mask"+(E!==false?"":" "+z+"mask-gray"),html:w?'<div class="'+(A||z+"mask-message")+'">'+w+"</div>":""});D=B.getSize();y.mask=F;if(x===document.body){D.height=window.innerHeight;if(B.orientationHandler){Ext.EventManager.unOrientationChange(B.orientationHandler,B)}B.orientationHandler=function(){D=B.getSize();D.height=window.innerHeight;F.setSize(D)};Ext.EventManager.onOrientationChange(B.orientationHandler,B)}F.setSize(D);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var w=this,y=(w.$cache||w.getCache()).data,u=y.mask,x=Ext.baseCSSPrefix;if(u){u.remove();delete y.mask}w.removeCls([x+"masked",x+"masked-relative"]);if(w.dom===document.body){Ext.EventManager.unOrientationChange(w.orientationHandler,w);delete w.orientationHandler}}});Ext.onReady(function(){var D=Ext.supports,u,B,z,w,C;function A(I,F,H,E){var G=E[this.name]||"";return c.test(G)?"transparent":G}function y(K,H,J,G){var E=G.marginRight,F,I;if(E!="0px"){F=K.style;I=F.display;F.display="inline-block";E=(J?G:K.ownerDocument.defaultView.getComputedStyle(K,null)).marginRight;F.display=I}return E}function x(L,I,K,H){var E=H.marginRight,G,F,J;if(E!="0px"){G=L.style;F=d.getRightMarginFixCleaner(L);J=G.display;G.display="inline-block";E=(K?H:L.ownerDocument.defaultView.getComputedStyle(L,"")).marginRight;G.display=J;F()}return E}u=d.prototype.styleHooks;if(D.init){D.init()}if(!D.RightMargin){u.marginRight=u["margin-right"]={name:"marginRight",get:D.DisplayChangeInputSelectionBug||D.DisplayChangeTextAreaSelectionBug?x:y}}if(!D.TransparentColor){B=["background-color","border-color","color","outline-color"];for(z=B.length;z--;){w=B[z];C=d.normalize(w);u[w]=u[C]={name:C,get:A}}}})});Ext.define("Ext.dom.AbstractElement_traversal",{override:"Ext.dom.AbstractElement",findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g<b&&e!=c&&e!=d){if(Ext.DomQuery.is(e,h)){return a?Ext.get(e):e}g++;e=e.parentNode}return null},findParentNode:function(d,b,a){var c=Ext.fly(this.dom.parentNode,"_internal");return c?c.findParent(d,b,a):null},up:function(c,a,b){return this.findParentNode(c,a,!b)},select:function(a,b){return Ext.dom.Element.select(a,this.dom,b)},query:function(a){return Ext.DomQuery.select(a,this.dom)},down:function(a,b){var c=Ext.DomQuery.selectNode(a,this.dom);return b?c:Ext.get(c)},child:function(a,b){var d,c=this,e;e=Ext.id(c.dom);e=Ext.escapeId(e);d=Ext.DomQuery.selectNode("#"+e+" > "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});Ext.define("Ext.dom.AbstractElement",{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,inheritableStatics:{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,get:function(c){var j=this,k=window.document,d=Ext.dom.Element,h,b,g,e,a;if(!c){return null}if(c.isFly){c=c.dom}if(typeof c=="string"){if(c==Ext.windowId){return d.get(window)}else{if(c==Ext.documentId){return d.get(k)}}h=Ext.cache[c];if(h&&h.skipGarbageCollection){g=h.el;return g}if(!(e=k.getElementById(c))){return null}if(h&&h.el){g=Ext.updateCacheEntry(h,e).el}else{g=new d(e,!!h)}return g}else{if(c.tagName){if(!(a=c.id)){a=Ext.id(c)}h=Ext.cache[a];if(h&&h.el){g=Ext.updateCacheEntry(h,c).el}else{g=new d(c,!!h)}return g}else{if(c instanceof j){if(c!=j.docEl&&c!=j.winEl){a=c.id;h=Ext.cache[a];if(h){Ext.updateCacheEntry(h,k.getElementById(a)||c.dom)}}return c}else{if(c.isComposite){return c}else{if(Ext.isArray(c)){return j.select(c)}else{if(c===k){if(!j.docEl){b=j.docEl=Ext.Object.chain(d.prototype);b.dom=k;b.el=b;b.id=Ext.id(k);j.addToCache(b)}return j.docEl}else{if(c===window){if(!j.winEl){j.winEl=Ext.Object.chain(d.prototype);j.winEl.dom=window;j.winEl.id=Ext.id(window);j.addToCache(j.winEl)}return j.winEl}}}}}}}return null},addToCache:function(a,b){if(a){Ext.addCacheEntry(b,a)}return a},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var m,k={},g,b,d,h,c,n=[],e=false,a=this.trimRe,l=this.whitespaceRe;for(g=0,b=arguments.length;g<b;g++){m=arguments[g];if(Ext.isString(m)){m=m.replace(a,"").split(l)}if(m){for(d=0,h=m.length;d<h;d++){c=m[d];if(!k[c]){if(g){e=true}k[c]=true}}}}for(c in k){n.push(c)}n.changed=e;return n},removeCls:function(a,b){var h={},g,c,d,k=[],e=false,j=this.whitespaceRe;if(a){if(Ext.isString(a)){a=a.replace(this.trimRe,"").split(j)}for(g=0,c=a.length;g<c;g++){h[a[g]]=true}}if(b){if(Ext.isString(b)){b=b.split(j)}for(g=0,c=b.length;g<c;g++){d=b[g];if(h[d]){e=true;delete h[d]}}}for(d in h){k.push(d)}k.changed=e;return k},VISIBILITY:1,DISPLAY:2,OFFSETS:3,ASCLASS:4},constructor:function(a,b){var c=this,d=typeof a=="string"?document.getElementById(a):a,e;c.el=c;if(!d){return null}e=d.id;if(!b&&e&&Ext.cache[e]){return Ext.cache[e].el}c.dom=d;c.id=e||Ext.id(d);c.self.addToCache(c)},set:function(e,b){var c=this.dom,a,d;for(a in e){if(e.hasOwnProperty(a)){d=e[a];if(a=="style"){this.applyStyles(d)}else{if(a=="cls"){c.className=d}else{if(b!==false){if(d===undefined){c.removeAttribute(a)}else{c.setAttribute(a,d)}}else{c[a]=d}}}}}return this},defaultUnit:"px",is:function(a){return Ext.DomQuery.is(this.dom,a)},getValue:function(a){var b=this.dom.value;return a?parseInt(b,10):b},remove:function(){var a=this,b=a.dom;if(a.isAnimate){a.stopAnimation()}if(b){Ext.removeNode(b);delete a.dom}},contains:function(a){if(!a){return false}var b=this,c=a.dom||a;return c===b.dom||Ext.dom.AbstractElement.isAncestor(b.dom,c)},getAttribute:function(a,b){var c=this.dom;return c.getAttributeNS(b,a)||c.getAttribute(b+":"+a)||c.getAttribute(a)||c[a]},update:function(a){if(this.dom){this.dom.innerHTML=a}return this},setHTML:function(a){if(this.dom){this.dom.innerHTML=a}return this},getHTML:function(){return this.dom?this.dom.innerHTML:""},hide:function(){this.setVisible(false);return this},show:function(){this.setVisible(true);return this},setVisible:function(g,a){var b=this,e=b.self,d=b.getVisibilityMode(),c=Ext.baseCSSPrefix;switch(d){case e.VISIBILITY:b.removeCls([c+"hidden-display",c+"hidden-offsets"]);b[g?"removeCls":"addCls"](c+"hidden-visibility");break;case e.DISPLAY:b.removeCls([c+"hidden-visibility",c+"hidden-offsets"]);b[g?"removeCls":"addCls"](c+"hidden-display");break;case e.OFFSETS:b.removeCls([c+"hidden-visibility",c+"hidden-display"]);b[g?"removeCls":"addCls"](c+"hidden-offsets");break}return b},getVisibilityMode:function(){var b=(this.$cache||this.getCache()).data,a=b.visibilityMode;if(a===undefined){b.visibilityMode=a=this.self.DISPLAY}return a},setVisibilityMode:function(a){(this.$cache||this.getCache()).data.visibilityMode=a;return this},getCache:function(){var a=this,b=a.dom.id||Ext.id(a.dom);a.$cache=Ext.cache[b]||Ext.addCacheEntry(b,null,a.dom);return a.$cache}},function(){var a=this;Ext.getDetachedBody=function(){var b=a.detachedBodyEl;if(!b){b=document.createElement("div");a.detachedBodyEl=b=new a.Fly(b);b.isDetachedBody=true}return b};Ext.getElementById=function(d){var c=document.getElementById(d),b;if(!c&&(b=a.detachedBodyEl)){c=b.dom.querySelector("#"+Ext.escapeId(d))}return c};Ext.get=function(b){return Ext.dom.Element.get(b)};this.addStatics({Fly:new Ext.Class({extend:a,isFly:true,constructor:function(b){this.dom=b;this.el=this},attach:function(b){this.dom=b;this.$cache=b.id?Ext.cache[b.id]:null;return this}}),_flyweights:{},fly:function(e,c){var d=null,b=a._flyweights;c=c||"_global";e=Ext.getDom(e);if(e){d=b[c]||(b[c]=new a.Fly);d.dom=e;d.$cache=e.id?Ext.cache[e.id]:null}return d}});Ext.fly=function(){return a.fly.apply(a,arguments)};(function(b){b.destroy=b.remove;if(document.querySelector){b.getById=function(e,c){var d=document.getElementById(e)||this.dom.querySelector("#"+Ext.escapeId(e));return c?d:d?Ext.get(d):null}}else{b.getById=function(e,c){var d=document.getElementById(e);return c?d:d?Ext.get(d):null}}})(this.prototype)});Ext.define("Ext.dom.Helper",function(){var b="afterbegin",j="afterend",a="beforebegin",p="beforeend",m="<table>",h="</table>",c=m+"<tbody>",o="</tbody>"+h,l=c+"<tr>",e="</tr>"+o,q=document.createElement("div"),n=["BeforeBegin","previousSibling"],k=["AfterEnd","nextSibling"],d={beforebegin:n,afterend:k},g={beforebegin:n,afterend:k,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};return{extend:Ext.dom.AbstractHelper,tableRe:/^(?:table|thead|tbody|tr|td)$/i,tableElRe:/td|tr|tbody|thead/i,useDom:false,createDom:function(s,z){var t,C=document,x,A,u,B,y,w;if(Ext.isArray(s)){t=C.createDocumentFragment();for(y=0,w=s.length;y<w;y++){this.createDom(s[y],t)}}else{if(typeof s=="string"){t=C.createTextNode(s)}else{t=C.createElement(s.tag||"div");x=!!t.setAttribute;for(A in s){if(!this.confRe.test(A)){u=s[A];if(A=="cls"){t.className=u}else{if(x){t.setAttribute(A,u)}else{t[A]=u}}}}Ext.DomHelper.applyStyles(t,s.style);if(B=s.children||s.cn){this.createDom(B,t)}else{if(s.html){t.innerHTML=s.html}}}}if(z){z.appendChild(t)}return t},ieTable:function(y,s,z,x){q.innerHTML=[s,z,x].join("");var t=-1,w=q,u;while(++t<y){w=w.firstChild}u=w.nextSibling;if(u){u=w;w=document.createDocumentFragment();while(u){nx=u.nextSibling;w.appendChild(u);u=nx}}return w},insertIntoTable:function(C,u,t,w){var s,z,y=u==a,B=u==b,x=u==p,A=u==j;if(C=="td"&&(B||x)||!this.tableElRe.test(C)&&(y||A)){return null}z=y?t:A?t.nextSibling:B?t.firstChild:null;if(y||A){t=t.parentNode}if(C=="td"||C=="tr"&&(x||B)){s=this.ieTable(4,l,w,e)}else{if((C=="tbody"||C=="thead")&&(x||B)||C=="tr"&&(y||A)){s=this.ieTable(3,c,w,o)}else{s=this.ieTable(2,m,w,h)}}t.insertBefore(s,z);return s},createContextualFragment:function(t){var s=document.createDocumentFragment(),u,w;q.innerHTML=t;w=q.childNodes;u=w.length;while(u--){s.appendChild(w[0])}return s},applyStyles:function(s,t){if(t){if(typeof t=="function"){t=t.call()}if(typeof t=="string"){t=Ext.dom.Element.parseStyles(t)}if(typeof t=="object"){Ext.fly(s,"_applyStyles").setStyle(t)}}},createHtml:function(s){return this.markup(s)},doInsert:function(w,y,x,z,u,s){w=w.dom||Ext.getDom(w);var t;if(this.useDom){t=this.createDom(y,null);if(s){w.appendChild(t)}else{(u=="firstChild"?w:w.parentNode).insertBefore(t,w[u]||w)}}else{t=this.insertHtml(z,w,this.markup(y))}return x?Ext.get(t,true):t},overwrite:function(u,t,w){var s;u=Ext.getDom(u);t=this.markup(t);if(Ext.isIE&&this.tableRe.test(u.tagName)){while(u.firstChild){u.removeChild(u.firstChild)}if(t){s=this.insertHtml("afterbegin",u,t);return w?Ext.get(s):s}return null}u.innerHTML=t;return w?Ext.get(u.firstChild):u.firstChild},insertHtml:function(u,y,w){var A,t,x,s,z;u=u.toLowerCase();if(y.insertAdjacentHTML){if(Ext.isIE&&this.tableRe.test(y.tagName)&&(z=this.insertIntoTable(y.tagName.toLowerCase(),u,y,w))){return z}if(A=g[u]){if(Ext.global.MSApp&&Ext.global.MSApp.execUnsafeLocalFunction){MSApp.execUnsafeLocalFunction(function(){y.insertAdjacentHTML(A[0],w)})}else{y.insertAdjacentHTML(A[0],w)}return y[A[1]]}}else{if(y.nodeType===3){u=u==="afterbegin"?"beforebegin":u;u=u==="beforeend"?"afterend":u}t=Ext.supports.CreateContextualFragment?y.ownerDocument.createRange():undefined;s="setStart"+(this.endRe.test(u)?"After":"Before");if(d[u]){if(t){t[s](y);z=t.createContextualFragment(w)}else{z=this.createContextualFragment(w)}y.parentNode.insertBefore(z,u==a?y:y.nextSibling);return y[(u==a?"previous":"next")+"Sibling"]}else{x=(u==b?"first":"last")+"Child";if(y.firstChild){if(t){t[s](y[x]);z=t.createContextualFragment(w)}else{z=this.createContextualFragment(w)}if(u==b){y.insertBefore(z,y.firstChild)}else{y.appendChild(z)}}else{y.innerHTML=w}return y[x]}}},createTemplate:function(t){var s=this.markup(t);return new Ext.Template(s)}}}(),function(){Ext.ns("Ext.core");Ext.DomHelper=Ext.core.DomHelper=new this});Ext.define("Ext.Template",{inheritableStatics:{from:function(b,a){b=Ext.getDom(b);return new this(b.value||b.innerHTML,a||"")}},constructor:function(d){var g=this,b=arguments,a=[],c=0,e=b.length,h;g.initialConfig={};if(e===1&&Ext.isArray(d)){b=d;e=b.length}if(e>1){for(;c<e;c++){h=b[c];if(typeof h=="object"){Ext.apply(g.initialConfig,h);Ext.apply(g,h)}else{a.push(h)}}}else{a.push(d)}g.html=a.join("");if(g.compiled){g.compile()}},isTemplate:true,disableFormats:false,re:/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,apply:function(a){var h=this,d=h.disableFormats!==true,g=Ext.util.Format,c=h,b;if(h.compiled){return h.compiled(a).join("")}function e(j,l,n,k){if(n&&d){if(k){k=[a[l]].concat(Ext.functionFactory("return ["+k+"];")())}else{k=[a[l]]}if(n.substr(0,5)=="this."){return c[n.substr(5)].apply(c,k)}else{return g[n].apply(g,k)}}else{return a[l]!==undefined?a[l]:""}}b=h.html.replace(h.re,e);return b},applyOut:function(a,b){var c=this;if(c.compiled){b.push.apply(b,c.compiled(a))}else{b.push(c.apply(a))}return b},applyTemplate:function(){return this.apply.apply(this,arguments)},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,compile:function(){var me=this,fm=Ext.util.Format,useFormat=me.disableFormats!==true,body,bodyReturn;function fn(m,name,format,args){if(format&&useFormat){args=args?","+args:"";if(format.substr(0,5)!="this."){format="fm."+format+"("}else{format="this."+format.substr(5)+"("}}else{args="";format="(values['"+name+"'] == undefined ? '' : "}return"',"+format+"values['"+name+"']"+args+") ,'"}bodyReturn=me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn);body="this.compiled = function(values){ return ['"+bodyReturn+"'];};";eval(body);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(b,d,a,e){var c=Ext.DomHelper.insertHtml(b,Ext.getDom(d),this.apply(a));return e?Ext.get(c):c},overwrite:function(c,a,d){var b=Ext.DomHelper.overwrite(Ext.getDom(c),this.apply(a));return d?Ext.get(b):b}});Ext.define("Ext.XTemplateParser",{constructor:function(a){Ext.apply(this,a)},doTpl:Ext.emptyFn,parse:function(n){var y=this,q=n.length,p={elseif:"elif"},u=y.topRe,c=y.actionsRe,e,d,k,o,h,l,j,x,w,b,g,a;y.level=0;y.stack=d=[];for(e=0;e<q;e=b){u.lastIndex=e;o=u.exec(n);if(!o){y.doText(n.substring(e,q));break}w=o.index;b=u.lastIndex;if(e<w){y.doText(n.substring(e,w))}if(o[1]){b=n.indexOf("%}",w+2);y.doEval(n.substring(w+2,b));b+=2}else{if(o[2]){b=n.indexOf("]}",w+2);y.doExpr(n.substring(w+2,b));b+=2}else{if(o[3]){y.doTag(o[3])}else{if(o[4]){g=null;while((x=c.exec(o[4]))!==null){k=x[2]||x[3];if(k){k=Ext.String.htmlDecode(k);h=x[1];h=p[h]||h;g=g||{};l=g[h];if(typeof l=="string"){g[h]=[l,k]}else{if(l){g[h].push(k)}else{g[h]=k}}}}if(!g){if(y.elseRe.test(o[4])){y.doElse()}else{if(y.defaultRe.test(o[4])){y.doDefault()}else{y.doTpl();d.push({type:"tpl"})}}}else{if(g["if"]){y.doIf(g["if"],g);d.push({type:"if"})}else{if(g["switch"]){y.doSwitch(g["switch"],g);d.push({type:"switch"})}else{if(g["case"]){y.doCase(g["case"],g)}else{if(g.elif){y.doElseIf(g.elif,g)}else{if(g["for"]){++y.level;if(a=y.propRe.exec(o[4])){g.propName=a[1]||a[2]}y.doFor(g["for"],g);d.push({type:"for",actions:g})}else{if(g.foreach){++y.level;if(a=y.propRe.exec(o[4])){g.propName=a[1]||a[2]}y.doForEach(g.foreach,g);d.push({type:"foreach",actions:g})}else{if(g.exec){y.doExec(g.exec,g);d.push({type:"exec",actions:g})}}}}}}}}}else{if(o[0].length===5){d.push({type:"tpl"})}else{j=d.pop();y.doEnd(j.type,j.actions);if(j.type=="for"||j.type=="foreach"){--y.level}}}}}}}},topRe:/(?:(\{\%)|(\{\[)|\{([^{}]+)\})|(?:<tpl([^>]*)\>)|(?:<\/tpl>)/g,actionsRe:/\s*(elif|elseif|if|for|foreach|exec|switch|case|eval|between)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g,propRe:/prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/,defaultRe:/^\s*default\s*$/,elseRe:/^\s*else\s*$/});Ext.define("Ext.XTemplateCompiler",{extend:Ext.XTemplateParser,useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:true,propNameRe:/^[\w\d\$]*$/,compile:function(a){var c=this,b=c.generate(a);return c.useEval?c.evalTpl(b):(new Function("Ext",b))(Ext)},generate:function(a){var d=this,b="var fm=Ext.util.Format,ts=Object.prototype.toString;",c;d.maxLevel=0;d.body=["var c0=values, a0="+d.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, k0, v;\n"];if(d.definitions){if(typeof d.definitions==="string"){d.definitions=[d.definitions,b]}else{d.definitions.push(b)}}else{d.definitions=[b]}d.switches=[];d.parse(a);d.definitions.push((d.useEval?"$=":"return")+" function ("+d.fnArgs+") {",d.body.join(""),"}");c=d.definitions.join("\n");d.definitions.length=d.body.length=d.switches.length=0;delete d.definitions;delete d.body;delete d.switches;return c},doText:function(c){var b=this,a=b.body;c=c.replace(b.aposRe,"\\'").replace(b.newLineRe,"\\n");if(b.useIndex){a.push("out[out.length]='",c,"'\n")}else{a.push("out.push('",c,"')\n")}},doExpr:function(b){var a=this.body;a.push("if ((v="+b+") != null) out");if(this.useIndex){a.push("[out.length]=v+''\n")}else{a.push(".push(v+'')\n")}},doTag:function(a){var b=this.parseTag(a);if(b){this.doExpr(b)}else{this.doText("{"+a+"}")}},doElse:function(){this.body.push("} else {\n")},doEval:function(a){this.body.push(a,"\n")},doIf:function(b,c){var a=this;if(b==="."){a.body.push("if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("if (",a.parseTag(b),") {\n")}else{a.body.push("if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doElseIf:function(b,c){var a=this;if(b==="."){a.body.push("else if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("} else if (",a.parseTag(b),") {\n")}else{a.body.push("} else if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doSwitch:function(b){var a=this;if(b==="."){a.body.push("switch (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("switch (",a.parseTag(b),") {\n")}else{a.body.push("switch (",a.addFn(b),a.callFn,") {\n")}}a.switches.push(0)},doCase:function(e){var d=this,c=Ext.isArray(e)?e:[e],g=d.switches.length-1,a,b;if(d.switches[g]){d.body.push("break;\n")}else{d.switches[g]++}for(b=0,g=c.length;b<g;++b){a=d.intRe.exec(c[b]);c[b]=a?a[1]:"'"+c[b].replace(d.aposRe,"\\'")+"'"}d.body.push("case ",c.join(": case "),":\n")},doDefault:function(){var a=this,b=a.switches.length-1;if(a.switches[b]){a.body.push("break;\n")}else{a.switches[b]++}a.body.push("default:\n")},doEnd:function(b,d){var c=this,a=c.level-1;if(b=="for"||b=="foreach"){if(d.exec){c.doExec(d.exec)}c.body.push("}\n");c.body.push("parent=p",a,";values=r",a+1,";xcount=n"+a+";xindex=i",a,"+1;xkey=k",a,";\n")}else{if(b=="if"||b=="switch"){c.body.push("}\n")}}},doFor:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel<b){d.maxLevel=b;d.body.push("var ")}if(e=="."){g="c"+b}else{g="a"+a+"?c"+a+"[i"+a+"]:c"+a}d.body.push("i",b,"=0,n",b,"=0,c",b,"=",c,",a",b,"=",d.createArrayTest(b),",r",b,"=values,p",b,",k",b,";\n","p",b,"=parent=",g,"\n","if (c",b,"){if(a",b,"){n",b,"=c",b,".length;}else if (c",b,".isMixedCollection){c",b,"=c",b,".items;n",b,"=c",b,".length;}else if(c",b,".isStore){c",b,"=c",b,".data.items;n",b,"=c",b,".length;}else{c",b,"=[c",b,"];n",b,"=1;}}\n","for (xcount=n",b,";i",b,"<n"+b+";++i",b,"){\n","values=c",b,"[i",b,"]");if(h.propName){d.body.push(".",h.propName)}d.body.push("\n","xindex=i",b,"+1\n");if(h.between){d.body.push('if(xindex>1){ out.push("',h.between,'"); } \n')}},doForEach:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel<b){d.maxLevel=b;d.body.push("var ")}if(e=="."){g="c"+b}else{g="a"+a+"?c"+a+"[i"+a+"]:c"+a}d.body.push("i",b,"=-1,n",b,"=0,c",b,"=",c,",a",b,"=",d.createArrayTest(b),",r",b,"=values,p",b,",k",b,";\n","p",b,"=parent=",g,"\n","for(k",b," in c",b,"){\n","xindex=++i",b,"+1;\n","xkey=k",b,";\n","values=c",b,"[k",b,"];");if(h.propName){d.body.push(".",h.propName)}if(h.between){d.body.push('if(xindex>1){ out.push("',h.between,'"); } \n')}},createArrayTest:"isArray" in Array?function(a){return"Array.isArray(c"+a+")"}:function(a){return"ts.call(c"+a+')==="[object Array]"'},doExec:function(c,d){var b=this,a="f"+b.definitions.length;b.definitions.push("function "+a+"("+b.fnArgs+") {"," try { with(values) {","  "+c," }} catch(e) {","}","}");b.body.push(a+b.callFn+"\n")},addFn:function(a){var c=this,b="f"+c.definitions.length;if(a==="."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return values","}")}else{if(a===".."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return parent","}")}else{c.definitions.push("function "+b+"("+c.fnArgs+") {"," try { with(values) {","  return("+a+")"," }} catch(e) {","}","}")}}return b},parseTag:function(b){var h=this,a=h.tagRe.exec(b),e,j,d,g,c;if(!a){return null}e=a[1];j=a[2];d=a[3];g=a[4];if(e=="."){if(!h.validTypes){h.definitions.push("var validTypes={string:1,number:1,boolean:1};");h.validTypes=true}c='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'}else{if(e=="#"){c="xindex"}else{if(e=="$"){c="xkey"}else{if(e.substr(0,7)=="parent."){c=e}else{if(isNaN(e)&&e.indexOf("-")==-1&&e.indexOf(".")!=-1){c="values."+e}else{c="values['"+e+"']"}}}}}if(g){c="("+c+g+")"}if(j&&h.useFormat){d=d?","+d:"";if(j.substr(0,5)!="this."){j="fm."+j+"("}else{j+="("}}else{return c}return j+c+d+")"},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},function(){var a=this.prototype;a.fnArgs="out,values,parent,xindex,xcount,xkey";a.callFn=".call(this,"+a.fnArgs+")"});Ext.define("Ext.XTemplate",{extend:Ext.Template,emptyObj:{},apply:function(a,b){return this.applyOut(a,[],b).join("")},applyOut:function(a,b,d){var g=this,c;if(!g.fn){c=new Ext.XTemplateCompiler({useFormat:g.disableFormats!==true,definitions:g.definitions});g.fn=c.compile(g.html)}try{g.fn(b,a,d||g.emptyObj,1,1)}catch(h){}return b},compile:function(){return this},statics:{getTpl:function(b,d){var c=b[d],a;if(c&&!c.isTemplate){c=Ext.ClassManager.dynInstantiate("Ext.XTemplate",c);if(b.hasOwnProperty(d)){a=b}else{for(a=b.self.prototype;a&&!a.hasOwnProperty(d);a=a.superclass){}}a[d]=c;c.owner=a}return c||null}}});Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=function(){var DQ,doc=document,cache={},simpleCache={},valueCache={},useClassList=!!doc.documentElement.classList,useElementPointer=!!doc.documentElement.firstElementChild,useChildrenCollection=function(){var d=doc.createElement("div");d.innerHTML="<!-- -->text<!-- -->";return d.children&&d.children.length===0}(),nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\|\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,supportsColonNsSeparator=function(){var xmlDoc,xmlString='<r><a:b xmlns:a="n"></a:b></r>';if(window.DOMParser){xmlDoc=(new DOMParser).parseFromString(xmlString,"application/xml")}else{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.loadXML(xmlString)}return !!xmlDoc.getElementsByTagName("a:b").length}(),longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return hasEscapes?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=path.indexOf("\\")>-1;if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803, child, next, prev, byClassName;");child=useChildrenCollection?function child(parent,index){return parent.children[index]}: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};next=useElementPointer?function(n){return n.nextElementSibling}:function(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n};prev=useElementPointer?function(n){return n.previousElementSibling}:function(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}byClassName=useClassList?function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci,classList;for(i=0;ci=nodeSet[i];i++){classList=ci.classList;if(classList){if(classList.contains(cls)){result[++ri]=ci}}else{if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}}return result}:function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0;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,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName.replace("|",":")||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){tagName=unescapeCssSelector(tagName);if(!supportsColonNsSeparator&&DQ.isXml(ns[0])&&tagName.indexOf(":")!==-1){for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName.split(":").pop());for(j=0;ci=cs[j];j++){if(ci.tagName===tagName){result[++ri]=ci}}}}else{for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0;ci=cs[j];j++){result[++ri]=ci}}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0;ni=ns[i];i++){cn=ni.childNodes;for(j=0;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0;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=="~"){utag=tagName.toUpperCase();for(i=0;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){a.push.apply(a,b);return a}function byTag(cs,tagName){if(cs.tagName||cs===doc){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs===doc){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0;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=DQ.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0;ci=cs[i];i++){if(ci.nodeType===1){if(!hasXml){xml=DQ.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=DQ.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){value=unescapeCssSelector(value);return DQ.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.length;i<len;i++){c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c}}for(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,d,j;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs}if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs)}d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d}else{r=[];for(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=[],i,len;for(i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(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=[],i,len;if(!len1){return c2}if(isIE&&typeof c1[0].selectSingleNode!="undefined"){return quickDiffIEXml(c1,c2)}for(i=0;i<len1;i++){c1[i]._qdiff=d}for(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){id=unescapeCssSelector(id);var d=root.ownerDocument||root;return d.getElementById(id)}ns=getNodes(ns,mode,"*");return byId(ns,id)}return DQ={getStyle:function(el,name){return Ext.fly(el,"_DomQuery").getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root) {\n var mode; ++batch; var n = root || document;\n"],lastPath,matchers=DQ.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe),tokenMatch,matched,j,t,m;path=setupEscapes(path);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;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))){matched=false;for(j=0;j<matchersLn;j++){t=matchers[j];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){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"compile",msg:'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||doc;if(typeof root=="string"){root=doc.getElementById(root)}var paths=path.split(","),results=[],i,len,subPath,result;for(i=0,len=paths.length;i<len;i++){subPath=paths[i].replace(trimRe,"");if(!cache[subPath]){cache[subPath]=DQ.compile(subPath,type);if(!cache[subPath]){Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"jsSelect",msg:subPath+" is not a valid selector"})}}else{setupEscapes(subPath)}result=cache[subPath](root);if(result&&result!==doc){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:doc.querySelectorAll?function(path,root,type,single){root=root||doc;if(!DQ.isXml(root)){try{if(root.parentNode&&root.nodeType!==9&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return single?[root.querySelector(path)]:Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return DQ.jsSelect.call(this,path,root,type)}:function(path,root,type){return DQ.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root,null,true)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=DQ.compile(path,"select")}else{setupEscapes(path)}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=DQ.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=doc.getElementById(el)}var isArray=Ext.isArray(el),result=DQ.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]=DQ.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:useClassList?'n = byClassName(n, "{1}");':'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,i,ci;for(i=0;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,i,ci;for(i=0;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,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(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,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0;ci=c[i];i++){cns=ci.childNodes;j=0;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,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked==true){r[++ri]=ci}}return r},not:function(c,ss){return DQ.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(DQ.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=DQ.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},focusable:function(candidates){var len=candidates.length,results=[],i=0,c;for(;i<len;i++){c=candidates[i];if(Ext.fly(c,"_DomQuery").isFocusable()){results.push(c)}}return results},visible:function(candidates,deep){var len=candidates.length,results=[],i=0,c;for(;i<len;i++){c=candidates[i];if(Ext.fly(c,"_DomQuery").isVisible(deep)){results.push(c)}}return results}}}}();Ext.query=Ext.DomQuery.select;Ext.define("Ext.dom.Element_anim",{override:"Ext.dom.Element",animate:function(b){var d=this,c,e,a=d.dom.id||Ext.id(d.dom);if(!Ext.fx.Manager.hasFxBlock(a)){if(b.listeners){c=b.listeners;delete b.listeners}if(b.internalListeners){b.listeners=b.internalListeners;delete b.internalListeners}e=new Ext.fx.Anim(d.anim(b));if(c){e.on(c)}Ext.fx.Manager.queueFx(e)}return d},anim:function(a){if(!Ext.isObject(a)){return a?{}:false}var b=this,c=a.duration||Ext.fx.Anim.prototype.duration,e=a.easing||"ease",d;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));Ext.fx.Manager.setFxDefaults(b.id,{delay:0});d={target:b.dom,remove:a.remove,alternate:a.alternate||false,duration:c,easing:e,callback:a.callback,listeners:a.listeners,iterations:a.iterations||1,scope:a.scope,block:a.block,concurrent:a.concurrent,delay:a.delay||0,paused:true,keyframes:a.keyframes,from:a.from||{},to:Ext.apply({},a)};Ext.apply(d.to,a.to);delete d.to.to;delete d.to.from;delete d.to.remove;delete d.to.alternate;delete d.to.keyframes;delete d.to.iterations;delete d.to.listeners;delete d.to.target;delete d.to.paused;delete d.to.callback;delete d.to.scope;delete d.to.duration;delete d.to.easing;delete d.to.concurrent;delete d.to.block;delete d.to.stopAnimation;delete d.to.delay;return d},slideIn:function(d,c,e){var h=this,b=h.dom,l=b.style,k,a,g,j;d=d||"t";c=c||{};k=function(){var q=this,p=c.listeners,o=Ext.fly(b,"_anim"),s,m,t,n;if(!e){o.fixDisplay()}s=o.getBox();if((d=="t"||d=="b")&&s.height===0){s.height=b.scrollHeight}else{if((d=="l"||d=="r")&&s.width===0){s.width=b.scrollWidth}}m=o.getStyles("width","height","left","right","top","bottom","position","z-index",true);o.setSize(s.width,s.height);if(c.preserveScroll){g=o.cacheScrollValues()}n=o.wrap({id:Ext.id()+"-anim-wrap-for-"+o.dom.id,style:{visibility:e?"visible":"hidden"}});j=n.dom.parentNode;n.setPositioning(o.getPositioning(true));if(n.isStyle("position","static")){n.position("relative")}o.clearPositioning("auto");n.clip();if(g){g()}o.setStyle({visibility:"",position:"absolute"});if(e){n.setSize(s.width,s.height)}switch(d){case"t":t={from:{width:s.width+"px",height:"0px"},to:{width:s.width+"px",height:s.height+"px"}};l.bottom="0px";break;case"l":t={from:{width:"0px",height:s.height+"px"},to:{width:s.width+"px",height:s.height+"px"}};h.anchorAnimX(d);break;case"r":t={from:{x:s.x+s.width,width:"0px",height:s.height+"px"},to:{x:s.x,width:s.width+"px",height:s.height+"px"}};h.anchorAnimX(d);break;case"b":t={from:{y:s.y+s.height,width:s.width+"px",height:"0px"},to:{y:s.y,width:s.width+"px",height:s.height+"px"}};break;case"tl":t={from:{x:s.x,y:s.y,width:"0px",height:"0px"},to:{width:s.width+"px",height:s.height+"px"}};l.bottom="0px";h.anchorAnimX("l");break;case"bl":t={from:{y:s.y+s.height,width:"0px",height:"0px"},to:{y:s.y,width:s.width+"px",height:s.height+"px"}};h.anchorAnimX("l");break;case"br":t={from:{x:s.x+s.width,y:s.y+s.height,width:"0px",height:"0px"},to:{x:s.x,y:s.y,width:s.width+"px",height:s.height+"px"}};h.anchorAnimX("r");break;case"tr":t={from:{x:s.x+s.width,width:"0px",height:"0px"},to:{x:s.x,width:s.width+"px",height:s.height+"px"}};l.bottom="0px";h.anchorAnimX("r");break}n.show();a=Ext.apply({},c);delete a.listeners;a=new Ext.fx.Anim(Ext.applyIf(a,{target:n,duration:500,easing:"ease-out",from:e?t.to:t.from,to:e?t.from:t.to}));a.on("afteranimate",function(){var u=Ext.fly(b,"_anim");u.setStyle(m);if(e){if(c.useDisplay){u.setDisplayed(false)}else{u.hide()}}if(n.dom){if(n.dom.parentNode){n.dom.parentNode.insertBefore(u.dom,n.dom)}else{j.appendChild(u.dom)}n.remove()}if(g){g()}q.end()});if(p){a.on(p)}};h.animate({duration:c.duration?Math.max(c.duration,500)*2:1000,listeners:{beforeanimate:k}});return h},slideOut:function(a,b){return this.slideIn(a,b,true)},puff:function(e){var d=this,g=d.dom,b,c=d.getBox(),a=d.getStyles("width","height","left","right","top","bottom","position","z-index","font-size","opacity",true);e=Ext.applyIf(e||{},{easing:"ease-out",duration:500,useDisplay:false});b=function(){var h=Ext.fly(g,"_anim");h.clearOpacity();h.show();this.to={width:c.width*2,height:c.height*2,x:c.x-c.width/2,y:c.y-c.height/2,opacity:0,fontSize:"200%"};this.on("afteranimate",function(){var j=Ext.fly(g,"_anim");if(j){if(e.useDisplay){j.setDisplayed(false)}else{j.hide()}j.setStyle(a);Ext.callback(e.callback,e.scope)}})};d.animate({duration:e.duration,easing:e.easing,listeners:{beforeanimate:{fn:b}}});return d},switchOff:function(c){var b=this,d=b.dom,a;c=Ext.applyIf(c||{},{easing:"ease-in",duration:500,remove:false,useDisplay:false});a=function(){var k=Ext.fly(d,"_anim"),j=this,h=k.getSize(),l=k.getXY(),g,e;k.clearOpacity();k.clip();e=k.getPositioning();g=new Ext.fx.Animator({target:d,duration:c.duration,easing:c.easing,keyframes:{33:{opacity:0.3},66:{height:1,y:l[1]+h.height/2},100:{width:1,x:l[0]+h.width/2}}});g.on("afteranimate",function(){var m=Ext.fly(d,"_anim");if(c.useDisplay){m.setDisplayed(false)}else{m.hide()}m.clearOpacity();m.setPositioning(e);m.setSize(h);j.end()})};b.animate({duration:Math.max(c.duration,500)*2,listeners:{beforeanimate:{fn:a}}});return b},frame:function(a,d,e){var c=this,g=c.dom,b;a=a||"#C3DAF9";d=d||1;e=e||{};b=function(){var l=Ext.fly(g,"_anim"),k=this,m,j,h;l.show();m=l.getBox();j=Ext.getBody().createChild({id:l.dom.id+"-anim-proxy",style:{position:"absolute","pointer-events":"none","z-index":35000,border:"0px solid "+a}});h=new Ext.fx.Anim({target:j,duration:e.duration||1000,iterations:d,from:{top:m.y,left:m.x,borderWidth:0,opacity:1,height:m.height,width:m.width},to:{top:m.y-20,left:m.x-20,borderWidth:10,opacity:0,height:m.height+40,width:m.width+40}});h.on("afteranimate",function(){j.remove();k.end()})};c.animate({duration:Math.max(e.duration,500)*2||2000,listeners:{beforeanimate:{fn:b}}});return c},ghost:function(a,d){var c=this,e=c.dom,b;a=a||"b";b=function(){var k=Ext.fly(e,"_anim"),j=k.getWidth(),h=k.getHeight(),l=k.getXY(),g=k.getPositioning(),m={opacity:0};switch(a){case"t":m.y=l[1]-h;break;case"l":m.x=l[0]-j;break;case"r":m.x=l[0]+j;break;case"b":m.y=l[1]+h;break;case"tl":m.x=l[0]-j;m.y=l[1]-h;break;case"bl":m.x=l[0]-j;m.y=l[1]+h;break;case"br":m.x=l[0]+j;m.y=l[1]+h;break;case"tr":m.x=l[0]+j;m.y=l[1]-h;break}this.to=m;this.on("afteranimate",function(){var n=Ext.fly(e,"_anim");if(n){n.hide();n.clearOpacity();n.setPositioning(g)}})};c.animate(Ext.applyIf(d||{},{duration:500,easing:"ease-out",listeners:{beforeanimate:b}}));return c},highlight:function(d,b){var j=this,e=j.dom,l={},h,m,g,c,a,k;if(e.tagName.match(j.tableTagRe)){return j.select("div").highlight(d,b)}b=b||{};c=b.listeners||{};g=b.attr||"backgroundColor";l[g]=d||"ffff9c";if(!b.to){m={};m[g]=b.endColor||j.getColor(g,"ffffff","")}else{m=b.to}b.listeners=Ext.apply(Ext.apply({},c),{beforeanimate:function(){h=e.style[g];var n=Ext.fly(e,"_anim");n.clearOpacity();n.show();a=c.beforeanimate;if(a){k=a.fn||a;return k.apply(a.scope||c.scope||window,arguments)}},afteranimate:function(){if(e){e.style[g]=h}a=c.afteranimate;if(a){k=a.fn||a;k.apply(a.scope||c.scope||window,arguments)}}});j.animate(Ext.apply({},b,{duration:1000,easing:"ease-in",from:l,to:m}));return j},pause:function(a){var b=this;Ext.fx.Manager.setFxDefaults(b.id,{delay:a});return b},fadeIn:function(c){var a=this,b=a.dom;a.animate(Ext.apply({},c,{opacity:1,internalListeners:{beforeanimate:function(e){var d=Ext.fly(b,"_anim");if(d.isStyle("display","none")){d.setDisplayed("")}else{d.show()}}}}));return this},fadeOut:function(c){var a=this,b=a.dom;c=Ext.apply({opacity:0,internalListeners:{afteranimate:function(e){if(b&&e.to.opacity===0){var d=Ext.fly(b,"_anim");if(c.useDisplay){d.setDisplayed(false)}else{d.hide()}}}}},c);a.animate(c);return a},scale:function(a,b,c){this.animate(Ext.apply({},c,{width:a,height:b}));return this},shift:function(a){this.animate(a);return this},anchorAnimX:function(a){var b=a==="l"?"right":"left";this.dom.style[b]="0px"}});Ext.define("Ext.dom.Element_dd",{override:"Ext.dom.Element",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.define("Ext.dom.Element_fx",{override:"Ext.dom.Element"},function(){var b=Ext.dom.Element,j="visibility",g="display",o="none",e="hidden",n="visible",p="offsets",k="asclass",a="nosize",c="originalDisplay",d="visibilityMode",h="isVisible",m=Ext.baseCSSPrefix+"hide-offsets",l=function(s){var t=(s.$cache||s.getCache()).data,u=t[c];if(u===undefined){t[c]=u=""}return u},q=function(t){var u=(t.$cache||t.getCache()).data,s=u[d];if(s===undefined){u[d]=s=b.VISIBILITY}return s};b.override({originalDisplay:"",visibilityMode:1,setVisible:function(x,s){var u=this,w=u.dom,t=q(u);if(typeof s=="string"){switch(s){case g:t=b.DISPLAY;break;case j:t=b.VISIBILITY;break;case p:t=b.OFFSETS;break;case a:case k:t=b.ASCLASS;break}u.setVisibilityMode(t);s=false}if(!s||!u.anim){if(t==b.DISPLAY){return u.setDisplayed(x)}else{if(t==b.OFFSETS){u[x?"removeCls":"addCls"](m)}else{if(t==b.VISIBILITY){u.fixDisplay();w.style.visibility=x?"":e}else{if(t==b.ASCLASS){u[x?"removeCls":"addCls"](u.visibilityCls||b.visibilityCls)}}}}}else{if(x){u.setOpacity(0.01);u.setVisible(true)}if(!Ext.isObject(s)){s={duration:350,easing:"ease-in"}}u.animate(Ext.applyIf({callback:function(){if(!x){Ext.fly(w,"_internal").setVisible(false).setOpacity(1)}},to:{opacity:x?1:0}},s))}(u.$cache||u.getCache()).data[h]=x;return u},hasMetrics:function(){var s=q(this);return this.isVisible()||s==b.OFFSETS||s==b.VISIBILITY},toggle:function(s){var t=this;t.setVisible(!t.isVisible(),t.anim(s));return t},setDisplayed:function(s){if(typeof s=="boolean"){s=s?l(this):o}this.setStyle(g,s);return this},fixDisplay:function(){var s=this;if(s.isStyle(g,o)){s.setStyle(j,e);s.setStyle(g,l(s));if(s.isStyle(g,o)){s.setStyle(g,"block")}}},hide:function(s){if(typeof s=="string"){this.setVisible(false,s);return this}this.setVisible(false,this.anim(s));return this},show:function(s){if(typeof s=="string"){this.setVisible(true,s);return this}this.setVisible(true,this.anim(s));return this}})});Ext.define("Ext.dom.Element_position",{override:"Ext.dom.Element"},function(){var A,s=this,n="left",k="right",q="top",h="bottom",o="position",j="static",B="relative",x="z-index",w="BODY",c="padding",u="border",t="-left",m="-right",a="-top",l="-bottom",g="-width",e={l:u+t+g,r:u+m+g,t:u+a+g,b:u+l+g},d={l:c+t,r:c+m,t:c+a,b:c+l},y=[d.l,d.r,d.t,d.b],b=[e.l,e.r,e.t,e.b],z=Math.round,C=document,p=function(D){if(!A){A=new Ext.Element.Fly}A.attach(D);return A};s.override({pxRe:/^\d+(?:\.\d*)?px$/i,inheritableStatics:{getX:function(D){return s.getXY(D)[0]},getXY:function(F){var I=C.body,E=C.documentElement,D=0,G=0,J=[0,0],H,L;F=Ext.getDom(F);if(F!=C&&F!=I){if(Ext.isIE){try{H=F.getBoundingClientRect();G=E.clientTop||I.clientTop;D=E.clientLeft||I.clientLeft}catch(K){H={left:0,top:0}}}else{H=F.getBoundingClientRect()}L=p(C).getScroll();J=[z(H.left+L.left-D),z(H.top+L.top-G)]}return J},getY:function(D){return s.getXY(D)[1]},setX:function(E,D){s.setXY(E,[D,false])},setXY:function(E,F){(E=Ext.fly(E,"_setXY")).position();var G=E.translatePoints(F),D=E.dom.style,H;D.right="auto";for(H in G){if(!isNaN(G[H])){D[H]=G[H]+"px"}}},setY:function(D,E){s.setXY(D,[false,E])}},center:function(D){return this.alignTo(D||C,"c-c")},clearPositioning:function(D){D=D||"";return this.setStyle({left:D,right:D,top:D,bottom:D,"z-index":"",position:j})},getAnchorToXY:function(G,D,F,E){return G.getAnchorXY(D,F,E)},getBottom:function(D){return(D?this.getLocalY():this.getY())+this.getHeight()},getBorderPadding:function(){var D=this.getStyle(y),E=this.getStyle(b);return{beforeX:(parseFloat(E[e.l])||0)+(parseFloat(D[d.l])||0),afterX:(parseFloat(E[e.r])||0)+(parseFloat(D[d.r])||0),beforeY:(parseFloat(E[e.t])||0)+(parseFloat(D[d.t])||0),afterY:(parseFloat(E[e.b])||0)+(parseFloat(D[d.b])||0)}},getCenterXY:function(){return this.getAlignToXY(C,"c-c")},getLeft:function(D){return D?this.getLocalX():this.getX()},getLocalX:function(){var F=this,E=F.dom.offsetParent,D=F.getStyle("left");if(!D||D==="auto"){D=0}else{if(F.pxRe.test(D)){D=parseFloat(D)}else{D=F.getX();if(E){D-=s.getX(E)}}}return D},getLocalXY:function(){var G=this,F=G.dom.offsetParent,E=G.getStyle(["left","top"]),D=E.left,H=E.top;if(!D||D==="auto"){D=0}else{if(G.pxRe.test(D)){D=parseFloat(D)}else{D=G.getX();if(F){D-=s.getX(F)}}}if(!H||H==="auto"){H=0}else{if(G.pxRe.test(H)){H=parseFloat(H)}else{H=G.getY();if(F){H-=s.getY(F)}}}return[D,H]},getLocalY:function(){var E=this,D=E.dom.offsetParent,F=E.getStyle("top");if(!F||F==="auto"){F=0}else{if(E.pxRe.test(F)){F=parseFloat(F)}else{F=E.getY();if(D){F-=s.getY(D)}}}return F},getPageBox:function(F){var I=this,G=I.dom,K=G.nodeName==w,L=K?Ext.Element.getViewWidth():G.offsetWidth,H=K?Ext.Element.getViewHeight():G.offsetHeight,N=I.getXY(),M=N[1],D=N[0]+L,J=N[1]+H,E=N[0];if(F){return new Ext.util.Region(M,D,J,E)}else{return{left:E,top:M,width:L,height:H,right:D,bottom:J}}},getPositioning:function(E){var D=this.getStyle(["left","top","position","z-index"]),F=this.dom;if(E){if(D.left==="auto"){D.left=F.offsetLeft+"px"}if(D.top==="auto"){D.top=F.offsetTop+"px"}}return D},getRight:function(D){return(D?this.getLocalX():this.getX())+this.getWidth()},getTop:function(D){return D?this.getLocalY():this.getY()},getX:function(){return s.getX(this.dom)},getXY:function(){return s.getXY(this.dom)},getY:function(){return s.getY(this.dom)},moveTo:function(D,F,E){return this.setXY([D,F],E)},position:function(H,G,D,F){var E=this;if(!H&&E.isStyle(o,j)){E.setStyle(o,B)}else{if(H){E.setStyle(o,H)}}if(G){E.setStyle(x,G)}if(D||F){E.setXY([D||false,F||false])}},setBottom:function(D){this.dom.style[h]=this.addUnits(D);return this},setBounds:function(E,H,G,D,F){return this.setBox({x:E,y:H,width:G,height:D},F)},setLeft:function(D){this.dom.style[n]=this.addUnits(D);return this},setLeftTop:function(G,F){var E=this,D=E.dom.style;D.left=E.addUnits(G);D.top=E.addUnits(F);return E},setLocalX:function(D){var E=this.dom.style;E.right="auto";E.left=D===null?"auto":D+"px"},setLocalXY:function(D,F){var E=this.dom.style;E.right="auto";if(D&&D.length){F=D[1];D=D[0]}if(D===null){E.left="auto"}else{if(D!==undefined){E.left=D+"px"}}if(F===null){E.top="auto"}else{if(F!==undefined){E.top=F+"px"}}},setLocalY:function(D){this.dom.style.top=D===null?"auto":D+"px"},setLocation:function(D,F,E){return this.setXY([D,F],E)},setPositioning:function(D){return this.setStyle(D)},setRight:function(D){this.dom.style[k]=this.addUnits(D);return this},setTop:function(D){this.dom.style[q]=this.addUnits(D);return this},setX:function(D,E){return this.setXY([D,this.getY()],E)},setXY:function(F,D){var E=this;if(!D||!E.anim){s.setXY(E.dom,F)}else{if(!Ext.isObject(D)){D={}}E.animate(Ext.applyIf({to:{x:F[0],y:F[1]}},D))}return this},setY:function(E,D){return this.setXY([this.getX(),E],D)}});s.getTrueXY=s.getXY});Ext.define("Ext.dom.Element_scroll",{override:"Ext.dom.Element",isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var c=this,h=c.dom,g=document,a=g.body,b=g.documentElement,e,d;if(h===g||h===a){e=b.scrollLeft||(a?a.scrollLeft:0);d=b.scrollTop||(a?a.scrollTop:0)}else{e=h.scrollLeft;d=h.scrollTop}return{left:e,top:d}},getScrollLeft:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().left}else{return b.scrollLeft}},getScrollTop:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().top}else{return b.scrollTop}},setScrollLeft:function(a){this.dom.scrollLeft=this.normalizeScrollLeft(a);return this},normalizeScrollLeft:Ext.identityFn,setScrollTop:function(a){this.dom.scrollTop=a;return this},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",Math.max(Math.min(d.getScrollLeft()+b,e.scrollWidth-e.clientWidth),0),c)}if(a){d.scrollTo("top",Math.max(Math.min(e.scrollTop+a,e.scrollHeight-e.clientHeight),0),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),j="scroll"+(g?"Top":"Left"),d=this,h=d.dom,b,j;if(!g){e=d.normalizeScrollLeft(e)}if(!a||!d.anim){h[j]=e;h[j]=e}else{b={to:{}};b.to[j]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,e,c){var m=this,k=m.dom,h=m.getOffsetsTo(b=Ext.getDom(b)||Ext.getBody().dom),g=h[0]+b.scrollLeft,n=h[1]+b.scrollTop,a=n+k.offsetHeight,o=g+k.offsetWidth,s=b.clientHeight,q=parseInt(b.scrollTop,10),d=parseInt(b.scrollLeft,10),j=q+s,p=d+b.clientWidth,l;if(c){c=Ext.apply({listeners:{afteranimate:function(){m.scrollChildFly.attach(k).highlight()}}},c)}if(k.offsetHeight>s||n<q){l=n}else{if(a>j){l=a-s}}if(l!=null){m.scrollChildFly.attach(b).scrollTo("top",l,c)}if(e!==false){l=null;if(k.offsetWidth>b.clientWidth||g<d){l=g}else{if(o>p){l=o-b.clientWidth}}if(l!=null){m.scrollChildFly.attach(b).scrollTo("left",l,c)}}return m},scrollChildIntoView:function(b,a){this.scrollChildFly.attach(Ext.getDom(b)).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,j=e.clientWidth,a=e.clientHeight,c=false,p,k={l:Math.min(g+b,o-j),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.anim(d))}return c}},function(){this.prototype.scrollChildFly=new this.Fly;this.prototype.scrolltoFly=new this.Fly});Ext.define("Ext.dom.Element_style",{override:"Ext.dom.Element"},function(){var t=this,o=document.defaultView,q=/table-row|table-.*-group/,a="_internal",w="hidden",s="height",h="width",e="isClipped",l="overflow",n="overflow-x",m="overflow-y",x="originalClip",b=/#document|body/i,y,g,p,d,u,j,z;if(!o||!o.getComputedStyle){t.prototype.getStyle=function(E,D){var Q=this,L=Q.dom,O=typeof E!="string",k=Q.styleHooks,B=E,C=B,K=1,G=D,P,H,A,F,J,M,I;if(O){A={};B=C[0];I=0;if(!(K=C.length)){return A}}if(!L||L.documentElement){return A||""}H=L.style;if(D){M=H}else{M=L.currentStyle;if(!M){G=true;M=H}}do{F=k[B];if(!F){k[B]=F={name:t.normalize(B)}}if(F.get){J=F.get(L,Q,G,M)}else{P=F.name;if(F.canThrow){try{J=M[P]}catch(N){J=""}}else{J=M?M[P]:""}}if(!O){return J}A[B]=J;B=C[++I]}while(I<K);return A}}t.override({getHeight:function(C,A){var B=this,D=B.isStyle("display","none"),k,E;if(D){return 0}k=B.dom.offsetHeight;if(Ext.supports.Direct2DBug){E=B.adjustDirect2DDimension(s);if(A){k+=E}else{if(E>0&&E<0.5){k++}}}if(C){k-=B.getBorderWidth("tb")+B.getPadding("tb")}return k<0?0:k},getWidth:function(k,E){var C=this,F=C.dom,D=C.isStyle("display","none"),B,A,G;if(D){return 0}if(E&&Ext.supports.BoundingClientRect){B=F.getBoundingClientRect();A=C.vertical&&!Ext.isIE9&&!Ext.supports.RotatedBoundingClientRect?B.bottom-B.top:B.right-B.left}else{A=F.offsetWidth}if(Ext.supports.Direct2DBug&&!C.vertical){G=C.adjustDirect2DDimension(h);if(E){A+=G}else{if(G>0&&G<0.5){A++}}}if(k){A-=C.getBorderWidth("lr")+C.getPadding("lr")}return A<0?0:A},setWidth:function(A,k){var B=this;A=B.adjustWidth(A);if(!k||!B.anim){B.dom.style.width=B.addUnits(A)}else{if(!Ext.isObject(k)){k={}}B.animate(Ext.applyIf({to:{width:A}},k))}return B},setHeight:function(k,A){var B=this;k=B.adjustHeight(k);if(!A||!B.anim){B.dom.style.height=B.addUnits(k)}else{if(!Ext.isObject(A)){A={}}B.animate(Ext.applyIf({to:{height:k}},A))}return B},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(B,k,A){var C=this;if(Ext.isObject(B)){A=k;k=B.height;B=B.width}B=C.adjustWidth(B);k=C.adjustHeight(k);if(!A||!C.anim){C.dom.style.width=C.addUnits(B);C.dom.style.height=C.addUnits(k)}else{if(A===true){A={}}C.animate(Ext.applyIf({to:{width:B,height:k}},A))}return C},getViewSize:function(){var B=this,C=B.dom,A=b.test(C.nodeName),k;if(A){k={width:t.getViewWidth(),height:t.getViewHeight()}}else{k={width:C.clientWidth,height:C.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var A=this,B=typeof k=="number";if(B&&A.autoBoxAdjust&&!A.isBorderBox()){k-=A.getBorderWidth("lr")+A.getPadding("lr")}return B&&k<0?0:k},adjustHeight:function(k){var A=this,B=typeof k=="number";if(B&&A.autoBoxAdjust&&!A.isBorderBox()){k-=A.getBorderWidth("tb")+A.getPadding("tb")}return B&&k<0?0:k},getColor:function(A,B,G){var D=this.getStyle(A),C=G||G===""?G:"#",F,k,E=0;if(!D||/transparent|inherit/.test(D)){return B}if(/^r/.test(D)){D=D.slice(4,D.length-1).split(",");k=D.length;for(;E<k;E++){F=parseInt(D[E],10);C+=(F<16?"0":"")+F.toString(16)}}else{D=D.replace("#","");C+=D.length==3?D.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):D}return C.length>5?C.toLowerCase():B},setOpacity:function(A,k){var B=this;if(!B.dom){return B}if(!k||!B.anim){B.setStyle("opacity",A)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}B.animate(Ext.applyIf({to:{opacity:A}},k))}return B},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(B){var G=this,A=G.dom,E=G.getStyle("display"),D=A.style.display,H=A.style.position,F=B===h?0:1,k=A.currentStyle,C;if(E==="inline"){A.style.display="inline-block"}A.style.position=E.match(q)?"absolute":"static";C=(parseFloat(k[B])||parseFloat(k.msTransformOrigin.split(" ")[F])*2)%1;A.style.position=H;if(E==="inline"){A.style.display=D}return C},clip:function(){var A=this,B=(A.$cache||A.getCache()).data,k;if(!B[e]){B[e]=true;k=A.getStyle([l,n,m]);B[x]={o:k[l],x:k[n],y:k[m]};A.setStyle(l,w);A.setStyle(n,w);A.setStyle(m,w)}return A},unclip:function(){var A=this,B=(A.$cache||A.getCache()).data,k;if(B[e]){B[e]=false;k=B[x];if(k.o){A.setStyle(l,k.o)}if(k.x){A.setStyle(n,k.x)}if(k.y){A.setStyle(m,k.y)}}return A},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var A=Ext.get(this.insertHtml("beforeBegin","<div class='"+k+"'>"+Ext.String.format(t.boxMarkup,k)+"</div>"));Ext.DomQuery.selectNode("."+k+"-mc",A.dom).appendChild(this.dom);return A},getComputedHeight:function(){var A=this,k=Math.max(A.dom.offsetHeight,A.dom.clientHeight);if(!k){k=parseFloat(A.getStyle(s))||0;if(!A.isBorderBox()){k+=A.getFrameWidth("tb")}}return k},getComputedWidth:function(){var A=this,k=Math.max(A.dom.offsetWidth,A.dom.clientWidth);if(!k){k=parseFloat(A.getStyle(h))||0;if(!A.isBorderBox()){k+=A.getFrameWidth("lr")}}return k},getFrameWidth:function(A,k){return k&&this.isBorderBox()?0:this.getPadding(A)+this.getBorderWidth(A)},addClsOnOver:function(B,E,A){var C=this,D=C.dom,k=Ext.isFunction(E);C.hover(function(){if(k&&E.call(A||C,C)===false){return}Ext.fly(D,a).addCls(B)},function(){Ext.fly(D,a).removeCls(B)});return C},addClsOnFocus:function(B,E,A){var C=this,D=C.dom,k=Ext.isFunction(E);C.on("focus",function(){if(k&&E.call(A||C,C)===false){return false}Ext.fly(D,a).addCls(B)});C.on("blur",function(){Ext.fly(D,a).removeCls(B)});return C},addClsOnClick:function(B,E,A){var C=this,D=C.dom,k=Ext.isFunction(E);C.on("mousedown",function(){if(k&&E.call(A||C,C)===false){return false}Ext.fly(D,a).addCls(B);var G=Ext.getDoc(),F=function(){Ext.fly(D,a).removeCls(B);G.removeListener("mouseup",F)};G.on("mouseup",F)});return C},getStyleSize:function(){var D=this,E=this.dom,A=b.test(E.nodeName),C,k,B;if(A){return{width:t.getViewWidth(),height:t.getViewHeight()}}C=D.getStyle([s,h],true);if(C.width&&C.width!="auto"){k=parseFloat(C.width);if(D.isBorderBox()){k-=D.getFrameWidth("lr")}}if(C.height&&C.height!="auto"){B=parseFloat(C.height);if(D.isBorderBox()){B-=D.getFrameWidth("tb")}}return{width:k||D.getWidth(true),height:B||D.getHeight(true)}},statics:{selectableCls:Ext.baseCSSPrefix+"selectable",unselectableCls:Ext.baseCSSPrefix+"unselectable"},selectable:function(){var k=this;k.dom.unselectable="";k.removeCls(t.unselectableCls);k.addCls(t.selectableCls);return k},unselectable:function(){var k=this;if(Ext.isOpera){k.dom.unselectable="on"}k.removeCls(t.selectableCls);k.addCls(t.unselectableCls);return k},setVertical:function(D,A){var C=this,B=t.prototype,k;C.vertical=true;if(A){C.addCls(C.verticalCls=A)}C.setWidth=B.setHeight;C.setHeight=B.setWidth;if(!Ext.isIE9m){C.getWidth=B.getHeight;C.getHeight=B.getWidth}C.styleHooks=D===270?t.prototype.verticalStyleHooks270:t.prototype.verticalStyleHooks90},setHorizontal:function(){var A=this,k=A.verticalCls;delete A.vertical;if(k){delete A.verticalCls;A.removeCls(k)}delete A.setWidth;delete A.setHeight;if(!Ext.isIE9m){delete A.getWidth;delete A.getHeight}delete A.styleHooks}});t.prototype.styleHooks=y=Ext.dom.AbstractElement.prototype.styleHooks;t.prototype.verticalStyleHooks90=g=Ext.Object.chain(t.prototype.styleHooks);t.prototype.verticalStyleHooks270=p=Ext.Object.chain(t.prototype.styleHooks);g.width={name:"height"};g.height={name:"width"};g["margin-top"]={name:"marginLeft"};g["margin-right"]={name:"marginTop"};g["margin-bottom"]={name:"marginRight"};g["margin-left"]={name:"marginBottom"};g["padding-top"]={name:"paddingLeft"};g["padding-right"]={name:"paddingTop"};g["padding-bottom"]={name:"paddingRight"};g["padding-left"]={name:"paddingBottom"};g["border-top"]={name:"borderLeft"};g["border-right"]={name:"borderTop"};g["border-bottom"]={name:"borderRight"};g["border-left"]={name:"borderBottom"};p.width={name:"height"};p.height={name:"width"};p["margin-top"]={name:"marginRight"};p["margin-right"]={name:"marginBottom"};p["margin-bottom"]={name:"marginLeft"};p["margin-left"]={name:"marginTop"};p["padding-top"]={name:"paddingRight"};p["padding-right"]={name:"paddingBottom"};p["padding-bottom"]={name:"paddingLeft"};p["padding-left"]={name:"paddingTop"};p["border-top"]={name:"borderRight"};p["border-right"]={name:"borderBottom"};p["border-bottom"]={name:"borderLeft"};p["border-left"]={name:"borderTop"};if(Ext.isIE7m){y.fontSize=y["font-size"]={name:"fontSize",canThrow:true};y.fontStyle=y["font-style"]={name:"fontStyle",canThrow:true};y.fontFamily=y["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(C,A,B,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];u=d.length;while(u--){j=d[u];z="border"+j+"Width";y["border-"+j.toLowerCase()+"-width"]=y[z]={name:z,styleName:"border"+j+"Style",get:c}}}Ext.getDoc().on("selectstart",function(D,F){var E=document.documentElement,C=t.selectableCls,B=t.unselectableCls,k=F&&F.tagName;k=k&&k.toLowerCase();if(k==="input"||k==="textarea"){return}while(F&&F.nodeType===1&&F!==E){var A=Ext.fly(F);if(A.hasCls(C)){return}if(A.hasCls(B)){D.stopEvent();return}F=F.parentNode}})});Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof e=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});Ext.define("Ext.util.Positionable",{_positionTopLeft:["position","top","left"],_alignRe:/^([a-z]+)-([a-z]+)(\?)?$/,afterSetPosition:Ext.emptyFn,adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c},alignTo:function(c,a,g,b){var e=this,d=e.el;return e.setXY(e.getAlignToXY(c,a,g),d.anim&&!!b?d.anim(b):false)},anchorTo:function(h,e,b,a,k,l){var g=this,j=!Ext.isEmpty(k),c=function(){g.alignTo(h,e,b,a);Ext.callback(l,g)},d=g.getAnchor();g.removeAnchor();Ext.apply(d,{fn:c,scroll:j});Ext.EventManager.onWindowResize(c,null);if(j){Ext.EventManager.on(window,"scroll",c,null,{buffer:!isNaN(k)?k:50})}c();return g},calculateAnchorXY:function(g,j,h,d){var k=this,c=k.el,l=document,e=c.dom==l.body||c.dom==l,m=Math.round,n,b,a;g=(g||"tl").toLowerCase();d=d||{};b=d.width||e?Ext.Element.getViewWidth():k.getWidth();a=d.height||e?Ext.Element.getViewHeight():k.getHeight();switch(g){case"tl":n=[0,0];break;case"bl":n=[0,a];break;case"tr":n=[b,0];break;case"c":n=[m(b*0.5),m(a*0.5)];break;case"t":n=[m(b*0.5),0];break;case"l":n=[0,m(a*0.5)];break;case"r":n=[b,m(a*0.5)];break;case"b":n=[m(b*0.5),a];break;case"tc":n=[m(b*0.5),0];break;case"bc":n=[m(b*0.5),a];break;case"br":n=[b,a]}return[n[0]+j,n[1]+h]},convertPositionSpec:function(a){return a},getAlignToXY:function(k,F,e){var G=this,D=Ext.Element.getViewWidth()-10,d=Ext.Element.getViewHeight()-10,H=document,E=H.documentElement,p=H.body,C=E.scrollLeft||p.scrollLeft||0,A=E.scrollTop||p.scrollTop||0,a,h,u,g,w,z,s,t,B,q,o,b,c,j,m,n,l;k=Ext.get(k.el||k);if(!k||!k.dom){}e=e||[0,0];F=(!F||F=="?"?"tl-bl?":!/-/.test(F)&&F!==""?"tl-"+F:F||"tl-bl").toLowerCase();F=G.convertPositionSpec(F);a=F.match(G._alignRe);q=a[1];o=a[2];B=!!a[3];h=G.getAnchorXY(q,true);u=G.getAnchorToXY(k,o,false);n=u[0]-h[0]+e[0];l=u[1]-h[1]+e[1];if(B){g=G.getWidth();w=G.getHeight();z=k.getRegion();b=q.charAt(0);c=q.charAt(q.length-1);j=o.charAt(0);m=o.charAt(o.length-1);s=b=="t"&&j=="b"||b=="b"&&j=="t";t=c=="r"&&m=="l"||c=="l"&&m=="r";if(n+g>D+C){n=t?z.left-g:D+C-g}if(n<C){n=t?z.right:C}if(l+w>d+A){l=s?z.top-w:d+A-w}if(l<A){l=s?z.bottom:A}}return[n,l]},getAnchor:function(){var b=this.el,c=(b.$cache||b.getCache()).data,a;if(!b.dom){return}a=c._anchor;if(!a){a=c._anchor={}}return a},getAnchorXY:function(d,j,b){var h=this,k=h.getXY(),a=h.el,m=document,c=a.dom==m.body||a.dom==m,l=a.getScroll(),g=c?l.left:j?0:k[0],e=c?l.top:j?0:k[1];return h.calculateAnchorXY(d,g,e,b)},getBox:function(d,j){var e=this,n=j?e.getLocalXY():e.getXY(),k=n[0],g=n[1],l=e.getWidth(),b=e.getHeight(),c,a,m;if(d){c=e.getBorderPadding();a=c.beforeX;m=c.beforeY;k+=a;g+=m;l-=a+c.afterX;b-=m+c.afterY}return{x:k,left:k,0:k,y:g,top:g,1:g,width:l,height:b,right:k+l,bottom:g+b}},calculateConstrainedPosition:function(h,b,m,d){var l=this,c,j=l.floatParent,e=j?j.getTargetEl():null,a,g,k,n=false;if(m&&j){a=e.getXY();g=e.getBorderPadding();a[0]+=g.beforeX;a[1]+=g.beforeY;if(b){k=[b[0]+a[0],b[1]+a[1]]}}else{k=b}h=h||l.constrainTo||e||l.container||l.el.parent();c=(l.constrainHeader?l.header.el:l.el).getConstrainVector(h,k,d);if(c){n=b||l.getPosition(m);n[0]+=c[0];n[1]+=c[1]}return n},getConstrainVector:function(e,c,a){var h=this.getRegion(),b=[0,0],g=this.shadow&&this.constrainShadow&&!this.shadowDisabled?this.shadow.getShadowSize():undefined,d=false;if(!(e instanceof Ext.util.Region)){e=Ext.get(e.el||e).getViewRegion()}if(c){h.translateBy(c[0]-h.x,c[1]-h.y)}if(a){h.right=h.left+a[0];h.bottom=h.top+a[1]}if(g){e.adjust(g[0],-g[1],-g[2],g[3])}if(h.right>e.right){d=true;b[0]=e.right-h.right}if(h.left+b[0]<e.left){d=true;b[0]=e.left-h.left}if(h.bottom>e.bottom){d=true;b[1]=e.bottom-h.bottom}if(h.top+b[1]<e.top){d=true;b[1]=e.top-h.top}return d?b:false},getOffsetsTo:function(a){var c=this.getXY(),b=Ext.fly(a.el||a,"_internal").getXY();return[c[0]-b[0],c[1]-b[1]]},getRegion:function(){var a=this.getBox();return new Ext.util.Region(a.top,a.right,a.bottom,a.left)},getViewRegion:function(){var g=this,c=g.el,a=c.dom.nodeName==="BODY",e,k,h,j,d,b,l;if(a){k=c.getScroll();d=k.left;j=k.top;b=Ext.dom.AbstractElement.getViewportWidth();l=Ext.dom.AbstractElement.getViewportHeight()}else{e=g.getBorderPadding();h=g.getXY();d=h[0]+e.beforeX;j=h[1]+e.beforeY;b=g.getWidth(true);l=g.getHeight(true)}return new Ext.util.Region(j,d+b,j+l,d)},move:function(k,b,c){var g=this,n=g.getXY(),l=n[0],j=n[1],d=[l-b,j],m=[l+b,j],h=[l,j-b],a=[l,j+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.setXY([e[k][0],e[k][1]],c)},removeAnchor:function(){var 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 this},setBox:function(d,a){var e=this,b=e.el,j=d.x,g=d.y,m=[j,g],k=d.width,c=d.height,l=e.constrain&&e.calculateConstrainedPosition(null,[j,g],false,[k,c]);if(l){j=l[0];g=l[1]}if(!a||!b.anim){e.setSize(k,c);e.setXY([j,g]);e.afterSetPosition(j,g)}else{e.animate(Ext.applyIf({to:{x:j,y:g,width:b.adjustWidth(k),height:b.adjustHeight(c)},listeners:{afteranimate:Ext.Function.bind(e.afterSetPosition,e,[j,g])}},a))}return e},setRegion:function(b,a){return this.setBox({x:b.left,y:b.top,width:b.right-b.left,height:b.bottom-b.top},a)},translatePoints:function(a,c){var b=this.translateXY(a,c);return{left:b.x,top:b.y}},translateXY:function(h,e){var d=this,b=d.el,j=b.getStyle(d._positionTopLeft),a=j.position=="relative",c=parseFloat(j.left),g=parseFloat(j.top),k=d.getXY();if(Ext.isArray(h)){e=h[1];h=h[0]}if(isNaN(c)){c=a?0:b.dom.offsetLeft}if(isNaN(g)){g=a?0:b.dom.offsetTop}c=typeof h=="number"?h-k[0]+c:undefined;g=typeof e=="number"?e-k[1]+g:undefined;return{x:c,y:g}}});Ext.define("Ext.dom.Element",function(a){var b="hidden",g=document,k="visibility",c="display",l="none",e=Ext.baseCSSPrefix+"masked",m=Ext.baseCSSPrefix+"masked-relative",j=Ext.baseCSSPrefix+"mask-msg",n=/^body/i,h,d=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1},o=function(u){var t=[],p=-1,s,q;for(s=0;q=u[s];s++){if(q.scrollTop>0||q.scrollLeft>0){t[++p]=q}}return t};return{extend:Ext.dom.AbstractElement,alternateClassName:["Ext.Element","Ext.core.Element"],tableTagRe:/^(?:tr|td|table|tbody)$/i,mixins:[Ext.util.Positionable],addUnits:function(){return a.addUnits.apply(a,arguments)},focus:function(t,s){var p=this;s=s||p.dom;try{if(Number(t)){Ext.defer(p.focus,t,p,[null,s])}else{s.focus()}}catch(q){}return p},blur:function(){var p=this,s=p.dom;if(s!==document.body){try{s.blur()}catch(q){}return p}else{return p.focus(undefined,s)}},isBorderBox:function(){var p=Ext.isBorderBox;if(p&&Ext.isIE7m){p=!((this.dom.tagName||"").toLowerCase() in d)}return p},hover:function(q,p,t,s){var u=this;u.on("mouseenter",q,t||u.dom,s);u.on("mouseleave",p,t||u.dom,s);return u},getAttributeNS:function(q,p){return this.getAttribute(p,q)},getAttribute:Ext.isIE&&!(Ext.isIE9p&&g.documentMode>=9)?function(p,s){var t=this.dom,q;if(s){q=typeof t[s+":"+p];if(q!="undefined"&&q!="unknown"){return t[s+":"+p]||null}return null}if(p==="for"){p="htmlFor"}return t[p]||null}:function(p,q){var s=this.dom;if(q){return s.getAttributeNS(q,p)||s.getAttribute(q+":"+p)}return s.getAttribute(p)||s[p]||null},cacheScrollValues:function(){var u=this,t,s,q,w=[],p=function(){for(q=0;q<t.length;q++){s=t[q];s.scrollLeft=w[q][0];s.scrollTop=w[q][1]}};if(!Ext.DomQuery.pseudos.isScrolled){Ext.DomQuery.pseudos.isScrolled=o}t=u.query(":isScrolled");for(q=0;q<t.length;q++){s=t[q];w[q]=[s.scrollLeft,s.scrollTop]}return p},autoBoxAdjust:true,isVisible:function(p){var s=this,t=s.dom,q=t.ownerDocument.documentElement;if(!h){h=new a.Fly}while(t!==q){if(!t||t.nodeType===11||h.attach(t).isStyle(k,b)||h.isStyle(c,l)){return false}if(!p){break}t=t.parentNode}return true},isDisplayed:function(){return !this.isStyle(c,l)},enableDisplayMode:function(q){var p=this;p.setVisibilityMode(a.DISPLAY);if(!Ext.isEmpty(q)){(p.$cache||p.getCache()).data.originalDisplay=q}return p},mask:function(p,B,y){var D=this,t=D.dom,u=t.style.setExpression,x=(D.$cache||D.getCache()).data,s=x.maskShimEl,A=x.maskEl,q=x.maskMsg,w,z;if(!(n.test(t.tagName)&&D.getStyle("position")=="static")){D.addCls(m)}if(A){A.remove()}if(q){q.remove()}if(s){s.remove()}if(Ext.isIE6){s=Ext.DomHelper.append(t,{tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"},true);x.maskShimEl=s;s.setDisplayed(true)}Ext.DomHelper.append(t,[{cls:Ext.baseCSSPrefix+"mask",style:"top:0;left:0;"},{cls:B?j+" "+B:j,cn:{tag:"div",cls:Ext.baseCSSPrefix+"mask-msg-inner",cn:{tag:"div",cls:Ext.baseCSSPrefix+"mask-msg-text",html:p||""}}}]);q=Ext.get(t.lastChild);A=Ext.get(q.dom.previousSibling);x.maskMsg=q;x.maskEl=A;D.addCls(e);A.setDisplayed(true);if(typeof p=="string"){q.setDisplayed(true);q.center(D)}else{q.setDisplayed(false)}if(!Ext.supports.IncludePaddingInWidthCalculation&&u){try{A.dom.style.setExpression("width",'this.parentNode.clientWidth + "px"');w='this.parentNode.clientWidth + "px"';if(s){s.dom.style.setExpression("width",w)}A.dom.style.setExpression("width",w)}catch(C){}}if(!Ext.supports.IncludePaddingInHeightCalculation&&u){try{z="this.parentNode."+(t==g.body?"scrollHeight":"offsetHeight")+' + "px"';if(s){s.dom.style.setExpression("height",z)}A.dom.style.setExpression("height",z)}catch(C){}}else{if(Ext.isIE9m&&!(Ext.isIE7&&Ext.isStrict)&&D.getStyle("height")=="auto"){if(s){s.setSize(undefined,y||D.getHeight())}A.setSize(undefined,y||D.getHeight())}}return A},unmask:function(){var u=this,w=(u.$cache||u.getCache()).data,t=w.maskEl,q=w.maskShimEl,p=w.maskMsg,s;if(t){s=t.dom.style;if(s.clearExpression){s.clearExpression("width");s.clearExpression("height")}if(t){t.remove();delete w.maskEl}if(p){p.remove();delete w.maskMsg}u.removeCls([e,m]);if(q){s=q.dom.style;if(s.clearExpression){s.clearExpression("width");s.clearExpression("height")}q.remove();delete w.maskShimEl}}},isMasked:function(){var s=this,u=(s.$cache||s.getCache()).data,q=u.maskEl,p=u.maskMsg,t=false;if(q&&q.isVisible()){if(p){p.center(s)}t=true}return t},createShim:function(){var p=g.createElement("iframe"),q;p.frameBorder="0";p.className=Ext.baseCSSPrefix+"shim";p.src=Ext.SSL_SECURE_URL;q=Ext.get(this.dom.parentNode.insertBefore(p,this.dom));q.autoBoxAdjust=false;return q},addKeyListener:function(q,t,s){var p;if(typeof q!="object"||Ext.isArray(q)){p={target:this,key:q,fn:t,scope:s}}else{p={target:this,key:q.key,shift:q.shift,ctrl:q.ctrl,alt:q.alt,fn:t,scope:s}}return new Ext.util.KeyMap(p)},addKeyMap:function(p){return new Ext.util.KeyMap(Ext.apply({target:this},p))},on:function(p,t,s,q){Ext.EventManager.on(this,p,t,s||this,q);return this},un:function(p,s,q){Ext.EventManager.un(this,p,s,q||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this);return this},select:function(p){return a.select(p,false,this.dom)}}},function(){var DOC=document,EC=Ext.cache,Element=this,AbstractElement=Ext.dom.AbstractElement,focusRe=/^a|button|embed|iframe|input|object|select|textarea$/i,nonSpaceRe=/\S/,scriptTagRe=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!Ext.isIE8m,internalFly;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>';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(Element.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(!d.parentNode||!d.offsetParent&&!Ext.getElementById(eid)){if(d&&Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}Element.collectorThreadId=setInterval(garbageCollect,30000);Element.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen,fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e<eLen;e++){me.on(eventName[e],fn)}return me}me.on(eventName,fn);return me},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e)})},clean:function(forceReclean){var me=this,dom=me.dom,data=(me.$cache||me.getCache()).data,n=dom.firstChild,ni=-1,nx;if(data.isCleaned&&forceReclean!==true){return me}while(n){nx=n.nextSibling;if(n.nodeType==3){if(!nonSpaceRe.test(n.nodeValue)){dom.removeChild(n)}else{if(nx&&nx.nodeType==3){n.appendData(Ext.String.trim(nx.data));dom.removeChild(nx);nx=n.nextSibling;n.nodeIndex=++ni}}}else{internalFly.attach(n).clean();n.nodeIndex=++ni}n=nx}data.isCleaned=true;return me},load:function(options){this.getLoader().load(options);return this},getLoader:function(){var me=this,data=(me.$cache||me.getCache()).data,loader=data.loader;if(!loader){data.loader=loader=new Ext.ElementLoader({target:me})}return loader},syncContent:function(source){source=Ext.getDom(source);var sourceNodes=source.childNodes,sourceLen=sourceNodes.length,dest=this.dom,destNodes=dest.childNodes,destLen=destNodes.length,i,destNode,sourceNode,nodeType,newAttrs,attLen,attName;if(dest.mergeAttributes){dest.mergeAttributes(source,true);dest.src=source.src}else{newAttrs=source.attributes;attLen=newAttrs.length;for(i=0;i<attLen;i++){attName=newAttrs[i].name;if(attName!=="id"){dest.setAttribute(attName,newAttrs[i].value)}}}if(sourceLen!==destLen){dest.innerHTML=source.innerHTML;return}for(i=0;i<sourceLen;i++){sourceNode=sourceNodes[i];destNode=destNodes[i];nodeType=sourceNode.nodeType;if(nodeType!==destNode.nodeType||nodeType===1&&sourceNode.tagName!==destNode.tagName){dest.innerHTML=source.innerHTML;return}if(nodeType===3){destNode.data=sourceNode.data}else{if(sourceNode.id&&destNode.id!==sourceNode.id){destNode.id=sourceNode.id}destNode.style.cssText=sourceNode.style.cssText;destNode.className=sourceNode.className;internalFly.attach(destNode).syncContent(sourceNode)}}},update:function(html,loadScripts,callback){var me=this,id,dom,interval;if(!me.dom){return me}html=html||"";dom=me.dom;if(loadScripts!==true){dom.innerHTML=html;Ext.callback(callback,me);return me}id=Ext.id();html+='<span id="'+id+'"></span>';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while(match=scriptTagRe.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])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=typeof config=="object"?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},needsTabIndex:function(){if(this.dom){if(this.dom.nodeName==="a"&&!this.dom.href){return true}return !focusRe.test(this.dom.nodeName)}},isFocusable:function(asFocusEl){var dom=this.dom,tabIndexAttr=dom.getAttributeNode("tabIndex"),tabIndex,nodeName=dom.nodeName,canFocus=false;if(tabIndexAttr&&tabIndexAttr.specified){tabIndex=tabIndexAttr.value}if(dom&&!dom.disabled){if(tabIndex==-1){canFocus=Ext.FocusManager&&Ext.FocusManager.enabled&&asFocusEl}else{if(focusRe.test(nodeName)){if(nodeName!=="a"||dom.href){canFocus=true}}else{canFocus=tabIndex!=null&&tabIndex>=0}}canFocus=canFocus&&this.isVisible(true)}return canFocus}});if(Ext.isIE){Element.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=useDocForId&&DOC.getElementById(id)||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):Element.get(id)}}Element.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners",focusable:"isFocusable"});Element.Fly=AbstractElement.Fly=new Ext.Class({extend:Element,isFly:true,constructor:function(dom){this.dom=dom;this.el=this},attach:AbstractElement.Fly.prototype.attach});internalFly=new Element.Fly;if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}});Ext.define("Ext.dom.CompositeElementLite",{alternateClassName:"Ext.CompositeElementLite",statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b<d;++b){e.push(this.transformElement(c[b]))}return this},invoke:function(d,a){var g=this.elements,e=g.length,c,b;d=Ext.dom.Element.prototype[d];for(b=0;b<e;b++){c=g[b];if(c){d.apply(this.getElement(c),a)}}return this},item:function(b){var c=this.elements[b],a=null;if(c){a=this.getElement(c)}return a},slice:function(){return this.elements.slice.apply(this.elements,arguments)},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},insert:function(b,a){Ext.Array.insert(this.elements,b,a)},filter:function(b){var h=this,c=h.elements,g=c.length,d=[],e=0,j=typeof b=="function",k,a;for(;e<g;e++){a=c[e];k=false;if(a){a=h.getElement(a);if(j){k=b.call(a,a,h,e)!==false}else{k=a.is(b)}if(k){d.push(h.transformElement(a))}}}h.elements=d;return h},indexOf:function(a){return Ext.Array.indexOf(this.elements,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)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(d){var c=this,b=c.elements,a=b.length-1;if(d){for(;a>=0;a--){Ext.removeNode(b[a])}}this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g<a;g++){c.push(Ext.get(d[g]))}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(e,j){e=[].concat(e);var d=this,g=d.elements,c=e.length,h,b,a;for(a=0;a<c;a++){h=e[a];if(b=g[h]||g[h=d.indexOf(h)]){if(j){if(b.dom){b.remove()}else{Ext.removeNode(b)}}Ext.Array.erase(g,h,1)}}return d}},function(){this.importElementMethods();this.prototype.on=this.prototype.addListener;if(Ext.DomQuery){Ext.dom.Element.selectorFunction=Ext.DomQuery.select}Ext.dom.Element.select=function(a,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return new Ext.CompositeElementLite(c)};Ext.select=function(){return Ext.dom.Element.select.apply(Ext.dom.Element,arguments)}});Ext.define("Ext.dom.CompositeElement",{alternateClassName:"Ext.CompositeElement",extend:Ext.dom.CompositeElementLite,getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}},function(){Ext.dom.Element.select=function(a,d,b){var c;if(typeof a=="string"){c=Ext.dom.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{}}return d===true?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)}});Ext.select=Ext.Element.select;Ext.define("Ext.util.HashMap",{mixins:{observable:Ext.util.Observable},constructor:function(a){a=a||{};var c=this,b=a.keyFn;c.initialConfig=a;c.addEvents("add","clear","remove","replace");c.mixins.observable.constructor.call(c,a);c.clear(true);if(b){c.getKey=b}},getCount:function(){return this.length},getData:function(a,b){if(b===undefined){b=a;a=this.getKey(b)}return[a,b]},getKey:function(a){return a.id},add:function(a,c){var b=this;if(arguments.length===1){c=a;a=b.getKey(c)}if(b.containsKey(a)){return b.replace(a,c)}b.map[a]=c;++b.length;if(b.hasListeners.add){b.fireEvent("add",b,a,c)}return c},replace:function(b,d){var c=this,e=c.map,a;if(arguments.length===1){d=b;b=c.getKey(d)}if(!c.containsKey(b)){c.add(b,d)}a=e[b];e[b]=d;if(c.hasListeners.replace){c.fireEvent("replace",c,b,d,a)}return d},remove:function(b){var a=this.findKey(b);if(a!==undefined){return this.removeAtKey(a)}return false},removeAtKey:function(a){var b=this,c;if(b.containsKey(a)){c=b.map[a];delete b.map[a];--b.length;if(b.hasListeners.remove){b.fireEvent("remove",b,a,c)}return true}return false},get:function(a){return this.map[a]},clear:function(a){var b=this;b.map={};b.length=0;if(a!==true&&b.hasListeners.clear){b.fireEvent("clear",b)}return b},containsKey:function(a){return this.map[a]!==undefined},contains:function(a){return this.containsKey(this.findKey(a))},getKeys:function(){return this.getArray(true)},getValues:function(){return this.getArray(false)},getArray:function(d){var a=[],b,c=this.map;for(b in c){if(c.hasOwnProperty(b)){a.push(d?b:c[b])}}return a},each:function(d,c){var a=Ext.apply({},this.map),b,e=this.length;c=c||this;for(b in a){if(a.hasOwnProperty(b)){if(d.call(c,b,a[b],e)===false){break}}}return this},clone:function(){var c=new this.self(this.initialConfig),b=this.map,a;c.suspendEvents();for(a in b){if(b.hasOwnProperty(a)){c.add(a,b[a])}}c.resumeEvents();return c},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a]===b){return a}}return undefined}});Ext.define("Ext.AbstractManager",{typeName:"type",constructor:function(a){Ext.apply(this,a||{});this.all=new Ext.util.HashMap;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];return new c(a)},onAvailable:function(g,c,b){var a=this.all,d,e;if(a.containsKey(g)){d=a.get(g);c.call(b||d,d)}else{e=function(k,h,j){if(h==g){c.call(b||j,j);a.un("add",e)}};a.on("add",e)}},each:function(b,a){this.all.each(b,a||this)},getCount:function(){return this.all.getCount()}});Ext.define("Ext.ComponentManager",{extend:Ext.AbstractManager,alternateClassName:"Ext.ComponentMgr",singleton:true,typeName:"xtype",create:function(a,b){if(typeof a=="string"){return Ext.widget(a)}if(a.isComponent){return a}return Ext.widget(a.xtype||b,a)},registerType:function(b,a){this.types[b]=a;a[this.typeName]=b;a.prototype[this.typeName]=b}},function(){Ext.getCmp=function(a){return Ext.ComponentManager.get(a)}});Ext.define("Ext.ComponentQuery",{singleton:true},function(){var j=this,m=Ext.dom.Query.operators,p=/(\d*)n\+?(\d*)/,a=/\D/,n=["var r = [],","i = 0,","it = items,","l = it.length,","c;","for (; i < l; i++) {","c = it[i];","if (c.{0}) {","r.push(c);","}","}","return r;"].join(""),g=function(u,t){return t.method.apply(this,[u].concat(t.args))},b=function(w,A){var t=[],x=0,z=w.length,y,u=A!==">";for(;x<z;x++){y=w[x];if(y.getRefItems){t=t.concat(y.getRefItems(u))}}return t},h=function(u){var t=[],w=0,y=u.length,x;for(;w<y;w++){x=u[w];while(!!(x=x.getRefOwner())){t.push(x)}}return t},q=function(u,A,z){if(A==="*"){return u.slice()}else{var t=[],w=0,y=u.length,x;for(;w<y;w++){x=u[w];if(x.isXType(A,z)){t.push(x)}}return t}},l=function(u,y){var t=[],w=0,z=u.length,x;for(;w<z;w++){x=u[w];if(x.hasCls(y)){t.push(x)}}return t},s=function(C,D,x,w){var G=[],B=0,u=C.length,F,y,E,t,A,z;if(D.charAt(0)==="@"){F=true;D=D.substr(1)}if(D.charAt(0)==="?"){F=true;y=true;D=D.substr(1)}for(;B<u;B++){E=C[B];if(!F||E.hasOwnProperty(D)){t=E[D];if(y){G.push(E)}else{if(x==="~="){if(t){if(!Ext.isArray(t)){t=t.split(" ")}for(A=0,z=t.length;A<z;A++){if(m[x](Ext.coerce(t[A],w),w)){G.push(E);break}}}}else{if(!w?!!E[D]:m[x](Ext.coerce(t,w),w)){G.push(E)}}}}}return G},e=function(u,z){var t=[],w=0,y=u.length,x;for(;w<y;w++){x=u[w];if(x.getItemId()===z){t.push(x)}}return t},o=function(t,u,w){return j.pseudos[u](t,w)},k=/^(\s?([>\^])\s?|\s|$)/,d=/^(#)?([\w\-]+|\*)(?:\((true|false)\))?/,c=[{re:/^\.([\w\-]+)(?:\((true|false)\))?/,method:q},{re:/^(?:\[((?:@|\?)?[\w\-\$]*[^\^\$\*~%!])\s?(?:(=|.=)\s?['"]?(.*?)["']?)?\])/,method:s},{re:/^#([\w\-]+)/,method:e},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,method:o},{re:/^(?:\{([^\}]+)\})/,method:n}];j.Query=Ext.extend(Object,{constructor:function(t){t=t||{};Ext.apply(this,t)},execute:function(u){var x=this.operations,y=0,z=x.length,w,t;if(!u){t=Ext.ComponentManager.all.getArray()}else{if(Ext.isIterable(u)){t=u}else{if(u.isMixedCollection){t=u.items}}}for(;y<z;y++){w=x[y];if(w.mode==="^"){t=h(t||[u])}else{if(w.mode){t=b(t||[u],w.mode)}else{t=g(t||b([u]),w)}}if(y===z-1){return t}}return[]},is:function(w){var u=this.operations,z=Ext.isArray(w)?w:[w],t=z.length,A=u[u.length-1],y,x;z=g(z,A);if(z.length===t){if(u.length>1){for(x=0,y=z.length;x<y;x++){if(Ext.Array.indexOf(this.execute(),z[x])===-1){return false}}}return true}return false}});Ext.apply(this,{cache:{},pseudos:{not:function(A,t){var B=Ext.ComponentQuery,y=0,z=A.length,x=[],w=-1,u;for(;y<z;++y){u=A[y];if(!B.is(u,t)){x[++w]=u}}return x},first:function(u){var t=[];if(u.length>0){t.push(u[0])}return t},last:function(w){var t=w.length,u=[];if(t>0){u.push(w[t-1])}return u},focusable:function(u){var t=u.length,x=[],w=0,y;for(;w<t;w++){y=u[w];if(y.isFocusable()){x.push(y)}}return x},"nth-child":function(A,B){var C=[],u=p.exec(B=="even"&&"2n"||B=="odd"&&"2n+1"||!a.test(B)&&"n+"+B||B),z=(u[1]||1)-0,x=u[2]-0,y,t,w;for(y=0;t=A[y];y++){w=y+1;if(z==1){if(x==0||w==x){C.push(t)}}else{if((w+x)%z==0){C.push(t)}}}return C}},query:function(u,C){var D=u.split(","),t=D.length,w=0,x=[],E=[],B={},z,y,A;for(;w<t;w++){u=Ext.String.trim(D[w]);z=this.cache[u]||(this.cache[u]=this.parse(u));x=x.concat(z.execute(C))}if(t>1){y=x.length;for(w=0;w<y;w++){A=x[w];if(!B[A.id]){E.push(A);B[A.id]=true}}x=E}return x},is:function(u,t){if(!t){return true}var x=t.split(","),y=x.length,w=0,z;for(;w<y;w++){t=Ext.String.trim(x[w]);z=this.cache[t]||(this.cache[t]=this.parse(t));if(z.is(u)){return true}}return false},parse:function(x){var u=[],w=c.length,B,y,C,D,E,z,A,t;while(x&&B!==x){B=x;y=x.match(d);if(y){C=y[1];if(C==="#"){u.push({method:e,args:[Ext.String.trim(y[2])]})}else{if(C==="."){u.push({method:l,args:[Ext.String.trim(y[2])]})}else{u.push({method:q,args:[Ext.String.trim(y[2]),Boolean(y[3])]})}}x=x.replace(y[0],"")}while(!(D=x.match(k))){for(z=0;x&&z<w;z++){A=c[z];E=x.match(A.re);t=A.method;if(E){u.push({method:Ext.isString(A.method)?Ext.functionFactory("items",Ext.String.format.apply(Ext.String,[t].concat(E.slice(1)))):A.method,args:E.slice(1)});x=x.replace(E[0],"");break}if(z===w-1){Ext.Error.raise('Invalid ComponentQuery selector: "'+arguments[0]+'"')}}}if(D[1]){u.push({mode:D[2]||D[1]});x=x.replace(D[0],"")}}return new j.Query({operations:u})}})});Ext.define("Ext.util.ProtoElement",function(){var b=Ext.String.splitWords,a=Ext.Array.toMap;return{isProtoEl:true,clsProp:"cls",styleProp:"style",removedProp:"removed",styleIsText:false,constructor:function(c){var d=this;Ext.apply(d,c);d.classList=b(d.cls);d.classMap=a(d.classList);delete d.cls;if(Ext.isFunction(d.style)){d.styleFn=d.style;delete d.style}else{if(typeof d.style=="string"){d.style=Ext.Element.parseStyles(d.style)}else{if(d.style){d.style=Ext.apply({},d.style)}}}},flush:function(){this.flushClassList=[];this.removedClasses={};delete this.style;delete this.unselectableAttr},addCls:function(n){var l=this,m=typeof n==="string"?b(n):n,e=m.length,j=l.classList,d=l.classMap,g=l.flushClassList,h=0,k;for(;h<e;++h){k=m[h];if(!d[k]){d[k]=true;j.push(k);if(g){g.push(k);delete l.removedClasses[k]}}}return l},hasCls:function(c){return c in this.classMap},removeCls:function(o){var n=this,l=n.classList,g=n.classList=[],j=a(b(o)),e=l.length,d=n.classMap,k=n.removedClasses,h,m;for(h=0;h<e;++h){m=l[h];if(j[m]){if(k){if(d[m]){k[m]=true;Ext.Array.remove(n.flushClassList,m)}}delete d[m]}else{g.push(m)}}return n},setStyle:function(g,e){var d=this,c=d.style||(d.style={});if(typeof g=="string"){if(arguments.length===1){d.setStyle(Ext.Element.parseStyles(g))}else{c[g]=e}}else{Ext.apply(c,g)}return d},unselectable:function(){this.addCls(Ext.dom.Element.unselectableCls);if(Ext.isOpera){this.unselectableAttr=true}},writeTo:function(h){var e=this,g=e.flushClassList||e.classList,d=e.removedClasses,c;if(e.styleFn){c=Ext.apply({},e.styleFn());Ext.apply(c,e.style)}else{c=e.style}h[e.clsProp]=g.join(" ");if(c){h[e.styleProp]=e.styleIsText?Ext.DomHelper.generateStyles(c):c}if(d){d=Ext.Object.getKeys(d);if(d.length){h[e.removedProp]=d.join(" ")}}if(e.unselectableAttr){h.unselectable="on"}return h}}}());Ext.define("Ext.PluginManager",{extend:Ext.AbstractManager,alternateClassName:"Ext.PluginMgr",singleton:true,typeName:"ptype",create:function(b,d,c){var a;if(b.init){a=b}else{if(c){b=Ext.apply({},b);b.cmp=c}else{c=b.cmp}if(b.xclass){a=Ext.create(b)}else{a=Ext.ClassManager.getByAlias("plugin."+(b.ptype||d));if(typeof a==="function"){a=new a(b)}}}if(a&&c&&a.setCmp&&!a.setCmpCalled){a.setCmp(c);a.setCmpCalled=true}return a},findByType:function(c,g){var e=[],b=this.types,a,d;for(a in b){if(!b.hasOwnProperty(a)){continue}d=b[a];if(d.type==c&&(!g||g===true&&d.isDefault)){e.push(d)}}return e}},function(){Ext.preg=function(){return Ext.PluginManager.registerType.apply(Ext.PluginManager,arguments)}});Ext.define("Ext.util.Filter",{id:null,anyMatch:false,exactMatch:false,caseSensitive:false,disabled:false,operator:null,statics:{createFilterFn:function(a){return a&&a.length?function(e){var d=true,g=a.length,b,c;for(b=0;d&&b<g;b++){c=a[b];if(!c.disabled){d=d&&c.filterFn.call(c.scope||c,e)}}return d}:function(){return true}}},operatorFns:{"<":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)<this.value},"<=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)<=this.value},"=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)==this.value},">=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>=this.value},">":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>this.value},"!=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)!=this.value}},constructor:function(a){var b=this;b.initialConfig=a;Ext.apply(b,a);b.filter=b.filter||b.filterFn;if(b.filter===undefined){b.setValue(a.value)}},setValue:function(b){var a=this;a.value=b;if(a.property===undefined||a.value===undefined){}else{a.filter=a.createFilterFn()}a.filterFn=a.filter},setFilterFn:function(a){this.filterFn=this.filter=a},createFilterFn:function(){var a=this,c=a.createValueMatcher(),b=a.property;if(a.operator){return a.operatorFns[a.operator]}else{return function(d){var e=a.getRoot(d)[b];return c===null?e===null:c.test(e)}}},getRoot:function(b){var a=this.root;return a===undefined?b:b[a]},createValueMatcher:function(){var d=this,e=d.value,g=d.anyMatch,c=d.exactMatch,a=d.caseSensitive,b=Ext.String.escapeRegex;if(e===null){return e}if(!e.exec){e=String(e);if(g===true){e=b(e)}else{e="^"+b(e);if(c===true){e+="$"}}e=new RegExp(e,a?"":"i")}return e},serialize:function(){var b=this,a=Ext.apply({},b.initialConfig);a.value=b.value;return a}},function(){this.prototype.operatorFns["=="]=this.prototype.operatorFns["="]});Ext.define("Ext.util.AbstractMixedCollection",{mixins:{observable:Ext.util.Observable},isMixedCollection:true,generation:0,indexGeneration:0,constructor:function(b,a){var c=this;if(arguments.length===1&&Ext.isObject(b)){c.initialConfig=b;Ext.apply(c,b)}else{c.allowFunctions=b===true;if(a){c.getKey=a}c.initialConfig={allowFunctions:c.allowFunctions,getKey:c.getKey}}c.items=[];c.map={};c.keys=[];c.indexMap={};c.length=0;c.mixins.observable.constructor.call(c)},allowFunctions:false,add:function(a,b){return this.insert(this.length,a,b)},getKey:function(a){return a.id},replace:function(c,e){var d=this,a,b;if(arguments.length==1){e=arguments[0];c=d.getKey(e)}a=d.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return d.add(c,e)}d.generation++;b=d.indexOfKey(c);d.items[b]=e;d.map[c]=e;if(d.hasListeners.replace){d.fireEvent("replace",c,a,e)}return e},updateKey:function(g,h){var d=this,e=d.map,c=d.indexMap,a=d.indexOfKey(g),b;if(a>-1){b=e[g];delete e[g];delete c[g];e[h]=b;c[h]=a;d.keys[a]=h;d.generation++}},addAll:function(c){var b=this,a;if(arguments.length>1||Ext.isArray(c)){b.insert(b.length,arguments.length>1?arguments:c)}else{for(a in c){if(c.hasOwnProperty(a)){if(b.allowFunctions||typeof c[a]!="function"){b.add(a,c[a])}}}}},each:function(e,d){var b=Ext.Array.push([],this.items),c=0,a=b.length,g;for(;c<a;c++){g=b[c];if(e.call(d||g,g,c,a)===false){break}}},eachKey:function(e,d){var g=this.keys,b=this.items,c=0,a=g.length;for(;c<a;c++){e.call(d||window,g[c],b[c],c,a)}},findBy:function(e,d){var g=this.keys,b=this.items,c=0,a=b.length;for(;c<a;c++){if(e.call(d||window,b[c],g[c])){return b[c]}}return null},find:function(){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.util.MixedCollection: find has been deprecated. Use findBy instead.")}return this.findBy.apply(this,arguments)},insert:function(a,b,c){if(Ext.isIterable(b)){return this.doInsert(a,b,c)}return(c?this.doInsert(a,[b],[c]):this.doInsert(a,[b]))[0]},doInsert:function(g,l,k){var j=this,a,b,e,h=l.length,d=j.hasListeners.add,c;if(k!=null){j.useLinearSearch=true}else{k=l;l=new Array(h);for(e=0;e<h;e++){l[e]=this.getKey(k[e])}}j.suspendEvents();for(e=0;e<h;e++){b=j.indexOfKey(l[e]);if(b!==-1){if(b<g){g--}j.removeAt(b)}}j.resumeEvents();c=g===j.length&&j.indexGeneration===j.generation;Ext.Array.insert(j.items,g,k);Ext.Array.insert(j.keys,g,l);j.length+=h;j.generation++;if(c){j.indexGeneration=j.generation}for(e=0;e<h;e++,g++){a=l[e];if(a!=null){j.map[a]=k[e];if(c){j.indexMap[a]=g}}if(d){j.fireEvent("add",g,k[e],a)}}return k},remove:function(d){var c=this,b,a;if(!c.useLinearSearch&&(b=c.getKey(d))){a=c.indexOfKey(b)}else{a=Ext.Array.indexOf(c.items,d)}return a===-1?false:c.removeAt(a)},removeAll:function(a){var c=this,b;if(a||c.hasListeners.remove){if(a){for(b=a.length-1;b>=0;--b){c.remove(a[b])}}else{while(c.length){c.removeAt(0)}}}else{c.length=c.items.length=c.keys.length=0;c.map={};c.indexMap={};c.generation++;c.indexGeneration=c.generation}},removeAt:function(a){var c=this,d,b;if(a<c.length&&a>=0){c.length--;d=c.items[a];Ext.Array.erase(c.items,a,1);b=c.keys[a];if(typeof b!="undefined"){delete c.map[b]}Ext.Array.erase(c.keys,a,1);if(c.hasListeners.remove){c.fireEvent("remove",d,b)}c.generation++;return d}return false},removeRange:function(h,a){var j=this,b,k,g,e,c,d;if(h<j.length&&h>=0){if(!a){a=1}e=Math.min(h+a,j.length);a=e-h;d=e===j.length;c=d&&j.indexGeneration===j.generation;for(g=h;g<e;g++){k=j.keys[g];if(k!=null){delete j.map[k];if(c){delete j.indexMap[k]}}}b=j.items[g-1];j.length-=a;j.generation++;if(c){j.indexGeneration=j.generation}if(d){j.items.length=j.keys.length=j.length}else{j.items.splice(h,a);j.keys.splice(h,a)}return b}return false},removeAtKey:function(b){var d=this,c=d.keys,a;if(b==null){for(a=c.length-1;a>=0;a--){if(c[a]==null){d.removeAt(a)}}}else{return d.removeAt(d.indexOfKey(b))}},getCount:function(){return this.length},indexOf:function(c){var b=this,a;if(c!=null){if(!b.useLinearSearch&&(a=b.getKey(c))){return this.indexOfKey(a)}return Ext.Array.indexOf(b.items,c)}return -1},indexOfKey:function(a){if(this.map[a]==null){return -1}if(this.indexGeneration!==this.generation){this.rebuildIndexMap()}return this.indexMap[a]},rebuildIndexMap:function(){var e=this,d=e.indexMap={},c=this.keys,a=c.length,b;for(b=0;b<a;b++){d[c[b]]=b}e.indexGeneration=e.generation},get:function(b){var d=this,a=d.map[b],c=a!==undefined?a:typeof b=="number"?d.items[b]:undefined;return typeof c!="function"||d.allowFunctions?c:null},getAt:function(a){return this.items[a]},getByKey:function(a){return this.map[a]},contains:function(c){var b=this,a;if(c!=null){if(!b.useLinearSearch&&(a=b.getKey(c))){return this.map[a]!=null}return Ext.Array.indexOf(this.items,c)!==-1}return false},containsKey:function(a){return this.map[a]!=null},clear:function(){var a=this;a.length=0;a.items=[];a.keys=[];a.map={};a.indexMap={};a.generation++;a.indexGeneration=a.generation;if(a.hasListeners.clear){a.fireEvent("clear")}},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},sum:function(h,b,j,a){var c=this.extractValues(h,b),g=c.length,e=0,d;j=j||0;a=a||a===0?a:g-1;for(d=j;d<=a;d++){e+=c[d]}return e},collect:function(k,e,h){var l=this.extractValues(k,e),a=l.length,b={},c=[],j,g,d;for(d=0;d<a;d++){j=l[d];g=String(j);if((h||!Ext.isEmpty(j))&&!b[g]){b[g]=true;c.push(j)}}return c},extractValues:function(c,a){var b=this.items;if(a){b=Ext.Array.pluck(b,a)}return Ext.Array.pluck(b,c)},hasRange:function(b,a){return a<this.length},getRange:function(g,a){var e=this,c=e.items,b=[],d;if(c.length<1){return b}g=g||0;a=Math.min(a==null?e.length-1:a,e.length-1);if(g<=a){return c.slice(g,a+1)}else{for(d=g;d>=a;d--){b[b.length]=c[d]}}return b},filter:function(d,c,e,a){var b=[];if(Ext.isString(d)){b.push(new Ext.util.Filter({property:d,value:c,anyMatch:e,caseSensitive:a}))}else{if(Ext.isArray(d)||d instanceof Ext.util.Filter){b=b.concat(d)}}return this.filterBy(Ext.util.Filter.createFilterFn(b))},filterBy:function(e,d){var j=this,a=new j.self(j.initialConfig),h=j.keys,b=j.items,g=b.length,c;a.getKey=j.getKey;for(c=0;c<g;c++){if(e.call(d||j,b[c],h[c])){a.add(h[c],b[c])}}return a},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(e,d,j){var h=this,g=h.keys,b=h.items,c=j||0,a=b.length;for(;c<a;c++){if(e.call(d||h,b[c],g[c])){return c}}return -1},createValueMatcher:function(c,e,a,b){if(!c.exec){var d=Ext.String.escapeRegex;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 a=this,b=new this.self(a.initialConfig);b.add(a.keys,a.items);return b}});Ext.define("Ext.util.Sorter",{direction:"ASC",constructor:function(a){var b=this;Ext.apply(b,a);b.updateSortFunction()},createSortFunction:function(b){var c=this,d=c.direction||"ASC",a=d.toUpperCase()=="DESC"?-1:1;return function(g,e){return a*b.call(c,g,e)}},defaultSorterFn:function(d,c){var b=this,a=b.transform,g=b.getRoot(d)[b.property],e=b.getRoot(c)[b.property];if(a){g=a(g);e=a(e)}return g>e?1:g<e?-1:0},getRoot:function(a){return this.root===undefined?a:a[this.root]},setDirection:function(b){var a=this;a.direction=b?b.toUpperCase():b;a.updateSortFunction()},toggle:function(){var a=this;a.direction=Ext.String.toggle(a.direction,"ASC","DESC");a.updateSortFunction()},updateSortFunction:function(a){var b=this;a=a||b.sorterFn||b.defaultSorterFn;b.sort=b.createSortFunction(a)},serialize:function(){return{root:this.root,property:this.property,direction:this.direction}}});Ext.define("Ext.util.Sortable",{isSortable:true,defaultSortDirection:"ASC",statics:{createComparator:function(a){return a&&a.length?function(d,c){var b=a[0].sort(d,c),g=a.length,e=1;for(;e<g;e++){b=b||a[e].sort.call(this,d,c)}return b}:function(){return 0}}},initSortable:function(){var a=this,b=a.sorters;a.sorters=new Ext.util.AbstractMixedCollection(false,function(c){return c.id||c.property});if(b){a.sorters.addAll(a.decodeSorters(b))}},sort:function(g,e,b,d){var c=this,h,a;if(Ext.isArray(g)){d=b;b=e;a=g}else{if(Ext.isObject(g)){d=b;b=e;a=[g]}else{if(Ext.isString(g)){h=c.sorters.get(g);if(!h){h={property:g,direction:e};a=[h]}else{if(e===undefined){h.toggle()}else{h.setDirection(e)}}}}}if(a&&a.length){a=c.decodeSorters(a);if(Ext.isString(b)){if(b==="prepend"){c.sorters.insert(0,a)}else{c.sorters.addAll(a)}}else{c.sorters.clear();c.sorters.addAll(a)}}if(d!==false){c.fireEvent("beforesort",c,a);c.onBeforeSort(a);g=c.sorters.items;if(g.length){c.doSort(c.generateComparator())}}return g},generateComparator:function(){var a=this.sorters.getRange();return a.length?this.createComparator(a):this.emptyComparator},emptyComparator:function(){return 0},onBeforeSort:Ext.emptyFn,decodeSorters:function(g){if(!Ext.isArray(g)){if(g===undefined){g=[]}else{g=[g]}}var d=g.length,h=Ext.util.Sorter,a=this.model?this.model.prototype.fields:null,e,b,c;for(c=0;c<d;c++){b=g[c];if(!(b instanceof h)){if(Ext.isString(b)){b={property:b}}Ext.applyIf(b,{root:this.sortRoot,direction:"ASC"});if(b.fn){b.sorterFn=b.fn}if(typeof b=="function"){b={sorterFn:b}}if(a&&!b.transform){e=a.get(b.property);b.transform=e&&e.sortType!==Ext.identityFn?e.sortType:undefined}g[c]=new Ext.util.Sorter(b)}}return g},getSorters:function(){return this.sorters.items},getFirstSorter:function(){var c=this.sorters.items,a=c.length,b=0,d;for(;b<a;++b){d=c[b];if(!d.isGrouper){return d}}return null}},function(){this.prototype.createComparator=this.createComparator});Ext.define("Ext.util.MixedCollection",{extend:Ext.util.AbstractMixedCollection,mixins:{sortable:Ext.util.Sortable},constructor:function(){var a=this;a.callParent(arguments);a.addEvents("sort");a.mixins.sortable.initSortable.call(a)},doSort:function(a){this.sortBy(a)},_sort:function(m,b,l){var k=this,e,g,d=String(b).toUpperCase()=="DESC"?-1:1,j=[],n=k.keys,h=k.items,a;l=l||function(o,c){return o-c};for(e=0,g=h.length;e<g;e++){j[j.length]={key:n[e],value:h[e],index:e}}Ext.Array.sort(h,function(o,c){return l(o[m],c[m])*d||(o.index<c.index?-1:1)});for(e=0,g=j.length;e<g;e++){a=j[e];h[e]=a.value;n[e]=a.key;k.indexMap[a.key]=e}k.generation++;k.indexGeneration=k.generation;k.fireEvent("sort",k)},sortBy:function(b){var j=this,a=j.items,h,g=j.keys,d,e=a.length,c;for(c=0;c<e;c++){a[c].$extCollectionIndex=c}Ext.Array.sort(a,function(l,k){return b(l,k)||(l.$extCollectionIndex<k.$extCollectionIndex?-1:1)});for(c=0;c<e;c++){h=a[c];d=j.getKey(h);g[c]=d;j.indexMap[d]=c;delete a.$extCollectionIndex}j.generation++;j.indexGeneration=j.generation;j.fireEvent("sort",j,a,g)},findInsertionIndex:function(e,d){var g=this,b=g.items,j=0,a=b.length-1,c,h;if(!d){d=g.generateComparator()}while(j<=a){c=j+a>>1;h=d(e,b[c]);if(h>=0){j=c+1}else{if(h<0){a=c-1}}}return j},reorder:function(d){var h=this,b=h.items,c=0,g=b.length,a=[],e=[],j;h.suspendEvents();for(j in d){a[d[j]]=b[j]}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()}}h.clear();h.addAll(a);h.resumeEvents();h.fireEvent("sort",h)},sortByKey: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})}});Ext.define("Ext.fx.target.Target",{isAnimTarget:true,constructor:function(a){this.target=a;this.id=this.getId()},getId:function(){return this.target.id}});Ext.define("Ext.fx.target.Element",{extend:Ext.fx.target.Target,type:"element",getElVal:function(b,a,c){if(c==undefined){if(a==="x"){c=b.getX()}else{if(a==="y"){c=b.getY()}else{if(a==="scrollTop"){c=b.getScroll().top}else{if(a==="scrollLeft"){c=b.getScroll().left}else{if(a==="height"){c=b.getHeight()}else{if(a==="width"){c=b.getWidth()}else{c=b.getStyle(a)}}}}}}}return c},getAttr:function(a,c){var b=this.target;return[[b,this.getElVal(b,a,c)]]},setAttr:function(k){var e=this.target,h=k.length,l,g,b,d,c,a;for(d=0;d<h;d++){l=k[d].attrs;for(g in l){if(l.hasOwnProperty(g)){a=l[g].length;for(c=0;c<a;c++){b=l[g][c];this.setElVal(b[0],g,b[1])}}}}},setElVal:function(b,a,c){if(a==="x"){b.setX(c)}else{if(a==="y"){b.setY(c)}else{if(a==="scrollTop"){b.scrollTo("top",c)}else{if(a==="scrollLeft"){b.scrollTo("left",c)}else{if(a==="width"){b.setWidth(c)}else{if(a==="height"){b.setHeight(c)}else{b.setStyle(a,c)}}}}}}}});Ext.define("Ext.fx.target.ElementCSS",{extend:Ext.fx.target.Element,setAttr:function(n,e){var q={attrs:[],duration:[],easing:[]},m=n.length,g,p,k,l,c,b,h,d,a;for(h=0;h<m;h++){p=n[h];c=p.duration;l=p.easing;p=p.attrs;for(k in p){if(Ext.Array.indexOf(q.attrs,k)==-1){q.attrs.push(k.replace(/[A-Z]/g,function(j){return"-"+j.toLowerCase()}));q.duration.push(c+"ms");q.easing.push(l)}}}g=q.attrs.join(",");c=q.duration.join(",");l=q.easing.join(", ");for(h=0;h<m;h++){p=n[h].attrs;for(k in p){a=p[k].length;for(d=0;d<a;d++){b=p[k][d];b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionProperty",e?"":g);b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionDuration",e?"":c);b[0].setStyle(Ext.supports.CSS3Prefix+"TransitionTimingFunction",e?"":l);b[0].setStyle(k,b[1]);if(e){b=b[0].dom.offsetWidth}else{b[0].on(Ext.supports.CSS3TransitionEnd,function(){this.setStyle(Ext.supports.CSS3Prefix+"TransitionProperty",null);this.setStyle(Ext.supports.CSS3Prefix+"TransitionDuration",null);this.setStyle(Ext.supports.CSS3Prefix+"TransitionTimingFunction",null)},b[0],{single:true})}}}}}});Ext.define("Ext.fx.target.CompositeElement",{extend:Ext.fx.target.Element,isComposite:true,constructor:function(a){a.id=a.id||Ext.id(null,"ext-composite-");this.callParent([a])},getAttr:function(a,j){var b=[],h=this.target,g=h.elements,e=g.length,c,d;for(c=0;c<e;c++){d=g[c];if(d){d=h.getElement(d);b.push([d,this.getElVal(d,a,j)])}}return b},setAttr:function(n){var l=this.target,m=n.length,b=l.elements,s=b.length,p,d,q,h,c,g,e,a;for(g=0;g<m;g++){q=n[g].attrs;for(h in q){if(q.hasOwnProperty(h)){a=q[h].length;for(e=0;e<a;e++){p=q[h][e][1];for(d=0;d<s;++d){el=b[d];if(el){el=l.getElement(el);this.setElVal(el,h,p)}}}}}}}});Ext.define("Ext.fx.target.CompositeElementCSS",{extend:Ext.fx.target.CompositeElement,setAttr:function(){return Ext.fx.target.ElementCSS.prototype.setAttr.apply(this,arguments)}});Ext.define("Ext.fx.target.Sprite",{extend:Ext.fx.target.Target,type:"draw",getFromPrim:function(b,a){var c;switch(a){case"rotate":case"rotation":c=b.attr.rotation;return{x:c.x||0,y:c.y||0,degrees:c.degrees||0};case"scale":case"scaling":c=b.attr.scaling;return{x:c.x||1,y:c.y||1,cx:c.cx||0,cy:c.cy||0};case"translate":case"translation":c=b.attr.translation;return{x:c.x||0,y:c.y||0};default:return b.attr[a]}},getAttr:function(a,b){return[[this.target,b!=undefined?b:this.getFromPrim(this.target,a)]]},setAttr:function(m){var g=m.length,k=[],b,e,p,s,q,o,n,d,c,l,h,a;for(d=0;d<g;d++){b=m[d].attrs;for(e in b){p=b[e];a=p.length;for(c=0;c<a;c++){q=p[c][0];s=p[c][1];if(e==="translate"||e==="translation"){n={x:s.x,y:s.y}}else{if(e==="rotate"||e==="rotation"){l=s.x;if(isNaN(l)){l=null}h=s.y;if(isNaN(h)){h=null}n={degrees:s.degrees,x:l,y:h}}else{if(e==="scale"||e==="scaling"){l=s.x;if(isNaN(l)){l=null}h=s.y;if(isNaN(h)){h=null}n={x:l,y:h,cx:s.cx,cy:s.cy}}else{if(e==="width"||e==="height"||e==="x"||e==="y"){n=parseFloat(s)}else{n=s}}}}o=Ext.Array.indexOf(k,q);if(o==-1){k.push([q,{}]);o=k.length-1}k[o][1][e]=n}}}g=k.length;for(d=0;d<g;d++){k[d][0].setAttributes(k[d][1])}this.target.redraw()}});Ext.define("Ext.fx.target.CompositeSprite",{extend:Ext.fx.target.Sprite,getAttr:function(a,h){var b=[],g=[].concat(this.target.items),e=g.length,d,c;for(d=0;d<e;d++){c=g[d];b.push([c,h!=undefined?h:this.getFromPrim(c,a)])}return b}});Ext.define("Ext.fx.target.Component",{extend:Ext.fx.target.Target,type:"component",getPropMethod:{top:function(){return this.getPosition(true)[1]},left:function(){return this.getPosition(true)[0]},x:function(){return this.getPosition()[0]},y:function(){return this.getPosition()[1]},height:function(){return this.getHeight()},width:function(){return this.getWidth()},opacity:function(){return this.el.getStyle("opacity")}},setMethods:{top:"setPosition",left:"setPosition",x:"setPagePosition",y:"setPagePosition",height:"setSize",width:"setSize",opacity:"setOpacity"},getAttr:function(a,b){return[[this.target,b!==undefined?b:this.getPropMethod[a].call(this.target)]]},setAttr:function(t,g,b){var q=this,p=t.length,y,n,c,k,e,m,d,s,x,l,a={},u;for(k=0;k<p;k++){y=t[k].attrs;for(n in y){m=y[n].length;for(e=0;e<m;e++){c=y[n][e];u=a[q.setMethods[n]]||(a[q.setMethods[n]]={});u.target=c[0];u[n]=c[1]}}if(a.setPosition){c=a.setPosition;d=c.left===undefined?undefined:parseFloat(c.left);s=c.top===undefined?undefined:parseFloat(c.top);c.target.setPosition(d,s)}if(a.setPagePosition){c=a.setPagePosition;c.target.setPagePosition(c.x,c.y)}if(a.setSize){c=a.setSize;x=c.width===undefined?c.target.getWidth():parseFloat(c.width);l=c.height===undefined?c.target.getHeight():parseFloat(c.height);c.target.el.setSize(x,l);if(b||q.dynamic){Ext.globalEvents.on({idle:Ext.Function.bind(c.target.setSize,c.target,[x,l]),single:true})}}if(a.setOpacity){c=a.setOpacity;c.target.el.setStyle("opacity",c.opacity)}}}});Ext.define("Ext.fx.Queue",{constructor:function(){this.targets=new Ext.util.HashMap;this.fxQueue={}},getFxDefaults:function(a){var b=this.targets.get(a);if(b){return b.fxDefaults}return{}},setFxDefaults:function(a,c){var b=this.targets.get(a);if(b){b.fxDefaults=Ext.apply(b.fxDefaults||{},c)}},stopAnimation:function(b){var d=this,a=d.getFxQueue(b),c=a.length;while(c){a[c-1].end();c--}},getActiveAnimation:function(b){var a=this.getFxQueue(b);return a&&!!a.length?a[0]:false},hasFxBlock:function(b){var a=this.getFxQueue(b);return a&&a[0]&&a[0].block},getFxQueue:function(b){if(!b){return false}var c=this,a=c.fxQueue[b],d=c.targets.get(b);if(!d){return false}if(!a){c.fxQueue[b]=[];if(d.type!="element"){d.target.on("destroy",function(){c.fxQueue[b]=[]})}}return c.fxQueue[b]},queueFx:function(d){var c=this,e=d.target,a,b;if(!e){return}a=c.getFxQueue(e.getId());b=a.length;if(b){if(d.concurrent){d.paused=false}else{a[b-1].on("afteranimate",function(){d.paused=false})}}else{d.paused=false}d.on("afteranimate",function(){Ext.Array.remove(a,d);if(d.remove){if(e.type=="element"){var g=Ext.get(e.id);if(g){g.remove()}}}},this);a.push(d)}});Ext.define("Ext.fx.Manager",{singleton:true,mixins:{queue:Ext.fx.Queue},constructor:function(){var a=this;a.items=new Ext.util.MixedCollection;a.mixins.queue.constructor.call(a);a.taskRunner=new Ext.util.TaskRunner},interval:16,forceJS:true,createTarget:function(d){var b=this,c=!b.forceJS&&Ext.supports.Transitions,a;b.useCSS3=c;if(d){if(d.tagName||Ext.isString(d)||d.isFly){d=Ext.get(d);a=new Ext.fx.target["Element"+(c?"CSS":"")](d)}else{if(d.dom){a=new Ext.fx.target["Element"+(c?"CSS":"")](d)}else{if(d.isComposite){a=new Ext.fx.target["CompositeElement"+(c?"CSS":"")](d)}else{if(d.isSprite){a=new Ext.fx.target.Sprite(d)}else{if(d.isCompositeSprite){a=new Ext.fx.target.CompositeSprite(d)}else{if(d.isComponent){a=new Ext.fx.target.Component(d)}else{if(d.isAnimTarget){return d}else{return null}}}}}}}b.targets.add(a);return a}else{return null}},addAnim:function(d){var c=this,b=c.items,a=c.task;b.add(d.id,d);if(!a&&b.length){a=c.task={run:c.runner,interval:c.interval,scope:c};c.taskRunner.start(a)}},removeAnim:function(d){var c=this,b=c.items,a=c.task;b.removeAtKey(d.id);if(a&&!b.length){c.taskRunner.stop(a);delete c.task}},runner:function(){var d=this,b=d.items.getRange(),c=0,a=b.length,e;d.targetArr={};d.timestamp=new Date;for(;c<a;c++){e=b[c];if(e.isReady()){d.startAnim(e)}}for(c=0;c<a;c++){e=b[c];if(e.isRunning()){d.runAnim(e)}}d.applyPendingAttrs()},startAnim:function(a){a.start(this.timestamp)},runAnim:function(d){if(!d){return}var c=this,g=c.useCSS3&&d.target.type=="element",a=c.timestamp-d.startTime,b=a>=d.duration,e,h;e=this.collectTargetData(d,a,g,b);if(g){d.target.setAttr(e.anims[d.id].attributes,true);c.collectTargetData(d,d.duration,g,b);d.paused=true;e=d.target.target;if(d.target.isComposite){e=d.target.target.last()}h={};h[Ext.supports.CSS3TransitionEnd]=d.lastFrame;h.scope=d;h.single=true;e.on(h)}},collectTargetData:function(c,a,e,g){var b=c.target.getId(),d=this.targetArr[b];if(!d){d=this.targetArr[b]={id:b,el:c.target,anims:{}}}d.anims[c.id]={id:c.id,anim:c,elapsed:a,isLastFrame:g,attributes:[{duration:c.duration,easing:e&&c.reverse?c.easingFn.reverse().toCSS3():c.easing,attrs:c.runAnim(a)}]};return d},applyPendingAttrs:function(){var e=this.targetArr,g,c,b,d,a;for(c in e){if(e.hasOwnProperty(c)){g=e[c];for(a in g.anims){if(g.anims.hasOwnProperty(a)){b=g.anims[a];d=b.anim;if(b.attributes&&d.isRunning()){g.el.setAttr(b.attributes,false,b.isLastFrame);if(b.isLastFrame){d.lastFrame()}}}}}}}});Ext.define("Ext.fx.Animator",{mixins:{observable:Ext.util.Observable},isAnimator:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",running:false,paused:false,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(a){var b=this;a=Ext.apply(b,a||{});b.config=a;b.id=Ext.id(null,"ext-animator-");b.addEvents("beforeanimate","keyframe","afteranimate");b.mixins.observable.constructor.call(b,a);b.timeline=[];b.createTimeline(b.keyframes);if(b.target){b.applyAnimator(b.target);Ext.fx.Manager.addAnim(b)}},sorter:function(d,c){return d.pct-c.pct},createTimeline:function(d){var h=this,l=[],j=h.to||{},b=h.duration,m,a,c,g,k,e;for(k in d){if(d.hasOwnProperty(k)&&h.animKeyFramesRE.test(k)){e={attrs:Ext.apply(d[k],j)};if(k=="from"){k=0}else{if(k=="to"){k=100}}e.pct=parseInt(k,10);l.push(e)}}Ext.Array.sort(l,h.sorter);g=l.length;for(c=0;c<g;c++){m=l[c-1]?b*(l[c-1].pct/100):0;a=b*(l[c].pct/100);h.timeline.push({duration:a-m,attrs:l[c].attrs})}},applyAnimator:function(d){var h=this,j=[],l=h.timeline,g=l.length,b,e,a,k,c;if(h.fireEvent("beforeanimate",h)!==false){for(c=0;c<g;c++){b=l[c];k=b.attrs;e=k.easing||h.easing;a=k.damper||h.damper;delete k.easing;delete k.damper;b=new Ext.fx.Anim({target:d,easing:e,damper:a,duration:b.duration,paused:true,to:k});j.push(b)}h.animations=j;h.target=b.target;for(c=0;c<g-1;c++){b=j[c];b.nextAnim=j[c+1];b.on("afteranimate",function(){this.nextAnim.paused=false});b.on("afteranimate",function(){this.fireEvent("keyframe",this,++this.keyframeStep)},h)}j[g-1].on("afteranimate",function(){this.lastFrame()},h)}},start:function(d){var e=this,c=e.delay,b=e.delayStart,a;if(c){if(!b){e.delayStart=d;return}else{a=d-b;if(a<c){return}else{d=new Date(b.getTime()+c)}}}if(e.fireEvent("beforeanimate",e)!==false){e.startTime=d;e.running=true;e.animations[e.keyframeStep].paused=false}},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b<a){c.startTime=new Date;c.currentIteration=b;c.keyframeStep=0;c.applyAnimator(c.target);c.animations[c.keyframeStep].paused=false}else{c.currentIteration=0;c.end()}},end:function(){var a=this;a.fireEvent("afteranimate",a,a.startTime,new Date-a.startTime)},isReady:function(){return this.paused===false&&this.running===false&&this.iterations>0},isRunning:function(){return false}});Ext.define("Ext.fx.CubicBezier",{singleton:true,cubicBezierAtTime:function(p,d,b,o,n,j){var k=3*d,m=3*(o-d)-k,a=1-k-m,h=3*b,l=3*(n-b)-h,q=1-h-l;function g(s){return((a*s+m)*s+k)*s}function c(s,w){var u=e(s,w);return((q*u+l)*u+h)*u}function e(s,B){var A,z,w,t,y,u;for(w=s,u=0;u<8;u++){t=g(w)-s;if(Math.abs(t)<B){return w}y=(3*a*w+2*m)*w+k;if(Math.abs(y)<0.000001){break}w=w-t/y}A=0;z=1;w=s;if(w<A){return A}if(w>z){return z}while(A<z){t=g(w);if(Math.abs(t-s)<B){return w}if(s>t){A=w}else{z=w}w=(z-A)/2+A}return w}return c(p,1/(200*j))},cubicBezier:function(b,e,a,c){var d=function(g){return Ext.fx.CubicBezier.cubicBezierAtTime(g,b,e,a,c,1)};d.toCSS3=function(){return"cubic-bezier("+[b,e,a,c].join(",")+")"};d.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-a,1-c,1-b,1-e)};return d}});Ext.require("Ext.fx.CubicBezier",function(){var e=Math,h=e.PI,d=e.pow,b=e.sin,g=e.sqrt,a=e.abs,c=1.70158;Ext.define("Ext.fx.Easing",{singleton:true,linear:Ext.identityFn,ease:function(m){var j=0.07813-m/2,o=-0.25,p=g(0.0066+j*j),u=p-j,l=d(a(u),1/3)*(u<0?-1:1),s=-p-j,k=d(a(s),1/3)*(s<0?-1:1),w=l+k+0.25;return d(1-w,2)*3*w*0.1+(1-w)*3*w*w+w*w*w},easeIn:function(j){return d(j,1.7)},easeOut:function(j){return d(j,0.48)},easeInOut:function(u){var m=0.48-u/1.04,l=g(0.1734+m*m),j=l-m,s=d(a(j),1/3)*(j<0?-1:1),p=-l-m,o=d(a(p),1/3)*(p<0?-1:1),k=s+o+0.5;return(1-k)*3*k*k+k*k*k},backIn:function(j){return j*j*((c+1)*j-c)},backOut:function(j){j=j-1;return j*j*((c+1)*j+c)+1},elasticIn:function(l){if(l===0||l===1){return l}var k=0.3,j=k/4;return d(2,-10*l)*b((l-j)*2*h/k)+1},elasticOut:function(j){return 1-Ext.fx.Easing.elasticIn(1-j)},bounceIn:function(j){return 1-Ext.fx.Easing.bounceOut(1-j)},bounceOut:function(o){var k=7.5625,m=2.75,j;if(o<1/m){j=k*o*o}else{if(o<2/m){o-=1.5/m;j=k*o*o+0.75}else{if(o<2.5/m){o-=2.25/m;j=k*o*o+0.9375}else{o-=2.625/m;j=k*o*o+0.984375}}}return j}},function(){var k=Ext.fx.Easing.self,j=k.prototype;k.implement({"back-in":j.backIn,"back-out":j.backOut,"ease-in":j.easeIn,"ease-out":j.easeOut,"elastic-in":j.elasticIn,"elastic-out":j.elasticOut,"bounce-in":j.bounceIn,"bounce-out":j.bounceOut,"ease-in-out":j.easeInOut})})});Ext.define("Ext.draw.Color",{colorToHexRe:/(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/,rgbRe:/\s*rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/,hexRe:/\s*#([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)\s*/,lightnessFactor:0.2,constructor:function(d,c,a){var b=this,e=Ext.Number.constrain;b.r=e(d,0,255);b.g=e(c,0,255);b.b=e(a,0,255)},getRed:function(){return this.r},getGreen:function(){return this.g},getBlue:function(){return this.b},getRGB:function(){var a=this;return[a.r,a.g,a.b]},getHSL:function(){var k=this,a=k.r/255,j=k.g/255,m=k.b/255,n=Math.max(a,j,m),d=Math.min(a,j,m),o=n-d,e,p=0,c=0.5*(n+d);if(d!=n){p=c<0.5?o/(n+d):o/(2-n-d);if(a==n){e=60*(j-m)/o}else{if(j==n){e=120+60*(m-a)/o}else{e=240+60*(a-j)/o}}if(e<0){e+=360}if(e>=360){e-=360}}return[e,p,c]},getLighter:function(b){var a=this.getHSL();b=b||this.lightnessFactor;a[2]=Ext.Number.constrain(a[2]+b,0,1);return this.fromHSL(a[0],a[1],a[2])},getDarker:function(a){a=a||this.lightnessFactor;return this.getLighter(-a)},toString:function(){var h=this,c=Math.round,e=c(h.r).toString(16),d=c(h.g).toString(16),a=c(h.b).toString(16);e=e.length==1?"0"+e:e;d=d.length==1?"0"+d:d;a=a.length==1?"0"+a:a;return["#",e,d,a].join("")},toHex:function(b){if(Ext.isArray(b)){b=b[0]}if(!Ext.isString(b)){return""}if(b.substr(0,1)==="#"){return b}var e=this.colorToHexRe.exec(b),g,d,a,c;if(Ext.isArray(e)){g=parseInt(e[2],10);d=parseInt(e[3],10);a=parseInt(e[4],10);c=a|d<<8|g<<16;return e[1]+"#"+("000000"+c.toString(16)).slice(-6)}else{return b}},fromString:function(j){var c,e,d,a,h=parseInt;if((j.length==4||j.length==7)&&j.substr(0,1)==="#"){c=j.match(this.hexRe);if(c){e=h(c[1],16)>>0;d=h(c[2],16)>>0;a=h(c[3],16)>>0;if(j.length==4){e+=e*16;d+=d*16;a+=a*16}}}else{c=j.match(this.rgbRe);if(c){e=c[1];d=c[2];a=c[3]}}return typeof e=="undefined"?undefined:new Ext.draw.Color(e,d,a)},getGrayscale:function(){return this.r*0.3+this.g*0.59+this.b*0.11},fromHSL:function(g,o,d){var a,b,c,e,k=[],n=Math.abs,j=Math.floor;if(o==0||g==null){k=[d,d,d]}else{g/=60;a=o*(1-n(2*d-1));b=a*(1-n(g-2*j(g/2)-1));c=d-a/2;switch(j(g)){case 0:k=[a,b,0];break;case 1:k=[b,a,0];break;case 2:k=[0,a,b];break;case 3:k=[0,b,a];break;case 4:k=[b,0,a];break;case 5:k=[a,0,b];break}k=[k[0]+c,k[1]+c,k[2]+c]}return new Ext.draw.Color(k[0]*255,k[1]*255,k[2]*255)}},function(){var a=this.prototype;this.addStatics({fromHSL:function(){return a.fromHSL.apply(a,arguments)},fromString:function(){return a.fromString.apply(a,arguments)},toHex:function(){return a.toHex.apply(a,arguments)}})});Ext.define("Ext.draw.Draw",{singleton:true,pathToStringRE:/,?([achlmqrstvxz]),?/gi,pathCommandRE:/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,pathValuesRE:/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,stopsRE:/^(\d+%?)$/,radian:Math.PI/180,availableAnimAttrs:{along:"along",blur:null,"clip-rect":"csv",cx:null,cy:null,fill:"color","fill-opacity":null,"font-size":null,height:null,opacity:null,path:"path",r:null,rotation:"csv",rx:null,ry:null,scale:"csv",stroke:"color","stroke-opacity":null,"stroke-width":null,translation:"csv",width:null,x:null,y:null},is:function(b,a){a=String(a).toLowerCase();return a=="object"&&b===Object(b)||a=="undefined"&&typeof b==a||a=="null"&&b===null||a=="array"&&Array.isArray&&Array.isArray(b)||Object.prototype.toString.call(b).toLowerCase().slice(8,-1)==a},ellipsePath:function(b){var a=b.attr;return Ext.String.format("M{0},{1}A{2},{3},0,1,1,{0},{4}A{2},{3},0,1,1,{0},{1}z",a.x,a.y-a.ry,a.rx,a.ry,a.y+a.ry)},rectPath:function(b){var a=b.attr;if(a.radius){return Ext.String.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z",a.x+a.radius,a.y,a.width-a.radius*2,a.radius,-a.radius,a.height-a.radius*2,a.radius*2-a.width,a.radius*2-a.height)}else{return Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z",a.x,a.y,a.width+a.x,a.height+a.y)}},path2string:function(){return this.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},pathToString:function(a){return a.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},parsePathString:function(a){if(!a){return null}var d={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},c=[],b=this;if(b.is(a,"array")&&b.is(a[0],"array")){c=b.pathClone(a)}if(!c.length){String(a).replace(b.pathCommandRE,function(g,e,k){var j=[],h=e.toLowerCase();k.replace(b.pathValuesRE,function(m,l){l&&j.push(+l)});if(h=="m"&&j.length>2){c.push([e].concat(Ext.Array.splice(j,0,2)));h="l";e=e=="m"?"l":"L"}while(j.length>=d[h]){c.push([e].concat(Ext.Array.splice(j,0,d[h])));if(!d[h]){break}}})}c.toString=b.path2string;return c},mapPath:function(l,g){if(!g){return l}var h,e,c,k,a,d,b;l=this.path2curve(l);for(c=0,k=l.length;c<k;c++){b=l[c];for(a=1,d=b.length;a<d-1;a+=2){h=g.x(b[a],b[a+1]);e=g.y(b[a],b[a+1]);b[a]=h;b[a+1]=e}}return l},pathClone:function(g){var c=[],a,e,b,d;if(!this.is(g,"array")||!this.is(g&&g[0],"array")){g=this.parsePathString(g)}for(b=0,d=g.length;b<d;b++){c[b]=[];for(a=0,e=g[b].length;a<e;a++){c[b][a]=g[b][a]}}c.toString=this.path2string;return c},pathToAbsolute:function(c){if(!this.is(c,"array")||!this.is(c&&c[0],"array")){c=this.parsePathString(c)}var k=[],m=0,l=0,o=0,n=0,g=0,h=c.length,b,d,e,a;if(h&&c[0][0]=="M"){m=+c[0][1];l=+c[0][2];o=m;n=l;g++;k[0]=["M",m,l]}for(;g<h;g++){b=k[g]=[];d=c[g];if(d[0]!=d[0].toUpperCase()){b[0]=d[0].toUpperCase();switch(b[0]){case"A":b[1]=d[1];b[2]=d[2];b[3]=d[3];b[4]=d[4];b[5]=d[5];b[6]=+(d[6]+m);b[7]=+(d[7]+l);break;case"V":b[1]=+d[1]+l;break;case"H":b[1]=+d[1]+m;break;case"M":o=+d[1]+m;n=+d[2]+l;default:e=1;a=d.length;for(;e<a;e++){b[e]=+d[e]+(e%2?m:l)}}}else{e=0;a=d.length;for(;e<a;e++){k[g][e]=d[e]}}switch(b[0]){case"Z":m=o;l=n;break;case"H":m=b[1];break;case"V":l=b[1];break;case"M":d=k[g];a=d.length;o=d[a-2];n=d[a-1];default:d=k[g];a=d.length;m=d[a-2];l=d[a-1]}}k.toString=this.path2string;return k},pathToRelative:function(d){if(!this.is(d,"array")||!this.is(d&&d[0],"array")){d=this.parsePathString(d)}var n=[],p=0,o=0,t=0,s=0,c=0,a,q,h,g,e,m,u,l,b;if(d[0][0]=="M"){p=d[0][1];o=d[0][2];t=p;s=o;c++;n.push(["M",p,o])}for(h=c,u=d.length;h<u;h++){a=n[h]=[];q=d[h];if(q[0]!=q[0].toLowerCase()){a[0]=q[0].toLowerCase();switch(a[0]){case"a":a[1]=q[1];a[2]=q[2];a[3]=q[3];a[4]=q[4];a[5]=q[5];a[6]=+(q[6]-p).toFixed(3);a[7]=+(q[7]-o).toFixed(3);break;case"v":a[1]=+(q[1]-o).toFixed(3);break;case"m":t=q[1];s=q[2];default:for(g=1,l=q.length;g<l;g++){a[g]=+(q[g]-(g%2?p:o)).toFixed(3)}}}else{a=n[h]=[];if(q[0]=="m"){t=q[1]+p;s=q[2]+o}for(e=0,b=q.length;e<b;e++){n[h][e]=q[e]}}m=n[h].length;switch(n[h][0]){case"z":p=t;o=s;break;case"h":p+=+n[h][m-1];break;case"v":o+=+n[h][m-1];break;default:p+=+n[h][m-2];o+=+n[h][m-1]}}n.toString=this.path2string;return n},path2curve:function(k){var d=this,h=d.pathToAbsolute(k),c=h.length,j={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b,a,g,e;for(b=0;b<c;b++){h[b]=d.command2curve(h[b],j);if(h[b].length>7){h[b].shift();e=h[b];while(e.length){Ext.Array.splice(h,b++,0,["C"].concat(Ext.Array.splice(e,0,6)))}Ext.Array.erase(h,b,1);c=h.length;b--}a=h[b];g=a.length;j.x=a[g-2];j.y=a[g-1];j.bx=parseFloat(a[g-4])||j.x;j.by=parseFloat(a[g-3])||j.y}return h},interpolatePaths:function(s,l){var j=this,d=j.pathToAbsolute(s),m=j.pathToAbsolute(l),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(p,t){if(p[t].length>7){p[t].shift();var u=p[t];while(u.length){Ext.Array.splice(p,t++,0,["C"].concat(Ext.Array.splice(u,0,6)))}Ext.Array.erase(p,t,1);o=Math.max(d.length,m.length||0)}},c=function(x,w,t,p,u){if(x&&w&&x[u][0]=="M"&&w[u][0]!="M"){Ext.Array.splice(w,u,0,["M",p.x,p.y]);t.bx=0;t.by=0;t.x=x[u][1];t.y=x[u][2];o=Math.max(d.length,m.length||0)}},h,o,g,q,e,k;for(h=0,o=Math.max(d.length,m.length||0);h<o;h++){d[h]=j.command2curve(d[h],n);b(d,h);m[h]=j.command2curve(m[h],a);b(m,h);c(d,m,n,a,h);c(m,d,a,n,h);g=d[h];q=m[h];e=g.length;k=q.length;n.x=g[e-2];n.y=g[e-1];n.bx=parseFloat(g[e-4])||n.x;n.by=parseFloat(g[e-3])||n.y;a.bx=parseFloat(q[k-4])||a.x;a.by=parseFloat(q[k-3])||a.y;a.x=q[k-2];a.y=q[k-1]}return[d,m]},command2curve:function(c,b){var a=this;if(!c){return["C",b.x,b.y,b.x,b.y,b.x,b.y]}if(c[0]!="T"&&c[0]!="Q"){b.qx=b.qy=null}switch(c[0]){case"M":b.X=c[1];b.Y=c[2];break;case"A":c=["C"].concat(a.arc2curve.apply(a,[b.x,b.y].concat(c.slice(1))));break;case"S":c=["C",b.x+(b.x-(b.bx||b.x)),b.y+(b.y-(b.by||b.y))].concat(c.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x));b.qy=b.y+(b.y-(b.qy||b.y));c=["C"].concat(a.quadratic2curve(b.x,b.y,b.qx,b.qy,c[1],c[2]));break;case"Q":b.qx=c[1];b.qy=c[2];c=["C"].concat(a.quadratic2curve(b.x,b.y,c[1],c[2],c[3],c[4]));break;case"L":c=["C"].concat(b.x,b.y,c[1],c[2],c[1],c[2]);break;case"H":c=["C"].concat(b.x,b.y,c[1],b.y,c[1],b.y);break;case"V":c=["C"].concat(b.x,b.y,b.x,c[1],b.x,c[1]);break;case"Z":c=["C"].concat(b.x,b.y,b.X,b.Y,b.X,b.Y);break}return c},quadratic2curve:function(b,d,h,e,a,c){var g=1/3,j=2/3;return[g*b+j*h,g*d+j*e,g*a+j*h,g*c+j*e,a,c]},rotate:function(b,h,a){var d=Math.cos(a),c=Math.sin(a),g=b*d-h*c,e=b*c+h*d;return{x:g,y:e}},arc2curve:function(u,ah,J,H,B,n,g,s,ag,C){var z=this,d=Math.PI,A=z.radian,G=d*120/180,b=A*(+B||0),O=[],L=Math,V=L.cos,a=L.sin,X=L.sqrt,w=L.abs,o=L.asin,K,Q,P,ac,c,T,W,E,D,m,l,q,j,af,e,ae,R,U,S,ad,ab,aa,Y,N,Z,M,F,I,p;if(!C){K=z.rotate(u,ah,-b);u=K.x;ah=K.y;K=z.rotate(s,ag,-b);s=K.x;ag=K.y;Q=(u-s)/2;P=(ah-ag)/2;ac=Q*Q/(J*J)+P*P/(H*H);if(ac>1){ac=X(ac);J=ac*J;H=ac*H}c=J*J;T=H*H;W=(n==g?-1:1)*X(w((c*T-c*P*P-T*Q*Q)/(c*P*P+T*Q*Q)));E=W*J*P/H+(u+s)/2;D=W*-H*Q/J+(ah+ag)/2;m=o(((ah-D)/H).toFixed(7));l=o(((ag-D)/H).toFixed(7));m=u<E?d-m:m;l=s<E?d-l:l;if(m<0){m=d*2+m}if(l<0){l=d*2+l}if(g&&m>l){m=m-d*2}if(!g&&l>m){l=l-d*2}}else{m=C[0];l=C[1];E=C[2];D=C[3]}q=l-m;if(w(q)>G){F=l;I=s;p=ag;l=m+G*(g&&l>m?1:-1);s=E+J*V(l);ag=D+H*a(l);O=z.arc2curve(s,ag,J,H,B,0,g,I,p,[l,F,E,D])}q=l-m;j=V(m);af=a(m);e=V(l);ae=a(l);R=L.tan(q/4);U=4/3*J*R;S=4/3*H*R;ad=[u,ah];ab=[u+U*af,ah-S*j];aa=[s+U*ae,ag-S*e];Y=[s,ag];ab[0]=2*ad[0]-ab[0];ab[1]=2*ad[1]-ab[1];if(C){return[ab,aa,Y].concat(O)}else{O=[ab,aa,Y].concat(O).join().split(",");N=[];M=O.length;for(Z=0;Z<M;Z++){N[Z]=Z%2?z.rotate(O[Z-1],O[Z],b).y:z.rotate(O[Z],O[Z+1],b).x}return N}},rotateAndTranslatePath:function(k){var c=k.rotation.degrees,d=k.rotation.x,b=k.rotation.y,o=k.translation.x,l=k.translation.y,n,g,a,m,e,h=[];if(!c&&!o&&!l){return this.pathToAbsolute(k.attr.path)}o=o||0;l=l||0;n=this.pathToAbsolute(k.attr.path);for(g=n.length;g--;){a=h[g]=n[g].slice();if(a[0]=="A"){m=this.rotatePoint(a[6],a[7],c,d,b);a[6]=m.x+o;a[7]=m.y+l}else{e=1;while(a[e+1]!=null){m=this.rotatePoint(a[e],a[e+1],c,d,b);a[e]=m.x+o;a[e+1]=m.y+l;e+=2}}}return h},rotatePoint:function(b,h,e,a,g){if(!e){return{x:b,y:h}}a=a||0;g=g||0;b=b-a;h=h-g;e=e*this.radian;var d=Math.cos(e),c=Math.sin(e);return{x:b*d-h*c+a,y:b*c+h*d+g}},pathDimensions:function(o){if(!o||!(o+"")){return{x:0,y:0,width:0,height:0}}o=this.path2curve(o);var m=0,l=0,e=[],b=[],h=0,k=o.length,c,a,n,g,d,j;for(;h<k;h++){c=o[h];if(c[0]=="M"){m=c[1];l=c[2];e.push(m);b.push(l)}else{j=this.curveDim(m,l,c[1],c[2],c[3],c[4],c[5],c[6]);e=e.concat(j.min.x,j.max.x);b=b.concat(j.min.y,j.max.y);m=c[5];l=c[6]}}a=Math.min.apply(0,e);n=Math.min.apply(0,b);g=Math.max.apply(0,e);d=Math.max.apply(0,b);return{x:Math.round(a),y:Math.round(n),path:o,width:Math.round(g-a),height:Math.round(d-n)}},intersectInside:function(b,c,a){return(a[0]-c[0])*(b[1]-c[1])>(a[1]-c[1])*(b[0]-c[0])},intersectIntersection:function(o,n,g,d){var c=[],b=g[0]-d[0],a=g[1]-d[1],l=o[0]-n[0],j=o[1]-n[1],m=g[0]*d[1]-g[1]*d[0],k=o[0]*n[1]-o[1]*n[0],h=1/(b*j-a*l);c[0]=(m*l-k*b)*h;c[1]=(m*j-k*a)*h;return c},intersect:function(o,c){var n=this,k=0,m=c.length,h=c[m-1],p=o,g,q,l,a,b,d;for(;k<m;++k){g=c[k];b=p;p=[];q=b[b.length-1];d=0;a=b.length;for(;d<a;d++){l=b[d];if(n.intersectInside(l,h,g)){if(!n.intersectInside(q,h,g)){p.push(n.intersectIntersection(q,l,h,g))}p.push(l)}else{if(n.intersectInside(q,h,g)){p.push(n.intersectIntersection(q,l,h,g))}}q=l}h=g}return p},bezier:function(h,g,n,m,e){if(e===0){return h}else{if(e===1){return m}}var k=1-e,j=k*k*k,l=e/k;return j*(h+l*(3*g+l*(3*n+m*l)))},bezierDim:function(t,q,n,m){var w=[],g,j,p,h,u,e,x,k,o,l;if(t+3*n==m+3*q){g=t-q;g/=2*(t-q-q+n);if(g<1&&g>0){w.push(g)}}else{j=t-3*q+3*n-m;p=2*(t-q-q+n);h=t-q;u=p*p-4*j*h;e=j+j;if(u===0){g=p/e;if(g<1&&g>0){w.push(g)}}else{if(u>0){x=Math.sqrt(u);g=(x+p)/e;if(g<1&&g>0){w.push(g)}g=(p-x)/e;if(g<1&&g>0){w.push(g)}}}}k=Math.min(t,m);o=Math.max(t,m);for(l=0;l<w.length;l++){k=Math.min(k,this.bezier(t,q,n,m,w[l]));o=Math.max(o,this.bezier(t,q,n,m,w[l]))}return[k,o]},curveDim:function(b,a,d,c,l,k,h,e){var j=this.bezierDim(b,d,l,h),g=this.bezierDim(a,c,k,e);return{min:{x:j[0],y:g[0]},max:{x:j[1],y:g[1]}}},getAnchors:function(e,d,l,k,y,x,s){s=s||4;var j=Math,q=j.PI,t=q/2,n=j.abs,a=j.sin,b=j.cos,g=j.atan,w,u,h,m,p,o,A,z,c;w=(l-e)/s;u=(y-l)/s;if(k>=d&&k>=x||k<=d&&k<=x){h=m=t}else{h=g((l-e)/n(k-d));if(d<k){h=q-h}m=g((y-l)/n(k-x));if(x<k){m=q-m}}c=t-(h+m)%(q*2)/2;if(c>t){c-=q}h+=c;m+=c;p=l-w*a(h);o=k+w*b(h);A=l+u*a(m);z=k+u*b(m);if(k>d&&o<d||k<d&&o>d){p+=n(d-o)*(p-l)/(o-k);o=d}if(k>x&&z<x||k<x&&z>x){A-=n(x-z)*(A-l)/(z-k);z=x}return{x1:p,y1:o,x2:A,y2:z}},smooth:function(a,p){var o=this.path2curve(a),c=[o[0]],g=o[0][1],e=o[0][2],q,t,u=1,h=o.length,d=1,l=g,k=e,A,z,w,m,s,n,b;for(;u<h;u++){A=o[u];z=A.length;w=o[u-1];m=w.length;s=o[u+1];n=s&&s.length;if(A[0]=="M"){l=A[1];k=A[2];q=u+1;while(o[q][0]!="C"){q++}c.push(["M",l,k]);d=c.length;g=l;e=k;continue}if(A[z-2]==l&&A[z-1]==k&&(!s||s[0]=="M")){b=c[d].length;t=this.getAnchors(w[m-2],w[m-1],l,k,c[d][b-2],c[d][b-1],p);c[d][1]=t.x2;c[d][2]=t.y2}else{if(!s||s[0]=="M"){t={x1:A[z-2],y1:A[z-1]}}else{t=this.getAnchors(w[m-2],w[m-1],A[z-2],A[z-1],s[n-2],s[n-1],p)}}c.push(["C",g,e,t.x1,t.y1,A[z-2],A[z-1]]);g=t.x2;e=t.y2}return c},findDotAtSegment:function(b,a,d,c,k,j,h,g,l){var e=1-l;return{x:Math.pow(e,3)*b+Math.pow(e,2)*3*l*d+e*3*l*l*k+Math.pow(l,3)*h,y:Math.pow(e,3)*a+Math.pow(e,2)*3*l*c+e*3*l*l*j+Math.pow(l,3)*g}},snapEnds:function(o,c,k,w){if(Ext.isDate(o)){return this.snapEndsByDate(o,c,k)}var e=(c-o)/k,b=Math.floor(Math.log(e)/Math.LN10)+1,n=Math.pow(10,b),d,q,s=Math.round(e%n*Math.pow(10,2-b)),t=[[0,15],[10,1],[20,4],[25,2],[50,9],[100,15]],a=0,l,j,p,h,u=1000000000,g=t.length;q=Math.floor(o/n)*n;if(o==q&&q>0){q=Math.floor((o-n/10)/n)*n}if(w){for(p=0;p<g;p++){l=t[p][0];j=l-s<0?1000000:(l-s)/t[p][1];if(j<u){h=l;u=j}}e=Math.floor(e*Math.pow(10,-b))*Math.pow(10,b)+h*Math.pow(10,b-2);if(o<0&&c>=0){d=0;while(d>o){d-=e;a++}o=+d.toFixed(10);d=0;while(d<c){d+=e;a++}c=+d.toFixed(10)}else{d=o=q;while(d<c){d+=e;a++}}c=+d.toFixed(10)}else{o=q;a=k}return{from:o,to:c,power:b,step:e,steps:a}},snapEndsByDate:function(l,m,b,n){var e=false,h=[[Ext.Date.MILLI,[1,2,5,10,20,50,100,200,250,500]],[Ext.Date.SECOND,[1,2,5,10,15,30]],[Ext.Date.MINUTE,[1,2,5,10,15,30]],[Ext.Date.HOUR,[1,2,3,4,6,12]],[Ext.Date.DAY,[1,2,7,14]],[Ext.Date.MONTH,[1,2,3,6]]],g=h.length,k=false,c,d,a,o;for(o=0;o<g;o++){c=h[o];if(!k){for(d=0;d<c[1].length;d++){if(m<Ext.Date.add(l,c[0],c[1][d]*b)){e=[c[0],c[1][d]];k=true;break}}}}if(!e){a=this.snapEnds(l.getFullYear(),m.getFullYear()+1,b,n);e=[Date.YEAR,Math.round(a.step)]}return this.snapEndsByDateAndStep(l,m,e,n)},snapEndsByDateAndStep:function(m,n,a,p){var o=[m.getFullYear(),m.getMonth(),m.getDate(),m.getHours(),m.getMinutes(),m.getSeconds(),m.getMilliseconds()],l,c,q,b,j,e,k,d,h=a[0],g=a[1];if(p){c=m}else{switch(h){case Ext.Date.MILLI:c=new Date(o[0],o[1],o[2],o[3],o[4],o[5],Math.floor(o[6]/g)*g);break;case Ext.Date.SECOND:c=new Date(o[0],o[1],o[2],o[3],o[4],Math.floor(o[5]/g)*g,0);break;case Ext.Date.MINUTE:c=new Date(o[0],o[1],o[2],o[3],Math.floor(o[4]/g)*g,0,0);break;case Ext.Date.HOUR:c=new Date(o[0],o[1],o[2],Math.floor(o[3]/g)*g,0,0,0);break;case Ext.Date.DAY:c=new Date(o[0],o[1],Math.floor((o[2]-1)/g)*g+1,0,0,0,0);break;case Ext.Date.MONTH:c=new Date(o[0],Math.floor(o[1]/g)*g,1,0,0,0,0);break;default:c=new Date(Math.floor(o[0]/g)*g,0,1,0,0,0,0);break}}d=h===Ext.Date.MONTH&&(g==1/2||g==1/3||g==1/4);l=d?[]:0;q=new Date(c);while(q<n){if(d){b=new Date(q);j=b.getFullYear();e=b.getMonth();k=b.getDate();switch(g){case 1/2:if(k>=15){k=1;if(++e>11){j++}}else{k=15}break;case 1/3:if(k>=20){k=1;if(++e>11){j++}}else{if(k>=10){k=20}else{k=10}}break;case 1/4:if(k>=22){k=1;if(++e>11){j++}}else{if(k>=15){k=22}else{if(k>=8){k=15}else{k=8}}}break}q.setYear(j);q.setMonth(e);q.setDate(k);l.push(new Date(q))}else{q=Ext.Date.add(q,h,g);l++}}if(p){q=n}if(d){return{from:+c,to:+q,steps:l}}else{return{from:+c,to:+q,step:(q-c)/l,steps:l}}},sorter:function(d,c){return d.offset-c.offset},rad:function(a){return a%360*Math.PI/180},degrees:function(a){return a*180/Math.PI%360},withinBox:function(a,c,b){b=b||{};return a>=b.x&&a<=b.x+b.width&&c>=b.y&&c<=b.y+b.height},parseGradient:function(l){var e=this,g=l.type||"linear",c=l.angle||0,j=e.radian,m=l.stops,a=[],k,b,h,d;if(g=="linear"){b=[0,0,Math.cos(c*j),Math.sin(c*j)];h=1/(Math.max(Math.abs(b[2]),Math.abs(b[3]))||1);b[2]*=h;b[3]*=h;if(b[2]<0){b[0]=-b[2];b[2]=0}if(b[3]<0){b[1]=-b[3];b[3]=0}}for(k in m){if(m.hasOwnProperty(k)&&e.stopsRE.test(k)){d={offset:parseInt(k,10),color:Ext.draw.Color.toHex(m[k].color)||"#ffffff",opacity:m[k].opacity||1};a.push(d)}}Ext.Array.sort(a,e.sorter);if(g=="linear"){return{id:l.id,type:g,vector:b,stops:a}}else{return{id:l.id,type:g,centerX:l.centerX,centerY:l.centerY,focalX:l.focalX,focalY:l.focalY,radius:l.radius,vector:b,stops:a}}}});Ext.define("Ext.fx.PropertyHandler",{statics:{defaultHandler:{pixelDefaultsRE:/width|height|top$|bottom$|left$|right$/i,unitRE:/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/,scrollRE:/^scroll/i,computeDelta:function(k,c,a,g,j){a=typeof a=="number"?a:1;var h=this.unitRE,d=h.exec(k),b,e;if(d){k=d[1];e=d[2];if(!this.scrollRE.test(j)&&!e&&this.pixelDefaultsRE.test(j)){e="px"}}k=+k||0;d=h.exec(c);if(d){c=d[1];e=d[2]||e}c=+c||0;b=g!=null?g:k;return{from:k,delta:(c-b)*a,units:e}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e<m;e++){if(n){h=n[e][1].from}if(Ext.isArray(o[e][1])&&Ext.isArray(b)){l=[];c=0;g=o[e][1].length;for(;c<g;c++){l.push(this.computeDelta(o[e][1][c],b[c],a,h,k))}d.push([o[e][0],l])}else{d.push([o[e][0],this.computeDelta(o[e][1],b,a,h,k)])}}return d},set:function(l,g){var h=l.length,c=[],d,a,k,e,b;for(d=0;d<h;d++){a=l[d][1];if(Ext.isArray(a)){k=[];b=0;e=a.length;for(;b<e;b++){k.push(a[b].from+a[b].delta*g+(a[b].units||0))}c.push([l[d][0],k])}else{c.push([l[d][0],a.from+a.delta*g+(a.units||0)])}}return c}},stringHandler:{computeDelta:function(e,b,d,c,a){return{from:e,delta:b}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e<m;e++){d.push([o[e][0],this.computeDelta(o[e][1],b,a,h,k)])}return d},set:function(l,g){var h=l.length,c=[],d,a,k,e,b;for(d=0;d<h;d++){a=l[d][1];c.push([l[d][0],a.delta])}return c}},color:{rgbRE:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,hexRE:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,hex3RE:/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,parseColor:function(e,a){a=typeof a=="number"?a:1;var g=false,c=[this.hexRE,this.rgbRE,this.hex3RE],d=c.length,j,b,k,h;for(h=0;h<d;h++){k=c[h];b=h%2===0?16:10;j=k.exec(e);if(j&&j.length===4){if(h===2){j[1]+=j[1];j[2]+=j[2];j[3]+=j[3]}g={red:parseInt(j[1],b),green:parseInt(j[2],b),blue:parseInt(j[3],b)};break}}return g||e},computeDelta:function(h,a,e,c){h=this.parseColor(h);a=this.parseColor(a,e);var g=c?c:h,b=typeof g,d=typeof a;if(b=="string"||b=="undefined"||d=="string"||d=="undefined"){return a||g}return{from:h,delta:{red:Math.round((a.red-g.red)*e),green:Math.round((a.green-g.green)*e),blue:Math.round((a.blue-g.blue)*e)}}},get:function(j,a,g,d){var h=j.length,c=[],e,b;for(e=0;e<h;e++){if(d){b=d[e][1].from}c.push([j[e][0],this.computeDelta(j[e][1],a,g,b)])}return c},set:function(k,e){var g=k.length,c=[],d,b,a,h,j;for(d=0;d<g;d++){b=k[d][1];if(b){h=b.from;j=b.delta;b=typeof b=="object"&&"red" in b?"rgb("+b.red+", "+b.green+", "+b.blue+")":b;b=typeof b=="object"&&b.length?b[0]:b;if(typeof b=="undefined"){return[]}a=typeof b=="string"?b:"rgb("+[(h.red+Math.round(j.red*e))%256,(h.green+Math.round(j.green*e))%256,(h.blue+Math.round(j.blue*e))%256].join(",")+")";c.push([k[d][0],a])}}return c}},object:{interpolate:function(d,b){b=typeof b=="number"?b:1;var a={},c;for(c in d){a[c]=parseFloat(d[c])*b}return a},computeDelta:function(h,a,c,b){h=this.interpolate(h);a=this.interpolate(a,c);var g=b?b:h,e={},d;for(d in a){e[d]=a[d]-g[d]}return{from:h,delta:e}},get:function(j,a,g,d){var h=j.length,c=[],e,b;for(e=0;e<h;e++){if(d){b=d[e][1].from}c.push([j[e][0],this.computeDelta(j[e][1],a,g,b)])}return c},set:function(l,g){var h=l.length,c=[],e={},d,j,k,b,a;for(d=0;d<h;d++){b=l[d][1];j=b.from;k=b.delta;for(a in j){e[a]=j[a]+k[a]*g}c.push([l[d][0],e])}return c}},path:{computeDelta:function(e,a,c,b){c=typeof c=="number"?c:1;var d;e=+e||0;a=+a||0;d=b!=null?b:e;return{from:e,delta:(a-d)*c}},forcePath:function(a){if(!Ext.isArray(a)&&!Ext.isArray(a[0])){a=Ext.draw.Draw.parsePathString(a)}return a},get:function(b,l,a,q){var c=this.forcePath(l),n=[],t=b.length,d,h,o,g,p,m,e,u,s;for(o=0;o<t;o++){s=this.forcePath(b[o][1]);g=Ext.draw.Draw.interpolatePaths(s,c);s=g[0];c=g[1];d=s.length;u=[];for(m=0;m<d;m++){g=[s[m][0]];h=s[m].length;for(e=1;e<h;e++){p=q&&q[0][1][m][e].from;g.push(this.computeDelta(s[m][e],c[m][e],a,p))}u.push(g)}n.push([b[o][0],u])}return n},set:function(p,n){var o=p.length,e=[],h,g,d,l,m,c,a,b;for(h=0;h<o;h++){c=p[h][1];l=[];a=c.length;for(g=0;g<a;g++){m=[c[g][0]];b=c[g].length;for(d=1;d<b;d++){m.push(c[g][d].from+c[g][d].delta*n)}l.push(m.join(","))}e.push([p[h][0],l.join(",")])}return e}}}},function(){var b=["outlineColor","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","fill","stroke"],c=b.length,a=0,d;for(;a<c;a++){d=b[a];this[d]=this.color}b=["cursor"];c=b.length;a=0;for(;a<c;a++){d=b[a];this[d]=this.stringHandler}});Ext.define("Ext.fx.Anim",{mixins:{observable:Ext.util.Observable},isAnimation:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",damper:1,bezierRE:/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,reverse:false,running:false,paused:false,iterations:1,alternate:false,currentIteration:0,startTime:0,frameCount:0,constructor:function(a){var b=this,c;a=a||{};if(a.keyframes){return new Ext.fx.Animator(a)}Ext.apply(b,a);if(b.from===undefined){b.from={}}b.propHandlers={};b.config=a;b.target=Ext.fx.Manager.createTarget(b.target);b.easingFn=Ext.fx.Easing[b.easing];b.target.dynamic=b.dynamic;if(!b.easingFn){b.easingFn=String(b.easing).match(b.bezierRE);if(b.easingFn&&b.easingFn.length==5){c=b.easingFn;b.easingFn=Ext.fx.CubicBezier.cubicBezier(+c[1],+c[2],+c[3],+c[4])}}b.id=Ext.id(null,"ext-anim-");b.addEvents("beforeanimate","afteranimate","lastframe");b.mixins.observable.constructor.call(b);Ext.fx.Manager.addAnim(b)},setAttr:function(a,b){return Ext.fx.Manager.items.get(this.id).setAttr(this.target,a,b)},initAttrs:function(){var e=this,h=e.from,j=e.to,g=e.initialFrom||{},c={},a,b,k,d;for(d in j){if(j.hasOwnProperty(d)){a=e.target.getAttr(d,h[d]);b=j[d];if(!Ext.fx.PropertyHandler[d]){if(Ext.isObject(b)){k=e.propHandlers[d]=Ext.fx.PropertyHandler.object}else{k=e.propHandlers[d]=Ext.fx.PropertyHandler.defaultHandler}}else{k=e.propHandlers[d]=Ext.fx.PropertyHandler[d]}c[d]=k.get(a,b,e.damper,g[d],d)}}e.currentAttrs=c},start:function(d){var e=this,c=e.delay,b=e.delayStart,a;if(c){if(!b){e.delayStart=d;return}else{a=d-b;if(a<c){return}else{d=new Date(b.getTime()+c)}}}if(e.fireEvent("beforeanimate",e)!==false){e.startTime=d;if(!e.paused&&!e.currentAttrs){e.initAttrs()}e.running=true;e.frameCount=0}},runAnim:function(m){var j=this,l=j.currentAttrs,d=j.duration,c=j.easingFn,b=j.propHandlers,g={},h,k,e,a;if(m>=d){m=d;a=true}if(j.reverse){m=d-m}for(e in l){if(l.hasOwnProperty(e)){k=l[e];h=a?1:c(m/d);g[e]=b[e].set(k,h)}}j.frameCount++;return g},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b<a){if(c.alternate){c.reverse=!c.reverse}c.startTime=new Date;c.currentIteration=b;c.paused=false}else{c.currentIteration=0;c.end();c.fireEvent("lastframe",c,c.startTime)}},endWasCalled:0,end:function(){if(this.endWasCalled++){return}var a=this;a.startTime=0;a.paused=false;a.running=false;Ext.fx.Manager.removeAnim(a);a.fireEvent("afteranimate",a,a.startTime);Ext.callback(a.callback,a.scope,[a,a.startTime])},isReady:function(){return this.paused===false&&this.running===false&&this.iterations>0},isRunning:function(){return this.paused===false&&this.running===true&&this.isAnimator!==true}});Ext.enableFx=true;Ext.define("Ext.util.Animate",{isAnimate:true,animate:function(a){var b=this;if(Ext.fx.Manager.hasFxBlock(b.id)){return b}Ext.fx.Manager.queueFx(new Ext.fx.Anim(b.anim(a)));return this},anim:function(a){if(!Ext.isObject(a)){return a?{}:false}var b=this;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));return Ext.apply({target:b,paused:true},a)},stopFx:Ext.Function.alias(Ext.util.Animate,"stopAnimation"),stopAnimation:function(){Ext.fx.Manager.stopAnimation(this.id);return this},syncFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:true});return this},sequenceFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:false});return this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,"getActiveAnimation"),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},function(){Ext.applyIf(Ext.Element.prototype,this.prototype);Ext.CompositeElementLite.importElementMethods()});Ext.define("Ext.util.ElementContainer",{childEls:[],constructor:function(){var b=this,a;if(b.hasOwnProperty("childEls")){a=b.childEls;delete b.childEls;b.addChildEls.apply(b,a)}},destroy:function(){var e=this,d=e.getChildEls(),g,a,c,b;for(c=d.length;c--;){a=d[c];if(typeof a!="string"){a=a.name}g=e[a];if(g){e[a]=null;g.remove()}}},addChildEls:function(){var b=this,a=arguments;if(b.hasOwnProperty("childEls")){b.childEls.push.apply(b.childEls,a)}else{b.childEls=b.getChildEls().concat(Array.prototype.slice.call(a))}b.prune(b.childEls,false)},applyChildEls:function(b,a){var e=this,g=e.getChildEls(),j,k,d,c,h;j=(a||e.id)+"-";for(d=g.length;d--;){k=g[d];if(typeof k=="string"){h=b.getById(j+k)}else{if(c=k.select){h=Ext.select(c,true,b.dom)}else{if(c=k.selectNode){h=Ext.get(Ext.DomQuery.selectNode(c,b.dom))}else{h=b.getById(k.id||j+k.itemId)}}k=k.name}e[k]=h}},getChildEls:function(){var b=this,a;if(b.hasOwnProperty("childEls")){return b.childEls}a=b.self;return a.$childEls||b.getClassChildEls(a)},getClassChildEls:function(o){var k=this,p=o.$childEls,m,d,b,j,n,h,a,c,e,g,l;if(!p){g=o.superclass;if(g){g=g.self;c=[g.$childEls||k.getClassChildEls(g)];l=g.prototype.mixins||{}}else{c=[];l={}}e=o.prototype;h=e.mixins;for(a in h){if(h.hasOwnProperty(a)&&!l.hasOwnProperty(a)){n=h[a].self;c.push(n.$childEls||k.getClassChildEls(n))}}c.push(e.hasOwnProperty("childEls")&&e.childEls);for(d=0,b=c.length;d<b;++d){m=c[d];if(m&&m.length){if(!p){p=m}else{if(!j){j=true;p=p.slice(0)}p.push.apply(p,m)}}}o.$childEls=p=p?k.prune(p,!j):[]}return p},prune:function(c,e){var b=c.length,d={},a;while(b--){a=c[b];if(typeof a!="string"){a=a.name}if(!d[a]){d[a]=1}else{if(e){e=false;c=c.slice(0)}Ext.Array.erase(c,b,1)}}return c},removeChildEls:function(g){var e=this,a=e.getChildEls(),d=e.childEls=[],h,b,c;for(b=0,h=a.length;b<h;++b){c=a[b];if(!g(c)){d.push(c)}}}});Ext.define("Ext.util.Renderable",{frameCls:Ext.baseCSSPrefix+"frame",frameIdRegex:/[\-]frame\d+[TMB][LCR]$/,frameElNames:["TL","TC","TR","ML","MC","MR","BL","BC","BR"],frameTpl:["{%this.renderDockedItems(out,values,0);%}",'<tpl if="top">','<tpl if="left"><div id="{fgid}TL" class="{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tl</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}TR" class="{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tr</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}TC" class="{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tc</tpl>{frameElCls}" role="presentation"></div>','<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>',"</tpl>",'<tpl if="left"><div id="{fgid}ML" class="{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-ml</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}MR" class="{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mr</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}MC" class="{frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mc</tpl>{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","</div>",'<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>','<tpl if="bottom">','<tpl if="left"><div id="{fgid}BL" class="{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bl</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}BR" class="{frameCls}-br {baseCls}-br {baseCls}-{ui}-br<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-br</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}BC" class="{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bc</tpl>{frameElCls}" role="presentation"></div>','<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>',"</tpl>","{%this.renderDockedItems(out,values,1);%}"],frameTableTpl:["{%this.renderDockedItems(out,values,0);%}",'<table class="',Ext.baseCSSPrefix,"table-plain",'" cellpadding="0"><tbody>','<tpl if="top">',"<tr>",'<tpl if="left"><td id="{fgid}TL" class="{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tl</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}TC" class="{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tc</tpl>{frameElCls}" role="presentation"></td>','<tpl if="right"><td id="{fgid}TR" class="{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tr</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>","</tpl>","<tr>",'<tpl if="left"><td id="{fgid}ML" class="{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-ml</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}MC" class="{frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mc</tpl>{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","</td>",'<tpl if="right"><td id="{fgid}MR" class="{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mr</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>",'<tpl if="bottom">',"<tr>",'<tpl if="left"><td id="{fgid}BL" class="{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bl</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}BC" class="{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bc</tpl>{frameElCls}" role="presentation"></td>','<tpl if="right"><td id="{fgid}BR" class="{frameCls}-br {baseCls}-br {baseCls}-{ui}-br<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-br</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>","</tpl>","</tbody></table>","{%this.renderDockedItems(out,values,1);%}"],afterRender:function(){var d=this,e={},j=d.protoEl,h=d.el,c,g,a,b;d.finishRenderChildren();if(d.contentEl){g=Ext.baseCSSPrefix;a=g+"hide-";b=Ext.get(d.contentEl);b.removeCls([g+"hidden",a+"display",a+"offsets",a+"nosize"]);d.getContentTarget().appendChild(b.dom)}j.writeTo(e);c=e.removed;if(c){h.removeCls(c)}c=e.cls;if(c.length){h.addCls(c)}c=e.style;if(e.style){h.setStyle(c)}d.protoEl=null;if(!d.ownerCt){d.updateLayout()}},afterFirstLayout:function(b,j){var d=this,h=d.x,e=d.y,c,a,g,k;if(!d.ownerLayout){c=Ext.isDefined(h);a=Ext.isDefined(e)}if(d.floating&&(!c||!a)){if(d.floatParent){g=d.floatParent.getTargetEl().getViewRegion();k=d.el.getAlignToXY(d.floatParent.getTargetEl(),"c-c");g.x=k[0]-g.x;g.y=k[1]-g.y}else{k=d.el.getAlignToXY(d.container,"c-c");g=d.container.translateXY(k[0],k[1])}h=c?h:g.x;e=a?e:g.y;c=a=true}if(c||a){d.setPosition(h,e)}d.onBoxReady(b,j)},applyRenderSelectors:function(){var d=this,b=d.renderSelectors,c=d.el,e=c.dom,a;d.applyChildEls(c);if(b){for(a in b){if(b.hasOwnProperty(a)&&b[a]){d[a]=Ext.get(Ext.DomQuery.selectNode(b[a],e))}}}},beforeRender:function(){var c=this,e=c.getTargetEl(),d=c.getOverflowEl(),b=c.getComponentLayout(),a=c.getOverflowStyle();c.frame=c.frame||c.alwaysFramed;if(!b.initialized){b.initLayout()}if(d){d.setStyle(a);c.overflowStyleSet=true}c.setUI(c.ui);if(c.disabled){c.disable(true)}},doApplyRenderTpl:function(c,a){var d=a.$comp,b;if(!d.rendered){b=d.initRenderTpl();b.applyOut(a.renderData,c)}},doAutoRender:function(){var a=this;if(!a.rendered){if(a.floating){a.render(document.body)}else{a.render(Ext.isBoolean(a.autoRender)?Ext.getBody():a.autoRender)}}},doRenderContent:function(a,c){var b=c.$comp;if(b.html){Ext.DomHelper.generateMarkup(b.html,a);delete b.html}if(b.tpl){if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}if(b.data){b.tpl.applyOut(b.data,a);delete b.data}}},doRenderFramingDockedItems:function(a,c,d){var b=c.$comp;if(!b.rendered&&b.doRenderDockedItems){c.renderData.$skipDockedItems=true;b.doRenderDockedItems.call(this,a,c,d)}},finishRender:function(a){var d=this,b,e,c;if(!d.el||d.$pid){if(d.container){c=d.container.getById(d.id,true)}else{c=Ext.getDom(d.id)}if(!d.el){d.wrapPrimaryEl(c)}else{delete d.$pid;if(!d.el.dom){d.wrapPrimaryEl(d.el)}c.parentNode.insertBefore(d.el.dom,c);Ext.removeNode(c)}}else{if(!d.rendering){b=d.initRenderTpl();if(b){e=d.initRenderData();b.insertFirst(d.getTargetEl(),e)}}}if(!d.container){d.container=Ext.get(d.el.dom.parentNode)}if(d.ctCls){d.container.addCls(d.ctCls)}d.onRender(d.container,a);if(!d.overflowStyleSet){d.getOverflowEl().setStyle(d.getOverflowStyle())}d.el.setVisibilityMode(Ext.Element[d.hideMode.toUpperCase()]);if(d.overCls){d.el.hover(d.addOverCls,d.removeOverCls,d)}if(d.hasListeners.render){d.fireEvent("render",d)}d.afterRender();if(d.hasListeners.afterrender){d.fireEvent("afterrender",d)}d.initEvents();if(d.hidden){d.el.hide()}},finishRenderChildren:function(){var a=this.getComponentLayout();a.finishRender()},getElConfig:function(){var j=this,l=j.autoEl,g=j.getFrameInfo(),b={tag:"div",tpl:g?j.initFramingTpl(g.table):j.initRenderTpl()},a=j.protoEl,c,e,h,m,d,k;j.initStyles(a);if(g){a.setStyle("background-image","none")}a.writeTo(b);a.flush();if(Ext.isString(l)){b.tag=l}else{Ext.apply(b,l)}b.id=j.id;if(b.tpl){if(g){e=j.frameElNames;h=e.length;b.tplData=k=j.getFrameRenderData();k.renderData=j.initRenderData();d=k.fgid;for(c=0;c<h;c++){m=e[c];j.addChildEls({name:"frame"+m,id:d+m})}j.addChildEls({name:"frameBody",id:d+"MC"})}else{b.tplData=j.initRenderData()}}return b},initFramingTpl:function(b){var a=this.getFrameTpl(b);if(a&&!a.applyRenderTpl){this.setupFramingTpl(a)}return a},setupFramingTpl:function(a){a.applyRenderTpl=this.doApplyRenderTpl;a.renderDockedItems=this.doRenderFramingDockedItems},getInsertPosition:function(a){if(a!==undefined){if(Ext.isNumber(a)){a=this.container.dom.childNodes[a]}else{a=Ext.getDom(a)}}return a},getRenderTree:function(){var a=this;if(!a.hasListeners.beforerender||a.fireEvent("beforerender",a)!==false){a.beforeRender();a.rendering=true;if(a.el){return{tag:"div",id:a.$pid=Ext.id()}}return a.getElConfig()}return null},initContainer:function(a){var b=this;if(!a&&b.el){a=b.el.dom.parentNode;b.allowDomMove=false}b.container=a.dom?a:Ext.get(a);return b.container},initRenderData:function(){var a=this;return Ext.apply({$comp:a,id:a.id,ui:a.ui,uiCls:a.uiCls,baseCls:a.baseCls,componentCls:a.componentCls,frame:a.frame,childElCls:""},a.renderData)},initRenderTpl:function(){var a=this.getTpl("renderTpl");if(a&&!a.renderContent){this.setupRenderTpl(a)}return a},onRender:function(d,e){var h=this,k=h.x,j=h.y,c=null,a,l,b=h.el,g;h.applyRenderSelectors();h.rendering=null;h.rendered=true;if(k!=null){c={x:k}}if(j!=null){(c=c||{}).y=j}if(!h.getFrameInfo()&&Ext.isBorderBox){a=h.width;l=h.height;if(typeof a==="number"){c=c||{};c.width=a}if(typeof l==="number"){c=c||{};c.height=l}}h.lastBox=b.lastBox=c},render:function(c,b){var e=this,d=e.el&&(e.el=Ext.get(e.el)),h,a,g;Ext.suspendLayouts();c=e.initContainer(c);g=e.getInsertPosition(b);if(!d){a=e.getRenderTree();if(e.ownerLayout&&e.ownerLayout.transformItemRenderTree){a=e.ownerLayout.transformItemRenderTree(a)}if(a){if(g){d=Ext.DomHelper.insertBefore(g,a)}else{d=Ext.DomHelper.append(c,a)}e.wrapPrimaryEl(d)}}else{if(!e.hasListeners.beforerender||e.fireEvent("beforerender",e)!==false){e.beforeRender();e.initStyles(d);if(e.allowDomMove!==false){if(g){c.dom.insertBefore(d.dom,g)}else{c.dom.appendChild(d.dom)}}}else{h=true}}if(d&&!h){e.finishRender(b)}Ext.resumeLayouts(!c.isDetachedBody)},ensureAttachedToBody:function(c){var b=this,a;while(b.ownerCt){b=b.ownerCt}if(b.container.isDetachedBody){b.container=a=Ext.getBody();a.appendChild(b.el.dom);if(c){b.updateLayout()}if(typeof b.x=="number"||typeof b.y=="number"){b.setPosition(b.x,b.y)}}},setupRenderTpl:function(a){a.renderBody=a.renderContent=this.doRenderContent},wrapPrimaryEl:function(a){this.el=Ext.get(a,true)},initFrame:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return}var h=this,e=h.getFrameInfo(),a,c,d=h.frameElNames,g=d.length,b,j,k;if(e){a=h.getFrameTpl(e.table);j=h.getFrameRenderData();c=j.fgid;a.insertFirst(h.el,j);h.frameBody=h.el.down("."+h.frameCls+"-mc");h.removeChildEls(function(l){return l.id&&h.frameIdRegex.test(l.id)});for(b=0;b<g;b++){k=d[b];h["frame"+k]=h.el.getById(c+k)}}},getFrameRenderData:function(){var c=this,b=c.frameSize,a=(c.frameGenId||0)+1;c.frameGenId=a;return{$comp:c,fgid:c.id+"-frame"+a,ui:c.ui,uiCls:c.uiCls,frameCls:c.frameCls,baseCls:c.baseCls,top:!!b.top,left:!!b.left,right:!!b.right,bottom:!!b.bottom,frameElCls:""}},updateFrame:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return}var e=this,h=e.frameSize&&e.frameSize.table,g=e.frameTL,d=e.frameBL,c=e.frameML,a=e.frameMC,b;e.initFrame();if(a){if(e.frame){b=e.frameMC.dom.className;a.insertAfter(e.frameMC);e.frameMC.remove();e.frameBody=e.frameMC=a;a.dom.className=b;if(h){e.el.query("> table")[1].remove()}else{if(g){g.remove()}if(d){d.remove()}if(c){c.remove()}}}}else{if(e.frame){e.applyRenderSelectors()}}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return false}var A=this,q=A.frameInfoCache,g=A.el||A.protoEl,e=g.dom?g.dom.className:g.classList.join(" "),B=q[e],s=Math.max,p,l,w,o,C,h,m,b,c,n,j,u,x,k,a,d,z,t,y;if(B==null){p=Ext.fly(A.getStyleProxy(e),"frame-style-el");w=p.getStyle("background-image");l=w.indexOf("about:blank#");if(l<0){B=false}else{w=w.substring(l+12).split("-");d=parseInt(w[1],10);z=parseInt(w[2],10);t=parseInt(w[3],10);y=parseInt(w[4],10);b=parseInt(w[5],10);c=parseInt(w[6],10);n=parseInt(w[7],10);j=parseInt(w[8],10);u=parseInt(w[9],10);x=parseInt(w[10],10);k=parseInt(w[11],10);a=parseInt(w[12],10);o=s(b,s(d,z));C=s(c,s(z,t));h=s(n,s(y,t));m=s(j,s(d,y));B={table:w[0].charAt(0)==="t",vertical:w[0].charAt(1)==="v",top:o,right:C,bottom:h,left:m,width:m+C,height:o+h,maxWidth:s(o,C,h,m),border:{top:b,right:c,bottom:n,left:j,width:j+c,height:b+n},padding:{top:u,right:x,bottom:k,left:a,width:a+x,height:u+k},radius:{tl:d,tr:z,br:t,bl:y}}}q[e]=B}A.frame=!!B;A.frameSize=B;return B},getStyleProxy:function(b){var a=this.styleProxyEl||(Ext.AbstractComponent.prototype.styleProxyEl=Ext.getBody().createChild({style:{position:"absolute",top:"-10000px"}},null,true));a.className=b;return a},getFrameTpl:function(a){return this.getTpl(a?"frameTableTpl":"frameTpl")},frameInfoCache:{}});Ext.define("Ext.state.Provider",{mixins:{observable:Ext.util.Observable},prefix:"ext-",constructor:function(a){a=a||{};var b=this;Ext.apply(b,a);b.addEvents("statechange");b.state={};b.mixins.observable.constructor.call(b)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){var b=this;delete b.state[a];b.fireEvent("statechange",b,a,null)},set:function(a,c){var b=this;b.state[a]=c;b.fireEvent("statechange",b,a,c)},decodeValue:function(g){var c=this,l=/^(a|n|d|b|s|o|e)\:(.*)$/,b=l.exec(unescape(g)),h,d,a,k,e,j;if(!b||!b[1]){return}d=b[1];g=b[2];switch(d){case"e":return null;case"n":return parseFloat(g);case"d":return new Date(Date.parse(g));case"b":return g=="1";case"a":h=[];if(g!=""){k=g.split("^");e=k.length;for(j=0;j<e;j++){g=k[j];h.push(c.decodeValue(g))}}return h;case"o":h={};if(g!=""){k=g.split("^");e=k.length;for(j=0;j<e;j++){g=k[j];a=g.split("=");h[a[0]]=c.decodeValue(a[1])}}return h;default:return g}},encodeValue:function(e){var g="",d=0,b,a,c;if(e==null){return"e:1"}else{if(typeof e=="number"){b="n:"+e}else{if(typeof e=="boolean"){b="b:"+(e?"1":"0")}else{if(Ext.isDate(e)){b="d:"+e.toGMTString()}else{if(Ext.isArray(e)){for(a=e.length;d<a;d++){g+=this.encodeValue(e[d]);if(d!=a-1){g+="^"}}b="a:"+g}else{if(typeof e=="object"){for(c in e){if(typeof e[c]!="function"&&e[c]!==undefined){g+=c+"="+this.encodeValue(e[c])+"^"}}b="o:"+g.substring(0,g.length-1)}else{b="s:"+e}}}}}}return escape(b)}});Ext.define("Ext.state.Manager",{singleton:true,constructor:function(){this.provider=new Ext.state.Provider},setProvider:function(a){this.provider=a},get:function(b,a){return this.provider.get(b,a)},set:function(a,b){this.provider.set(a,b)},clear:function(a){this.provider.clear(a)},getProvider:function(){return this.provider}});Ext.define("Ext.state.Stateful",{mixins:{observable:Ext.util.Observable},stateful:false,saveDelay:100,constructor:function(a){var b=this;a=a||{};if(a.stateful!==undefined){b.stateful=a.stateful}if(a.saveDelay!==undefined){b.saveDelay=a.saveDelay}b.stateId=b.stateId||a.stateId;if(!b.stateEvents){b.stateEvents=[]}if(a.stateEvents){b.stateEvents.concat(a.stateEvents)}this.addEvents("beforestaterestore","staterestore","beforestatesave","statesave");b.mixins.observable.constructor.call(b);if(b.stateful!==false){b.addStateEvents(b.stateEvents);b.initState()}},addStateEvents:function(c){var e=this,b,d,a;if(e.stateful&&e.getStateId()){if(typeof c=="string"){c=Array.prototype.slice.call(arguments,0)}a=e.stateEventsByName||(e.stateEventsByName={});for(b=c.length;b--;){d=c[b];if(!a[d]){a[d]=1;e.on(d,e.onStateChange,e)}}}},onStateChange:function(){var c=this,a=c.saveDelay,d,b;if(!c.stateful){return}if(a){if(!c.stateTask){d=Ext.state.Stateful;b=d.runner||(d.runner=new Ext.util.TaskRunner);c.stateTask=b.newTask({run:c.saveState,scope:c,interval:a,repeat:1})}c.stateTask.start()}else{c.saveState()}},saveState:function(){var b=this,d=b.stateful&&b.getStateId(),a=b.hasListeners,c;if(d){c=b.getState()||{};if(!a.beforestatesave||b.fireEvent("beforestatesave",b,c)!==false){Ext.state.Manager.set(d,c);if(a.statesave){b.fireEvent("statesave",b,c)}}}},getState:function(){return null},applyState:function(a){if(a){Ext.apply(this,a)}},getStateId:function(){var a=this;return a.stateId||(a.autoGenId?null:a.id)},initState:function(){var b=this,d=b.stateful&&b.getStateId(),a=b.hasListeners,c;if(d){c=Ext.state.Manager.get(d);if(c){c=Ext.apply({},c);if(!a.beforestaterestore||b.fireEvent("beforestaterestore",b,c)!==false){b.applyState(c);if(a.staterestore){b.fireEvent("staterestore",b,c)}}}}},savePropToState:function(g,e,d){var b=this,c=b[g],a=b.initialConfig;if(b.hasOwnProperty(g)){if(!a||a[g]!==c){if(e){e[d||g]=c}return true}}return false},savePropsToState:function(e,c){var b=this,a,d;if(typeof e=="string"){b.savePropToState(e,c)}else{for(a=0,d=e.length;a<d;++a){b.savePropToState(e[a],c)}}return c},destroy:function(){var b=this,a=b.stateTask;if(a){a.destroy();b.stateTask=null}b.clearListeners()}});Ext.define("Ext.AbstractComponent",{mixins:{positionable:Ext.util.Positionable,observable:Ext.util.Observable,animate:Ext.util.Animate,elementCt:Ext.util.ElementContainer,renderable:Ext.util.Renderable,state:Ext.state.Stateful},statics:{AUTO_ID:1000,pendingLayouts:null,layoutSuspendCount:0,cancelLayout:function(a,c){var b=this.runningLayoutContext||this.pendingLayouts;if(b){b.cancelComponent(a,false,c)}},flushLayouts:function(){var b=this,a=b.pendingLayouts;if(a&&a.invalidQueue.length){b.pendingLayouts=null;b.runningLayoutContext=a;Ext.override(a,{runComplete:function(){b.runningLayoutContext=null;var c=this.callParent();if(Ext.globalEvents.hasListeners.afterlayout){Ext.globalEvents.fireEvent("afterlayout")}return c}});a.run()}},resumeLayouts:function(a){if(this.layoutSuspendCount&&!--this.layoutSuspendCount){if(a){this.flushLayouts()}if(Ext.globalEvents.hasListeners.resumelayouts){Ext.globalEvents.fireEvent("resumelayouts")}}},suspendLayouts:function(){++this.layoutSuspendCount},updateLayout:function(b,e){var c=this,a=c.runningLayoutContext,d;if(a){a.queueInvalidate(b)}else{d=c.pendingLayouts||(c.pendingLayouts=new Ext.layout.Context);d.queueInvalidate(b);if(!e&&!c.layoutSuspendCount&&!b.isLayoutSuspended()){c.flushLayouts()}}}},isComponent:true,getAutoId:function(){this.autoGenId=true;return ++Ext.AbstractComponent.AUTO_ID},deferLayouts:false,autoGenId:false,renderTpl:"{%this.renderContent(out,values)%}",frameSize:null,tplWriteMode:"overwrite",baseCls:Ext.baseCSSPrefix+"component",disabledCls:Ext.baseCSSPrefix+"item-disabled",ui:"default",uiCls:[],hidden:false,disabled:false,draggable:false,floating:false,hideMode:"display",autoShow:false,autoRender:false,allowDomMove:true,rendered:false,componentLayoutCounter:0,shrinkWrap:2,weight:0,maskOnDisable:true,_isLayoutRoot:false,contentPaddingProperty:"padding",horizontalPosProp:"left",constructor:function(c){var e=this,d,a,b;if(c){Ext.apply(e,c);b=e.xhooks;if(b){delete e.xhooks;Ext.override(e,b)}}else{c={}}e.initialConfig=c;e.mixins.elementCt.constructor.call(e);e.addEvents("beforeactivate","activate","beforedeactivate","deactivate","added","disable","enable","beforeshow","show","beforehide","hide","removed","beforerender","render","afterrender","boxready","beforedestroy","destroy","resize","move","focus","blur");e.getId();e.setupProtoEl();if(e.cls){e.initialCls=e.cls;e.protoEl.addCls(e.cls)}if(e.style){e.initialStyle=e.style;e.protoEl.setStyle(e.style)}e.renderData=e.renderData||{};e.renderSelectors=e.renderSelectors||{};if(e.plugins){e.plugins=e.constructPlugins()}if(!e.hasListeners){e.hasListeners=new e.HasListeners}e.initComponent();Ext.ComponentManager.register(e);e.mixins.observable.constructor.call(e);e.mixins.state.constructor.call(e,c);this.addStateEvents("resize");if(e.plugins){for(d=0,a=e.plugins.length;d<a;d++){e.plugins[d]=e.initPlugin(e.plugins[d])}}e.loader=e.getLoader();if(e.renderTo){e.render(e.renderTo)}if(e.autoShow&&!e.isContained){e.show()}},initComponent:function(){this.plugins=this.constructPlugins();this.setSize(this.width,this.height)},getState:function(){var b=this,c=null,a=b.getSizeModel();if(a.width.configured){c=b.addPropertyToState(c,"width")}if(a.height.configured){c=b.addPropertyToState(c,"height")}return c},addPropertyToState:function(e,d,c){var b=this,a=arguments.length;if(a==3||b.hasOwnProperty(d)){if(a<3){c=b[d]}if(c!==b.initialConfig[d]){(e||(e={}))[d]=c}}return e},show:Ext.emptyFn,animate:function(c){var x=this,g,m,l,a,d,b,u,q,n,e,s,o,j,p,t,k;c=c||{};d=c.to||{};if(Ext.fx.Manager.hasFxBlock(x.id)){return x}g=Ext.isDefined(d.width);if(g){a=Ext.Number.constrain(d.width,x.minWidth,x.maxWidth)}m=Ext.isDefined(d.height);if(m){l=Ext.Number.constrain(d.height,x.minHeight,x.maxHeight)}if(!c.dynamic&&(g||m)){q=(c.from?c.from.width:undefined)||x.getWidth();n=q;e=(c.from?c.from.height:undefined)||x.getHeight();s=e;o=false;if(m&&l>e){s=l;o=true}if(g&&a>q){n=a;o=true}if(m||g){k=x.el.getStyle("overtflow");if(k!=="hidden"){x.el.setStyle("overflow","hidden")}}if(o){b=!Ext.isNumber(x.width);u=!Ext.isNumber(x.height);x.setSize(n,s);x.el.setSize(q,e);if(b){delete x.width}if(u){delete x.height}}if(g){d.width=a}if(m){d.height=l}}j=x.constrain;p=x.constrainHeader;if(j||p){x.constrain=x.constrainHeader=false;t=c.callback;c.callback=function(){x.constrain=j;x.constrainHeader=p;if(t){t.call(c.scope||x,arguments)}if(k!=="hidden"){x.el.setStyle("overflow",k)}}}return x.mixins.animate.animate.apply(x,arguments)},onHide:function(){if(this.ownerLayout){this.updateLayout({isRoot:false})}},onShow:function(){this.updateLayout({isRoot:false})},constructPlugin:function(b){var a=this;if(typeof b=="string"){b=Ext.PluginManager.create({},b,a)}else{b=Ext.PluginManager.create(b,null,a)}return b},constructPlugins:function(){var e=this,c=e.plugins,b,d,a;if(c){b=[];if(!Ext.isArray(c)){c=[c]}for(d=0,a=c.length;d<a;d++){b[d]=e.constructPlugin(c[d])}}e.pluginsInitialized=true;return b},initPlugin:function(a){a.init(this);return a},addPlugin:function(b){var a=this;b=a.constructPlugin(b);if(a.plugins){a.plugins.push(b)}else{a.plugins=[b]}if(a.pluginsInitialized){a.initPlugin(b)}return b},removePlugin:function(a){Ext.Array.remove(this.plugins,a);a.destroy()},findPlugin:function(a){if(this.plugins){return Ext.Array.findBy(this.plugins,function(b){if(b.ptype===a){return true}})}},beforeLayout:Ext.emptyFn,updateAria:Ext.emptyFn,registerFloatingItem:function(b){var a=this;if(!a.floatingDescendants){a.floatingDescendants=new Ext.ZIndexManager(a)}a.floatingDescendants.register(b)},unregisterFloatingItem:function(b){var a=this;if(a.floatingDescendants){a.floatingDescendants.unregister(b)}},layoutSuspendCount:0,suspendLayouts:function(){var a=this;if(!a.rendered){return}if(++a.layoutSuspendCount==1){a.suspendLayout=true}},resumeLayouts:function(b){var a=this;if(!a.rendered){return}if(!--a.layoutSuspendCount){a.suspendLayout=false;if(b&&!a.isLayoutSuspended()){a.updateLayout(b)}}},setupProtoEl:function(){var a=this.initCls();this.protoEl=new Ext.util.ProtoElement({cls:a.join(" ")})},initCls:function(){var b=this,a=[b.baseCls,b.getComponentLayout().targetCls];if(Ext.isDefined(b.cmpCls)){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.Component: cmpCls has been deprecated. Please use componentCls.")}b.componentCls=b.cmpCls;delete b.cmpCls}if(b.componentCls){a.push(b.componentCls)}else{b.componentCls=b.baseCls}return a},setUI:function(c){var b=this,e=b.uiCls,d=b.activeUI,a;if(c===d){return}if(d){a=b.removeClsWithUI(e,true);if(a.length){b.removeCls(a)}b.removeUIFromElement()}else{b.uiCls=[]}b.ui=c;b.activeUI=c;b.addUIToElement();a=b.addClsWithUI(e,true);if(a.length){b.addCls(a)}if(b.rendered){b.updateLayout()}},addClsWithUI:function(c,j){var h=this,g=[],e=0,d=h.uiCls=Ext.Array.clone(h.uiCls),b=h.activeUI,a,k;if(typeof c==="string"){c=c.indexOf(" ")<0?[c]:Ext.String.splitWords(c)}a=c.length;for(;e<a;e++){k=c[e];if(k&&!h.hasUICls(k)){d.push(k);if(b){g=g.concat(h.addUIClsToElement(k))}}}if(j!==true&&b){h.addCls(g)}return g},removeClsWithUI:function(d,l){var k=this,j=[],g=0,a=Ext.Array,h=a.remove,e=k.uiCls=a.clone(k.uiCls),c=k.activeUI,b,m;if(typeof d==="string"){d=d.indexOf(" ")<0?[d]:Ext.String.splitWords(d)}b=d.length;for(g=0;g<b;g++){m=d[g];if(m&&k.hasUICls(m)){h(e,m);if(c){j=j.concat(k.removeUIClsFromElement(m))}}}if(l!==true&&c){k.removeCls(j)}return j},hasUICls:function(a){var b=this,c=b.uiCls||[];return Ext.Array.contains(c,a)},frameElementsArray:["tl","tc","tr","ml","mc","mr","bl","bc","br"],addUIClsToElement:function(j){var h=this,b=h.baseCls+"-"+h.ui+"-"+j,k=[Ext.baseCSSPrefix+j,h.baseCls+"-"+j,b],g,e,d,a,c;if(h.rendered&&h.frame&&!Ext.supports.CSS3BorderRadius){g=h.frameElementsArray;e=g.length;for(d=0;d<e;d++){c=g[d];a=h["frame"+c.toUpperCase()];if(a){a.addCls(b+"-"+c)}}}return k},removeUIClsFromElement:function(j){var h=this,b=h.baseCls+"-"+h.ui+"-"+j,k=[Ext.baseCSSPrefix+j,h.baseCls+"-"+j,b],g,e,d,a,c;if(h.rendered&&h.frame&&!Ext.supports.CSS3BorderRadius){g=h.frameElementsArray;e=g.length;for(d=0;d<e;d++){c=g[d];a=h["frame"+c.toUpperCase()];if(a){a.addCls(b+"-"+c)}}}return k},addUIToElement:function(){var g=this,b=g.baseCls+"-"+g.ui,a,e,c,d,h;g.addCls(b);if(g.rendered&&g.frame&&!Ext.supports.CSS3BorderRadius){a=g.frameElementsArray;e=a.length;for(c=0;c<e;c++){h=a[c];d=g["frame"+h.toUpperCase()];if(d){d.addCls(b+"-"+h)}}}},removeUIFromElement:function(){var g=this,b=g.baseCls+"-"+g.ui,a,e,c,d,h;g.removeCls(b);if(g.rendered&&g.frame&&!Ext.supports.CSS3BorderRadius){a=g.frameElementsArray;e=a.length;for(c=0;c<e;c++){h=a[c];d=g["frame"+h.toUpperCase()];if(d){d.removeCls(b+"-"+h)}}}},getTpl:function(a){return Ext.XTemplate.getTpl(this,a)},initStyles:function(l){var g=this,c=Ext.Element,d=g.margin,e=g.border,m=g.cls,a=g.style,j=g.x,h=g.y,b,k;g.initPadding(l);if(d!=null){l.setStyle("margin",this.unitizeBox(d===true?5:d))}if(e!=null){g.setBorder(e,l)}if(m&&m!=g.initialCls){l.addCls(m);g.cls=g.initialCls=null}if(a&&a!=g.initialStyle){l.setStyle(a);g.style=g.initialStyle=null}if(j!=null){l.setStyle(g.horizontalPosProp,typeof j=="number"?j+"px":j)}if(h!=null){l.setStyle("top",typeof h=="number"?h+"px":h)}if(!g.getFrameInfo()){b=g.width;k=g.height;if(b!=null){if(typeof b==="number"){if(Ext.isBorderBox){l.setStyle("width",b+"px")}}else{l.setStyle("width",b)}}if(k!=null){if(typeof k==="number"){if(Ext.isBorderBox){l.setStyle("height",k+"px")}}else{l.setStyle("height",k)}}}},initPadding:function(c){var a=this,b=a.padding;if(b!=null){if(a.layout&&a.layout.managePadding&&a.contentPaddingProperty==="padding"){c.setStyle("padding",0)}else{c.setStyle("padding",this.unitizeBox(b===true?5:b))}}},parseBox:function(a){return Ext.dom.Element.parseBox(a)},unitizeBox:function(a){return Ext.dom.Element.unitizeBox(a)},setMargin:function(c,b){var a=this;if(a.rendered){if(!c&&c!==0){c=""}else{if(c===true){c=5}c=this.unitizeBox(c)}a.getTargetEl().setStyle("margin",c);if(!b){a.updateLayout()}}else{a.margin=c}},initEvents:function(){var e=this,h=e.afterRenderEvents,b,d,g,c,a;if(h){for(g in h){d=e[g];if(d&&d.on){b=h[g];for(c=0,a=b.length;c<a;++c){e.mon(d,b[c])}}}}e.addFocusListener()},addFocusListener:function(){var c=this,b=c.getFocusEl(),a;if(b){if(b.isComponent){return b.addFocusListener()}a=b.needsTabIndex();if(!c.focusListenerAdded&&(!a||Ext.FocusManager.enabled)){if(a){b.dom.tabIndex=-1}b.on({focus:c.onFocus,blur:c.onBlur,scope:c});c.focusListenerAdded=true}}},getFocusEl:Ext.emptyFn,isFocusable:function(){var b=this,a;if(b.focusable!==false&&(a=b.getFocusEl())&&b.rendered&&!b.destroying&&!b.isDestroyed&&!b.disabled&&b.isVisible(true)){return a.isFocusable(true)}},beforeFocus:Ext.emptyFn,onFocus:function(d){var c=this,b=c.focusCls,a=c.getFocusEl();if(!c.disabled){c.beforeFocus(d);if(b&&a){a.addCls(c.addClsWithUI(b,true))}if(!c.hasFocus){c.hasFocus=true;c.fireEvent("focus",c,d)}}},beforeBlur:Ext.emptyFn,onBlur:function(d){var c=this,b=c.focusCls,a=c.getFocusEl();if(c.destroying){return}c.beforeBlur(d);if(b&&a){a.removeCls(c.removeClsWithUI(b,true))}if(c.validateOnBlur){c.validate()}c.hasFocus=false;c.fireEvent("blur",c,d);c.postBlur(d)},postBlur:Ext.emptyFn,is:function(a){return Ext.ComponentQuery.is(this,a)},up:function(b){var a=this.getRefOwner();if(b){for(;a;a=a.getRefOwner()){if(b.isComponent){if(a===b){return a}}else{if(Ext.ComponentQuery.is(a,b)){return a}}}}return a},nextSibling:function(b){var g=this.ownerCt,d,e,a,h;if(g){d=g.items;a=d.indexOf(this)+1;if(a){if(b){for(e=d.getCount();a<e;a++){if((h=d.getAt(a)).is(b)){return h}}}else{if(a<d.getCount()){return d.getAt(a)}}}}return null},previousSibling:function(b){var e=this.ownerCt,d,a,g;if(e){d=e.items;a=d.indexOf(this);if(a!=-1){if(b){for(--a;a>=0;a--){if((g=d.getAt(a)).is(b)){return g}}}else{if(a){return d.getAt(--a)}}}}return null},previousNode:function(b,d){var j=this,h=j.ownerCt,a,g,e,c;if(d&&j.is(b)){return j}if(h){for(g=h.items.items,e=Ext.Array.indexOf(g,j)-1;e>-1;e--){c=g[e];if(c.query){a=c.query(b);a=a[a.length-1];if(a){return a}}if(c.is(b)){return c}}return h.previousNode(b,true)}return null},nextNode:function(d,j){var b=this,c=b.ownerCt,k,e,h,g,a;if(j&&b.is(d)){return b}if(c){for(e=c.items.items,g=Ext.Array.indexOf(e,b)+1,h=e.length;g<h;g++){a=e[g];if(a.is(d)){return a}if(a.down){k=a.down(d);if(k){return k}}}return c.nextNode(d)}return null},getId:function(){return this.id||(this.id="ext-comp-"+this.getAutoId())},getItemId:function(){return this.itemId||this.id},getEl:function(){return this.el},getTargetEl:function(){return this.frameBody||this.el},getOverflowEl:function(){return this.getTargetEl()},getOverflowStyle:function(){var e=this,b=null,d,c,a;if(typeof e.autoScroll==="boolean"){b={overflow:a=e.autoScroll?"auto":""};e.scrollFlags={overflowX:a,overflowY:a,x:true,y:true,both:true}}else{d=e.overflowX;c=e.overflowY;if(d!==undefined||c!==undefined){b={overflowX:d=d||"",overflowY:c=c||""};e.scrollFlags={overflowX:d,overflowY:c,x:d=d==="auto"||d==="scroll",y:c=c==="auto"||c==="scroll",both:d&&c}}else{e.scrollFlags={overflowX:"",overflowY:"",x:false,y:false,both:false}}}if(b&&Ext.isIE7m){b.position="relative"}return b},isXType:function(b,a){if(a){return this.xtype===b}else{return this.xtypesMap[b]}},getXTypes:function(){var c=this.self,d,b,a;if(!c.xtypes){d=[];b=this;while(b){a=b.xtypes;if(a!==undefined){d.unshift.apply(d,a)}b=b.superclass}c.xtypeChain=d;c.xtypes=d.join("/")}return c.xtypes},update:function(b,c,a){var e=this,g=e.tpl&&!Ext.isString(b),d;if(g){e.data=b}else{e.html=Ext.isObject(b)?Ext.DomHelper.markup(b):b}if(e.rendered){d=e.isContainer?e.layout.getRenderTarget():e.getTargetEl();if(g){e.tpl[e.tplWriteMode](d,b||{})}else{d.update(e.html,c,a)}e.updateLayout()}},setVisible:function(a){return this[a?"show":"hide"]()},isVisible:function(a){var b=this,c;if(b.hidden||!b.rendered||b.isDestroyed){c=true}else{if(a){c=b.isHierarchicallyHidden()}}return !c},isHierarchicallyHidden:function(){var d=this,c=false,b,a;for(;b=d.ownerCt||d.floatParent;d=b){a=b.getHierarchyState();if(a.hidden){c=true;break}if(d.getHierarchyState().collapseImmune){if(b.collapsed&&!d.collapseImmune){c=true;break}}else{c=!!a.collapsed;break}}return c},onBoxReady:function(b,a){var c=this;if(c.disableOnBoxReady){c.onDisable()}else{if(c.enableOnBoxReady){c.onEnable()}}if(c.resizable){c.initResizable(c.resizable)}if(c.draggable){c.initDraggable()}if(c.hasListeners.boxready){c.fireEvent("boxready",c,b,a)}},enable:function(a){var b=this;delete b.disableOnBoxReady;b.removeCls(b.disabledCls);if(b.rendered){b.onEnable()}else{b.enableOnBoxReady=true}b.disabled=false;delete b.resetDisable;if(a!==true){b.fireEvent("enable",b)}return b},disable:function(a){var b=this;delete b.enableOnBoxReady;b.addCls(b.disabledCls);if(b.rendered){b.onDisable()}else{b.disableOnBoxReady=true}b.disabled=true;if(a!==true){delete b.resetDisable;b.fireEvent("disable",b)}return b},onEnable:function(){if(this.maskOnDisable){this.el.dom.disabled=false;this.unmask()}},onDisable:function(){var c=this,b=c.focusCls,a=c.getFocusEl();if(b&&a){a.removeCls(c.removeClsWithUI(b,true))}if(c.maskOnDisable){c.el.dom.disabled=true;c.mask()}},mask:function(){var b=this.lastBox,c=this.getMaskTarget(),a=[];if(b){a[2]=b.height}c.mask.apply(c,a)},unmask:function(){this.getMaskTarget().unmask()},getMaskTarget:function(){return this.el},isDisabled:function(){return this.disabled},setDisabled:function(a){return this[a?"disable":"enable"]()},isHidden:function(){return this.hidden},addCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;b.addCls.apply(b,arguments);return c},addClass:function(){return this.addCls.apply(this,arguments)},hasCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;return b.hasCls.apply(b,arguments)},removeCls:function(a){var c=this,b=c.rendered?c.el:c.protoEl;b.removeCls.apply(b,arguments);return c},addOverCls:function(){var a=this;if(!a.disabled){a.el.addCls(a.overCls)}},removeOverCls:function(){this.el.removeCls(this.overCls)},addListener:function(b,g,e,a){var h=this,d,c;if(Ext.isString(b)&&(Ext.isObject(g)||a&&a.element)){if(a.element){d=g;g={};g[b]=d;b=a.element;if(e){g.scope=e}for(c in a){if(a.hasOwnProperty(c)){if(h.eventOptionsRe.test(c)){g[c]=a[c]}}}}if(h[b]&&h[b].on){h.mon(h[b],g)}else{h.afterRenderEvents=h.afterRenderEvents||{};if(!h.afterRenderEvents[b]){h.afterRenderEvents[b]=[]}h.afterRenderEvents[b].push(g)}return}return h.mixins.observable.addListener.apply(h,arguments)},removeManagedListenerItem:function(b,a,j,d,g,e){var h=this,c=a.options?a.options.element:null;if(c){c=h[c];if(c&&c.un){if(b||a.item===j&&a.ename===d&&(!g||a.fn===g)&&(!e||a.scope===e)){c.un(a.ename,a.fn,a.scope);if(!b){Ext.Array.remove(h.managedListeners,a)}}}}else{return h.mixins.observable.removeManagedListenerItem.apply(h,arguments)}},getBubbleTarget:function(){return this.ownerCt},isFloating:function(){return this.floating},isDraggable:function(){return !!this.draggable},isDroppable:function(){return !!this.droppable},onAdded:function(a,c){var b=this;b.ownerCt=a;if(b.hierarchyState){b.hierarchyState.invalid=true;delete b.hierarchyState}if(b.hasListeners.added){b.fireEvent("added",b,a,c)}},onRemoved:function(b){var a=this;if(a.hasListeners.removed){a.fireEvent("removed",a,a.ownerCt)}delete a.ownerCt;delete a.ownerLayout},beforeDestroy:Ext.emptyFn,onResize:function(c,a,b,e){var d=this;if(d.floating&&d.constrain){d.doConstrain()}if(d.hasListeners.resize){d.fireEvent("resize",d,c,a,b,e)}},setSize:function(b,a){var c=this;if(b&&typeof b=="object"){a=b.height;b=b.width}if(typeof b=="number"){c.width=Ext.Number.constrain(b,c.minWidth,c.maxWidth)}else{if(b===null){delete c.width}}if(typeof a=="number"){c.height=Ext.Number.constrain(a,c.minHeight,c.maxHeight)}else{if(a===null){delete c.height}}if(c.rendered&&c.isVisible()){c.updateLayout({isRoot:false})}return c},isLayoutRoot:function(){var a=this,b=a.ownerLayout;if(!b||a._isLayoutRoot||a.floating){return true}return b.isItemLayoutRoot(a)},isLayoutSuspended:function(){var a=this,b;while(a){if(a.layoutSuspendCount||a.suspendLayout){return true}b=a.ownerLayout;if(!b){break}a=b.owner}return false},updateLayout:function(c){var d=this,e,b=d.lastBox,a=c&&c.isRoot;if(b){b.invalid=true}if(!d.rendered||d.layoutSuspendCount||d.suspendLayout){return}if(d.hidden){Ext.AbstractComponent.cancelLayout(d)}else{if(typeof a!="boolean"){a=d.isLayoutRoot()}}if(a||!d.ownerLayout||!d.ownerLayout.onContentChange(d)){if(!d.isLayoutSuspended()){e=c&&c.hasOwnProperty("defer")?c.defer:d.deferLayouts;Ext.AbstractComponent.updateLayout(d,e)}}},getSizeModel:function(k){var o=this,a=Ext.layout.SizeModel,d=o.componentLayout.ownerContext,b=o.width,q=o.height,s,c,g,e,h,p,m,n,l,j;if(d){j=d.widthModel;h=d.heightModel}if(!j||!h){g=(s=typeof b)=="number";e=(c=typeof q)=="number";l=o.floating||!(p=o.ownerLayout);if(l){m=Ext.layout.Layout.prototype.autoSizePolicy;n=o.floating?3:o.shrinkWrap;if(g){j=a.configured}if(e){h=a.configured}}else{m=p.getItemSizePolicy(o,k);n=p.isItemShrinkWrap(o)}if(d){d.ownerSizePolicy=m}n=n===true?3:n||0;if(l&&n){if(b&&s=="string"){n&=2}if(q&&c=="string"){n&=1}}if(n!==3){if(!k){k=o.ownerCt&&o.ownerCt.getSizeModel()}if(k){n|=(k.width.shrinkWrap?1:0)|(k.height.shrinkWrap?2:0)}}if(!j){if(!m.setsWidth){if(g){j=a.configured}else{j=n&1?a.shrinkWrap:a.natural}}else{if(m.readsWidth){if(g){j=a.calculatedFromConfigured}else{j=n&1?a.calculatedFromShrinkWrap:a.calculatedFromNatural}}else{j=a.calculated}}}if(!h){if(!m.setsHeight){if(e){h=a.configured}else{h=n&2?a.shrinkWrap:a.natural}}else{if(m.readsHeight){if(e){h=a.calculatedFromConfigured}else{h=n&2?a.calculatedFromShrinkWrap:a.calculatedFromNatural}}else{h=a.calculated}}}}return j.pairsByHeightOrdinal[h.ordinal]},isDescendant:function(a){if(a.isContainer){for(var b=this.ownerCt;b;b=b.ownerCt){if(b===a){return true}}}return false},doComponentLayout:function(){this.updateLayout();return this},forceComponentLayout:function(){this.updateLayout()},setComponentLayout:function(b){var a=this.componentLayout;if(a&&a.isLayout&&a!=b){a.setOwner(null)}this.componentLayout=b;b.setOwner(this)},getComponentLayout:function(){var a=this;if(!a.componentLayout||!a.componentLayout.isLayout){a.setComponentLayout(Ext.layout.Layout.create(a.componentLayout,"autocomponent"))}return a.componentLayout},afterComponentLayout:function(c,a,b,e){var d=this;if(++d.componentLayoutCounter===1){d.afterFirstLayout(c,a)}if(c!==b||a!==e){d.onResize(c,a,b,e)}},beforeComponentLayout:function(b,a){return true},setPosition:function(a,e,b){var c=this,d=c.beforeSetPosition.apply(c,arguments);if(d&&c.rendered){a=d.x;e=d.y;if(b){if(a!==c.getLocalX()||e!==c.getLocalY()){c.stopAnimation();c.animate(Ext.apply({duration:1000,listeners:{afteranimate:Ext.Function.bind(c.afterSetPosition,c,[a,e])},to:{x:a,y:e}},b))}}else{c.setLocalXY(a,e);c.afterSetPosition(a,e)}}return c},beforeSetPosition:function(a,e,b){var d,c;if(a){if(Ext.isNumber(c=a[0])){b=e;e=a[1];a=c}else{if((c=a.x)!==undefined){b=e;e=a.y;a=c}}}if(this.constrain||this.constrainHeader){d=this.calculateConstrainedPosition(null,[a,e],true);if(d){a=d[0];e=d[1]}}d={x:this.x=a,y:this.y=e,anim:b,hasX:a!==undefined,hasY:e!==undefined};return d.hasX||d.hasY?d:null},afterSetPosition:function(a,c){var b=this;b.onPosition(a,c);if(b.hasListeners.move){b.fireEvent("move",b,a,c)}},onPosition:Ext.emptyFn,setWidth:function(a){return this.setSize(a)},setHeight:function(a){return this.setSize(undefined,a)},getSize:function(){return this.el.getSize()},getWidth:function(){return this.el.getWidth()},getHeight:function(){return this.el.getHeight()},getLoader:function(){var c=this,b=c.autoLoad?Ext.isObject(c.autoLoad)?c.autoLoad:{url:c.autoLoad}:null,a=c.loader||b;if(a){if(!a.isLoader){c.loader=new Ext.ComponentLoader(Ext.apply({target:c,autoLoad:b},a))}else{a.setTarget(c)}return c.loader}return null},setDocked:function(b,c){var a=this;a.dock=b;if(c&&a.ownerCt&&a.rendered){a.ownerCt.updateLayout()}return a},setBorder:function(b,d){var c=this,a=!!d;if(c.rendered||a){if(!a){d=c.el}if(!b){b=0}else{if(b===true){b="1px"}else{b=this.unitizeBox(b)}}d.setStyle("border-width",b);if(!a){c.updateLayout()}}c.border=b},onDestroy:function(){var a=this;if(a.monitorResize&&Ext.EventManager.resizeEvent){Ext.EventManager.resizeEvent.removeListener(a.setSize,a)}Ext.destroy(a.componentLayout,a.loadMask,a.floatingDescendants)},destroy:function(){var d=this,b=d.renderSelectors,a,c;if(!d.isDestroyed){if(!d.hasListeners.beforedestroy||d.fireEvent("beforedestroy",d)!==false){d.destroying=true;d.beforeDestroy();if(d.floating){delete d.floatParent;if(d.zIndexManager){d.zIndexManager.unregister(d)}}else{if(d.ownerCt&&d.ownerCt.remove){d.ownerCt.remove(d,false)}}d.stopAnimation();d.onDestroy();Ext.destroy(d.plugins);if(d.hasListeners.destroy){d.fireEvent("destroy",d)}Ext.ComponentManager.unregister(d);d.mixins.state.destroy.call(d);d.clearListeners();if(d.rendered){if(!d.preserveElOnDestroy){d.el.remove()}d.mixins.elementCt.destroy.call(d);if(b){for(a in b){if(b.hasOwnProperty(a)){c=d[a];if(c){delete d[a];c.remove()}}}}delete d.el;delete d.frameBody;delete d.rendered}d.destroying=false;d.isDestroyed=true}}},getPlugin:function(b){var c=0,a=this.plugins,d=a.length;for(;c<d;c++){if(a[c].pluginId===b){return a[c]}}},isDescendantOf:function(a){return !!this.findParentBy(function(b){return b===a})},getHierarchyState:function(a){var e=this,j=a&&e.hierarchyStateInner||e.hierarchyState,c=e.ownerCt,b,d,g,h;if(!j||j.invalid){b=e.getRefOwner();if(c){h=e.ownerLayout===c.layout}e.hierarchyState=j=Ext.Object.chain(b?b.getHierarchyState(h):Ext.rootHierarchyState);e.initHierarchyState(j);if((d=e.componentLayout).initHierarchyState){d.initHierarchyState(j)}if(e.isContainer){e.hierarchyStateInner=g=Ext.Object.chain(j);d=e.layout;if(d&&d.initHierarchyState){d.initHierarchyState(g,j)}if(a){j=g}}}return j},initHierarchyState:function(b){var a=this;if(a.collapsed){b.collapsed=true}if(a.hidden){b.hidden=true}if(a.collapseImmune){b.collapseImmune=true}},getAnchorToXY:function(d,a,c,b){return d.getAnchorXY(a,c,b)},getBorderPadding:function(){return this.el.getBorderPadding()},getLocalX:function(){return this.el.getLocalX()},getLocalXY:function(){return this.el.getLocalXY()},getLocalY:function(){return this.el.getLocalY()},getX:function(){return this.el.getX()},getXY:function(){return this.el.getXY()},getY:function(){return this.el.getY()},setLocalX:function(a){this.el.setLocalX(a)},setLocalXY:function(a,b){this.el.setLocalXY(a,b)},setLocalY:function(a){this.el.setLocalY(a)},setX:function(a,b){this.el.setX(a,b)},setXY:function(b,a){this.el.setXY(b,a)},setY:function(b,a){this.el.setY(b,a)}},function(){var a=this;a.createAlias({on:"addListener",prev:"previousSibling",next:"nextSibling"});Ext.resumeLayouts=function(b){a.resumeLayouts(b)};Ext.suspendLayouts=function(){a.suspendLayouts()};Ext.batchLayouts=function(c,b){a.suspendLayouts();c.call(b);a.resumeLayouts(true)}});Ext.define("Ext.AbstractPlugin",{disabled:false,isPlugin:true,constructor:function(a){this.pluginConfig=a;Ext.apply(this,a)},clonePlugin:function(a){return new this.self(Ext.apply({},a,this.pluginConfig))},setCmp:function(a){this.cmp=a},getCmp:function(){return this.cmp},init:Ext.emptyFn,destroy:Ext.emptyFn,enable:function(){this.disabled=false},disable:function(){this.disabled=true}});Ext.define("Ext.Action",{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},setIconCls:function(a){this.initialConfig.iconCls=a;this.callEach("setIconCls",[a])},getIconCls: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(g,c){var b=this.items,d=0,a=b.length,e;Ext.suspendLayouts();for(;d<a;d++){e=b[d];e[g].apply(e,c)}Ext.resumeLayouts(true)},addComponent:function(a){this.items.push(a);a.on("destroy",this.removeComponent,this)},removeComponent:function(a){Ext.Array.remove(this.items,a)},execute:function(){this.initialConfig.handler.apply(this.initialConfig.scope||Ext.global,arguments)}});Ext.define("Ext.data.flash.BinaryXhr",{statics:{flashPluginActivated:function(){Ext.data.flash.BinaryXhr.flashPluginActive=true;Ext.data.flash.BinaryXhr.flashPlugin=document.getElementById("ext-flash-polyfill");Ext.globalEvents.fireEvent("flashready")},flashPluginActive:false,flashPluginInjected:false,connectionIndex:1,liveConnections:{},flashPlugin:null,onFlashStateChange:function(d,c,b){var a;a=this.liveConnections[Number(d)];if(a){a.onFlashStateChange(c,b)}},registerConnection:function(b){var a=this.connectionIndex;this.conectionIndex=this.connectionIndex+1;this.liveConnections[a]=b;return a},injectFlashPlugin:function(){var g,b,c,a,e=this,d,h;a=document.createElement("img");a.setAttribute("src",window.location.protocol+"//www.adobe.com/images/shared/download_buttons/get_flash_player.gif");a.setAttribute("alt","Get Adobe Flash player");c=document.createElement("a");c.setAttribute("href","http://www.adobe.com/go/getflashplayer");c.appendChild(a);b=document.createElement("p");b.innerHTML="To view this page ensure that Adobe Flash Player version 11.1.0 or greater is installed.";g=document.createElement("div");g.setAttribute("id","ext-flash-polyfill");g.appendChild(b);g.appendChild(a);Ext.getBody().dom.appendChild(g);d=[Ext.Loader.getPath("Ext.data.Connection"),"../../../plugins/flash/swfobject.js"].join("/");h="/plugins/flash/FlashPlugin.swf";if(Ext.flashPluginPath){h=Ext.flashPluginPath}Ext.Loader.loadScript({url:d,onLoad:function(){var k="11.4.0";var m="playerProductInstall.swf";var j={};var n={};n.quality="high";n.bgcolor="#ffffff";n.allowscriptaccess="sameDomain";n.allowfullscreen="true";var l={};l.id="ext-flash-polyfill";l.name="polyfill";l.align="middle";swfobject.embedSWF(h,"ext-flash-polyfill","0","0",k,m,j,n,l)},onError:function(){},scope:e});Ext.globalEvents.addEvents("flashready");Ext.data.flash.BinaryXhr.flashPluginInjected=true}},readyState:0,status:0,statusText:"",responseBytes:null,javascriptId:null,constructor:function(a){if(!Ext.data.flash.BinaryXhr.flashPluginInjected){Ext.data.flash.BinaryXhr.injectFlashPlugin()}var b=this;Ext.apply(b,a);b.requestHeaders={}},abort:function(){var a=this;if(a.readyState==4){return}a.aborted=true;if(!Ext.data.flash.BinaryXhr.flashPluginActive){Ext.globalEvents.removeListener("flashready",a.onFlashReady,a);return}Ext.data.flash.BinaryXhr.flashPlugin.abortRequest(a.javascriptId);delete Ext.data.flash.BinaryXhr.liveConnections[a.javascriptId]},getAllResponseHeaders:function(){var a=[];Ext.Object.each(this.responseHeaders,function(b,c){a.push(b+": "+c)});return a.join("\r\n")},getResponseHeader:function(b){var a=this.responseHeaders;return a&&a[b]||null},open:function(g,c,d,a,b){var e=this;e.method=g;e.url=c;e.async=d!==false;e.user=a;e.password=b},overrideMimeType:function(a){this.mimeType=a},send:function(a){var b=this;b.body=a;if(!Ext.data.flash.BinaryXhr.flashPluginActive){Ext.globalEvents.addListener("flashready",b.onFlashReady,b)}else{this.onFlashReady()}},onFlashReady:function(){var c=this,b,a;c.javascriptId=Ext.data.flash.BinaryXhr.registerConnection(c);b={method:c.method,url:c.url,user:c.user,password:c.password,mimeType:c.mimeType,requestHeaders:c.requestHeaders,body:c.body,javascriptId:c.javascriptId};a=Ext.data.flash.BinaryXhr.flashPlugin.postBinary(b)},setReadyState:function(b){var a=this;if(a.readyState!=b){a.readyState=b;a.onreadystatechange()}},setRequestHeader:function(b,a){this.requestHeaders[b]=a},onreadystatechange:Ext.emptyFn,parseData:function(b){var a=this;this.status=b.status||0;a.responseHeaders={};if(a.mimeType){a.responseHeaders["content-type"]=a.mimeType}if(b.reason=="complete"){this.responseBytes=b.data;a.responseHeaders["content-length"]=b.data.length}else{if(b.reason=="error"||b.reason=="securityError"){this.statusText=b.text;a.responseHeaders["content-length"]=0}}},onFlashStateChange:function(c,b){var a=this;if(c==4){a.parseData(b);delete Ext.data.flash.BinaryXhr.liveConnections[a.javascriptId]}a.setReadyState(c)}});Ext.define("Ext.data.Connection",{mixins:{observable:Ext.util.Observable},statics:{requestId:0},url:null,async:true,method:null,username:"",password:"",disableCaching:true,withCredentials:false,binary:false,cors:false,isXdr:false,defaultXdrContentType:"text/plain",disableCachingParam:"_dc",timeout:30000,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",constructor:function(a){a=a||{};Ext.apply(this,a);this.requests={};this.mixins.observable.constructor.call(this)},request:function(l){l=l||{};var g=this,k=l.scope||window,e=l.username||g.username,h=l.password||g.password||"",b,c,d,a,j;if(g.fireEvent("beforerequest",g,l)!==false){c=g.setOptions(l,k);if(g.isFormUpload(l)){g.upload(l.form,c.url,c.data,l);return null}if(l.autoAbort||g.autoAbort){g.abort()}b=l.async!==false?l.async||g.async:false;j=g.openRequest(l,c,b,e,h);if(!g.isXdr){a=g.setupHeaders(j,l,c.data,c.params)}d={id:++Ext.data.Connection.requestId,xhr:j,headers:a,options:l,async:b,binary:l.binary||g.binary,timeout:setTimeout(function(){d.timedout=true;g.abort(d)},l.timeout||g.timeout)};g.requests[d.id]=d;g.latestId=d.id;if(b){if(!g.isXdr){j.onreadystatechange=Ext.Function.bind(g.onStateChange,g,[d])}}if(g.isXdr){g.processXdrRequest(d,j)}j.send(c.data);if(!b){return g.onComplete(d)}return d}else{Ext.callback(l.callback,l.scope,[l,undefined,undefined]);return null}},processXdrRequest:function(b,c){var a=this;delete b.headers;b.contentType=b.options.contentType||a.defaultXdrContentType;c.onload=Ext.Function.bind(a.onStateChange,a,[b,true]);c.onerror=c.ontimeout=Ext.Function.bind(a.onStateChange,a,[b,false])},processXdrResponse:function(a,b){a.getAllResponseHeaders=function(){return[]};a.getResponseHeader=function(){return""};a.contentType=b.contentType||this.defaultXdrContentType},upload:function(b,g,u,e){b=Ext.getDom(b);e=e||{};var o=Ext.id(),m=document.createElement("iframe"),c=[],d="multipart/form-data",t={target:b.target,method:b.method,encoding:b.encoding,enctype:b.enctype,action:b.action},a=function(h,x){j=document.createElement("input");Ext.fly(j).set({type:"hidden",value:x,name:h});b.appendChild(j);c.push(j)},j,l,q,w,p,k,n,s;Ext.fly(m).set({id:o,name:o,cls:Ext.baseCSSPrefix+"hide-display",src:Ext.SSL_SECURE_URL});document.body.appendChild(m);if(document.frames){document.frames[o].name=o}Ext.fly(b).set({target:o,method:"POST",enctype:d,encoding:d,action:g||t.action});if(u){l=Ext.Object.fromQueryString(u)||{};for(w in l){if(l.hasOwnProperty(w)){q=l[w];if(Ext.isArray(q)){p=q.length;for(k=0;k<p;k++){a(w,q[k])}}else{a(w,q)}}}}Ext.fly(m).on("load",Ext.Function.bind(this.onUploadComplete,this,[m,e]),null,{single:!Ext.isOpera});b.submit();Ext.fly(b).set(t);n=c.length;for(s=0;s<n;s++){Ext.removeNode(c[s])}},onUploadComplete:function(a,l){var g=this,b={responseText:"",responseXML:null},j,k,h,c;try{h=a.contentWindow.document||a.contentDocument||window.frames[a.id].document;if(h){if(Ext.isOpera&&h.location=="about:blank"){return}if(h.body){if((c=h.body.firstChild)&&/pre/i.test(c.tagName)){b.responseText=c.textContent}else{if(c=h.getElementsByTagName("textarea")[0]){b.responseText=c.value}else{b.responseText=h.body.textContent||h.body.innerText}}}b.responseXML=h.XMLDocument||h;j=l.success;k=true}}catch(d){b.responseText='{success:false,message:"'+Ext.String.trim(d.message||d.description)+'"}';j=l.failure;k=false}g.fireEvent("requestcomplete",g,b,l);Ext.callback(j,l.scope,[b,l]);Ext.callback(l.callback,l.scope,[l,k,b]);setTimeout(function(){Ext.removeNode(a)},100)},isFormUpload:function(a){var b=this.getForm(a);if(b){return a.isUpload||/multipart\/form-data/i.test(b.getAttribute("enctype"))}return false},getForm:function(a){return Ext.getDom(a.form)||null},setOptions:function(m,l){var j=this,e=m.params||{},h=j.extraParams,d=m.urlParams,c=m.url||j.url,k=m.jsonData,b,a,g;if(Ext.isFunction(e)){e=e.call(l,m)}if(Ext.isFunction(c)){c=c.call(l,m)}c=this.setupUrl(m,c);g=m.rawData||m.binaryData||m.xmlData||k||null;if(k&&!Ext.isPrimitive(k)){g=Ext.encode(g)}if(m.binaryData){if(j.nativeBinaryPostSupport()){g=new Uint8Array(m.binaryData);if(Ext.isChrome&&Ext.chromeVersion<22||Ext.isSafari||Ext.isGecko){g=g.buffer}}}if(Ext.isObject(e)){e=Ext.Object.toQueryString(e)}if(Ext.isObject(h)){h=Ext.Object.toQueryString(h)}e=e+(h?(e?"&":"")+h:"");d=Ext.isObject(d)?Ext.Object.toQueryString(d):d;e=this.setupParams(m,e);b=(m.method||j.method||(e||g?"POST":"GET")).toUpperCase();this.setupMethod(m,b);a=m.disableCaching!==false?m.disableCaching||j.disableCaching:false;if(b==="GET"&&a){c=Ext.urlAppend(c,(m.disableCachingParam||j.disableCachingParam)+"="+(new Date).getTime())}if((b=="GET"||g)&&e){c=Ext.urlAppend(c,e);e=null}if(d){c=Ext.urlAppend(c,d)}return{url:c,method:b,data:g||e||null}},setupUrl:function(b,a){var c=this.getForm(b);if(c){a=a||c.action}return a},setupParams:function(a,d){var c=this.getForm(a),b;if(c&&!this.isFormUpload(a)){b=Ext.Element.serializeForm(c);d=d?d+"&"+b:b}return d},setupMethod:function(a,b){if(this.isFormUpload(a)){return"POST"}return b},setupHeaders:function(n,o,d,c){var j=this,b=Ext.apply({},o.headers||{},j.defaultHeaders||{}),m=j.defaultPostHeader,k=o.jsonData,a=o.xmlData,l,g;if(!b["Content-Type"]&&(d||c)){if(d){if(o.rawData){m="text/plain"}else{if(a&&Ext.isDefined(a)){m="text/xml"}else{if(k&&Ext.isDefined(k)){m="application/json"}}}}b["Content-Type"]=m}if(j.useDefaultXhrHeader&&!b["X-Requested-With"]){b["X-Requested-With"]=j.defaultXhrHeader}try{for(l in b){if(b.hasOwnProperty(l)){g=b[l];n.setRequestHeader(l,g)}}}catch(h){j.fireEvent("exception",l,g)}return b},newRequest:function(a){var b=this,c;if(a.binaryData){if(b.nativeBinaryPostSupport()){c=this.getXhrInstance()}else{c=new Ext.data.flash.BinaryXhr}}else{if((a.cors||b.cors)&&Ext.isIE&&Ext.ieVersion<=9){c=b.getXdrInstance();b.isXdr=true}else{c=b.getXhrInstance()}}return c},openRequest:function(c,a,d,h,b){var e=this,g=e.newRequest(c);if(h){g.open(a.method,a.url,d,h,b)}else{if(e.isXdr){g.open(a.method,a.url)}else{g.open(a.method,a.url,d)}}if(c.binary||e.binary){if(window.Uint8Array){g.responseType="arraybuffer"}else{if(g.overrideMimeType){g.overrideMimeType("text/plain; charset=x-user-defined")}}}if(c.withCredentials||e.withCredentials){g.withCredentials=true}return g},getXdrInstance:function(){var a;if(Ext.ieVersion>=8){a=new XDomainRequest}else{Ext.Error.raise({msg:"Your browser does not support CORS"})}return a},getXhrInstance:function(){var b=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("MSXML2.XMLHTTP.3.0")},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=0,a=b.length,g;for(;c<a;++c){try{g=b[c];g();break}catch(d){}}return g}(),isLoading:function(a){if(!a){a=this.getLatest()}if(!(a&&a.xhr)){return false}var b=a.xhr.readyState;return a.xhr instanceof Ext.data.flash.BinaryXhr&&b!=4||!(b===0||b==4)},abort:function(b){var a=this,d;if(!b){b=a.getLatest()}if(b&&a.isLoading(b)){d=b.xhr;try{d.onreadystatechange=null}catch(c){d.onreadystatechange=Ext.emptyFn}d.abort();a.clearTimeout(b);if(!b.timedout){b.aborted=true}a.onComplete(b);a.cleanup(b)}},abortAll:function(){var b=this.requests,a;for(a in b){if(b.hasOwnProperty(a)){this.abort(b[a])}}},getLatest:function(){var b=this.latestId,a;if(b){a=this.requests[b]}return a||null},onStateChange:function(c,a){var b=this;if(c.xhr&&c.xhr.readyState==4||b.isXdr){b.clearTimeout(c);b.onComplete(c,a);b.cleanup(c);Ext.EventManager.idleEvent.fire()}},clearTimeout:function(a){clearTimeout(a.timeout);delete a.timeout},cleanup:function(a){a.xhr=null;delete a.xhr},onComplete:function(h,d){var g=this,c=h.options,a,k,b;try{a=g.parseStatus(h.xhr.status)}catch(j){a={success:false,isException:false}}k=g.isXdr?d:a.success;if(k){b=g.createResponse(h);g.fireEvent("requestcomplete",g,b,c);Ext.callback(c.success,c.scope,[b,c])}else{if(a.isException||h.aborted||h.timedout){b=g.createException(h)}else{b=g.createResponse(h)}g.fireEvent("requestexception",g,b,c);Ext.callback(c.failure,c.scope,[b,c])}Ext.callback(c.callback,c.scope,[c,k,b]);delete g.requests[h.id];return b},parseStatus:function(a){a=a==1223?204:a;var c=a>=200&&a<300||a==304,b=false;if(!c){switch(a){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:b=true;break}}return{success:c,isException:b}},createResponse:function(e){var j=this,l=e.xhr,c=j.isXdr,b={},m=c?[]:l.getAllResponseHeaders().replace(/\r\n/g,"\n").split("\n"),h=m.length,n,g,k,d,a;while(h--){n=m[h];g=n.indexOf(":");if(g>=0){k=n.substr(0,g).toLowerCase();if(n.charAt(g+1)==" "){++g}b[k]=n.substr(g+1)}}e.xhr=null;delete e.xhr;d={request:e,requestId:e.id,status:l.status,statusText:l.statusText,getResponseHeader:function(o){return b[o.toLowerCase()]},getAllResponseHeaders:function(){return b}};if(c){j.processXdrResponse(d,l)}if(e.binary){d.responseBytes=j.getByteArray(l)}else{d.responseText=l.responseText;d.responseXML=l.responseXML}l=null;return d},createException:function(a){return{request:a,requestId:a.id,status:a.aborted?-1:0,statusText:a.aborted?"transaction aborted":"communication failure",aborted:a.aborted,timedout:a.timedout}},getByteArray:function(k){var c=k.response,j=k.responseBody,b,g,a,d;if(k instanceof Ext.data.flash.BinaryXhr){b=k.responseBytes}else{if(window.Uint8Array){b=c?new Uint8Array(c):[]}else{if(Ext.isIE9p){try{b=(new VBArray(j)).toArray()}catch(h){b=[]}}else{if(Ext.isIE){if(!this.self.vbScriptInjected){this.injectVBScript()}getIEByteArray(k.responseBody,b=[])}else{b=[];g=k.responseText;a=g.length;for(d=0;d<a;d++){b.push(g.charCodeAt(d)&255)}}}}}return b},injectVBScript:function(){var a=document.createElement("script");a.type="text/vbscript";a.text=["Function getIEByteArray(byteArray, out)","Dim len, i","len = LenB(byteArray)","For i = 1 to len","out.push(AscB(MidB(byteArray, i, 1)))","Next","End Function"].join("\n");Ext.getHead().dom.appendChild(a);this.self.vbScriptInjected=true},nativeBinaryPostSupport:function(){return Ext.isChrome||Ext.isSafari&&Ext.isDefined(window.Uint8Array)||Ext.isGecko&&Ext.isDefined(window.Uint8Array)}});Ext.define("Ext.Ajax",{extend:Ext.data.Connection,singleton:true,autoAbort:false});Ext.define("Ext.util.Floating",{focusOnToFront:true,shadow:"sides",constrain:false,constructor:function(b){var a=this;a.fixed=a.fixed&&!(Ext.isIE6||Ext.isIEQuirks);a.el=new Ext.dom.Layer(Ext.apply({hideMode:a.hideMode,hidden:a.hidden,shadow:typeof a.shadow!="undefined"?a.shadow:"sides",shadowOffset:a.shadowOffset,constrain:false,fixed:a.fixed,shim:a.shim===false?false:undefined},a.floating),b);if(a.modal&&!(Ext.FocusManager&&Ext.FocusManager.enabled)){a.mon(a.el,{keydown:a.onKeyDown,scope:a})}a.mon(a.el,{mousedown:a.onMouseDown,scope:a});a.floating=true;a.registerWithOwnerCt();a.initHierarchyEvents()},initHierarchyEvents:function(){var b=this,a=this.syncHidden;if(!b.hasHierarchyEventListeners){b.mon(b.hierarchyEventSource,{hide:a,collapse:a,show:a,expand:a,added:a,scope:b});b.hasHierarchyEventListeners=true}},registerWithOwnerCt:function(){var c=this,b=c.ownerCt,a=c.zIndexParent;if(a){a.unregisterFloatingItem(c)}a=c.zIndexParent=c.up("[floating]");c.setFloatParent(b||a);delete c.ownerCt;if(a){a.registerFloatingItem(c)}else{Ext.WindowManager.register(c)}},onKeyDown:function(d){var c=this,a,h,g,b;if(d.getKey()==Ext.EventObject.TAB){a=d.shiftKey;h=c.el.query(":focusable");g=h[0];b=h[h.length-1];if(g&&b&&d.target===(a?g:b)){d.stopEvent();(a?b:g).focus(false,true)}}},onMouseDown:function(a){if(this.floating){this.toFront(!!a.getTarget(":focusable"))}},setFloatParent:function(b){var a=this;a.floatParent=b;if((a.constrain||a.constrainHeader)&&!a.constrainTo){a.constrainTo=b?b.getTargetEl():a.container}},onAfterFloatLayout:function(){this.syncShadow()},syncHidden:function(){var c=this,d=c.hidden||!c.rendered,a=c.hierarchicallyHidden=c.isHierarchicallyHidden(),b=c.pendingShow;if(d!==a){if(a){c.hide();c.pendingShow=true}else{if(b){delete c.pendingShow;if(b.length){c.show.apply(c,b)}else{c.show()}}}}},setZIndex:function(a){var b=this;b.el.setZIndex(a);a+=10;if(b.floatingDescendants){a=Math.floor(b.floatingDescendants.setBase(a)/100)*100+10000}return a},doConstrain:function(a){var b=this,c=b.calculateConstrainedPosition(a,null,true);if(c){b.setPosition(c)}},toFront:function(c){var b=this,a=b.zIndexParent,d=b.preventFocusOnActivate;if(a&&b.bringParentToFront!==false){a.toFront(true)}if(!Ext.isDefined(c)){c=!b.focusOnToFront}if(c){b.preventFocusOnActivate=true}if(b.zIndexManager.bringToFront(b,c)){if(!c){b.focus(false,true)}}b.preventFocusOnActivate=d;return b},setActive:function(b,c){var a=this;if(b){if(a.el.shadow&&!a.maximized){a.el.enableShadow(true)}if(!a.preventFocusOnActivate){a.focus(false,true)}a.fireEvent("activate",a)}else{if(a.isWindow&&c&&c.isWindow&&a.hideShadowOnDeactivate){a.el.disableShadow()}a.fireEvent("deactivate",a)}},toBack:function(){this.zIndexManager.sendToBack(this);return this},center:function(){var a=this,b;if(a.isVisible()){b=a.getAlignToXY(a.container,"c-c");a.setPagePosition(b)}else{a.needsCenter=true}return a},onFloatShow:function(){if(this.needsCenter){this.center()}delete this.needsCenter},syncShadow:function(){if(this.floating){this.el.sync(true)}},fitContainer:function(c){var g=this,e=g.floatParent,b=e?e.getTargetEl():g.container,a=b.getViewSize(false),d=e||b.dom!==document.body?[0,0]:b.getXY();a.x=d[0];a.y=d[1];g.setBox(a,c)}});Ext.define("Ext.Component",{alias:["widget.component","widget.box"],extend:Ext.AbstractComponent,mixins:{floating:Ext.util.Floating},statics:{DIRECTION_TOP:"top",DIRECTION_RIGHT:"right",DIRECTION_BOTTOM:"bottom",DIRECTION_LEFT:"left",VERTICAL_DIRECTION_Re:/^(?:top|bottom)$/,INVALID_ID_CHARS_Re:/[\.,\s]/g},resizeHandles:"all",floating:false,defaultAlign:"tl-bl?",toFrontOnShow:true,hideMode:"display",offsetsCls:Ext.baseCSSPrefix+"hide-offsets",bubbleEvents:[],defaultComponentLayoutType:"autocomponent",constructor:function(a){var b=this;a=a||{};if(a.initialConfig){if(a.isAction){b.baseAction=a}a=a.initialConfig}else{if(a.tagName||a.dom||Ext.isString(a)){a={applyTo:a,id:a.id||a}}}b.callParent([a]);if(b.baseAction){b.baseAction.addComponent(b)}},initComponent:function(){var a=this;a.callParent();if(a.listeners){a.on(a.listeners);a.listeners=null}a.enableBubble(a.bubbleEvents)},afterRender:function(){var a=this;a.callParent();if(!(a.x&&a.y)&&(a.pageX||a.pageY)){a.setPagePosition(a.pageX,a.pageY)}},setAutoScroll:function(a){var b=this;b.autoScroll=!!a;if(b.rendered){b.getOverflowEl().setStyle(b.getOverflowStyle())}b.updateLayout();return b},setOverflowXY:function(b,a){var c=this,d=arguments.length;if(d){c.overflowX=b||"";if(d>1){c.overflowY=a||""}}if(c.rendered){c.getOverflowEl().setStyle(c.getOverflowStyle())}c.updateLayout();return c},beforeRender:function(){var b=this,c=b.floating,a;if(c){b.addCls(Ext.baseCSSPrefix+"layer");a=c.cls;if(a){b.addCls(a)}}return b.callParent()},afterComponentLayout:function(){this.callParent(arguments);if(this.floating){this.onAfterFloatLayout()}},makeFloating:function(a){this.mixins.floating.constructor.call(this,a)},wrapPrimaryEl:function(a){if(this.floating){this.makeFloating(a)}else{this.callParent(arguments)}},initResizable:function(a){var b=this;a=Ext.apply({target:b,dynamic:false,constrainTo:b.constrainTo||(b.floatParent?b.floatParent.getTargetEl():null),handles:b.resizeHandles},a);a.target=b;b.resizer=new Ext.resizer.Resizer(a)},getDragEl:function(){return this.el},initDraggable:function(){var c=this,a=c.resizer&&c.resizer.el!==c.el?(c.resizerComponent=new Ext.Component({el:c.resizer.el,rendered:true,container:c.container})):c,b=Ext.applyIf({el:a.getDragEl(),constrainTo:c.constrain||c.draggable.constrain?c.constrainTo||(c.floatParent?c.floatParent.getTargetEl():c.container):undefined},c.draggable);if(c.constrain||c.constrainDelegate){b.constrain=c.constrain;b.constrainDelegate=c.constrainDelegate}c.dd=new Ext.util.ComponentDragger(a,b)},scrollBy:function(b,a,c){var d;if((d=this.getTargetEl())&&d.dom){d.scrollBy.apply(d,arguments)}},setLoading:function(c,d){var b=this,a={target:b};if(b.rendered){Ext.destroy(b.loadMask);b.loadMask=null;if(c!==false&&!b.collapsed){if(Ext.isObject(c)){Ext.apply(a,c)}else{if(Ext.isString(c)){a.msg=c}}if(d){Ext.applyIf(a,{useTargetEl:true})}b.loadMask=new Ext.LoadMask(a);b.loadMask.show()}}return b.loadMask},beforeSetPosition:function(){var b=this,c=b.callParent(arguments),a;if(c){a=b.adjustPosition(c.x,c.y);c.x=a.x;c.y=a.y}return c||null},afterSetPosition:function(b,a){this.onPosition(b,a);this.fireEvent("move",this,b,a)},showAt:function(a,d,b){var c=this;if(!c.rendered&&(c.autoRender||c.floating)){c.x=a;c.y=d;return c.show()}if(c.floating){c.setPosition(a,d,b)}else{c.setPagePosition(a,d,b)}c.show()},showBy:function(b,d,c){var a=this;if(a.floating&&b){a.show();if(a.rendered&&!a.hidden){a.alignTo(b,d||a.defaultAlign,c)}}return a},setPagePosition:function(a,g,b){var c=this,d,e;if(Ext.isArray(a)){g=a[1];a=a[0]}c.pageX=a;c.pageY=g;if(c.floating){if(c.isContainedFloater()){e=c.floatParent.getTargetEl().getViewRegion();if(Ext.isNumber(a)&&Ext.isNumber(e.left)){a-=e.left}if(Ext.isNumber(g)&&Ext.isNumber(e.top)){g-=e.top}}else{d=c.el.translateXY(a,g);a=d.x;g=d.y}c.setPosition(a,g,b)}else{d=c.el.translateXY(a,g);c.setPosition(d.x,d.y,b)}return c},isContainedFloater:function(){return this.floating&&this.floatParent},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getOuterSize:function(){var a=this.el;return{width:a.getWidth()+a.getMargin("lr"),height:a.getHeight()+a.getMargin("tb")}},adjustPosition:function(a,d){var b=this,c;if(b.isContainedFloater()){c=b.floatParent.getTargetEl().getViewRegion();a+=c.left;d+=c.top}return{x:a,y:d}},getPosition:function(a){var b=this,d,c=b.isContainedFloater(),e;if(a===true&&!c){return[b.getLocalX(),b.getLocalY()]}d=b.getXY();if(a===true&&c){e=b.floatParent.getTargetEl().getViewRegion();d[0]-=e.left;d[1]-=e.top}return d},getId:function(){var a=this,b;if(!a.id){b=a.getXType();if(b){b=b.replace(Ext.Component.INVALID_ID_CHARS_Re,"-")}else{b=Ext.name.toLowerCase()+"-comp"}a.id=b+"-"+a.getAutoId()}return a.id},show:function(d,a,b){var c=this,e=c.rendered;if(c.hierarchicallyHidden||c.floating&&!e&&c.isHierarchicallyHidden()){if(!e){c.initHierarchyEvents()}if(arguments.length>1){arguments[0]=null;c.pendingShow=arguments}else{c.pendingShow=true}}else{if(e&&c.isVisible()){if(c.toFrontOnShow&&c.floating){c.toFront()}}else{if(c.fireEvent("beforeshow",c)!==false){c.hidden=false;delete this.getHierarchyState().hidden;if(!e&&(c.autoRender||c.floating)){c.doAutoRender();e=c.rendered}if(e){c.beforeShow();c.onShow.apply(c,arguments);c.afterShow.apply(c,arguments)}}else{c.onShowVeto()}}}return c},onShowVeto:Ext.emptyFn,beforeShow:Ext.emptyFn,onShow:function(){var a=this;a.el.show();a.callParent(arguments);if(a.floating){if(a.maximized){a.fitContainer()}else{if(a.constrain){a.doConstrain()}}}},getAnimateTarget:function(a){a=a||this.animateTarget;if(a){a=a.isComponent?a.getEl():Ext.get(a)}return a||null},afterShow:function(h,b,e){var g=this,j=g.el,a,c,d;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){c={x:j.getX(),y:j.getY(),width:j.dom.offsetWidth,height:j.dom.offsetHeight};a={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};j.addCls(g.offsetsCls);d=g.ghost();d.el.stopAnimation();d.setX(-10000);g.ghostBox=c;d.el.animate({from:a,to:c,listeners:{afteranimate:function(){delete d.componentLayout.lastComponentSize;g.unghost();delete g.ghostBox;j.removeCls(g.offsetsCls);g.onShowComplete(b,e)}}})}else{g.onShowComplete(b,e)}g.fireHierarchyEvent("show")},onShowComplete:function(a,b){var c=this;if(c.floating){c.toFront();c.onFloatShow()}Ext.callback(a,b||c);c.fireEvent("show",c);delete c.hiddenByLayout},hide:function(e,b,c){var d=this,a;if(d.pendingShow){delete d.pendingShow}if(!(d.rendered&&!d.isVisible())){a=d.fireEvent("beforehide",d)!==false;if(d.hierarchicallyHidden||a){d.hidden=true;d.getHierarchyState().hidden=true;if(d.rendered){d.onHide.apply(d,arguments)}}}return d},onHide:function(j,a,e){var g=this,c,d,b,h=Ext.Element.getActiveElement();if(h===g.el||g.el.contains(h)){Ext.fly(h).blur()}j=g.getAnimateTarget(j);if(!g.ghost){j=null}if(j){b={x:j.getX(),y:j.getY(),width:j.dom.offsetWidth,height:j.dom.offsetHeight};c=g.ghost();c.el.stopAnimation();d=g.getSize();c.el.animate({to:b,listeners:{afteranimate:function(){delete c.componentLayout.lastComponentSize;c.el.hide();c.el.setSize(d);g.afterHide(a,e)}}})}g.el.hide();if(!j){g.afterHide(a,e)}},afterHide:function(a,b){var c=this;delete c.hiddenByLayout;Ext.AbstractComponent.prototype.onHide.call(c);Ext.callback(a,b||c);c.fireEvent("hide",c);c.fireHierarchyEvent("hide")},onDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.dd,a.resizer,a.proxy,a.proxyWrap,a.resizerComponent)}delete a.focusTask;a.callParent()},deleteMembers:function(){var b=arguments,a=b.length,c=0;for(;c<a;++c){delete this[b[c]]}},focus:function(e,c){var d=this,a,g,b;if(c){if(!d.focusTask){d.self.prototype.focusTask=new Ext.util.DelayedTask(d.focus)}d.focusTask.delay(Ext.isNumber(c)?c:10,null,d,[e,false]);return d}if(d.focusTask){d.focusTask.cancel()}if(d.rendered&&!d.isDestroyed&&d.isVisible(true)&&(a=d.getFocusEl())){if(a.isComponent){return a.focus(e,c)}if(g=a.dom){if(a.needsTabIndex()){g.tabIndex=-1}if(d.floating){b=d.container.dom.scrollTop}a.focus();if(e===true){g.select()}}if(d.floating){d.toFront(true);if(b!==undefined){d.container.dom.scrollTop=b}}}return d},cancelFocus:function(){var a=this.focusTask;if(a){a.cancel()}},blur:function(){var a;if(this.rendered&&(a=this.getFocusEl())){a.blur()}return this},getEl:function(){return this.el},getResizeEl:function(){return this.el},getPositionEl:function(){return this.el},getActionEl:function(){return this.el},getVisibilityEl:function(){return this.el},getRefOwner:function(){return this.ownerCt||this.floatParent},getBubbleTarget:function(){return this.getRefOwner()},getContentTarget:function(){return this.el},cloneConfig:function(c){c=c||{};var d=c.id||Ext.id(),a=Ext.applyIf(c,this.initialConfig),b;a.id=d;b=Ext.getClass(this);return new b(a)},getXType:function(){return this.self.xtype},findParentBy:function(a){var b;for(b=this.getBubbleTarget();b&&!a(b,this);b=b.getBubbleTarget()){}return b||null},findParentByType:function(a){return Ext.isFunction(a)?this.findParentBy(function(b){return b.constructor===a}):this.up(a)},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.getBubbleTarget()}return this},getProxy:function(){var a=this,b;if(!a.proxy){b=Ext.getBody();a.proxy=a.el.createProxy(Ext.baseCSSPrefix+"proxy-el",b,true)}return a.proxy},fireHierarchyEvent:function(a){this.hierarchyEventSource.fireEvent(a,this)},onAdded:function(){this.callParent(arguments);if(this.hierarchyEventSource.hasListeners.added){this.fireHierarchyEvent("added")}}},function(){this.hierarchyEventSource=this.prototype.hierarchyEventSource=new Ext.util.Observable({events:{hide:true,show:true,collapse:true,expand:true,added:true}})});Ext.define("Ext.ElementLoader",{mixins:{observable:Ext.util.Observable},statics:{Renderer:{Html:function(a,b,c){a.getTarget().update(b.responseText,c.scripts===true);return true}}},url:null,params:null,baseParams:null,autoLoad:false,target:null,loadMask:false,ajaxOptions:null,scripts:false,isLoader:true,constructor:function(b){var c=this,a;b=b||{};Ext.apply(c,b);c.setTarget(c.target);c.addEvents("beforeload","exception","load");c.mixins.observable.constructor.call(c);if(c.autoLoad){a=c.autoLoad;if(a===true){a={}}c.load(a)}},setTarget:function(b){var a=this;b=Ext.get(b);if(a.target&&a.target!=b){a.abort()}a.target=b},getTarget:function(){return this.target||null},abort:function(){var a=this.active;if(a!==undefined){Ext.Ajax.abort(a.request);if(a.mask){this.removeMask()}delete this.active}},removeMask:function(){this.target.unmask()},addMask:function(a){this.target.mask(a===true?null:a)},load:function(c){c=Ext.apply({},c);var e=this,a=Ext.isDefined(c.loadMask)?c.loadMask:e.loadMask,g=Ext.apply({},c.params),b=Ext.apply({},c.ajaxOptions),h=c.callback||e.callback,d=c.scope||e.scope||e;Ext.applyIf(b,e.ajaxOptions);Ext.applyIf(c,b);Ext.applyIf(g,e.params);Ext.apply(g,e.baseParams);Ext.applyIf(c,{url:e.url});Ext.apply(c,{scope:e,params:g,callback:e.onComplete});if(e.fireEvent("beforeload",e,c)===false){return}if(a){e.addMask(a)}e.active={options:c,mask:a,scope:d,callback:h,success:c.success||e.success,failure:c.failure||e.failure,renderer:c.renderer||e.renderer,scripts:Ext.isDefined(c.scripts)?c.scripts:e.scripts};e.active.request=Ext.Ajax.request(c);e.setOptions(e.active,c)},setOptions:Ext.emptyFn,onComplete:function(b,g,a){var d=this,e=d.active,c;if(e){c=e.scope;if(g){g=d.getRenderer(e.renderer).call(d,d,a,e)!==false}if(g){Ext.callback(e.success,c,[d,a,b]);d.fireEvent("load",d,a,b)}else{Ext.callback(e.failure,c,[d,a,b]);d.fireEvent("exception",d,a,b)}Ext.callback(e.callback,c,[d,g,a,b]);if(e.mask){d.removeMask()}}delete d.active},getRenderer:function(a){if(Ext.isFunction(a)){return a}return this.statics().Renderer.Html},startAutoRefresh:function(a,b){var c=this;c.stopAutoRefresh();c.autoRefresh=setInterval(function(){c.load(b)},a)},stopAutoRefresh:function(){clearInterval(this.autoRefresh);delete this.autoRefresh},isAutoRefreshing:function(){return Ext.isDefined(this.autoRefresh)},destroy:function(){var a=this;a.stopAutoRefresh();delete a.target;a.abort();a.clearListeners()}});Ext.define("Ext.ComponentLoader",{extend:Ext.ElementLoader,statics:{Renderer:{Data:function(a,b,d){var g=true;try{a.getTarget().update(Ext.decode(b.responseText))}catch(c){g=false}return g},Component:function(a,c,h){var j=true,g=a.getTarget(),b=[];try{b=Ext.decode(c.responseText)}catch(d){j=false}if(j){g.suspendLayouts();if(h.removeAll){g.removeAll()}g.add(b);g.resumeLayouts(true)}return j}}},target:null,loadMask:false,renderer:"html",setTarget:function(b){var a=this;if(Ext.isString(b)){b=Ext.getCmp(b)}if(a.target&&a.target!=b){a.abort()}a.target=b},removeMask:function(){this.target.setLoading(false)},addMask:function(a){this.target.setLoading(a)},setOptions:function(b,a){b.removeAll=Ext.isDefined(a.removeAll)?a.removeAll:this.removeAll},getRenderer:function(b){if(Ext.isFunction(b)){return b}var a=this.statics().Renderer;switch(b){case"component":return a.Component;case"data":return a.Data;default:return Ext.ElementLoader.Renderer.Html}}});Ext.define("Ext.layout.SizeModel",{constructor:function(c){var e=this,d=e.self,a=d.sizeModelsArray,b;Ext.apply(e,c);e[b=e.name]=true;e.fixed=!(e.auto=e.natural||e.shrinkWrap);a[e.ordinal=a.length]=d[b]=d.sizeModels[b]=e},statics:{sizeModelsArray:[],sizeModels:{}},calculated:false,configured:false,constrainedMax:false,constrainedMin:false,natural:false,shrinkWrap:false,calculatedFromConfigured:false,calculatedFromNatural:false,calculatedFromShrinkWrap:false,names:null},function(){var e=this,a=e.sizeModelsArray,c,b,h,g,d;new e({name:"calculated"});new e({name:"configured",names:{width:"width",height:"height"}});new e({name:"natural"});new e({name:"shrinkWrap"});new e({name:"calculatedFromConfigured",configured:true,names:{width:"width",height:"height"}});new e({name:"calculatedFromNatural",natural:true});new e({name:"calculatedFromShrinkWrap",shrinkWrap:true});new e({name:"constrainedMax",configured:true,constrained:true,names:{width:"maxWidth",height:"maxHeight"}});new e({name:"constrainedMin",configured:true,constrained:true,names:{width:"minWidth",height:"minHeight"}});new e({name:"constrainedDock",configured:true,constrained:true,constrainedByMin:true,names:{width:"dockConstrainedWidth",height:"dockConstrainedHeight"}});for(c=0,h=a.length;c<h;++c){d=a[c];d.pairsByHeightOrdinal=g=[];for(b=0;b<h;++b){g.push({width:d,height:a[b]})}}});Ext.define("Ext.layout.Layout",{isLayout:true,initialized:false,running:false,autoSizePolicy:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},statics:{layoutsByType:{},create:function(g,e){var l=Ext.ClassManager,c=this.layoutsByType,d,h,b,a,j,k;if(!g||typeof g==="string"){j=g||e;b={}}else{if(g.isLayout){return g}else{b=g;j=g.type||e}}if(!(a=c[j])){d="layout."+j;h=l.getNameByAlias(d);if(!h){k=true}a=l.get(h);if(k||!a){return l.instantiateByAlias(d,b||{})}c[j]=a}return new a(b)}},constructor:function(a){var b=this;b.id=Ext.id(null,b.type+"-");Ext.apply(b,a);b.layoutCount=0},beginLayout:Ext.emptyFn,beginLayoutCycle:function(c){var b=this,a=b.context,d;if(b.lastWidthModel!=c.widthModel){if(b.lastWidthModel){d=true}b.lastWidthModel=c.widthModel}if(b.lastHeightModel!=c.heightModel){if(b.lastWidthModel){d=true}b.lastHeightModel=c.heightModel}if(d){(a=c.context).clearTriggers(b,false);a.clearTriggers(b,true);b.triggerCount=0}},finishedLayout:function(a){this.lastWidthModel=a.widthModel;this.lastHeightModel=a.heightModel;this.ownerContext=null},redoLayout:Ext.emptyFn,undoLayout:Ext.emptyFn,getAnimatePolicy:function(){return this.animatePolicy},getItemSizePolicy:function(a){return this.autoSizePolicy},isItemBoxParent:function(a){return false},isItemLayoutRoot:function(d){var c=d.getSizeModel(),b=c.width,a=c.height;if(!d.componentLayout.lastComponentSize&&(b.calculated||a.calculated)){return false}return !b.shrinkWrap&&!a.shrinkWrap},isItemShrinkWrap:function(a){return a.shrinkWrap},isRunning:function(){return !!this.ownerContext},getItemsRenderTree:function(d,b){var h=d.length,e,g,c,a;if(h){a=[];for(e=0;e<h;++e){g=d[e];if(!g.rendered){if(b&&b[g.id]!==undefined){c=b[g.id]}else{this.configureItem(g);c=g.getRenderTree();if(b){b[g.id]=c}}if(c){a.push(c)}}}}return a},finishRender:Ext.emptyFn,finishRenderItems:function(e,a){var d=a.length,b,c;for(b=0;b<d;b++){c=a[b];if(c.rendering){c.finishRender(b);this.afterRenderItem(c)}}},renderChildren:function(){var b=this,a=b.getLayoutItems(),c=b.getRenderTarget();b.renderItems(a,c)},renderItems:function(a,g){var e=this,d=a.length,b=0,c;if(d){Ext.suspendLayouts();for(;b<d;b++){c=a[b];if(c&&!c.rendered){e.renderItem(c,g,b)}else{if(!e.isValidParent(c,g,b)){e.moveItem(c,g,b)}else{e.configureItem(c)}}}Ext.resumeLayouts(true)}},isValidParent:function(g,h,b){var c=g.el?g.el.dom:Ext.getDom(g),e=h&&h.dom||h,a=c.parentNode,d;if(a){d=a.className;if(d&&d.indexOf(Ext.baseCSSPrefix+"resizable-wrap")!==-1){c=c.parentNode}}if(c&&e){if(typeof b=="number"){b=this.getPositionOffset(b);return c===e.childNodes[b]}return c.parentNode===e}return false},getPositionOffset:function(a){return a},configureItem:function(a){a.ownerLayout=this},renderItem:function(c,d,a){var b=this;if(!c.rendered){b.configureItem(c);c.render(d,a);b.afterRenderItem(c)}},moveItem:function(b,c,a){c=c.dom||c;if(typeof a=="number"){a=c.childNodes[a]}c.insertBefore(b.el.dom,a||null);b.container=Ext.get(c);this.configureItem(b)},onContentChange:function(){this.owner.updateLayout();return true},initLayout:function(){this.initialized=true},setOwner:function(a){this.owner=a},getLayoutItems:function(){return[]},afterRenderItem:Ext.emptyFn,onAdd:Ext.emptyFn,onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,afterRemove:function(e){var d=this,c=e.el,b=d.owner,a;if(e.rendered){a=[].concat(d.itemCls||[]);if(b.itemCls){a=Ext.Array.push(a,b.itemCls)}if(a.length){c.removeCls(a)}}delete e.ownerLayout},destroy:function(){var a=this,b;if(a.targetCls){b=a.getTarget();if(b){b.removeCls(a.targetCls)}}a.onDestroy()},sortWeightedItems:function(a,d){for(var b=0,c=a.length;b<c;++b){a[b].$i=b}Ext.Array.sort(a,function(g,e){var h=e.weight-g.weight;if(!h){h=g.$i-e.$i;if(g[d]){h=-h}}return h});for(b=0;b<c;++b){delete a[b].$i}}},function(){var a=this;a.prototype.sizeModels=a.sizeModels=Ext.layout.SizeModel.sizeModels});Ext.define("Ext.layout.container.Container",{alias:["layout.container"],extend:Ext.layout.Layout,alternateClassName:"Ext.layout.ContainerLayout",mixins:{elementCt:Ext.util.ElementContainer},type:"container",beginCollapse:Ext.emptyFn,beginExpand:Ext.emptyFn,animatePolicy:null,childEls:["overflowPadderEl"],renderTpl:["{%this.renderBody(out,values)%}"],usesContainerHeight:true,usesContainerWidth:true,usesHeight:true,usesWidth:true,constructor:function(){this.callParent(arguments);this.mixins.elementCt.constructor.call(this)},destroy:function(){this.callParent();this.mixins.elementCt.destroy.call(this)},beginLayout:function(a){this.callParent(arguments);a.targetContext=a.paddingContext=a.getEl("getTarget",this);this.cacheChildItems(a)},beginLayoutCycle:function(c,a){var b=this;b.callParent(arguments);if(a){if(b.usesContainerHeight){++c.consumersContainerHeight}if(b.usesContainerWidth){++c.consumersContainerWidth}}},cacheChildItems:function(e){var c=e.context,g=[],a=this.getVisibleItems(),d=a.length,b;e.childItems=g;e.visibleItems=a;for(b=0;b<d;++b){g.push(c.getCmp(a[b]))}},cacheElements:function(){var a=this.owner;this.applyChildEls(a.el,a.id)},configureItem:function(c){var b=this,d=b.itemCls,a=b.owner.itemCls,e;c.ownerLayout=b;if(d){e=typeof d==="string"?[d]:d}if(a){e=Ext.Array.push(e||[],a)}if(e){c.addCls(e)}},doRenderBody:function(a,b){this.renderItems(a,b);this.renderContent(a,b)},doRenderContainer:function(b,e){var c=e.$comp.layout,a=c.getRenderTpl(),d=c.getRenderData();a.applyOut(d,b)},doRenderItems:function(b,d){var c=d.$layout,a=c.getRenderTree();if(a){Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var b=this,c,a;b.callParent();b.cacheElements();c=b.getRenderTarget();a=b.getLayoutItems();b.finishRenderItems(c,a)},notifyOwner:function(){this.owner.afterLayout(this)},getContainerSize:function(b,g){var c=b.targetContext,e=c.getFrameInfo(),k=b.paddingContext.getPaddingInfo(),j=0,l=0,d,h,a,m;if(!b.widthModel.shrinkWrap){++l;a=g?c.getDomProp("width"):c.getProp("width");d=typeof a=="number";if(d){++j;a-=e.width+k.width;if(a<0){a=0}}}if(!b.heightModel.shrinkWrap){++l;m=g?c.getDomProp("height"):c.getProp("height");h=typeof m=="number";if(h){++j;m-=e.height+k.height;if(m<0){m=0}}}return{width:a,height:m,needed:l,got:j,gotAll:j==l,gotWidth:d,gotHeight:h}},getPositionOffset:function(a){if(!this.createsInnerCt){var b=this.owner.itemNodeOffset;if(b){a+=b}}return a},getLayoutItems:function(){var a=this.owner,b=a&&a.items;return b&&b.items||[]},getRenderData:function(){var a=this.owner;return{$comp:a,$layout:this,ownerId:a.id}},getRenderedItems:function(){var e=this,h=e.getRenderTarget(),a=e.getLayoutItems(),d=a.length,g=[],b,c;for(b=0;b<d;b++){c=a[b];if(c.rendered&&e.isValidParent(c,h,b)){g.push(c)}}return g},getRenderTarget:function(){return this.owner.getTargetEl()},getElementTarget:function(){return this.getRenderTarget()},getRenderTpl:function(){var a=this,b=Ext.XTemplate.getTpl(this,"renderTpl");if(!b.renderContent){a.owner.setupRenderTpl(b)}return b},getRenderTree:function(){var a,c=this.owner.items,d,b={};do{d=c.generation;a=this.getItemsRenderTree(this.getLayoutItems(),b)}while(c.generation!==d);return a},getScrollbarsNeeded:function(c,j,b,h){var a=Ext.getScrollbarSize(),e=typeof c=="number",k=typeof j=="number",g=0,d=0;if(!a.width){return 0}if(k&&j<h){d=2;c-=a.width}if(e&&c<b){g=1;if(!d&&k){j-=a.height;if(j<h){d=2}}}return d+g},getTarget:function(){return this.owner.getTargetEl()},getVisibleItems:function(){var g=this.getRenderTarget(),b=this.getLayoutItems(),e=b.length,a=[],c,d;for(c=0;c<e;c++){d=b[c];if(d.rendered&&this.isValidParent(d,g,c)&&d.hidden!==true){a.push(d)}}return a},setupRenderTpl:function(b){var a=this;b.renderBody=a.doRenderBody;b.renderContainer=a.doRenderContainer;b.renderItems=a.doRenderItems},getContentTarget:function(){return this.owner.getDefaultContentTarget()}});Ext.define("Ext.layout.container.Auto",{alias:["layout.auto","layout.autocontainer"],extend:Ext.layout.container.Container,type:"autocontainer",childEls:["outerCt","innerCt","clearEl"],reserveScrollbar:false,managePadding:true,manageOverflow:false,lastOverflowAdjust:{width:0,height:0},renderTpl:["{% if (!(Ext.isIEQuirks || Ext.isIE7m)) { %}",'<span id="{ownerId}-outerCt" style="display:table;">','<div id="{ownerId}-innerCt" style="display:table-cell;height:100%;','vertical-align:top;{%this.renderPadding(out, values)%}" class="{innerCtCls}">',"{%this.renderBody(out,values)%}","</div>","</span>","{% } else if (values.shrinkWrapWidth) { %}",'<table id="{ownerId}-outerCt" class="'+Ext.baseCSSPrefix+'table-plain">',"<tr>",'<td id="{ownerId}-innerCt" style="vertical-align:top;padding:0;','{%this.renderPadding(out, values)%}" class="{innerCtCls}">',"{%this.renderBody(out,values)%}",'<div id="{ownerId}-clearEl" class="',Ext.baseCSSPrefix,'clear"','role="presentation"></div>',"</td>","</tr>","</table>","{% } else { %}",'<div id="{ownerId}-outerCt" style="zoom:1;{%this.renderPadding(out, values)%}">','<div id="{ownerId}-innerCt" style="zoom:1;height:100%;" class="{innerCtCls}">',"{%this.renderBody(out,values)%}",'<div id="{ownerId}-clearEl" class="',Ext.baseCSSPrefix,'clear"','role="presentation"></div>',"</div>","</div>","{% values.$layout.isShrinkWrapTpl = false %}","{% } %}"],tableTpl:['<table id="{ownerId}-outerCt" class="'+Ext.baseCSSPrefix+'table-plain">',"<tr>",'<td id="{ownerId}-innerCt" style="vertical-align:top;padding:0;','{%this.renderPadding(out, values)%}" class="{innerCtCls}">',"</td>","</tr>","</table>"],isShrinkWrapTpl:true,beginLayout:function(e){var d=this,a,b,c,g;d.callParent(arguments);d.initContextItems(e);if(!d.isShrinkWrapTpl){if(e.widthModel.shrinkWrap){g=true}if(Ext.isStrict&&Ext.isIE7){c=d.getOverflowXStyle(e);if((c==="auto"||c==="scroll")&&e.paddingContext.getPaddingInfo().right){g=true}}if(g){d.insertTableCt(e)}}if(!d.isShrinkWrapTpl&&Ext.isIE7&&Ext.isStrict&&!d.clearElHasPadding){a=e.paddingContext.getPaddingInfo().bottom;b=d.getOverflowYStyle(e);if(a&&(b==="auto"||b==="scroll")){d.clearEl.setStyle("height",a);d.clearElHasPadding=true}}},beforeLayoutCycle:function(c){var a=this.owner,d=a.hierarchyState,b=a.hierarchyStateInner;if(!d||d.invalid){d=a.getHierarchyState();b=a.hierarchyStateInner}if(c.widthModel.shrinkWrap&&this.isShrinkWrapTpl){b.inShrinkWrapTable=true}else{delete b.inShrinkWrapTable}},beginLayoutCycle:function(e){var l=this,b=l.outerCt,k=l.lastOuterCtWidth||"",j=l.lastOuterCtHeight||"",m=l.lastOuterCtTableLayout||"",n,g,h,o,c,a,d;l.callParent(arguments);h=o=c="";if(!e.widthModel.shrinkWrap&&l.isShrinkWrapTpl){if(Ext.isIE7m&&Ext.isStrict){g=l.getOverflowYStyle(e);if(g==="auto"||g==="scroll"){a=true}}if(!a){h="100%"}d=l.owner.hierarchyStateInner;n=l.getOverflowXStyle(e);c=d.inShrinkWrapTable||n==="auto"||n==="scroll"?"":"fixed"}if(!e.heightModel.shrinkWrap&&!Ext.supports.PercentageHeightOverflowBug){o="100%"}if(h!==k||l.hasOuterCtPxWidth){b.setStyle("width",h);l.lastOuterCtWidth=h;l.hasOuterCtPxWidth=false}if(c!==m){b.setStyle("table-layout",c);l.lastOuterCtTableLayout=c}if(o!==j||l.hasOuterCtPxHeight){b.setStyle("height",o);l.lastOuterCtHeight=o;l.hasOuterCtPxHeight=false}if(l.hasInnerCtPxHeight){l.innerCt.setStyle("height","");l.hasInnerCtPxHeight=false}e.state.overflowAdjust=l.lastOverflowAdjust},calculate:function(c){var a=this,b=c.state,e=a.getContainerSize(c,true),d=b.calculatedItems||(b.calculatedItems=a.calculateItems?a.calculateItems(c,e):true);a.setCtSizeIfNeeded(c,e);if(d&&c.hasDomProp("containerChildrenSizeDone")){a.calculateContentSize(c);if(e.gotAll){if(a.manageOverflow&&!c.state.secondPass&&!a.reserveScrollbar){a.calculateOverflow(c,e)}return}}a.done=false},calculateContentSize:function(g){var e=this,a=(g.widthModel.shrinkWrap?1:0)|(g.heightModel.shrinkWrap?2:0),c=a&1||undefined,h=a&2||undefined,d=0,b=g.props;if(c){if(isNaN(b.contentWidth)){++d}else{c=undefined}}if(h){if(isNaN(b.contentHeight)){++d}else{h=undefined}}if(d){if(c&&!g.setContentWidth(e.measureContentWidth(g))){e.done=false}if(h&&!g.setContentHeight(e.measureContentHeight(g))){e.done=false}}},calculateOverflow:function(c){var h=this,b,k,a,g,e,d,j;e=h.getOverflowXStyle(c)==="auto";d=h.getOverflowYStyle(c)==="auto";if(e||d){a=Ext.getScrollbarSize();j=c.overflowContext.el.dom;g=0;if(j.scrollWidth>j.clientWidth){g|=1}if(j.scrollHeight>j.clientHeight){g|=2}b=d&&g&2?a.width:0;k=e&&g&1?a.height:0;if(b!==h.lastOverflowAdjust.width||k!==h.lastOverflowAdjust.height){h.done=false;c.invalidate({state:{overflowAdjust:{width:b,height:k},overflowState:g,secondPass:true}})}}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},doRenderPadding:function(b,d){var c=d.$layout,a=d.$layout.owner,e=a[a.contentPaddingProperty];if(c.managePadding&&e){b.push("padding:",Ext.Element.unitizeBox(e))}},finishedLayout:function(b){var a=this.innerCt;this.callParent(arguments);if(Ext.isIEQuirks||Ext.isIE8m){a.repaint()}if(Ext.isOpera){a.setStyle("position","relative");a.dom.scrollWidth;a.setStyle("position","")}},getContainerSize:function(b,c){var a=this.callParent(arguments),d=b.state.overflowAdjust;if(d){a.width-=d.width;a.height-=d.height}return a},getRenderData:function(){var a=this.owner,b=this.callParent();if((Ext.isIEQuirks||Ext.isIE7m)&&(a.shrinkWrap&1||a.floating&&!a.width)){b.shrinkWrapWidth=true}return b},getRenderTarget:function(){return this.innerCt},getElementTarget:function(){return this.innerCt},getOverflowXStyle:function(a){return a.overflowXStyle||(a.overflowXStyle=this.owner.scrollFlags.overflowX||a.overflowContext.getStyle("overflow-x"))},getOverflowYStyle:function(a){return a.overflowYStyle||(a.overflowYStyle=this.owner.scrollFlags.overflowY||a.overflowContext.getStyle("overflow-y"))},initContextItems:function(c){var b=this,d=c.target,a=b.owner.customOverflowEl;c.outerCtContext=c.getEl("outerCt",b);c.innerCtContext=c.getEl("innerCt",b);if(a){c.overflowContext=c.getEl(a)}else{c.overflowContext=c.targetContext}if(d[d.contentPaddingProperty]!==undefined){c.paddingContext=b.isShrinkWrapTpl?c.innerCtContext:c.outerCtContext}},initLayout:function(){var c=this,b=Ext.getScrollbarSize().width,a=c.owner;c.callParent();if(b&&c.manageOverflow&&!c.hasOwnProperty("lastOverflowAdjust")){if(a.autoScroll||c.reserveScrollbar){c.lastOverflowAdjust={width:b,height:0}}}},insertTableCt:function(b){var h=this,a=h.owner,c=0,e,g,k,d,j;e=Ext.XTemplate.getTpl(this,"tableTpl");e.renderPadding=h.doRenderPadding;h.outerCt.dom.removeChild(h.innerCt.dom);g=document.createDocumentFragment();k=h.innerCt.dom.childNodes;d=k.length;for(;c<d;c++){g.appendChild(k[0])}j=h.getTarget();j.dom.innerHTML=e.apply({$layout:h,ownerId:h.owner.id});j.down("td").dom.appendChild(g);h.applyChildEls(a.el,a.id);h.isShrinkWrapTpl=true;b.removeEl(h.outerCt);b.removeEl(h.innerCt);h.initContextItems(b)},measureContentHeight:function(b){var a=this.outerCt.getHeight(),c=b.target;if(this.managePadding&&c[c.contentPaddingProperty]===undefined){a+=b.targetContext.getPaddingInfo().height}return a},measureContentWidth:function(b){var a=this.outerCt.getWidth(),c=b.target;if(this.managePadding&&c[c.contentPaddingProperty]===undefined){a+=b.targetContext.getPaddingInfo().width}return a},setCtSizeIfNeeded:function(d,o){var u=this,m=o.width,j=o.height,g=d.paddingContext.getPaddingInfo(),k=u.getTarget(),e=u.getOverflowXStyle(d),l=u.getOverflowYStyle(d),p=e==="auto"||e==="scroll",n=l==="auto"||l==="scroll",q=Ext.getScrollbarSize(),s=u.isShrinkWrapTpl,b=u.manageOverflow,a,t,h,c;if(m&&!d.widthModel.shrinkWrap&&(Ext.isIE7m&&Ext.isStrict&&s&&n||Ext.isIEQuirks&&!s&&!p)){if(!b){if(n&&k.dom.scrollHeight>k.dom.clientHeight){m-=q.width}}d.outerCtContext.setProp("width",m+g.width);u.hasOuterCtPxWidth=true}if(j&&!d.heightModel.shrinkWrap){if(Ext.supports.PercentageHeightOverflowBug){t=true}if(Ext.isIE8&&Ext.isStrict||Ext.isIE7m&&Ext.isStrict&&s){h=true;c=!Ext.isIE8}if((t||h)&&p&&k.dom.scrollWidth>k.dom.clientWidth){j-=q.height}if(t){d.outerCtContext.setProp("height",j+g.height);u.hasOuterCtPxHeight=true}if(h){if(c){j+=g.height}d.innerCtContext.setProp("height",j);u.hasInnerCtPxHeight=true}}if(Ext.isIE7&&Ext.isStrict&&!s&&l==="auto"){a=e==="auto"?"overflow-x":"overflow-y";k.setStyle(a,"hidden");k.setStyle(a,"auto")}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadding=this.doRenderPadding},getContentTarget:function(){return this.innerCt}});Ext.define("Ext.ZIndexManager",{alternateClassName:"Ext.WindowGroup",statics:{zBase:9000},constructor:function(a){var b=this;b.list={};b.zIndexStack=[];b.front=null;if(a){if(a.isContainer){a.on("resize",b._onContainerResize,b);b.zseed=Ext.Number.from(b.rendered?a.getEl().getStyle("zIndex"):undefined,b.getNextZSeed());b.targetEl=a.getTargetEl();b.container=a}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();b.targetEl=Ext.get(a)}}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();Ext.onDocumentReady(function(){b.targetEl=Ext.getBody()})}},getNextZSeed:function(){return Ext.ZIndexManager.zBase+=10000},setBase:function(b){this.zseed=b;var a=this.assignZIndices();this._activateLast();return a},assignZIndices:function(){var c=this.zIndexStack,b=c.length,e=0,h=this.zseed,d,g;for(;e<b;e++){d=c[e];if(d&&!d.hidden){h=d.setZIndex(h);if(d.modal){g=d}}}if(g){this._showModalMask(g)}return h},_setActiveChild:function(b,a){var c=this.front,d=b.preventFocusOnActivate;if(b!==c){if(c&&!c.destroying){c.setActive(false,b)}this.front=b;if(b&&b!=a){b.preventFocusOnActivate=b.preventFocusOnActivate||a&&(a.preventFocusOnActivate||!a.focusOnToFront);b.setActive(true);if(b.modal){this._showModalMask(b)}b.preventFocusOnActivate=d}}},onComponentHide:function(a){this._activateLast()},_activateLast:function(){var d=this,a=d.zIndexStack,c=a.length-1,b;for(;c>=0&&a[c].hidden;--c){}if(b=a[c]){d._setActiveChild(b,d.front);if(b.modal){return}}else{if(d.front&&!d.front.destroying){d.front.setActive(false)}d.front=null}for(;c>=0;--c){b=a[c];if(b.isVisible()&&b.modal){d._showModalMask(b);return}}d._hideModalMask()},_showModalMask:function(b){var d=this,h=b.el.getStyle("zIndex")-4,c=b.floatParent?b.floatParent.getTargetEl():b.container,a=d.mask,g=d.maskShim,e;if(!a){if(Ext.isIE6){g=d.maskShim=Ext.getBody().createChild({tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"});g.setVisibilityMode(Ext.Element.DISPLAY)}a=d.mask=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"mask",style:"height:0;width:0"});a.setVisibilityMode(Ext.Element.DISPLAY);a.on("click",d._onMaskClick,d)}a.maskTarget=c;e=d.getMaskBox();if(g){g.setStyle("zIndex",h);g.show();g.setBox(e)}a.setStyle("zIndex",h);a.show();a.setBox(e)},_hideModalMask:function(){var b=this.mask,a=this.maskShim;if(b&&b.isVisible()){b.maskTarget=undefined;b.hide();if(a){a.hide()}}},_onMaskClick:function(){if(this.front){this.front.focus()}},getMaskBox:function(){var a=this.mask.maskTarget;if(a.dom===document.body){return{height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth),x:0,y:0}}else{return a.getBox()}},_onContainerResize:function(){var c=this,b=c.mask,a=c.maskShim,d;if(b&&b.isVisible()){b.hide();if(a){a.hide()}d=c.getMaskBox();if(a){a.setSize(d);a.show()}b.setSize(d);b.show()}},register:function(b){var c=this,a=b.afterHide;if(b.zIndexManager){b.zIndexManager.unregister(b)}b.zIndexManager=c;c.list[b.id]=b;c.zIndexStack.push(b);b.afterHide=function(){a.apply(b,arguments);c.onComponentHide(b)}},unregister:function(a){var b=this,c=b.list;delete a.zIndexManager;if(c&&c[a.id]){delete c[a.id];delete a.afterHide;Ext.Array.remove(b.zIndexStack,a);b._activateLast()}},get:function(a){return a.isComponent?a:this.list[a]},bringToFront:function(b,d){var c=this,a=false,e=c.zIndexStack;b=c.get(b);if(b!==c.front){Ext.Array.remove(e,b);if(b.preventBringToFront){e.unshift(b)}else{e.push(b)}c.assignZIndices();if(!d){c._activateLast()}a=true;c.front=b;if(b.modal){c._showModalMask(b)}}return a},sendToBack:function(a){var b=this;a=b.get(a);Ext.Array.remove(b.zIndexStack,a);b.zIndexStack.unshift(a);b.assignZIndices();this._activateLast();return a},hideAll:function(){var b=this.list,a,c;for(c in b){if(b.hasOwnProperty(c)){a=b[c];if(a.isComponent&&a.isVisible()){a.hide()}}}},hide:function(){var d=0,b=this.zIndexStack,a=b.length,c;this.tempHidden=[];for(;d<a;d++){c=b[d];if(c.isVisible()){this.tempHidden.push(c);c.el.hide();c.hidden=true}}},show:function(){var c=0,d=this.tempHidden,a=d?d.length:0,b;for(;c<a;c++){b=d[c];b.el.show();b.hidden=false;b.setPosition(b.x,b.y)}delete this.tempHidden},getActive:function(){return this.front},getBy:function(g,e){var h=[],d=0,b=this.zIndexStack,a=b.length,c;for(;d<a;d++){c=b[d];if(g.call(e||c,c)!==false){h.push(c)}}return h},each:function(c,b){var d=this.list,e,a;for(e in d){if(d.hasOwnProperty(e)){a=d[e];if(a.isComponent&&c.call(b||a,a)===false){return}}}},eachBottomUp:function(g,e){var b=this.zIndexStack,d=0,a=b.length,c;for(;d<a;d++){c=b[d];if(c.isComponent&&g.call(e||c,c)===false){return}}},eachTopDown:function(e,d){var a=this.zIndexStack,c=a.length,b;for(;c-->0;){b=a[c];if(b.isComponent&&e.call(d||b,b)===false){return}}},destroy:function(){var b=this,c=b.list,a,d;for(d in c){if(c.hasOwnProperty(d)){a=c[d];if(a.isComponent){a.destroy()}}}delete b.zIndexStack;delete b.list;delete b.container;delete b.targetEl}},function(){Ext.WindowManager=Ext.WindowMgr=new this});Ext.define("Ext.layout.component.Component",{extend:Ext.layout.Layout,type:"component",isComponentLayout:true,nullBox:{},usesContentHeight:true,usesContentWidth:true,usesHeight:true,usesWidth:true,beginLayoutCycle:function(c,q){var l=this,b=l.owner,e=c.ownerCtContext,g=c.heightModel,h=c.widthModel,j=b.el.dom===document.body,d=b.lastBox||l.nullBox,o=b.el.lastBox||l.nullBox,a=!j,n,p,m,k;l.callParent(arguments);if(q){if(l.usesContentWidth){++c.consumersContentWidth}if(l.usesContentHeight){++c.consumersContentHeight}if(l.usesWidth){++c.consumersWidth}if(l.usesHeight){++c.consumersHeight}if(e&&!e.hasRawContent){n=b.ownerLayout;if(n.usesWidth){++c.consumersWidth}if(n.usesHeight){++c.consumersHeight}}}if(h.configured){m=h.names.width;if(!j){a=q?b[m]!==o.width:h.constrained}c.setWidth(b[m],a)}else{if(c.isTopLevel){if(h.calculated){p=d.width;c.setWidth(p,p!=o.width)}p=d.x;c.setProp("x",p,p!=o.x)}}if(g.configured){k=g.names.height;if(!j){a=q?b[k]!==o.height:g.constrained}c.setHeight(b[k],a)}else{if(c.isTopLevel){if(g.calculated){p=d.height;c.setHeight(p,p!=o.height)}p=d.y;c.setProp("y",p,p!=o.y)}}},finishedLayout:function(b){var h=this,l=b.children,a=h.owner,e,c,k,d,g,j;if(l){e=l.length;for(c=0;c<e;c++){k=l[c];k.el.lastBox=k.props}}b.previousSize=h.lastComponentSize;h.lastComponentSize=a.el.lastBox=g=b.props;d=a.lastBox||(a.lastBox={});d.x=g.x;d.y=g.y;d.width=g.width;d.height=g.height;d.invalid=false;h.callParent(arguments)},notifyOwner:function(d){var c=this,a=c.lastComponentSize,e=d.previousSize,b=[a.width,a.height];if(e){b.push(e.width,e.height)}c.owner.afterComponentLayout.apply(c.owner,b)},getTarget:function(){return this.owner.el},getRenderTarget:function(){return this.owner.el},cacheTargetInfo:function(b){var a=this,d=a.targetInfo,c;if(!d){c=b.getEl("getTarget",a);a.targetInfo=d={padding:c.getPaddingInfo(),border:c.getBorderInfo()}}return d},measureAutoDimensions:function(n,j){var w=this,a=w.owner,s=a.layout,d=n.heightModel,h=n.widthModel,c=n.boxParent,o=n.isBoxParent,b=n.props,k,x={gotWidth:false,gotHeight:false,isContainer:k=!n.hasRawContent},u=j||3,q,e,l=0,g=0,m,p,t;if(h.shrinkWrap&&n.consumersContentWidth){++l;q=!(u&1);if(k){if(q){x.contentWidth=0;x.gotWidth=true;++g}else{if((x.contentWidth=n.getProp("contentWidth"))!==undefined){x.gotWidth=true;++g}}}else{p=b.contentWidth;if(typeof p=="number"){x.contentWidth=p;x.gotWidth=true;++g}else{if(q){m=true}else{if(!n.hasDomProp("containerChildrenSizeDone")){m=false}else{if(o||!c||c.widthModel.shrinkWrap){m=true}else{m=c.hasDomProp("width")}}}if(m){if(q){t=0}else{if(s&&s.measureContentWidth){t=s.measureContentWidth(n)}else{t=w.measureContentWidth(n)}}if(!isNaN(x.contentWidth=t)){n.setContentWidth(t,true);x.gotWidth=true;++g}}}}}else{if(h.natural&&n.consumersWidth){++l;p=b.width;if(typeof p=="number"){x.width=p;x.gotWidth=true;++g}else{if(o||!c){m=true}else{m=c.hasDomProp("width")}if(m){if(!isNaN(x.width=w.measureOwnerWidth(n))){n.setWidth(x.width,false);x.gotWidth=true;++g}}}}}if(d.shrinkWrap&&n.consumersContentHeight){++l;e=!(u&2);if(k){if(e){x.contentHeight=0;x.gotHeight=true;++g}else{if((x.contentHeight=n.getProp("contentHeight"))!==undefined){x.gotHeight=true;++g}}}else{p=b.contentHeight;if(typeof p=="number"){x.contentHeight=p;x.gotHeight=true;++g}else{if(e){m=true}else{if(!n.hasDomProp("containerChildrenSizeDone")){m=false}else{if(a.noWrap){m=true}else{if(!h.shrinkWrap){m=(n.bodyContext||n).hasDomProp("width")}else{if(o||!c||c.widthModel.shrinkWrap){m=true}else{m=c.hasDomProp("width")}}}}}if(m){if(e){t=0}else{if(s&&s.measureContentHeight){t=s.measureContentHeight(n)}else{t=w.measureContentHeight(n)}}if(!isNaN(x.contentHeight=t)){n.setContentHeight(t,true);x.gotHeight=true;++g}}}}}else{if(d.natural&&n.consumersHeight){++l;p=b.height;if(typeof p=="number"){x.height=p;x.gotHeight=true;++g}else{if(o||!c){m=true}else{m=c.hasDomProp("width")}if(m){if(!isNaN(x.height=w.measureOwnerHeight(n))){n.setHeight(x.height,false);x.gotHeight=true;++g}}}}}if(c){n.onBoxMeasured()}x.gotAll=g==l;return x},measureContentWidth:function(a){return a.el.getWidth()-a.getFrameInfo().width},measureContentHeight:function(a){return a.el.getHeight()-a.getFrameInfo().height},measureOwnerHeight:function(a){return a.el.getHeight()},measureOwnerWidth:function(a){return a.el.getWidth()}});Ext.define("Ext.layout.component.Auto",{alias:"layout.autocomponent",extend:Ext.layout.component.Component,type:"autocomponent",setHeightInDom:false,setWidthInDom:false,waitForOuterHeightInDom:false,waitForOuterWidthInDom:false,beginLayoutCycle:function(d,a){var c=this,g=c.lastWidthModel,e=c.lastHeightModel,b=c.owner.el;c.callParent(arguments);if(g&&g.fixed&&d.widthModel.shrinkWrap){b.setWidth(null)}if(e&&e.fixed&&d.heightModel.shrinkWrap){b.setHeight(null)}},calculate:function(h){var g=this,e=g.measureAutoDimensions(h),b=h.heightModel,c=h.widthModel,d,a;if(e.gotWidth){if(c.shrinkWrap){g.publishOwnerWidth(h,e.contentWidth)}else{if(g.publishInnerWidth){g.publishInnerWidth(h,e.width)}}}else{if(!c.auto&&g.publishInnerWidth){d=g.waitForOuterWidthInDom?h.getDomProp("width"):h.getProp("width");if(d===undefined){g.done=false}else{g.publishInnerWidth(h,d)}}}if(e.gotHeight){if(b.shrinkWrap){g.publishOwnerHeight(h,e.contentHeight)}else{if(g.publishInnerHeight){g.publishInnerHeight(h,e.height)}}}else{if(!b.auto&&g.publishInnerHeight){a=g.waitForOuterHeightInDom?h.getDomProp("height"):h.getProp("height");if(a===undefined){g.done=false}else{g.publishInnerHeight(h,a)}}}if(!e.gotAll){g.done=false}},calculateOwnerHeightFromContentHeight:function(b,a){return a+b.getFrameInfo().height},calculateOwnerWidthFromContentWidth:function(b,a){return a+b.getFrameInfo().width},publishOwnerHeight:function(j,g){var e=this,b=e.owner,a=e.calculateOwnerHeightFromContentHeight(j,g),h,d,c;if(isNaN(a)){e.done=false}else{h=Ext.Number.constrain(a,b.minHeight,b.maxHeight);if(h==a){d=e.setHeightInDom}else{c=e.sizeModels[h<a?"constrainedMax":"constrainedMin"];a=h;if(j.heightModel.calculatedFromShrinkWrap){j.heightModel=c}else{j.invalidate({heightModel:c})}}j.setHeight(a,d)}},publishOwnerWidth:function(h,b){var g=this,a=g.owner,e=g.calculateOwnerWidthFromContentWidth(h,b),j,d,c;if(isNaN(e)){g.done=false}else{j=Ext.Number.constrain(e,a.minWidth,a.maxWidth);if(j==e){d=g.setWidthInDom}else{c=g.sizeModels[j<e?"constrainedMax":"constrainedMin"];e=j;if(h.widthModel.calculatedFromShrinkWrap){h.widthModel=c}else{h.invalidate({widthModel:c})}}h.setWidth(e,d)}}});Ext.define("Ext.container.AbstractContainer",{extend:Ext.Component,renderTpl:"{%this.renderContainer(out,values)%}",suspendLayout:false,autoDestroy:true,defaultType:"panel",detachOnRemove:true,isContainer:true,layoutCounter:0,baseCls:Ext.baseCSSPrefix+"container",defaultLayoutType:"auto",initComponent:function(){var a=this;a.addEvents("afterlayout","beforeadd","beforeremove","add","remove");a.callParent();a.getLayout();a.initItems()},initItems:function(){var b=this,a=b.items;b.items=new Ext.util.AbstractMixedCollection(false,b.getComponentId);b.floatingItems=new Ext.util.MixedCollection(false,b.getComponentId);if(a){if(!Ext.isArray(a)){a=[a]}b.add(a)}},getFocusEl:function(){return this.getTargetEl()},finishRenderChildren:function(){this.callParent();var a=this.getLayout();if(a){a.finishRender()}},beforeRender:function(){var b=this,a=b.getLayout(),c;b.callParent();if(!a.initialized){a.initLayout()}c=a.targetCls;if(c){b.applyTargetCls(c)}},applyTargetCls:function(a){this.addCls(a)},afterComponentLayout:function(){var b=this.floatingItems.items,a=b.length,d,c;this.callParent(arguments);for(d=0;d<a;d++){c=b[d];if(!c.rendered&&c.autoShow){c.show()}}},onPosition:function(){this.callParent(arguments);this.repositionFloatingItems()},onResize:function(){this.callParent(arguments);this.repositionFloatingItems()},repositionFloatingItems:function(){var b=this.floatingItems.items,a=b.length,d,c;for(d=0;d<a;d++){c=b[d];if(c.el&&!c.hidden){c.setPosition(c.x,c.y)}}},setupRenderTpl:function(a){this.callParent(arguments);this.getLayout().setupRenderTpl(a)},getDefaultContentTarget:function(){return this.el},getContentTarget:function(){return this.getLayout().getContentTarget()},setLayout:function(b){var a=this.layout;if(a&&a.isLayout&&a!=b){a.setOwner(null)}this.layout=b;b.setOwner(this)},getLayout:function(){var a=this;if(!a.layout||!a.layout.isLayout){a.setLayout(Ext.layout.Layout.create(a.layout,a.self.prototype.layout||a.defaultLayoutType))}return a.layout},doLayout:function(){this.updateLayout();return this},afterLayout:function(b){var a=this;++a.layoutCounter;if(a.hasListeners.afterlayout){a.fireEvent("afterlayout",a,b)}},prepareItems:function(b,d){if(Ext.isArray(b)){b=b.slice()}else{b=[b]}var g=this,c=0,a=b.length,e;for(;c<a;c++){e=b[c];if(e==null){Ext.Array.erase(b,c,1);--c;--a}else{if(d){e=this.applyDefaults(e)}e.isContained=g;b[c]=g.lookupComponent(e);delete e.isContained;delete b[c].isContained}}return b},applyDefaults:function(a){var b=this.defaults;if(b){if(Ext.isFunction(b)){b=b.call(this,a)}if(Ext.isString(a)){a=Ext.ComponentManager.get(a)}Ext.applyIf(a,b)}return a},lookupComponent:function(a){return typeof a=="string"?Ext.ComponentManager.get(a):Ext.ComponentManager.create(a,this.defaultType)},getComponentId:function(a){if(a.getItemId){return a.getItemId()}},add:function(){var j=this,g=Ext.Array.slice(arguments),d=typeof g[0]=="number"?g.shift():-1,c=j.getLayout(),l,h,b,a,m,k,e;if(g.length==1&&Ext.isArray(g[0])){h=g[0];l=true}else{h=g}e=h=j.prepareItems(h,true);a=h.length;if(j.rendered){Ext.suspendLayouts()}if(!l&&a==1){e=h[0]}for(b=0;b<a;b++){m=h[b];k=d<0?j.items.length:d+b;if(m.floating){j.floatingItems.add(m);m.onAdded(j,k);if(j.hasListeners.add){j.fireEvent("add",j,m,k)}}else{if((!j.hasListeners.beforeadd||j.fireEvent("beforeadd",j,m,k)!==false)&&j.onBeforeAdd(m)!==false){j.items.insert(k,m);m.onAdded(j,k);j.onAdd(m,k);c.onAdd(m,k);if(j.hasListeners.add){j.fireEvent("add",j,m,k)}}}}j.updateLayout();if(j.rendered){Ext.resumeLayouts(true)}return e},onAdd:Ext.emptyFn,onRemove:Ext.emptyFn,insert:function(b,a){return this.add(b,a)},move:function(b,d){var a=this.items,c;c=a.removeAt(b);if(c===false){return false}a.insert(d,c);this.onMove(c,b,d);this.updateLayout();return c},onMove:Ext.emptyFn,onBeforeAdd:function(a){if(a.ownerCt&&a.ownerCt!==this){a.ownerCt.remove(a,false)}},remove:function(a,b){var d=this,e=d.getComponent(a);if(e&&(!d.hasListeners.beforeremove||d.fireEvent("beforeremove",d,e)!==false)){d.doRemove(e,b);if(d.hasListeners.remove){d.fireEvent("remove",d,e)}if(!d.destroying&&!e.floating){d.updateLayout()}}return e},doRemove:function(c,b){b=b===true||b!==false&&this.autoDestroy;var g=this,e=g.layout,a=e&&g.rendered,d=c.destroying||b,h=c.floating;if(h){g.floatingItems.remove(c)}else{g.items.remove(c)}if(a&&!h){if(e.running){Ext.AbstractComponent.cancelLayout(c,d)}e.onRemove(c,d)}c.onRemoved(d);g.onRemove(c,d);if(b){c.destroy()}else{if(a&&!h){e.afterRemove(c)}if(g.detachOnRemove&&c.rendered){g.detachComponent(c)}}},detachComponent:function(a){Ext.getDetachedBody().appendChild(a.getEl())},removeAll:function(c){var h=this,e=h.items.items.slice().concat(h.floatingItems.items),b=[],d=0,a=e.length,g;h.suspendLayouts();for(;d<a;d++){g=e[d];h.remove(g,c);if(g.ownerCt!==h){b.push(g)}}h.resumeLayouts(!!a);return b},getRefItems:function(c){var h=this,d=h.items.items,b=d.length,e=0,g,a=[];for(;e<b;e++){g=d[e];a.push(g);if(c&&g.getRefItems){a.push.apply(a,g.getRefItems(true))}}a.push.apply(a,h.floatingItems.items);return a},cascade:function(l,m,a){var k=this,e=k.items?k.items.items:[],g=e.length,d=0,j,h=a?a.concat(k):[k],b=h.length-1;if(l.apply(m||k,h)!==false){for(;d<g;d++){j=e[d];if(j.cascade){j.cascade(l,m,a)}else{h[b]=j;l.apply(m||e,h)}}}return this},isAncestor:function(a){while(a){if(a.ownerCt===this){return true}a=a.ownerCt}},getComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}var b=this.items.get(a);if(!b&&typeof a!="number"){b=this.floatingItems.get(a)}return b},query:function(a){a=a||"*";return Ext.ComponentQuery.query(a,this)},queryBy:function(g,e){var c=[],b=this.getRefItems(true),d=0,a=b.length,h;for(;d<a;++d){h=b[d];if(g.call(e||h,h)!==false){c.push(h)}}return c},queryById:function(a){return this.down("#"+a)},child:function(a){if(a&&a.isComponent){a="#"+Ext.escapeId(a.getItemId())}a=a||"";return this.query("> "+a)[0]||null},contains:function(c,b){var a=false;if(b){this.cascade(function(d){if(d.contains&&d.contains(c)){a=true;return false}});return a}else{return this.items.contains(c)||this.floatingItems.contains(c)}},nextChild:function(e,b){var c=this,a,d=c.items.indexOf(e);if(d!==-1){a=b?Ext.ComponentQuery(b,c.items.items.slice(d+1)):c.items.getAt(d+1);if(!a&&c.ownerCt){a=c.ownerCt.nextChild(c,b)}}return a},prevChild:function(e,b){var c=this,a,d=c.items.indexOf(e);if(d!==-1){a=b?Ext.ComponentQuery(b,c.items.items.slice(d+1)):c.items.getAt(d+1);if(!a&&c.ownerCt){a=c.ownerCt.nextChild(c,b)}}return a},down:function(a){if(a&&a.isComponent){a="#"+Ext.escapeId(a.getItemId())}a=a||"";return this.query(a)[0]||null},enable:function(){this.callParent(arguments);var d=this.getChildItemsToDisable(),c=d.length,b,a;for(a=0;a<c;a++){b=d[a];if(b.resetDisable){b.enable()}}return this},disable:function(){this.callParent(arguments);var d=this.getChildItemsToDisable(),c=d.length,b,a;for(a=0;a<c;a++){b=d[a];if(b.resetDisable!==false&&!b.disabled){b.disable();b.resetDisable=true}}return this},getChildItemsToDisable:function(){return this.query("[isFormField],button")},beforeDestroy:function(){var b=this,a=b.items,d=b.floatingItems,e;if(a){while(e=a.first()){b.doRemove(e,true)}}if(d){while(e=d.first()){b.doRemove(e,true)}}Ext.destroy(b.layout);b.callParent()}});Ext.define("Ext.container.Container",{extend:Ext.container.AbstractContainer,alias:"widget.container",alternateClassName:"Ext.Container",getChildByElement:function(e,a){var h,c,b=0,d=this.getRefItems(),g=d.length;e=Ext.getDom(e);for(;b<g;b++){h=d[b];c=h.getEl();if(c&&(c.dom===e||c.contains(e))){return a&&h.getChildByElement?h.getChildByElement(e,a):h}}return null}});Ext.define("Ext.layout.container.Editor",{alias:"layout.editor",extend:Ext.layout.container.Container,autoSizeDefault:{width:"field",height:"field"},sizePolicies:{$:{$:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},boundEl:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1}},boundEl:{$:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},boundEl:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}}},getItemSizePolicy:function(d){var c=this,a=c.owner.autoSize,b=a&&a.width,e=c.sizePolicies;e=e[b]||e.$;b=a&&a.height;e=e[b]||e.$;return e},calculate:function(g){var e=this,b=e.owner,a=b.autoSize,d,c;if(a===true){a=e.autoSizeDefault}if(a){d=e.getDimension(b,a.width,"getWidth",b.width);c=e.getDimension(b,a.height,"getHeight",b.height)}g.childItems[0].setSize(d,c);g.setWidth(d);g.setHeight(c);g.setContentSize(d||b.field.getWidth(),c||b.field.getHeight())},getDimension:function(a,b,d,c){switch(b){case"boundEl":return a.boundEl[d]();case"field":return undefined;default:return c}}});Ext.define("Ext.Editor",{extend:Ext.container.Container,alias:"widget.editor",layout:"editor",allowBlur:true,revertInvalid:true,value:"",alignment:"c-c?",offsets:[0,0],shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:true,cancelOnEsc:true,updateEl:false,focusOnToFront:false,hidden:true,baseCls:Ext.baseCSSPrefix+"editor",initComponent:function(){var a=this,b=a.field=Ext.ComponentManager.create(a.field,"textfield");Ext.apply(b,{inEditor:true,msgTarget:b.msgTarget=="title"?"title":"qtip"});a.mon(b,{scope:a,blur:{fn:a.onFieldBlur,delay:1},specialkey:a.onSpecialKey});if(b.grow){a.mon(b,"autosize",a.onFieldAutosize,a,{delay:1})}a.floating={constrain:a.constrain};a.items=b;a.callParent(arguments);a.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onFieldAutosize:function(){this.updateLayout()},afterRender:function(b,a){var c=this,e=c.field,d=e.inputEl;c.callParent(arguments);if(d){d.dom.name="";if(c.swallowKeys){d.swallowEvent(["keypress","keydown"])}}},onSpecialKey:function(g,e){var d=this,b=e.getKey(),a=d.completeOnEnter&&b==e.ENTER,c=d.cancelOnEsc&&b==e.ESC;if(a||c){e.stopEvent();Ext.defer(function(){if(a){d.completeEdit()}else{d.cancelEdit()}if(g.triggerBlur){g.triggerBlur(e)}},10)}d.fireEvent("specialkey",d,g,e)},startEdit:function(a,c){var b=this,d=b.field;b.completeEdit();b.boundEl=Ext.get(a);c=Ext.isDefined(c)?c:Ext.String.trim(b.boundEl.dom.innerText||b.boundEl.dom.innerHTML);if(!b.rendered){if(b.ownerCt){b.parentEl=b.ownerCt.el;b.parentEl.position()}b.render(b.parentEl||document.body)}if(b.fireEvent("beforestartedit",b,b.boundEl,c)!==false){b.startValue=c;b.show();d.suspendEvents();d.reset();d.setValue(c);d.resumeEvents();b.realign(true);d.focus(false,10);if(d.autoSize){d.autoSize()}b.editing=true}},realign:function(a){var b=this;if(a===true){b.updateLayout()}b.alignTo(b.boundEl,b.alignment,b.offsets)},completeEdit:function(a){var b=this,d=b.field,c;if(!b.editing){return}if(d.assertValue){d.assertValue()}c=b.getValue();if(!d.isValid()){if(b.revertInvalid!==false){b.cancelEdit(a)}return}if(String(c)===String(b.startValue)&&b.ignoreNoChange){b.hideEdit(a);return}if(b.fireEvent("beforecomplete",b,c,b.startValue)!==false){c=b.getValue();if(b.updateEl&&b.boundEl){b.boundEl.update(c)}b.hideEdit(a);b.fireEvent("complete",b,c,b.startValue)}},onShow:function(){var a=this;a.callParent(arguments);if(a.hideEl!==false){a.boundEl.hide()}a.fireEvent("startedit",a,a.boundEl,a.startValue)},cancelEdit:function(a){var c=this,b=c.startValue,e=c.field,d;if(c.editing){d=c.getValue();e.suspendEvents();c.setValue(b);e.resumeEvents();c.hideEdit(a);c.fireEvent("canceledit",c,d,b)}},hideEdit:function(a){if(a!==true){this.editing=false;this.hide()}},onFieldBlur:function(d,c){var a=this,b=Ext.Element.getActiveElement();if(a.allowBlur===true&&a.editing&&a.selectSameEditor!==true){a.completeEdit()}if(Ext.fly(b).isFocusable()||b.getAttribute("tabIndex")){b.focus()}},onHide:function(){var a=this,b=a.field;if(a.editing){a.completeEdit();return}if(b.hasFocus){b.blur()}if(b.collapse){b.collapse()}if(a.hideEl!==false){a.boundEl.show()}a.callParent(arguments)},setValue:function(a){this.field.setValue(a)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){var a=this;Ext.destroy(a.field);delete a.field;delete a.parentEl;delete a.boundEl;a.callParent(arguments)}});Ext.define("Ext.util.KeyMap",{alternateClassName:"Ext.KeyMap",eventName:"keydown",constructor:function(a){var b=this;if(arguments.length!==1||typeof a==="string"||a.dom||a.tagName||a===document||a.isComponent){b.legacyConstructor.apply(b,arguments);return}Ext.apply(b,a);b.bindings=[];if(!b.target.isComponent){b.target=Ext.get(b.target)}if(b.binding){b.addBinding(b.binding)}else{if(a.key){b.addBinding(a)}}b.enable()},legacyConstructor:function(b,d,a){var c=this;Ext.apply(c,{target:Ext.get(b),eventName:a||c.eventName,bindings:[]});if(d){c.addBinding(d)}c.enable()},addBinding:function(e){var c=this,d=e.key,b,a;if(c.processing){c.bindings=bindings.slice(0)}if(Ext.isArray(e)){for(b=0,a=e.length;b<a;b++){c.addBinding(e[b])}return}c.bindings.push(Ext.apply({keyCode:c.processKeys(d)},e))},removeBinding:function(g){var e=this,h=e.bindings,a=h.length,b,d,c;if(e.processing){e.bindings=h.slice(0)}c=e.processKeys(g.key);for(b=0;b<a;++b){d=h[b];if(d.fn===g.fn&&d.scope===g.scope){if(g.alt==d.alt&&g.crtl==d.crtl&&g.shift==d.shift){if(Ext.Array.equals(d.keyCode,c)){Ext.Array.erase(e.bindings,b,1);return}}}}},processKeys:function(g){var h=false,d,e,b,a,c;if(Ext.isString(g)){e=[];b=g.toUpperCase();for(c=0,a=b.length;c<a;++c){e.push(b.charCodeAt(c))}g=e;h=true}if(!Ext.isArray(g)){g=[g]}if(!h){for(c=0,a=g.length;c<a;++c){d=g[c];if(Ext.isString(d)){g[c]=d.toUpperCase().charCodeAt(0)}}}return g},handleTargetEvent:function(){var a=/input|textarea/i;return function(g){var e=this,j,c,b,h,d;if(e.enabled){j=e.bindings;c=0;b=j.length;g=e.processEvent.apply(e||e.processEventScope,arguments);if(e.ignoreInputFields){h=g.target;d=h.contentEditable;if(a.test(h.tagName)||d===""||d==="true"){return}}if(!g.getKey){return g}e.processing=true;for(;c<b;++c){e.processBinding(j[c],g)}e.processing=false}}}(),processEvent:Ext.identityFn,processBinding:function(g,a){if(this.checkModifiers(g,a)){var h=a.getKey(),k=g.fn||g.handler,l=g.scope||this,j=g.keyCode,b=g.defaultEventAction,c,e,d=new Ext.EventObjectImpl(a);for(c=0,e=j.length;c<e;++c){if(h===j[c]){if(k.call(l,h,a)!==true&&b){d[b]()}break}}}},checkModifiers:function(j,g){var d=["shift","ctrl","alt"],c=0,a=d.length,h,b;for(;c<a;++c){b=d[c];h=j[b];if(!(h===undefined||h===g[b+"Key"])){return false}}return true},on:function(b,d,c){var h,a,e,g;if(Ext.isObject(b)&&!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})},un:function(b,d,c){var h,a,e,g;if(Ext.isObject(b)&&!Ext.isArray(b)){h=b.key;a=b.shift;e=b.ctrl;g=b.alt}else{h=b}this.removeBinding({key:h,shift:a,ctrl:e,alt:g,fn:d,scope:c})},isEnabled:function(){return this.enabled},enable:function(){var a=this;if(!a.enabled){a.target.on(a.eventName,a.handleTargetEvent,a);a.enabled=true}},disable:function(){var a=this;if(a.enabled){a.target.removeListener(a.eventName,a.handleTargetEvent,a);a.enabled=false}},setDisabled:function(a){if(a){this.disable()}else{this.enable()}},destroy:function(c){var a=this,b=a.target;a.bindings=[];a.disable();if(c===true){if(b.isComponent){b.destroy()}else{b.remove()}}delete a.target}});Ext.define("Ext.util.KeyNav",{alternateClassName:"Ext.KeyNav",statics:{keyOptions:{left:37,right:39,up:38,down:40,space:32,pageUp:33,pageDown:34,del:46,backspace:8,home:36,end:35,enter:13,esc:27,tab:9}},constructor:function(a){var b=this;if(arguments.length===2){b.legacyConstructor.apply(b,arguments);return}b.setConfig(a)},legacyConstructor:function(b,a){this.setConfig(Ext.apply({target:b},a))},setConfig:function(b){var e=this,c={target:b.target,ignoreInputFields:b.ignoreInputFields,eventName:e.getKeyEvent("forceKeyDown" in b?b.forceKeyDown:e.forceKeyDown,b.eventName)},g,a,j,d,h;if(e.map){e.map.destroy()}if(b.processEvent){c.processEvent=b.processEvent;c.processEventScope=b.processEventScope||e}if(b.keyMap){g=e.map=b.keyMap}else{g=e.map=new Ext.util.KeyMap(c);e.destroyKeyMap=true}a=Ext.util.KeyNav.keyOptions;j=b.scope||e;for(d in a){if(a.hasOwnProperty(d)){if(h=b[d]){if(typeof h==="function"){h={handler:h,defaultEventAction:b.defaultEventAction!==undefined?b.defaultEventAction:e.defaultEventAction}}g.addBinding({key:a[d],handler:Ext.Function.bind(e.handleEvent,h.scope||j,h.handler||h.fn,true),defaultEventAction:h.defaultEventAction!==undefined?h.defaultEventAction:e.defaultEventAction})}}}g.disable();if(!b.disabled){g.enable()}},handleEvent:function(c,b,a){return a.call(this,b)},disabled:false,defaultEventAction:"stopEvent",forceKeyDown:false,eventName:"keypress",destroy:function(a){if(this.destroyKeyMap){this.map.destroy(a)}delete this.map},enable:function(){this.map.enable();this.disabled=false},disable:function(){this.map.disable();this.disabled=true},setDisabled:function(a){this.map.setDisabled(a);this.disabled=a},getKeyEvent:function(b,a){if(b||Ext.EventManager.useKeyDown&&!a){return"keydown"}else{return a||this.eventName}}});Ext.define("Ext.FocusManager",{singleton:true,alternateClassName:["Ext.FocusMgr"],mixins:{observable:Ext.util.Observable},enabled:false,focusElementCls:Ext.baseCSSPrefix+"focus-element",focusFrameCls:Ext.baseCSSPrefix+"focus-frame",whitelist:["textfield"],constructor:function(a){var b=this,c=Ext.ComponentQuery;b.mixins.observable.constructor.call(b,a);b.addEvents("beforecomponentfocus","componentfocus","disable","enable");b.focusTask=new Ext.util.DelayedTask(b.handleComponentFocus,b);Ext.override(Ext.AbstractComponent,{onFocus:function(){this.callParent(arguments);if(b.enabled&&this.hasFocus){Array.prototype.unshift.call(arguments,this);b.onComponentFocus.apply(b,arguments)}},onBlur:function(){this.callParent(arguments);if(b.enabled&&!this.hasFocus){Array.prototype.unshift.call(arguments,this);b.onComponentBlur.apply(b,arguments)}},onDestroy:function(){this.callParent(arguments);if(b.enabled){Array.prototype.unshift.call(arguments,this);b.onComponentDestroy.apply(b,arguments)}}});Ext.override(Ext.Component,{afterHide:function(){this.callParent(arguments);if(b.enabled){Array.prototype.unshift.call(arguments,this);b.onComponentHide.apply(b,arguments)}}});b.keyNav=new Ext.util.KeyNav(Ext.getDoc(),{disabled:true,scope:b,backspace:b.focusLast,enter:b.navigateIn,esc:b.navigateOut,tab:b.navigateSiblings,space:b.navigateIn,del:b.focusLast,left:b.navigateSiblings,right:b.navigateSiblings,down:b.navigateSiblings,up:b.navigateSiblings});b.focusData={};b.subscribers=new Ext.util.HashMap;b.focusChain={};Ext.apply(c.pseudos,{nextFocus:function(g,e,j){j=j||1;e=parseInt(e,10);var d=g.length,h=e,k;for(;;){if((h+=j)>=d){h=0}else{if(h<0){h=d-1}}if(h===e){return[]}if((k=g[h]).isFocusable()){return[k]}}return[]},prevFocus:function(e,d){return this.nextFocus(e,d,-1)},root:function(e){var d=e.length,h=[],g=0,j;for(;g<d;g++){j=e[g];if(!j.ownerCt){h.push(j)}}return h}})},addXTypeToWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.addXTypeToWhitelist,a);return}if(!Ext.Array.contains(a.whitelist,b)){a.whitelist.push(b)}},clearComponent:function(a){clearTimeout(this.cmpFocusDelay);if(!a.isDestroyed){a.blur()}},disable:function(){var a=this;if(!a.enabled){return}delete a.options;a.enabled=false;a.removeDOM();a.keyNav.disable();a.fireEvent("disable",a)},enable:function(a){var b=this;if(a===true){a={focusFrame:true}}b.options=a=a||{};if(b.enabled){return}b.enabled=true;b.initDOM(a);b.keyNav.enable();b.focusEl.focus();delete b.focusedCmp;b.fireEvent("enable",b)},focusLast:function(b){var a=this;if(a.isWhitelisted(a.focusedCmp)){return true}if(a.previousFocusedCmp){a.previousFocusedCmp.focus()}},getRootComponents:function(){var b=Ext.ComponentQuery,a=b.query(":focusable:root:not([floating])"),c=b.query(":focusable:root[floating]");c.sort(function(e,d){return e.el.getZIndex()>d.el.getZIndex()});return c.concat(a)},initDOM:function(c){var g=this,b=g.focusFrameCls,e=Ext.ComponentQuery.query("{getFocusEl()}:not([focusListenerAdded])"),d=0,a=e.length;if(!Ext.isReady){return Ext.onReady(g.initDOM,g)}for(;d<a;d++){e[d].addFocusListener()}if(!g.focusEl){g.focusEl=Ext.getBody();g.focusEl.dom.tabIndex=-1}if(!g.focusFrame&&c.focusFrame){g.focusFrame=Ext.getBody().createChild({cls:b,children:[{cls:b+"-top"},{cls:b+"-bottom"},{cls:b+"-left"},{cls:b+"-right"}],style:"top: -100px; left: -100px;"});g.focusFrame.setVisibilityMode(Ext.Element.DISPLAY);g.focusFrame.hide().setLocalXY(0,0)}},isWhitelisted:function(a){return a&&Ext.Array.some(this.whitelist,function(b){return a.isXType(b)})},navigateIn:function(g){var c=this,a=c.focusedCmp,b,d;if(c.isWhitelisted(a)){return true}if(!a){b=c.getRootComponents()[0];if(b){if(b.getFocusEl()===c.focusEl){c.focusEl.blur()}b.focus()}}else{d=a.hasFocus?Ext.ComponentQuery.query(">:focusable",a)[0]:a;if(d){d.focus()}else{if(Ext.isFunction(a.onClick)){g.button=0;a.onClick(g);if(a.isVisible(true)){a.focus()}else{c.navigateOut()}}}}},navigateOut:function(c){var b=this,a;if(!b.focusedCmp||!(a=b.focusedCmp.up(":focusable"))){b.focusEl.focus()}else{a.focus()}return true},navigateSiblings:function(j,b,p){var k=this,a=b||k,q=j.getKey(),g=Ext.EventObject,l=j.shiftKey||q==g.LEFT||q==g.UP,c=q==g.LEFT||q==g.RIGHT||q==g.UP||q==g.DOWN,h=l?"prev":"next",o,d,n,m;n=a.focusedCmp&&a.focusedCmp.comp||a.focusedCmp;if(!n&&!p){return true}if(c&&k.isWhitelisted(n)){return true}if(!n||n.is(":root")){m=k.getRootComponents()}else{p=p||n.up();if(p){m=p.getRefItems()}}if(m){o=n?Ext.Array.indexOf(m,n):-1;d=Ext.ComponentQuery.query(":"+h+"Focus("+o+")",m)[0];if(d&&n!==d){d.focus();return d}}},onComponentBlur:function(b,c){var a=this;if(a.focusedCmp===b){a.previousFocusedCmp=b;delete a.focusedCmp}if(a.focusFrame){a.focusFrame.hide()}},onComponentFocus:function(d,g){var c=this,a=c.focusChain,b;if(!d.isFocusable()){c.clearComponent(d);if(a[d.id]){return}b=d.up();if(b){a[d.id]=true;b.focus()}return}c.focusChain={};c.focusTask.delay(10,null,null,[d,d.getFocusEl()])},handleComponentFocus:function(m,h){var k=this,p,a,g,o,b,l,d,e,c,n,j;if(k.fireEvent("beforecomponentfocus",k,m,k.previousFocusedCmp)===false){k.clearComponent(m);return}k.focusedCmp=m;if(k.shouldShowFocusFrame(m)){p="."+k.focusFrameCls+"-";a=k.focusFrame;g=(h.dom?h:h.el).getBox();o=g.top;b=g.left;l=g.width;d=g.height;e=a.child(p+"top");c=a.child(p+"bottom");n=a.child(p+"left");j=a.child(p+"right");e.setWidth(l).setLocalXY(b,o);c.setWidth(l).setLocalXY(b,o+d-2);n.setHeight(d-2).setLocalXY(b,o+2);j.setHeight(d-2).setLocalXY(b+l-2,o+2);a.show()}k.fireEvent("componentfocus",k,m,k.previousFocusedCmp)},onComponentHide:function(e){var d=this,b=false,a=d.focusedCmp,c;if(a){b=e.hasFocus||e.isContainer&&e.isAncestor(d.focusedCmp)}d.clearComponent(e);if(b&&(c=e.up(":focusable"))){c.focus()}else{d.focusEl.focus()}},onComponentDestroy:function(){},removeDOM:function(){var a=this;if(a.enabled||a.subscribers.length){return}Ext.destroy(a.focusFrame);delete a.focusEl;delete a.focusFrame},removeXTypeFromWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.removeXTypeFromWhitelist,a);return}Ext.Array.remove(a.whitelist,b)},setupSubscriberKeys:function(a,g){var e=this,d=a.getFocusEl(),c=g.scope,b={backspace:e.focusLast,enter:e.navigateIn,esc:e.navigateOut,scope:e},h=function(j){if(e.focusedCmp===a){return e.navigateSiblings(j,e,a)}else{return e.navigateSiblings(j)}};Ext.iterate(g,function(k,j){b[k]=function(m){var l=h(m);if(Ext.isFunction(j)&&j.call(c||a,m,l)===true){return true}return l}},e);return new Ext.util.KeyNav(d,b)},shouldShowFocusFrame:function(c){var b=this,a=b.options||{};if(!b.focusFrame||!c){return false}if(a.focusFrame){return true}if(b.focusData[c.id].focusFrame){return true}return false}});Ext.define("Ext.Img",{extend:Ext.Component,alias:["widget.image","widget.imagecomponent"],autoEl:"img",baseCls:Ext.baseCSSPrefix+"img",src:"",alt:"",title:"",imgCls:"",initComponent:function(){if(this.glyph){this.autoEl="div"}this.callParent()},getElConfig:function(){var e=this,b=e.callParent(),g=Ext._glyphFontFamily,d=e.glyph,a,c;if(e.autoEl=="img"){a=b}else{if(e.glyph){if(typeof d==="string"){c=d.split("@");d=c[0];g=c[1]}b.html="&#"+d+";";if(g){b.style="font-family:"+g}}else{b.cn=[a={tag:"img",id:e.id+"-img"}]}}if(a){if(e.imgCls){a.cls=(a.cls?a.cls+" ":"")+e.imgCls}a.src=e.src||Ext.BLANK_IMAGE_URL}if(e.alt){(a||b).alt=e.alt}if(e.title){(a||b).title=e.title}return b},onRender:function(){var b=this,a;b.callParent(arguments);a=b.el;b.imgEl=b.autoEl=="img"?a:a.getById(b.id+"-img")},onDestroy:function(){Ext.destroy(this.imgEl);this.imgEl=null;this.callParent()},setSrc:function(c){var a=this,b=a.imgEl;a.src=c;if(b){b.dom.src=c||Ext.BLANK_IMAGE_URL}},setGlyph:function(c){var b=this,d=Ext._glyphFontFamily,a,e;if(c!=b.glyph){if(typeof c==="string"){a=c.split("@");c=a[0];d=a[1]}e=b.el.dom;e.innerHTML="&#"+c+";";if(d){e.style="font-family:"+d}}}});Ext.define("Ext.util.Bindable",{bindStore:function(b,c,a){a=a||"store";var d=this,e=d[a];if(!c&&e){d.onUnbindStore(e,c,a);if(b!==e&&e.autoDestroy){e.destroyStore()}else{d.unbindStoreListeners(e)}}if(b){b=Ext.data.StoreManager.lookup(b);d.bindStoreListeners(b);d.onBindStore(b,c,a)}d[a]=b||null;return d},getStore:function(){return this.store},unbindStoreListeners:function(a){var b=this.storeListeners;if(b){a.un(b)}},bindStoreListeners:function(a){var c=this,b=Ext.apply({},c.getStoreListeners(a));if(!b.scope){b.scope=c}c.storeListeners=b;a.on(b)},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn});Ext.define("Ext.LoadMask",{extend:Ext.Component,alias:"widget.loadmask",mixins:{floating:Ext.util.Floating,bindable:Ext.util.Bindable},msg:"Loading...",msgCls:Ext.baseCSSPrefix+"mask-loading",maskCls:Ext.baseCSSPrefix+"mask",useMsg:true,useTargetEl:false,baseCls:Ext.baseCSSPrefix+"mask-msg",childEls:["msgEl","msgTextEl"],renderTpl:['<div id="{id}-msgEl" class="{[values.$comp.msgCls]} ',Ext.baseCSSPrefix,'mask-msg-inner{childElCls}">','<div id="{id}-msgTextEl" class="',Ext.baseCSSPrefix,"mask-msg-text",'{childElCls}"></div>',"</div>"],floating:{shadow:"frame"},focusOnToFront:false,bringParentToFront:false,constructor:function(b){var c=this,a;if(arguments.length===2){a=b;b=arguments[1]}else{a=b.target}if(!a.isComponent){a=Ext.get(a);this.isElement=true}c.ownerCt=a;if(!this.isElement){c.bindComponent(a)}c.callParent([b]);if(c.store){c.bindStore(c.store,true)}},bindComponent:function(a){var c=this,b={scope:this,resize:c.sizeMask,added:c.onComponentAdded,removed:c.onComponentRemoved};if(a.floating){b.move=c.sizeMask;c.activeOwner=a}else{if(a.ownerCt){c.onComponentAdded(a.ownerCt)}else{c.preventBringToFront=true}}c.mon(a,b);c.mon(c.hierarchyEventSource,{show:c.onContainerShow,hide:c.onContainerHide,expand:c.onContainerExpand,collapse:c.onContainerCollapse,scope:c})},onComponentAdded:function(a){var b=this;delete b.activeOwner;b.floatParent=a;if(!a.floating){a=a.up("[floating]")}if(a){b.activeOwner=a;b.mon(a,"move",b.sizeMask,b)}else{b.preventBringToFront=true}a=b.floatParent.ownerCt;if(b.rendered&&b.isVisible()&&a){b.floatOwner=a;b.mon(a,"afterlayout",b.sizeMask,b,{single:true})}},onComponentRemoved:function(a){var c=this,d=c.activeOwner,b=c.floatOwner;if(d){c.mun(d,"move",c.sizeMask,c)}if(b){c.mun(b,"afterlayout",c.sizeMask,c)}delete c.activeOwner;delete c.floatOwner},afterRender:function(){this.callParent(arguments);this.container=this.floatParent.getContentTarget()},onContainerShow:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerHide:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},onContainerExpand:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerCollapse:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},isActiveContainer:function(a){return this.isDescendantOf(a)},onComponentHide:function(){var a=this;if(a.rendered&&a.isVisible()){a.hide();a.showNext=true}},onComponentShow:function(){if(this.showNext){this.show()}delete this.showNext},sizeMask:function(){var a=this,b;if(a.rendered&&a.isVisible()){a.center();b=a.getMaskTarget();a.getMaskEl().show().setSize(b.getSize()).alignTo(b,"tl-tl")}},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);a=c.store;if(a&&a.isLoading()){c.onBeforeLoad()}},getStoreListeners:function(b){var d=this.onLoad,c=this.onBeforeLoad,a={cachemiss:c,cachefilled:d};if(!b.proxy.isSynchronous){a.beforeLoad=c;a.load=d;a.prefetch=d}return a},onDisable:function(){this.callParent(arguments);if(this.loading){this.onLoad()}},getOwner:function(){return this.ownerCt||this.floatParent},getMaskTarget:function(){var a=this.getOwner();return this.useTargetEl?a.getTargetEl():a.getEl()},onBeforeLoad:function(){var c=this,a=c.getOwner(),b;if(!c.disabled){c.loading=true;if(a.componentLayoutCounter){c.maybeShow()}else{b=a.afterComponentLayout;a.afterComponentLayout=function(){a.afterComponentLayout=b;b.apply(a,arguments);c.maybeShow()}}}},maybeShow:function(){var b=this,a=b.getOwner();if(!a.isVisible(true)){b.showNext=true}else{if(b.loading&&a.rendered){b.show()}}},getMaskEl:function(){var a=this;return a.maskEl||(a.maskEl=a.el.insertSibling({cls:a.maskCls,style:{zIndex:a.el.getStyle("zIndex")-2}},"before"))},onShow:function(){var b=this,a=b.msgEl;b.callParent(arguments);b.loading=true;if(b.useMsg){a.show();b.msgTextEl.update(b.msg)}else{a.parent().hide()}},hide:function(){if(this.isElement){this.ownerCt.unmask();this.fireEvent("hide",this);return}delete this.showNext;return this.callParent(arguments)},onHide:function(){this.callParent();this.getMaskEl().hide()},show:function(){if(this.isElement){this.ownerCt.mask(this.useMsg?this.msg:"",this.msgCls);this.fireEvent("show",this);return}return this.callParent(arguments)},afterShow:function(){this.callParent(arguments);this.sizeMask()},setZIndex:function(b){var c=this,a=c.activeOwner;if(a){b=parseInt(a.el.getStyle("zIndex"),10)+1}c.getMaskEl().setStyle("zIndex",b-1);return c.mixins.floating.setZIndex.apply(c,arguments)},onLoad:function(){this.loading=false;this.hide()},onDestroy:function(){var a=this;if(a.isElement){a.ownerCt.unmask()}Ext.destroy(a.maskEl);a.callParent()}});Ext.define("Ext.data.association.Association",{alternateClassName:"Ext.data.Association",primaryKey:"id",associationKeyFunction:null,defaultReaderType:"json",isAssociation:true,initialConfig:null,statics:{AUTO_ID:1000,create:function(a){if(Ext.isString(a)){a={type:a}}switch(a.type){case"belongsTo":return new Ext.data.association.BelongsTo(a);case"hasMany":return new Ext.data.association.HasMany(a);case"hasOne":return new Ext.data.association.HasOne(a);default:}return a}},constructor:function(d){Ext.apply(this,d);var h=this,g=Ext.ModelManager.types,k=d.ownerModel,a=d.associatedModel,e=g[k],j=g[a],b=d.associationKey,c;if(b){c=String(b).search(/[\[\.]/);if(c>=0){h.associationKeyFunction=Ext.functionFactory("obj","return obj"+(c>0?".":"")+b)}}h.initialConfig=d;h.ownerModel=e;h.associatedModel=j;Ext.applyIf(h,{ownerName:k,associatedName:a});h.associationId="association"+ ++h.statics().AUTO_ID},getReader:function(){var c=this,a=c.reader,b=c.associatedModel;if(a){if(Ext.isString(a)){a={type:a}}if(a.isReader){a.setModel(b)}else{Ext.applyIf(a,{model:b,type:c.defaultReaderType})}c.reader=Ext.createByAlias("reader."+a.type,a)}return c.reader||null}});Ext.define("Ext.ModelManager",{extend:Ext.AbstractManager,alternateClassName:"Ext.ModelMgr",singleton:true,typeName:"mtype",associationStack:[],registerType:function(c,b){var d=b.prototype,a;if(d&&d.isModel){a=b}else{if(!b.extend){b.extend="Ext.data.Model"}a=Ext.define(c,b)}this.types[c]=a;return a},onModelDefined:function(c){var a=this.associationStack,g=a.length,e=[],b,d,h;for(d=0;d<g;d++){b=a[d];if(b.associatedModel==c.modelName){e.push(b)}}for(d=0,g=e.length;d<g;d++){h=e[d];this.types[h.ownerModel].prototype.associations.add(Ext.data.association.Association.create(h));Ext.Array.remove(a,h)}},registerDeferredAssociation:function(a){this.associationStack.push(a)},getModel:function(b){var a=b;if(typeof a=="string"){a=this.types[a]}return a},create:function(b,a,d){var c=typeof a=="function"?a:this.types[a||b.name];return new c(b,d)}},function(){Ext.regModel=function(){return this.ModelManager.registerType.apply(this.ModelManager,arguments)}});Ext.define("Ext.layout.component.ProgressBar",{alias:["layout.progressbar"],extend:Ext.layout.component.Auto,type:"progressbar",beginLayout:function(d){var b=this,a,c;b.callParent(arguments);if(!d.textEls){c=b.owner.textEl;if(c.isComposite){d.textEls=[];c=c.elements;for(a=c.length;a--;){d.textEls[a]=d.getEl(Ext.get(c[a]))}}else{d.textEls=[d.getEl("textEl")]}}},calculate:function(e){var c=this,a,d,b;c.callParent(arguments);if(Ext.isNumber(b=e.getProp("width"))){b-=e.getBorderInfo().width;d=e.textEls;for(a=d.length;a--;){d[a].setWidth(b)}}else{c.done=false}}});Ext.define("Ext.ProgressBar",{extend:Ext.Component,alias:"widget.progressbar",baseCls:Ext.baseCSSPrefix+"progress",animate:false,text:"",waitTimer:null,childEls:["bar"],renderTpl:['<tpl if="internalText">','<div class="{baseCls}-text {baseCls}-text-back">{text}</div>',"</tpl>",'<div id="{id}-bar" class="{baseCls}-bar {baseCls}-bar-{ui}" style="width:{percentage}%">','<tpl if="internalText">','<div class="{baseCls}-text">',"<div>{text}</div>","</div>","</tpl>","</div>"],componentLayout:"progressbar",initComponent:function(){this.callParent();this.addEvents("update")},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{internalText:!a.hasOwnProperty("textEl"),text:a.text||"&#160;",percentage:a.value?a.value*100:0})},onRender:function(){var a=this;a.callParent(arguments);if(a.textEl){a.textEl=Ext.get(a.textEl);a.updateText(a.text)}else{a.textEl=a.el.select("."+a.baseCls+"-text")}},updateProgress:function(d,e,a){var c=this,b=c.value;c.value=d||0;if(e){c.updateText(e)}if(c.rendered&&!c.isDestroyed){if(a===true||a!==false&&c.animate){c.bar.stopAnimation();c.bar.animate(Ext.apply({from:{width:b*100+"%"},to:{width:c.value*100+"%"}},c.animate))}else{c.bar.setStyle("width",c.value*100+"%")}}c.fireEvent("update",c,c.value,e);return c},updateText:function(b){var a=this;a.text=b;if(a.rendered){a.textEl.update(a.text)}return a},applyText:function(a){this.updateText(a)},getText:function(){return this.text},wait:function(c){var b=this,a;if(!b.waitTimer){a=b;c=c||{};b.updateText(c.text);b.waitTimer=Ext.TaskManager.start({run:function(d){var e=c.increment||10;d-=1;b.updateProgress(((d+e)%e+1)*(100/e)*0.01,null,c.animate)},interval:c.interval||1000,duration:c.duration,onStop:function(){if(c.fn){c.fn.apply(c.scope||b)}b.reset()},scope:a})}return b},isWaiting:function(){return this.waitTimer!==null},reset:function(a){var b=this;b.updateProgress(0);b.clearTimer();if(a===true){b.hide()}return b},clearTimer:function(){var a=this;if(a.waitTimer){a.waitTimer.onStop=null;Ext.TaskManager.stop(a.waitTimer);a.waitTimer=null}},onDestroy:function(){var b=this,a=b.bar;b.clearTimer();if(b.rendered){if(b.textEl.isComposite){b.textEl.clear()}Ext.destroyMembers(b,"textEl","progressBar");if(a&&b.animate){a.stopAnimation()}}b.callParent()}});Ext.define("Ext.ShadowPool",{singleton:true,markup:function(){return Ext.String.format('<div class="{0}{1}-shadow" role="presentation"></div>',Ext.baseCSSPrefix,Ext.isIE&&!Ext.supports.CSS3BoxShadow?"ie":"css")}(),shadows:[],pull:function(){var a=this.shadows.shift();if(!a){a=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,this.markup));a.autoBoxAdjust=false}return a},push:function(a){this.shadows.push(a)},reset:function(){var c=[].concat(this.shadows),b,a=c.length;for(b=0;b<a;b++){c[b].remove()}this.shadows=[]}});Ext.define("Ext.Shadow",{localXYNames:{get:"getLocalXY",set:"setLocalXY"},constructor:function(b){var c=this,d,e,a;Ext.apply(c,b);if(!Ext.isString(c.mode)){c.mode=c.defaultMode}e=c.offset;a=Math.floor(e/2);c.opacity=50;switch(c.mode.toLowerCase()){case"drop":if(Ext.supports.CSS3BoxShadow){d={t:e,l:e,h:-e,w:-e}}else{d={t:-a,l:-a,h:-a,w:-a}}break;case"sides":if(Ext.supports.CSS3BoxShadow){d={t:e,l:0,h:-e,w:0}}else{d={t:-(1+a),l:1+a-2*e,h:-1,w:a-1}}break;case"frame":if(Ext.supports.CSS3BoxShadow){d={t:0,l:0,h:0,w:0}}else{d={t:1+a-2*e,l:1+a-2*e,h:e-a-1,w:e-a-1}}break;case"bottom":if(Ext.supports.CSS3BoxShadow){d={t:e,l:0,h:-e,w:0}}else{d={t:e,l:0,h:0,w:0}}break}c.adjusts=d},getShadowSize:function(){var b=this,d=b.el?b.offset:0,a=[d,d,d,d],c=b.mode.toLowerCase();if(b.el&&c!=="frame"){a[0]=0;if(c=="drop"){a[3]=0}}return a},offset:4,defaultMode:"drop",boxShadowProperty:function(){var b="boxShadow",a=document.documentElement.style;if(!("boxShadow" in a)){if("WebkitBoxShadow" in a){b="WebkitBoxShadow"}else{if("MozBoxShadow" in a){b="MozBoxShadow"}}}return b}(),show:function(d){var b=this,a,c;d=Ext.get(d);a=parseInt(d.getStyle("z-index"),10)-1||0;c=d[b.localXYNames.get]();if(!b.el){b.el=Ext.ShadowPool.pull();if(b.fixed){b.el.dom.style.position="fixed"}else{b.el.dom.style.position=""}if(b.el.dom.nextSibling!=d.dom){b.el.insertBefore(d)}}b.el.setStyle("z-index",b.zIndex||a);if(Ext.isIE&&!Ext.supports.CSS3BoxShadow){b.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity="+b.opacity+") progid:DXImageTransform.Microsoft.Blur(pixelradius="+b.offset+")"}b.realign(c[0],c[1],d.dom.offsetWidth,d.dom.offsetHeight);b.el.dom.style.display="block"},isVisible:function(){return this.el?true:false},realign:function(c,n,k,g){if(!this.el){return}var b=this.adjusts,a=this.el,j=a.dom.style,d,e,h,m;a[this.localXYNames.set](c+b.l,n+b.t);d=Math.max(k+b.w,0);e=Math.max(g+b.h,0);h=d+"px";m=e+"px";if(j.width!=h||j.height!=m){j.width=h;j.height=m;if(Ext.supports.CSS3BoxShadow){j[this.boxShadowProperty]="0 0 "+(this.offset+2)+"px #888"}}},hide:function(){var a=this;if(a.el){a.el.dom.style.display="none";Ext.ShadowPool.push(a.el);delete a.el}},setZIndex:function(a){this.zIndex=a;if(this.el){this.el.setStyle("z-index",a)}},setOpacity:function(a){if(this.el){if(Ext.isIE&&!Ext.supports.CSS3BoxShadow){a=Math.floor(a*100/2)/100}this.opacity=a;this.el.setOpacity(a)}}});Ext.define("Ext.app.EventDomain",{statics:{instances:{}},isEventDomain:true,constructor:function(){var a=this;Ext.app.EventDomain.instances[a.type]=a;a.bus={};a.monitoredClasses=[]},dispatch:function(g,m,k){var l=this,h=l.bus,n=h[m],d,c,b,o,a,e,j;if(!n){return true}for(d in n){if(n.hasOwnProperty(d)&&l.match(g,d)){c=n[d];for(b in c){if(c.hasOwnProperty(b)){o=c[b];for(e=0,j=o.length;e<j;e++){a=o[e];if(a.fire.apply(a,k)===false){return false}}}}}}return true},listen:function(n,g){var l=this,j=l.bus,q=l.idProperty,p=l.monitoredClasses,e=p.length,d,t,h,c,s,b,o,a,k,m;for(c in n){if(n.hasOwnProperty(c)&&(k=n[c])){if(q){c=c==="*"?c:c.substring(1)}for(m in k){if(k.hasOwnProperty(m)){s=null;b=k[m];o=g;a=new Ext.util.Event(g,m);if(Ext.isObject(b)){s=b;b=s.fn;o=s.scope||g;delete s.fn;delete s.scope}if(typeof b==="string"){b=o[b]}a.addListener(b,o,s);for(d=e;d-->0;){p[d].hasListeners._incr_(m)}t=j[m]||(j[m]={});t=t[c]||(t[c]={});h=t[g.id]||(t[g.id]=[]);h.push(a)}}}}},match:function(c,a){var b=this.idProperty;if(b){return a==="*"||c[b]===a}return false},monitor:function(d){var b=this,a=d.isInstance?d:d.prototype,c=a.fireEventArgs;b.monitoredClasses.push(d);a.fireEventArgs=function(h,g){var e=c.apply(this,arguments);if(e!==false){e=b.dispatch(this,h,g)}return e}},unlisten:function(e){var b=this.bus,g,d,a,c;for(d in b){if(b.hasOwnProperty(d)&&(c=b[d])){for(a in c){g=c[a];delete g[e]}}}}});Ext.define("Ext.app.domain.Component",{extend:Ext.app.EventDomain,singleton:true,type:"component",constructor:function(){var a=this;a.callParent();a.monitor(Ext.Component)},match:function(b,a){return b.is(a)}});Ext.define("Ext.app.EventBus",{singleton:true,constructor:function(){var b=this,a=Ext.app.EventDomain.instances;b.callParent();b.domains=a;b.bus=a.component.bus},control:function(b,a){return this.domains.component.listen(b,a)},listen:function(d,b){var a=this.domains,c;for(c in d){if(d.hasOwnProperty(c)){a[c].listen(d[c],b)}}},unlisten:function(c){var a=Ext.app.EventDomain.instances,b;for(b in a){a[b].unlisten(c)}}});Ext.define("Ext.data.StoreManager",{extend:Ext.util.MixedCollection,alternateClassName:["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],singleton:true,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(c){if(Ext.isArray(c)){var b=["field1"],e=!Ext.isArray(c[0]),g=c,d,a;if(e){g=[];for(d=0,a=c.length;d<a;++d){g.push([c[d]])}}else{for(d=2,a=c[0].length;d<=a;++d){b.push("field"+d)}}return new Ext.data.ArrayStore({data:g,fields:b,autoDestroy:true,autoCreated:true,expanded:e})}if(Ext.isString(c)){return this.get(c)}else{return Ext.data.AbstractStore.create(c)}},getKey:function(a){return a.storeId}},function(){Ext.regStore=function(c,b){var a;if(Ext.isObject(c)){b=c}else{b.storeId=c}if(b instanceof Ext.data.Store){a=b}else{a=new Ext.data.Store(b)}return Ext.data.StoreManager.register(a)};Ext.getStore=function(a){return Ext.data.StoreManager.lookup(a)}});Ext.define("Ext.app.domain.Global",{extend:Ext.app.EventDomain,singleton:true,type:"global",constructor:function(){var a=this;a.callParent();a.monitor(Ext.globalEvents)},listen:function(b,a){this.callParent([{global:b},a])},match:function(){return true}});Ext.define("Ext.data.ResultSet",{loaded:true,count:0,total:0,success:false,constructor:function(a){Ext.apply(this,a);this.totalRecords=this.total;if(a.count===undefined){this.count=this.records.length}}});Ext.define("Ext.data.reader.Reader",{alternateClassName:["Ext.data.Reader","Ext.data.DataReader"],mixins:{observable:Ext.util.Observable},totalProperty:"total",successProperty:"success",root:"",implicitIncludes:true,readRecordsOnFailure:true,isReader:true,applyDefaults:true,lastFieldGeneration:null,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);b.fieldCount=0;b.model=Ext.ModelManager.getModel(b.model);b.accessExpressionFn=Ext.Function.bind(b.createFieldAccessExpression,b);if(b.model&&b.model.prototype.fields){b.buildExtractors()}this.addEvents("exception")},setModel:function(a,c){var b=this;b.model=Ext.ModelManager.getModel(a);if(a){b.buildExtractors(true)}if(c&&b.proxy){b.proxy.setModel(b.model,true)}},read:function(a){var b;if(a){b=a.responseText?this.getResponseData(a):this.readRecords(a)}return b||this.nullResultSet},readRecords:function(c){var d=this,j,b,a,g,e,h,k;if(d.lastFieldGeneration!==d.model.prototype.fields.generation){d.buildExtractors(true)}d.rawData=c;c=d.getData(c);j=true;b=0;a=[];if(d.successProperty){h=d.getSuccess(c);if(h===false||h==="false"){j=false}}if(d.messageProperty){k=d.getMessage(c)}if(d.readRecordsOnFailure||j){g=Ext.isArray(c)?c:d.getRoot(c);if(g){e=g.length}if(d.totalProperty){h=parseInt(d.getTotal(c),10);if(!isNaN(h)){e=h}}if(g){a=d.extractData(g);b=a.length}}return new Ext.data.ResultSet({total:e||b,count:b,records:a,success:j,message:k})},extractData:function(k){var j=this,b=j.model,a=k.length,d=new Array(a),e,c,h,g;if(!k.length&&Ext.isObject(k)){k=[k];a=1}for(g=0;g<a;g++){c=k[g];if(c.isModel){d[g]=c}else{d[g]=h=new b(undefined,j.getId(c),c,e={});h.phantom=false;j.convertRecordData(e,c,h);if(j.implicitIncludes&&h.associations.length){j.readAssociated(h,c)}}}return d},readAssociated:function(h,e){var d=h.associations.items,g=0,a=d.length,c,b,k,j;for(;g<a;g++){c=d[g];b=this.getAssociatedDataRoot(e,c.associationKeyFunction||c.associationKey||c.name);if(b){j=c.getReader();if(!j){k=c.associatedModel.getProxy();if(k){j=k.getReader()}else{j=new this.constructor({model:c.associatedName})}}c.read(h,j,b)}}},getAssociatedDataRoot:function(b,a){if(Ext.isFunction(a)){return a(b)}return b[a]},getFields:function(){return this.model.prototype.fields.items},getData:Ext.identityFn,getRoot:Ext.identityFn,getResponseData:function(a){},onMetaChange:function(e){var d=this,b=e.fields||d.getFields(),c,a;d.metaData=e;d.root=e.root||d.root;d.idProperty=e.idProperty||d.idProperty;d.totalProperty=e.totalProperty||d.totalProperty;d.successProperty=e.successProperty||d.successProperty;d.messageProperty=e.messageProperty||d.messageProperty;a=e.clientIdProperty;if(d.model){d.model.setFields(b,d.idProperty,a);d.setModel(d.model,true)}else{c=Ext.define("Ext.data.reader.Json-Model"+Ext.id(),{extend:"Ext.data.Model",fields:b,clientIdProperty:a});if(d.idProperty){c.idProperty=d.idProperty}d.setModel(c,true)}},getIdProperty:function(){var b=this.model.prototype.idField,a=this.idProperty;if(!a&&b&&(a=b.mapping)==null){a=b.name}return a},buildExtractors:function(e){var c=this,h=c.getIdProperty(),d=c.totalProperty,b=c.successProperty,g=c.messageProperty,a;if(e===true){delete c.convertRecordData}if(c.convertRecordData){return}if(d){c.getTotal=c.createAccessor(d)}if(b){c.getSuccess=c.createAccessor(b)}if(g){c.getMessage=c.createAccessor(g)}if(h){a=c.createAccessor(h);c.getId=function(j){var k=a.call(c,j);return k===undefined||k===""?null:k}}else{c.getId=function(){return null}}c.convertRecordData=c.buildRecordDataExtractor();c.lastFieldGeneration=c.model.prototype.fields.generation},recordDataExtractorTemplate:["var me = this\n","    ,fields = me.model.prototype.fields\n","    ,value\n","    ,internalId\n",'<tpl for="fields">','    ,__field{#} = fields.map["{name}"]\n',"</tpl>",";\n","return function(dest, source, record) {\n",'<tpl for="fields">','{% var fieldAccessExpression =  this.createFieldAccessExpression(values, "__field" + xindex, "source");',"   if (fieldAccessExpression) { %}",'    value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n','<tpl if="hasCustomConvert">','    dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n','<tpl elseif="defaultValue !== undefined">',"    if (value === undefined) {\n","        if (me.applyDefaults) {\n",'<tpl if="convert">','            dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"<tpl else>",'            dest["{name}"] = __field{#}.defaultValue\n',"</tpl>","        };\n","    } else {\n",'<tpl if="convert">','        dest["{name}"] = __field{#}.convert(value, record);\n',"<tpl else>",'        dest["{name}"] = value;\n',"</tpl>","    };\n","<tpl else>","    if (value !== undefined) {\n",'<tpl if="convert">','        dest["{name}"] = __field{#}.convert(value, record);\n',"<tpl else>",'        dest["{name}"] = value;\n',"</tpl>","    }\n","</tpl>","{% } else { %}",'<tpl if="defaultValue !== undefined">','<tpl if="convert">','    dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"<tpl else>",'    dest["{name}"] = __field{#}.defaultValue\n',"</tpl>","</tpl>","{% } %}","</tpl>",'<tpl if="clientIdProp">','    if (record && (internalId = {[ this.createFieldAccessExpression({mapping: values.clientIdProp}, null, "source") ]})) {\n','        record.{["internalId"]} = internalId;\n',"    }\n","</tpl>","};"],buildRecordDataExtractor:function(){var c=this,a=c.model.prototype,b={clientIdProp:a.clientIdProperty,fields:a.fields.items};c.recordDataExtractorTemplate.createFieldAccessExpression=c.accessExpressionFn;return Ext.functionFactory(c.recordDataExtractorTemplate.apply(b)).call(c)},destroyReader:function(){var a=this;delete a.proxy;delete a.model;delete a.convertRecordData;delete a.getId;delete a.getTotal;delete a.getSuccess;delete a.getMessage}},function(){var a=this.prototype;Ext.apply(a,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:true,message:""}),recordDataExtractorTemplate:new Ext.XTemplate(a.recordDataExtractorTemplate)})});Ext.define("Ext.data.reader.Json",{extend:Ext.data.reader.Reader,alternateClassName:"Ext.data.JsonReader",alias:"reader.json",root:"",metaProperty:"metaData",useSimpleAccessors:false,readRecords:function(b){var a=this,c;if(a.getMeta){c=a.getMeta(b);if(c){a.onMetaChange(c)}}else{if(b.metaData){a.onMetaChange(b.metaData)}}a.jsonData=b;return a.callParent([b])},getResponseData:function(a){var d,b;try{d=Ext.decode(a.responseText);return this.readRecords(d)}catch(c){b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:c.message});this.fireEvent("exception",this,a,b);Ext.Logger.warn("Unable to parse the JSON returned by the server");return b}},buildExtractors:function(){var b=this,a=b.metaProperty;b.callParent(arguments);if(b.root){b.getRoot=b.createAccessor(b.root)}else{b.getRoot=Ext.identityFn}if(a){b.getMeta=b.createAccessor(a)}},extractData:function(a){var e=this.record,d=[],c,b;if(e){c=a.length;if(!c&&Ext.isObject(a)){c=1;a=[a]}for(b=0;b<c;b++){d[b]=a[b][e]}}else{d=a}return this.callParent([d])},createAccessor:function(){var a=/[\[\.]/;return function(c){if(Ext.isEmpty(c)){return Ext.emptyFn}if(Ext.isFunction(c)){return c}if(this.useSimpleAccessors!==true){var b=String(c).search(a);if(b>=0){return Ext.functionFactory("obj","return obj"+(b>0?".":"")+c)}}return function(d){return d[c]}}}(),createFieldAccessExpression:function(){var a=/[\[\.]/;return function(o,d,e){var b=o.mapping,m=b||b===0,c=m?b:o.name,p,g;if(b===false){return}if(typeof c==="function"){p=d+".mapping("+e+", this)"}else{if(this.useSimpleAccessors===true||(g=String(c).search(a))<0){if(!m||isNaN(c)){c='"'+c+'"'}p=e+"["+c+"]"}else{if(g===0){p=e+c}else{var j=c.split("."),l=j.length,k=1,n=e+"."+j[0],h=[n];for(;k<l;k++){n+="."+j[k];h.push(n)}p=h.join(" && ")}}}return p}}()});Ext.define("Ext.data.writer.Writer",{alias:"writer.base",alternateClassName:["Ext.data.DataWriter","Ext.data.Writer"],writeAllFields:true,nameProperty:"name",writeRecordId:true,isWriter:true,constructor:function(a){Ext.apply(this,a)},write:function(e){var c=e.operation,b=c.records||[],a=b.length,d=0,g=[];for(;d<a;d++){g.push(this.getRecordData(b[d],c))}return this.writeRecords(e,g)},getRecordData:function(d,b){var n=d.phantom===true,a=this.writeAllFields||n,g=d.fields,p=g.items,c={},l=d.clientIdProperty,k,j,o,m,e,h,q;if(a){q=p.length;for(h=0;h<q;h++){j=p[h];if(j.persist){this.writeValue(c,j,d)}}}else{k=d.getChanges();for(o in k){if(k.hasOwnProperty(o)){j=g.get(o);if(j.persist){this.writeValue(c,j,d)}}}}if(n){if(l&&b&&b.records.length>1){c[l]=d.internalId}}else{if(this.writeRecordId){e=g.get(d.idProperty)[this.nameProperty]||d.idProperty;c[e]=d.getId()}}return c},writeValue:function(e,g,b){var c=g[this.nameProperty]||g.name,a=this.dateFormat||g.dateWriteFormat||g.dateFormat,d=b.get(g.name);if(g.serialize){e[c]=g.serialize(d,b)}else{if(g.type===Ext.data.Types.DATE&&a&&Ext.isDate(d)){e[c]=Ext.Date.format(d,a)}else{e[c]=d}}}});Ext.define("Ext.data.writer.Json",{extend:Ext.data.writer.Writer,alternateClassName:"Ext.data.JsonWriter",alias:"writer.json",root:undefined,encode:false,allowSingle:true,expandData:false,getExpandedData:function(d){var b=d.length,e=0,k,a,g,c,h,l=function(j,m){var n={};n[j]=m;return n};for(;e<b;e++){k=d[e];for(a in k){if(k.hasOwnProperty(a)){g=a.split(".");c=g.length-1;if(c>0){h=k[a];for(;c>0;c--){h=l(g[c],h)}k[g[0]]=k[g[0]]||{};Ext.Object.merge(k[g[0]],h);delete k[a]}}}}return d},writeRecords:function(b,c){var a=this.root;if(this.expandData){c=this.getExpandedData(c)}if(this.allowSingle&&c.length===1){c=c[0]}if(this.encode){if(a){b.params[a]=Ext.encode(c)}else{}}else{b.jsonData=b.jsonData||{};if(a){b.jsonData[a]=c}else{b.jsonData=c}}return b}});Ext.define("Ext.data.proxy.Proxy",{alias:"proxy.proxy",alternateClassName:["Ext.data.DataProxy","Ext.data.Proxy"],mixins:{observable:Ext.util.Observable},batchOrder:"create,update,destroy",batchActions:true,defaultReaderType:"json",defaultWriterType:"json",isProxy:true,constructor:function(a){var b=this;a=a||{};b.proxyConfig=a;b.mixins.observable.constructor.call(b,a);if(b.model!==undefined&&!(b.model instanceof Ext.data.Model)){b.setModel(b.model)}else{if(b.reader){b.setReader(b.reader)}if(b.writer){b.setWriter(b.writer)}}},setModel:function(a,b){var c=this;c.model=Ext.ModelManager.getModel(a);c.setReader(this.reader);c.setWriter(this.writer);if(b&&c.store){c.store.setModel(c.model)}},getModel:function(){return this.model},setReader:function(a){var c=this,b=true,d=c.reader;if(a===undefined||typeof a=="string"){a={type:a};b=false}if(a.isReader){a.setModel(c.model)}else{if(b){a=Ext.apply({},a)}Ext.applyIf(a,{proxy:c,model:c.model,type:c.defaultReaderType});a=Ext.createByAlias("reader."+a.type,a)}if(a!==d&&a.onMetaChange){a.onMetaChange=Ext.Function.createSequence(a.onMetaChange,this.onMetaChange,this)}c.reader=a;return c.reader},getReader:function(){return this.reader},onMetaChange:function(a){this.fireEvent("metachange",this,a)},setWriter:function(c){var b=this,a=true;if(c===undefined||typeof c=="string"){c={type:c};a=false}if(!c.isWriter){if(a){c=Ext.apply({},c)}Ext.applyIf(c,{model:b.model,type:b.defaultWriterType});c=Ext.createByAlias("writer."+c.type,c)}b.writer=c;return b.writer},getWriter:function(){return this.writer},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,destroy:Ext.emptyFn,batch:function(p,m){var l=this,k=l.batchActions,h,c,g,d,e,n,b,o,j;if(p.operations===undefined){p={operations:p,listeners:m}}if(p.batch){if(Ext.isDefined(p.batch.runOperation)){h=Ext.applyIf(p.batch,{proxy:l,listeners:{}})}}else{p.batch={proxy:l,listeners:p.listeners||{}}}if(!h){h=new Ext.data.Batch(p.batch)}h.on("complete",Ext.bind(l.onBatchComplete,l,[p],0));g=l.batchOrder.split(",");d=g.length;for(n=0;n<d;n++){e=g[n];c=p.operations[e];if(c){if(k){h.add(new Ext.data.Operation({action:e,records:c}))}else{o=c.length;for(b=0;b<o;b++){j=c[b];h.add(new Ext.data.Operation({action:e,records:[j]}))}}}}h.start();return h},onBatchComplete:function(a,b){var c=a.scope||this;if(b.hasException){if(Ext.isFunction(a.failure)){Ext.callback(a.failure,c,[b,a])}}else{if(Ext.isFunction(a.success)){Ext.callback(a.success,c,[b,a])}}if(Ext.isFunction(a.callback)){Ext.callback(a.callback,c,[b,a])}},clone:function(){return new this.self(this.proxyConfig)}});Ext.define("Ext.data.Operation",{synchronous:true,action:undefined,filters:undefined,sorters:undefined,groupers:undefined,start:undefined,limit:undefined,batch:undefined,callback:undefined,scope:undefined,started:false,running:false,complete:false,success:undefined,exception:false,error:undefined,actionCommitRecordsRe:/^(?:create|update)$/i,actionSkipSyncRe:/^destroy$/i,constructor:function(a){Ext.apply(this,a||{})},commitRecords:function(n){var j=this,m=j.actionCommitRecordsRe.test(j.action),l,h,a,e,b,d,g,k,c;if(!j.actionSkipSyncRe.test(j.action)){a=j.records;if(a&&a.length){if(m){c=[]}if(a.length>1){if(j.action=="update"||a[0].clientIdProperty){l=new Ext.util.MixedCollection;l.addAll(n);for(h=a.length;h--;){b=a[h];e=l.findBy(j.matchClientRec,b);k=b.copyFrom(e);if(m){c.push(k)}}}else{for(d=0,g=a.length;d<g;++d){b=a[d];e=n[d];if(b&&e){k=j.updateRecord(b,e);if(m){c.push(k)}}}}}else{k=j.updateRecord(a[0],n[0]);if(m){c[0]=k}}if(m){for(h=a.length;h--;){a[h].commit(false,c[h])}}}}},updateRecord:function(a,b){if(b&&(a.phantom||a.getId()===b.getId())){return a.copyFrom(b)}return[]},matchClientRec:function(c){var a=this,b=a.getId();if(b&&c.getId()===b){return true}return c.internalId===a.internalId},setStarted:function(){this.started=true;this.running=true},setCompleted:function(){this.complete=true;this.running=false},setSuccessful:function(){this.success=true},setException:function(a){this.exception=true;this.success=false;this.running=false;this.error=a},hasException:function(){return this.exception===true},getError:function(){return this.error},getRecords:function(){var a=this.getResultSet();return this.records||(a?a.records:null)},getResultSet:function(){return this.resultSet},isStarted:function(){return this.started===true},isRunning:function(){return this.running===true},isComplete:function(){return this.complete===true},wasSuccessful:function(){return this.isComplete()&&this.success===true},setBatch:function(a){this.batch=a},allowWrite:function(){return this.action!="read"}});Ext.define("Ext.data.AbstractStore",{mixins:{observable:Ext.util.Observable,sortable:Ext.util.Sortable},statics:{create:function(a){if(!a.isStore){if(!a.type){a.type="store"}a=Ext.createByAlias("store."+a.type,a)}return a}},onClassExtended:function(b,d,a){var c=d.model,e;if(typeof c=="string"){e=a.onBeforeCreated;a.onBeforeCreated=function(){var h=this,g=arguments;Ext.require(c,function(){e.apply(h,g)})}}},remoteSort:false,remoteFilter:false,autoLoad:undefined,autoSync:false,batchUpdateMode:"operation",filterOnLoad:true,sortOnLoad:true,implicitModel:false,defaultProxyType:"memory",isDestroyed:false,isStore:true,sortRoot:"data",constructor:function(a){var c=this,b;Ext.apply(c,a);c.removed=[];c.mixins.observable.constructor.apply(c,arguments);c.model=Ext.ModelManager.getModel(c.model);Ext.applyIf(c,{modelDefaults:null});if(!c.model&&c.fields){c.model=Ext.define("Ext.data.Store.ImplicitModel-"+(c.storeId||Ext.id()),{extend:"Ext.data.Model",fields:c.fields,proxy:c.proxy||c.defaultProxyType});delete c.fields;c.implicitModel=true}c.setProxy(c.proxy||c.model.getProxy());c.proxy.on("metachange",c.onMetaChange,c);if(c.id&&!c.storeId){c.storeId=c.id;delete c.id}if(c.storeId){Ext.data.StoreManager.register(c)}c.mixins.sortable.initSortable.call(c);b=c.decodeFilters(c.filters);c.filters=new Ext.util.MixedCollection;c.filters.addAll(b)},setProxy:function(a){var b=this;if(a instanceof Ext.data.proxy.Proxy){a.setModel(b.model)}else{if(Ext.isString(a)){a={type:a}}Ext.applyIf(a,{model:b.model});a=Ext.createByAlias("proxy."+a.type,a)}b.proxy=a;return b.proxy},getProxy:function(){return this.proxy},onMetaChange:function(a,b){this.fireEvent("metachange",this,b)},create:function(e,c){var d=this,a=Ext.ModelManager.create(Ext.applyIf(e,d.modelDefaults),d.model.modelName),b;c=c||{};Ext.applyIf(c,{action:"create",records:[a]});b=new Ext.data.Operation(c);d.proxy.create(b,d.onProxyWrite,d);return a},read:function(){return this.load.apply(this,arguments)},update:function(b){var c=this,a;b=b||{};Ext.applyIf(b,{action:"update",records:c.getUpdatedRecords()});a=new Ext.data.Operation(b);return c.proxy.update(a,c.onProxyWrite,c)},onProxyWrite:function(b){var c=this,d=b.wasSuccessful(),a=b.getRecords();switch(b.action){case"create":c.onCreateRecords(a,b,d);break;case"update":c.onUpdateRecords(a,b,d);break;case"destroy":c.onDestroyRecords(a,b,d);break}if(d){c.fireEvent("write",c,b);c.fireEvent("datachanged",c);c.fireEvent("refresh",c)}Ext.callback(b.callback,b.scope||c,[a,b,d])},onCreateRecords:Ext.emptyFn,onUpdateRecords:Ext.emptyFn,onDestroyRecords:function(b,a,c){if(c){this.removed=[]}},destroy:function(b){var c=this,a;b=b||{};Ext.applyIf(b,{action:"destroy",records:c.getRemovedRecords()});a=new Ext.data.Operation(b);return c.proxy.destroy(a,c.onProxyWrite,c)},onBatchOperationComplete:function(b,a){return this.onProxyWrite(a)},onBatchComplete:function(c,a){var g=this,b=c.operations,e=b.length,d;g.suspendEvents();for(d=0;d<e;d++){g.onProxyWrite(b[d])}g.resumeEvents();g.fireEvent("datachanged",g);g.fireEvent("refresh",g)},onBatchException:function(b,a){},filterNew:function(a){return a.phantom===true&&a.isValid()},getNewRecords:function(){return[]},getUpdatedRecords:function(){return[]},getModifiedRecords:function(){return[].concat(this.getNewRecords(),this.getUpdatedRecords())},filterUpdated:function(a){return a.dirty===true&&a.phantom!==true&&a.isValid()},getRemovedRecords:function(){return this.removed},filter:function(a,b){},decodeFilters:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,a=Ext.util.Filter,b,c;for(c=0;c<d;c++){b=e[c];if(!(b instanceof a)){Ext.apply(b,{root:"data"});if(b.fn){b.filterFn=b.fn}if(typeof b=="function"){b={filterFn:b}}e[c]=new a(b)}}return e},clearFilter:function(a){},isFiltered:function(){},filterBy:function(b,a){},sync:function(c){var e=this,b={},g=e.getNewRecords(),d=e.getUpdatedRecords(),a=e.getRemovedRecords(),h=false;if(g.length>0){b.create=g;h=true}if(d.length>0){b.update=d;h=true}if(a.length>0){b.destroy=a;h=true}if(h&&e.fireEvent("beforesync",b)!==false){c=c||{};e.proxy.batch(Ext.apply(c,{operations:b,listeners:e.getBatchListeners()}))}return e},getBatchListeners:function(){var b=this,a={scope:b,exception:b.onBatchException};if(b.batchUpdateMode=="operation"){a.operationcomplete=b.onBatchOperationComplete}else{a.complete=b.onBatchComplete}return a},save:function(){return this.sync.apply(this,arguments)},load:function(b){var c=this,a;b=Ext.apply({action:"read",filters:c.filters.items,sorters:c.getSorters()},b);c.lastOptions=b;a=new Ext.data.Operation(b);if(c.fireEvent("beforeload",c,a)!==false){c.loading=true;c.proxy.read(a,c.onProxyLoad,c)}return c},reload:function(a){return this.load(Ext.apply(this.lastOptions,a))},afterEdit:function(a,e){var d=this,b,c;if(d.autoSync&&!d.autoSyncSuspended){for(b=e.length;b--;){if(a.fields.get(e[b]).persist){c=true;break}}if(c){d.sync()}}d.onUpdate(a,Ext.data.Model.EDIT,e);d.fireEvent("update",d,a,Ext.data.Model.EDIT,e)},afterReject:function(a){this.onUpdate(a,Ext.data.Model.REJECT,null);this.fireEvent("update",this,a,Ext.data.Model.REJECT,null)},afterCommit:function(a,b){if(!b){b=null}this.onUpdate(a,Ext.data.Model.COMMIT,b);this.fireEvent("update",this,a,Ext.data.Model.COMMIT,b)},onUpdate:Ext.emptyFn,onIdChanged:function(c,d,b,a){this.fireEvent("idchanged",this,c,d,b,a)},destroyStore:function(){var a=this;if(!a.isDestroyed){a.clearListeners();if(a.storeId){Ext.data.StoreManager.unregister(a)}a.clearData();a.data=a.tree=a.sorters=a.filters=a.groupers=null;if(a.reader){a.reader.destroyReader()}a.proxy=a.reader=a.writer=null;a.isDestroyed=true;if(a.implicitModel){Ext.destroy(a.model)}else{a.model=null}}},getState:function(){var e=this,c,a,b=!!e.groupers,g=[],h=[],d=[];if(b){e.groupers.each(function(j){g[g.length]=j.serialize();c=true})}if(e.sorters){e.sorters.each(function(j){if(b&&!e.groupers.contains(j)){h[h.length]=j.serialize();c=true}})}if(e.filters&&e.statefulFilters){e.filters.each(function(j){d[d.length]=j.serialize();c=true})}if(c){a={};if(g.length){a.groupers=g}if(h.length){a.sorters=h}if(d.length){a.filters=d}return a}},applyState:function(g){var e=this,c=!!e.sorters,b=!!e.groupers,a=!!e.filters,d;if(b&&g.groupers){e.groupers.clear();e.groupers.addAll(e.decodeGroupers(g.groupers))}if(c&&g.sorters){e.sorters.clear();e.sorters.addAll(e.decodeSorters(g.sorters))}if(a&&g.filters){e.filters.clear();e.filters.addAll(e.decodeFilters(g.filters))}if(c&&b){e.sorters.insert(0,e.groupers.getRange())}if(e.remoteSort||e.remoteGroup||e.remoteFilter){e.reload()}if(a&&e.filters.length&&!e.remoteFilter){e.filter();d=e.sortOnFilter}if(c&&e.sorters.length&&!e.remoteSort&&!d){e.sort()}},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.data.sortBy(a);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b,b.sorters.getRange())},clearData:Ext.emptyFn,getCount:Ext.emptyFn,getById:Ext.emptyFn,removeAll:Ext.emptyFn,isLoading:function(){return !!this.loading},suspendAutoSync:function(){this.autoSyncSuspended=true},resumeAutoSync:function(){this.autoSyncSuspended=false}});Ext.define("Ext.app.domain.Store",{extend:Ext.app.EventDomain,singleton:true,type:"store",idProperty:"storeId",constructor:function(){var a=this;a.callParent();a.monitor(Ext.data.AbstractStore)}});Ext.define("Ext.app.Controller",{mixins:{observable:Ext.util.Observable},statics:{strings:{model:{getter:"getModel",upper:"Model"},view:{getter:"getView",upper:"View"},controller:{getter:"getController",upper:"Controller"},store:{getter:"getStore",upper:"Store"}},controllerRegex:/^(.*)\.controller\./,createGetter:function(a,b){return function(){return this[a](b)}},getGetterName:function(c,a){var d="get",e=c.split("."),g=e.length,b;for(b=0;b<g;b++){d+=Ext.String.capitalize(e[b])}d+=a;return d},processDependencies:function(s,t,c,d,k){if(!k||!k.length){return}var l=this,q=l.strings[d],b,p,n,a,e,g,m,h;for(e=0,g=k.length;e<g;e++){a=k[e];b=l.getFullName(a,d,c);p=b.absoluteName;n=b.shortName;t.push(p);m=l.getGetterName(n,q.upper);s[m]=h=l.createGetter(q.getter,a);if(d!=="controller"){h["Ext.app.getter"]=true}}},getFullName:function(c,e,d){var a=c,b,g;if((b=c.indexOf("@"))>0){a=c.substring(0,b);g=c.substring(b+1)+"."+a}else{if(c.indexOf(".")>0&&(Ext.ClassManager.isCreated(c)||Ext.Loader.isAClassNameWithAKnownPrefix(c))){g=c}else{if(d){g=d+"."+e+"."+c;a=c}else{g=c}}}return{absoluteName:g,shortName:a}}},application:null,onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(n,h){var g=Ext.app.Controller,l=g.controllerRegex,o=[],m,e,o,k,j;k=n.prototype;m=Ext.getClassName(n);e=h.$namespace||Ext.app.getNamespace(m)||(j=l.exec(m))&&j[1];if(e){k.$namespace=e}g.processDependencies(k,o,e,"model",h.models);g.processDependencies(k,o,e,"view",h.views);g.processDependencies(k,o,e,"store",h.stores);g.processDependencies(k,o,e,"controller",h.controllers);Ext.require(o,Ext.Function.pass(d,arguments,this))}},constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);if(b.refs){b.ref(b.refs)}b.eventbus=Ext.app.EventBus;b.initAutoGetters()},initAutoGetters:function(){var b=this.self.prototype,c,a;for(c in b){a=b[c];if(a&&a["Ext.app.getter"]){a.call(this)}}},doInit:function(b){var a=this;if(!a._initialized){a.init(b);a._initialized=true}},init:Ext.emptyFn,onLaunch:Ext.emptyFn,ref:function(a){var g=this,b=0,e=a.length,h,d,c;a=Ext.Array.from(a);g.references=g.references||[];for(;b<e;b++){h=a[b];d=h.ref;c="get"+Ext.String.capitalize(d);if(!g[c]){g[c]=Ext.Function.pass(g.getRef,[d,h],g)}g.references.push(d.toLowerCase())}},addRef:function(a){this.ref(a)},getRef:function(d,g,a){var c=this,e=c.refCache||(c.refCache={}),b=e[d];g=g||{};a=a||{};Ext.apply(g,a);if(g.forceCreate){return Ext.ComponentManager.create(g,"component")}if(!b){if(g.selector){e[d]=b=Ext.ComponentQuery.query(g.selector)[0]}if(!b&&g.autoCreate){e[d]=b=Ext.ComponentManager.create(g,"component")}if(b){b.on("beforedestroy",function(){e[d]=null})}}return b},hasRef:function(b){var a=this.references;return a&&Ext.Array.indexOf(a,b.toLowerCase())!==-1},control:function(b,c,a){var d=this,e=a,g;if(Ext.isString(b)){g={};g[b]=c}else{g=b;e=c}d.eventbus.control(g,e||d)},listen:function(b,a){this.eventbus.listen(b,a||this)},getController:function(c){var a=this,b=a.application;if(c===a.id){return a}return b&&b.getController(c)},getStore:function(c){var a,b;a=c.indexOf("@")==-1?c:c.split("@")[0];b=Ext.StoreManager.get(a);if(!b){c=Ext.app.Controller.getFullName(c,"store",this.$namespace);if(c){b=Ext.create(c.absoluteName,{storeId:a})}}return b},getModel:function(b){var a=Ext.app.Controller.getFullName(b,"model",this.$namespace);return a&&Ext.ModelManager.getModel(a.absoluteName)},getView:function(a){var b=Ext.app.Controller.getFullName(a,"view",this.$namespace);return b&&Ext.ClassManager.get(b.absoluteName)},getApplication:function(){return this.application}});Ext.define("Ext.container.DockingContainer",{isDockingContainer:true,defaultDockWeights:{top:{render:1,visual:1},left:{render:3,visual:5},right:{render:5,visual:7},bottom:{render:7,visual:3}},dockOrder:{top:-1,left:-1,right:1,bottom:1},horizontalDocks:0,addDocked:function(a,g){var e=this,b=0,d,c;a=e.prepareItems(a);c=a.length;for(;b<c;b++){d=a[b];d.dock=d.dock||"top";if(d.dock==="left"||d.dock==="right"){e.horizontalDocks++}if(g!==undefined){b+=g;e.dockedItems.insert(b,d)}else{e.dockedItems.add(d)}d.onAdded(e,b);if(e.hasListeners.dockedadd){e.fireEvent("dockedadd",e,d,b)}if(e.onDockedAdd!==Ext.emptyFn){e.onDockedAdd(d)}}if(e.rendered&&!e.suspendLayout){e.updateLayout()}return a},destroyDockedItems:function(){var a=this.dockedItems,b;if(a){while(b=a.first()){this.removeDocked(b,true)}}},doRenderDockedItems:function(c,g,h){var e=g.$comp,d=e.componentLayout,b,a;if(d.getDockedItems&&!g.$skipDockedItems){b=d.getDockedItems("render",!h);a=b&&d.getItemsRenderTree(b);if(a){Ext.DomHelper.generateMarkup(a,c)}}},getDockedComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}return this.dockedItems.get(a)},getDockedItems:function(a,c){var b=this.getComponentLayout().getDockedItems("render",c);if(a&&b.length){b=Ext.ComponentQuery.query(a,b)}return b},getDockingRefItems:function(b,e){var a=b&&"*,* *",d=this.getDockedItems(a,true),c;d.push.apply(d,e);c=this.getDockedItems(a,false);d.push.apply(d,c);return d},initDockingItems:function(){var b=this,a=b.dockedItems;b.dockedItems=new Ext.util.AbstractMixedCollection(false,b.getComponentId);if(a){b.addDocked(a)}},insertDocked:function(b,a){this.addDocked(a,b)},onDockedAdd:Ext.emptyFn,onDockedRemove:Ext.emptyFn,removeDocked:function(e,b){var d=this,c,a;b=b===true||b!==false&&d.autoDestroy;if(!d.dockedItems.contains(e)){return e}if(e.dock==="left"||e.dock==="right"){d.horizontalDocks--}c=d.componentLayout;a=c&&d.rendered;if(a){c.onRemove(e)}d.dockedItems.remove(e);e.onRemoved(e.destroying||b);d.onDockedRemove(e);if(b){e.destroy()}else{if(a){c.afterRemove(e)}}if(d.hasListeners.dockedremove){d.fireEvent("dockedremove",d,e)}if(!d.destroying&&!d.suspendLayout){d.updateLayout()}return e},setupDockingRenderTpl:function(a){a.renderDockedItems=this.doRenderDockedItems}});Ext.define("Ext.toolbar.Fill",{extend:Ext.Component,alias:"widget.tbfill",alternateClassName:"Ext.Toolbar.Fill",isFill:true,flex:1});Ext.define("Ext.layout.container.boxOverflow.None",{alternateClassName:"Ext.layout.boxOverflow.None",constructor:function(b,a){this.layout=b;Ext.apply(this,a)},handleOverflow:Ext.emptyFn,clearOverflow:Ext.emptyFn,beginLayout:Ext.emptyFn,beginLayoutCycle:Ext.emptyFn,calculate:function(b){var a=this,c=b.state.boxPlan,d;if(c&&c.tooNarrow){d=a.handleOverflow(b);if(d){if(d.reservedSpace){a.layout.publishInnerCtSize(b,d.reservedSpace)}}}else{a.clearOverflow()}},completeLayout:Ext.emptyFn,finishedLayout:function(d){var c=this,a=c.layout.owner,b,e;if(a.hasListeners.overflowchange){b=a.query(">[hidden]");e=b.length;if(e!==c.lastHiddenCount){a.fireEvent("overflowchange",c.lastHiddenCount,e,b);c.lastHiddenCount=e}}},onRemove:Ext.emptyFn,getItem:function(a){return this.layout.owner.getComponent(a)},getOwnerType:function(a){var b;if(a.isToolbar){b="toolbar"}else{if(a.isTabBar){b="tabbar"}else{if(a.isMenu){b="menu"}else{b=a.getXType()}}}return b},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return""}});Ext.define("Ext.toolbar.Item",{extend:Ext.Component,alias:"widget.tbitem",alternateClassName:"Ext.Toolbar.Item",enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.define("Ext.toolbar.Separator",{extend:Ext.toolbar.Item,alias:"widget.tbseparator",alternateClassName:"Ext.Toolbar.Separator",baseCls:Ext.baseCSSPrefix+"toolbar-separator",focusable:false,border:true});Ext.define("Ext.button.Manager",{singleton:true,alternateClassName:"Ext.ButtonToggleManager",groups:{},buttonSelector:"."+Ext.baseCSSPrefix+"btn",init:function(){var a=this;if(a.initialized){return}Ext.getBody().on("keydown",a.onKeyDown,a);a.initialized=true},onKeyDown:function(c){var a=c.getKey(),b;if(a===c.SPACE||a===c.ENTER){b=c.getTarget(this.buttonSelector);if(b){Ext.getCmp(b.id).onClick(c)}}},toggleGroup:function(b,e){if(e){var d=this.groups[b.toggleGroup],c=d.length,a;for(a=0;a<c;a++){if(d[a]!==b){d[a].toggle(false)}}}},register:function(b){var c=this,a=this.groups,d=a[b.toggleGroup];c.init();if(!b.toggleGroup){return}if(!d){d=a[b.toggleGroup]=[]}d.push(b);b.on("toggle",c.toggleGroup,c)},unregister:function(a){if(!a.toggleGroup){return}var b=this,c=b.groups[a.toggleGroup];if(c){Ext.Array.remove(c,a);a.un("toggle",b.toggleGroup,b)}},getPressed:function(d){var c=this.groups[d],b=0,a;if(c){for(a=c.length;b<a;b++){if(c[b].pressed===true){return c[b]}}}return null}});Ext.define("Ext.menu.Manager",{singleton:true,alternateClassName:"Ext.menu.MenuMgr",menuSelector:"."+Ext.baseCSSPrefix+"menu",menus:{},groups:{},attached:false,lastShow:new Date,init:function(){var a=this;a.active=new Ext.util.MixedCollection;Ext.getDoc().addKeyListener(27,function(){if(a.active.length>0){a.hideAll()}},a)},hideAll:function(){var c=this.active,e,b,a,d;if(c&&c.length>0){e=c.clone();b=e.items;d=b.length;for(a=0;a<d;a++){b[a].hide()}return true}return false},onHide:function(a){var b=this,c=b.active;c.remove(a);if(c.length<1){Ext.getDoc().un("mousedown",b.onMouseDown,b);b.attached=false}},onShow:function(a){var c=this,d=c.active,b=c.attached;c.lastShow=new Date;d.add(a);if(!b){Ext.getDoc().on("mousedown",c.onMouseDown,c,{buffer:Ext.isIE9m?10:undefined});c.attached=true}a.toFront()},onBeforeHide:function(a){if(a.activeChild){a.activeChild.hide()}if(a.autoHideTimer){clearTimeout(a.autoHideTimer);delete a.autoHideTimer}},onBeforeShow:function(a){var c=this.active,b=a.parentMenu;c.remove(a);if(!b&&!a.allowOtherMenus){this.hideAll()}else{if(b&&b.activeChild&&a!=b.activeChild){b.activeChild.hide()}}},onMouseDown:function(g){var b=this,d=b.active,a=b.lastShow,c=true;if(Ext.Date.getElapsed(a)>50&&d.length>0&&!g.getTarget(b.menuSelector)){if(Ext.isIE9m&&!Ext.getBody().contains(g.target)){c=false}if(c){b.hideAll()}}},register:function(b){var a=this;if(!a.active){a.init()}if(b.floating){a.menus[b.id]=b;b.on({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})}},get:function(b){var a=this.menus;if(typeof b=="string"){if(!a){return null}return a[b]}else{if(b.isMenu){return b}else{if(Ext.isArray(b)){return new Ext.menu.Menu({items:b})}else{return Ext.ComponentManager.create(b,"menu")}}}},unregister:function(d){var a=this,b=a.menus,c=a.active;delete b[d.id];c.remove(d);d.un({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})},registerCheckable:function(c){var a=this.groups,b=c.group;if(b){if(!a[b]){a[b]=[]}a[b].push(c)}},unregisterCheckable:function(c){var a=this.groups,b=c.group;if(b){Ext.Array.remove(a[b],c)}},onCheckChange:function(d,g){var a=this.groups,c=d.group,b=0,j,e,h;if(c&&g){j=a[c];e=j.length;for(;b<e;b++){h=j[b];if(h!=d){h.setChecked(false)}}}}});Ext.define("Ext.util.ClickRepeater",{extend:Ext.util.Observable,constructor:function(b,a){var c=this;c.el=Ext.get(b);c.el.unselectable();Ext.apply(c,a);c.callParent();c.addEvents("mousedown","click","mouseup");if(!c.disabled){c.disabled=true;c.enable()}if(c.handler){c.on("click",c.handler,c.scope||c)}},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&&!(Ext.isIE10p||Ext.isStrict&&Ext.isIE9)){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.pressedCls){this.el.removeCls(this.pressedCls)}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.clearListeners()},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.pressedCls){this.el.addCls(this.pressedCls)}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}a=new Ext.EventObjectImpl(a);this.timer=Ext.defer(this.click,this.delay||this.interval,this,[a])},click:function(a){this.fireEvent("click",this,a);this.timer=Ext.defer(this.click,this.accelerate?this.easeOutExpo(Ext.Date.getElapsed(this.mousedownTime),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.pressedCls){this.el.removeCls(this.pressedCls)}this.el.on("mouseover",this.handleMouseReturn,this)},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn,this);if(this.pressedCls){this.el.addCls(this.pressedCls)}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);if(this.pressedCls){this.el.removeCls(this.pressedCls)}this.fireEvent("mouseup",this,a)}});Ext.define("Ext.layout.component.Button",{alias:["layout.button"],extend:Ext.layout.component.Auto,type:"button",htmlRE:/<.*>/,beginLayout:function(c){var b=this,a=b.owner,d=a.text;b.callParent(arguments);c.btnWrapContext=c.getEl("btnWrap");c.btnElContext=c.getEl("btnEl");c.btnInnerElContext=c.getEl("btnInnerEl");c.btnIconElContext=c.getEl("btnIconEl");if(d&&b.htmlRE.test(d)){c.isHtmlText=true;a.btnInnerEl.setStyle("line-height","normal");a.btnInnerEl.setStyle("padding-top","")}},beginLayoutCycle:function(b){var a=this.owner,c=this.lastWidthModel;this.callParent(arguments);if(c&&!this.lastWidthModel.shrinkWrap&&b.widthModel.shrinkWrap){a.btnWrap.setStyle("height","");a.btnEl.setStyle("height","");a.btnInnerEl.setStyle("line-height","")}},calculate:function(d){var g=this,c=g.owner,h=d.btnElContext,e=d.btnInnerElContext,l=d.btnWrapContext,b,j,k,a;g.callParent(arguments);if(d.heightModel.shrinkWrap){k=c.btnEl.getHeight();if(d.isHtmlText){g.centerInnerEl(d,k);g.ieCenterIcon(d,k)}}else{b=d.getProp("height");if(b){j=b-d.getFrameInfo().height-d.getPaddingInfo().height;k=j;if((c.menu||c.split)&&c.arrowAlign==="bottom"){k-=l.getPaddingInfo().bottom}a=k;if((c.icon||c.iconCls||c.glyph)&&(c.iconAlign==="top"||c.iconAlign==="bottom")){a-=e.getPaddingInfo().height}l.setProp("height",j);h.setProp("height",k);if(d.isHtmlText){g.centerInnerEl(d,k)}else{e.setProp("line-height",a+"px")}g.ieCenterIcon(d,k)}else{g.done=false}}},centerInnerEl:function(e,d){var c=this,b=e.btnInnerElContext,a=c.owner.btnInnerEl.getHeight();if(e.heightModel.shrinkWrap&&d<a){e.btnElContext.setHeight(a)}else{if(d>a){b.setProp("padding-top",Math.round((d-a)/2)+b.getPaddingInfo().top)}}},ieCenterIcon:function(c,b){var a=this.owner.iconAlign;if((Ext.isIEQuirks||Ext.isIE6)&&(a==="left"||a==="right")){c.btnIconElContext.setHeight(b)}},publishInnerWidth:function(b,a){if(this.owner.getFrameInfo().table){b.btnInnerElContext.setWidth(a-b.getFrameInfo().width-b.getPaddingInfo().width-b.btnWrapContext.getPaddingInfo().width)}}});Ext.define("Ext.util.TextMetrics",{statics:{shared:null,measure:function(a,d,e){var b=this,c=b.shared;if(!c){c=b.shared=new b(a,e)}c.bind(a);c.setFixedWidth(e||"auto");return c.getSize(d)},destroy:function(){var a=this;Ext.destroy(a.shared);a.shared=null}},constructor:function(a,c){var b=this.measure=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"textmetrics"});this.el=Ext.get(a);b.position("absolute");b.setLocalXY(-1000,-1000);b.hide();if(c){b.setWidth(c)}},getSize:function(c){var b=this.measure,a;b.update(c);a=b.getSize();b.update("");return a},bind:function(a){var b=this;b.el=Ext.get(a);b.measure.setStyle(b.el.getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(a){this.measure.setWidth(a)},getWidth:function(a){this.measure.dom.style.width="auto";return this.getSize(a).width},getHeight:function(a){return this.getSize(a).height},destroy:function(){var a=this;a.measure.remove();delete a.el;delete a.measure}},function(){Ext.Element.addMethods({getTextWidth:function(c,b,a){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width,b||0,a||1000000)}})});Ext.define("Ext.button.Button",{alias:"widget.button",extend:Ext.Component,alternateClassName:"Ext.Button",isButton:true,componentLayout:"button",hidden:false,disabled:false,pressed:false,enableToggle:false,menuAlign:"tl-bl?",showEmptyMenu:false,textAlign:"center",type:"button",clickEvent:"click",preventDefault:true,handleMouseEvents:true,tooltipType:"qtip",baseCls:Ext.baseCSSPrefix+"btn",pressedCls:"pressed",overCls:"over",focusCls:"focus",menuActiveCls:"menu-active",hrefTarget:"_blank",border:true,childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl"],renderTpl:['<div id="{id}-btnWrap" class="{baseCls}-wrap','<tpl if="splitCls"> {splitCls}</tpl>','{childElCls}" unselectable="on">','<a id="{id}-btnEl" class="{baseCls}-button" role="button" hidefocus="on" unselectable="on"','<tpl if="tabIndex != null>',' tabIndex="{tabIndex}"',"</tpl>",'<tpl if="href">',' href="{href}"','<tpl if="hrefTarget">',' target="{hrefTarget}"',"</tpl>","</tpl>",">",'<span id="{id}-btnInnerEl" class="{baseCls}-inner {innerCls}','{childElCls}" unselectable="on">',"{text}","</span>",'<span role="img" id="{id}-btnIconEl" class="{baseCls}-icon-el {iconCls}','{childElCls} {glyphCls}" unselectable="on" style="','<tpl if="iconUrl">background-image:url({iconUrl});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl><tpl if="iconCls || iconUrl">&#160;</tpl>',"</span>","</a>","</div>",'<tpl if="closable">','<a id="{id}-closeEl" class="{baseCls}-close-btn" title="{closeText}" href="#"></a>',"</tpl>"],scale:"small",allowedScales:["small","medium","large"],iconAlign:"left",arrowAlign:"right",arrowCls:"arrow",maskOnDisable:false,shrinkWrap:3,frame:true,_triggerRegion:{},initComponent:function(){var a=this;a.addCls("x-unselectable");a.callParent(arguments);a.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout","textchange","iconchange","glyphchange");if(a.menu){a.split=true;a.menu=Ext.menu.Manager.get(a.menu);a.menu.ownerButton=a}if(a.url){a.href=a.url}if(a.href&&!a.hasOwnProperty("preventDefault")){a.preventDefault=false}if(Ext.isString(a.toggleGroup)&&a.toggleGroup!==""){a.enableToggle=true}if(a.html&&!a.text){a.text=a.html;delete a.html}a.glyphCls=a.baseCls+"-glyph"},getActionEl:function(){return this.btnEl},getFocusEl:function(){return this.useElForFocus?this.el:this.btnEl},onFocus:function(b){var a=this;a.useElForFocus=true;a.callParent(arguments);a.useElForFocus=false},onBlur:function(a){this.useElForFocus=true;this.callParent(arguments);this.useElForFocus=false},onDisable:function(){this.useElForFocus=true;this.callParent(arguments);this.useElForFocus=false},setComponentCls:function(){var b=this,a=b.getComponentCls();if(!Ext.isEmpty(b.oldCls)){b.removeClsWithUI(b.oldCls);b.removeClsWithUI(b.pressedCls)}b.oldCls=a;b.addClsWithUI(a)},getComponentCls:function(){var b=this,a=[];if(b.iconCls||b.icon||b.glyph){if(b.text){a.push("icon-text-"+b.iconAlign)}else{a.push("icon")}}else{if(b.text){a.push("noicon")}}if(b.pressed){a.push(b.pressedCls)}return a},beforeRender:function(){var a=this;a.callParent();a.oldCls=a.getComponentCls();a.addClsWithUI(a.oldCls);Ext.applyIf(a.renderData,a.getTemplateArgs())},onRender:function(){var c=this,d,a,b;c.doc=Ext.getDoc();c.callParent(arguments);a=c.el;if(c.tooltip){c.setTooltip(c.tooltip,true)}if(c.handleMouseEvents){b={scope:c,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousedown:c.onMouseDown};if(c.split){b.mousemove=c.onMouseMove}}else{b={scope:c}}if(c.menu){c.mon(c.menu,{scope:c,show:c.onMenuShow,hide:c.onMenuHide});c.keyMap=new Ext.util.KeyMap({target:c.el,key:Ext.EventObject.DOWN,handler:c.onDownKey,scope:c})}if(c.repeat){c.mon(new Ext.util.ClickRepeater(a,Ext.isObject(c.repeat)?c.repeat:{}),"click",c.onRepeatClick,c)}else{if(b[c.clickEvent]){d=true}else{b[c.clickEvent]=c.onClick}}c.mon(a,b);if(d){c.mon(a,c.clickEvent,c.onClick,c)}Ext.button.Manager.register(c)},getTemplateArgs:function(){var c=this,b=c.glyph,d=Ext._glyphFontFamily,a;if(typeof b==="string"){a=b.split("@");b=a[0];d=a[1]}return{href:c.getHref(),hrefTarget:c.hrefTarget,type:c.type,innerCls:c.getInnerCls(),splitCls:c.getSplitCls(),iconUrl:c.icon,iconCls:c.iconCls,glyph:b,glyphCls:b?c.glyphCls:"",glyphFontFamily:d,text:c.text||"&#160;",tabIndex:c.tabIndex==null?0:c.tabIndex}},setHref:function(a){this.href=a;this.btnEl.dom.href=this.getHref()},getHref:function(){var b=this,a=b.href;return a?Ext.urlAppend(a,Ext.Object.toQueryString(Ext.apply({},b.params,b.baseParams))):false},setParams:function(a){this.params=a;this.btnEl.dom.href=this.getHref()},getSplitCls:function(){var a=this;return a.split?a.baseCls+"-"+a.arrowCls+" "+(a.baseCls+"-"+a.arrowCls+"-"+a.arrowAlign):""},getInnerCls:function(){return this.textAlign?this.baseCls+"-inner-"+this.textAlign:""},setIcon:function(b){b=b||"";var c=this,a=c.btnIconEl,d=c.icon||"";c.icon=b;if(b!=d){if(a){a.setStyle("background-image",b?"url("+b+")":"");c.setComponentCls();if(c.didIconStateChange(d,b)){c.updateLayout()}}c.fireEvent("iconchange",c,d,b)}return c},setIconCls:function(b){b=b||"";var d=this,a=d.btnIconEl,c=d.iconCls||"";d.iconCls=b;if(c!=b){if(a){a.removeCls(c);a.addCls(b||"");d.setComponentCls();if(d.didIconStateChange(c,b)){d.updateLayout()}}d.fireEvent("iconchange",d,c,b)}return d},setGlyph:function(g){g=g||0;var e=this,b=e.btnIconEl,c=e.glyph,a,d;e.glyph=g;if(b){if(typeof g==="string"){d=g.split("@");g=d[0];a=d[1]||Ext._glyphFontFamily}if(!g){b.dom.innerHTML=""}else{if(c!=g){b.dom.innerHTML="&#"+g+";"}}if(a){b.setStyle("font-family",a)}}e.fireEvent("glyphchange",e,e.glyph,c);return e},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a||!c){b.clearTip()}if(c){if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.btnEl.id},c));b.tooltip=c}else{b.btnEl.dom.setAttribute(b.getTipAttr(),c)}}}else{b.tooltip=c}return b},setTextAlign:function(c){var b=this,a=b.btnEl;if(a){a.removeCls(b.baseCls+"-inner-"+b.textAlign);a.addCls(b.baseCls+"-inner-"+c)}b.textAlign=c;return b},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},clearTip:function(){var b=this,a=b.btnEl;if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.unregister(a)}else{a.dom.removeAttribute(b.getTipAttr())}},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}if(a.menu&&a.destroyMenu!==false){Ext.destroy(a.menu)}Ext.destroy(a.btnInnerEl,a.repeater);a.callParent()},onDestroy:function(){var a=this;if(a.rendered){a.doc.un("mouseover",a.monitorMouseOver,a);a.doc.un("mouseup",a.onMouseUp,a);delete a.doc;Ext.destroy(a.keyMap);delete a.keyMap}Ext.button.Manager.unregister(a);a.callParent()},setHandler:function(b,a){this.handler=b;this.scope=a;return this},setText:function(c){c=c||"";var b=this,a=b.text||"";if(c!=a){b.text=c;if(b.rendered){b.btnInnerEl.update(c||"&#160;");b.setComponentCls();if(Ext.isStrict&&Ext.isIE8){b.el.repaint()}b.updateLayout()}b.fireEvent("textchange",b,a,c)}return b},didIconStateChange:function(a,c){var b=Ext.isEmpty(c);return Ext.isEmpty(a)?!b:b},getText:function(){return this.text},toggle:function(c,a){var b=this;c=c===undefined?!b.pressed:!!c;if(c!==b.pressed){if(b.rendered){b[c?"addClsWithUI":"removeClsWithUI"](b.pressedCls)}b.pressed=c;if(!a){b.fireEvent("toggle",b,c);Ext.callback(b.toggleHandler,b.scope||b,[b,c])}}return b},maybeShowMenu:function(){var a=this;if(a.menu&&!a.hasVisibleMenu()&&!a.ignoreNextClick){a.showMenu(true)}},showMenu:function(b){var a=this,c=a.menu;if(a.rendered){if(a.tooltip&&Ext.quickTipsActive&&a.getTipAttr()!="title"){Ext.tip.QuickTipManager.getQuickTip().cancelShow(a.btnEl)}if(c.isVisible()){c.hide()}if(!b||a.showEmptyMenu||c.items.getCount()>0){c.showBy(a.el,a.menuAlign,Ext.isIEQuirks||Ext.isIE6?[-2,-2]:undefined)}}return a},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){var a=this.menu;return a&&a.rendered&&a.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(b){var a=this;if(a.preventDefault||a.disabled&&a.getHref()&&b){b.preventDefault()}if(b.type!=="keydown"&&b.button!==0){return}if(!a.disabled){a.doToggle();a.maybeShowMenu();a.fireHandler(b)}},fireHandler:function(c){var b=this,a=b.handler;if(b.fireEvent("click",b,c)!==false){if(a){a.call(b.scope||b,b,c)}b.blur()}},doToggle:function(){var a=this;if(a.enableToggle&&(a.allowDepress!==false||!a.pressed)){a.toggle()}},onMouseOver:function(b){var a=this;if(!a.disabled&&!b.within(a.el,true,true)){a.onMouseEnter(b)}},onMouseOut:function(b){var a=this;if(!b.within(a.el,true,true)){if(a.overMenuTrigger){a.onMenuTriggerOut(b)}a.onMouseLeave(b)}},onMouseMove:function(g){var c=this,b=c.el,d=c.overMenuTrigger,h,a;if(c.split){h=c.arrowAlign==="right"?g.getX()-c.getX():g.getY()-b.getY();a=c.getTriggerRegion();if(h>a.begin&&h<a.end){if(!d){c.onMenuTriggerOver(g)}}else{if(d){c.onMenuTriggerOut(g)}}}},getTriggerRegion:function(){var c=this,d=c._triggerRegion,b=c.getTriggerSize(),a=c.arrowAlign==="right"?c.getWidth():c.getHeight();d.begin=a-b;d.end=a;return d},getTriggerSize:function(){var d=this,c=d.triggerSize,b,a;if(c==null){b=d.arrowAlign;a=b.charAt(0);c=d.triggerSize=d.el.getFrameWidth(a)+d.getBtnWrapFrameWidth(a);if(d.frameSize){c=d.triggerSize+=d.frameSize[b]}}return c},getBtnWrapFrameWidth:function(a){return this.btnWrap.getFrameWidth(a)},addOverCls:function(){if(!this.disabled){this.addClsWithUI(this.overCls)}},removeOverCls:function(){this.removeClsWithUI(this.overCls)},onMouseEnter:function(a){this.fireEvent("mouseover",this,a)},onMouseLeave:function(a){this.fireEvent("mouseout",this,a)},onMenuTriggerOver:function(c){var b=this,a=b.arrowTooltip;b.overMenuTrigger=true;if(b.split&&a){b.btnWrap.dom.setAttribute(b.getTipAttr(),a)}b.fireEvent("menutriggerover",b,b.menu,c)},onMenuTriggerOut:function(b){var a=this;delete a.overMenuTrigger;if(a.split&&a.arrowTooltip){a.btnWrap.dom.setAttribute(a.getTipAttr(),"")}a.fireEvent("menutriggerout",a,a.menu,b)},enable:function(a){var b=this;b.callParent(arguments);b.removeClsWithUI("disabled");return b},disable:function(a){var b=this;b.callParent(arguments);b.addClsWithUI("disabled");b.removeClsWithUI(b.overCls);if(b.btnInnerEl&&Ext.isIE7m){b.btnInnerEl.repaint()}return b},setScale:function(c){var a=this,b=a.ui.replace("-"+a.scale,"");if(!Ext.Array.contains(a.allowedScales,c)){throw"#setScale: scale must be an allowed scale ("+a.allowedScales.join(", ")+")"}a.scale=c;a.setUI(b)},setUI:function(b){var a=this;if(a.scale&&!b.match(a.scale)){b=b+"-"+a.scale}a.callParent([b])},onMouseDown:function(b){var a=this;if(!a.disabled&&b.button===0){a.addClsWithUI(a.pressedCls);a.doc.on("mouseup",a.onMouseUp,a)}},onMouseUp:function(b){var a=this;if(b.button===0){if(!a.pressed){a.removeClsWithUI(a.pressedCls)}a.doc.un("mouseup",a.onMouseUp,a)}},onMenuShow:function(b){var a=this;a.ignoreNextClick=0;a.addClsWithUI(a.menuActiveCls);a.fireEvent("menushow",a,a.menu)},onMenuHide:function(b){var a=this;a.removeClsWithUI(a.menuActiveCls);a.ignoreNextClick=Ext.defer(a.restoreClick,250,a);a.fireEvent("menuhide",a,a.menu)},restoreClick:function(){this.ignoreNextClick=0},onDownKey:function(){var a=this;if(!a.disabled){if(a.menu){a.showMenu()}}}});Ext.define("Ext.layout.container.boxOverflow.Menu",{extend:Ext.layout.container.boxOverflow.None,alternateClassName:"Ext.layout.boxOverflow.Menu",noItemsMenuText:'<div class="'+Ext.baseCSSPrefix+'toolbar-no-items">(None)</div>',constructor:function(b){var a=this;a.callParent(arguments);a.triggerButtonCls=a.triggerButtonCls||Ext.baseCSSPrefix+"box-menu-after";a.menuItems=[]},beginLayout:function(a){this.callParent(arguments);this.clearOverflow(a)},beginLayoutCycle:function(b,a){this.callParent(arguments);if(!a){this.clearOverflow(b);this.layout.cacheChildItems(b)}},onRemove:function(a){Ext.Array.remove(this.menuItems,a)},getSuffixConfig:function(){var d=this,c=d.layout,a=c.owner,b=a.id;d.menu=new Ext.menu.Menu({listeners:{scope:d,beforeshow:d.beforeMenuShow}});d.menuTrigger=new Ext.button.Button({id:b+"-menu-trigger",cls:Ext.layout.container.Box.prototype.innerCls+" "+d.triggerButtonCls+" "+Ext.baseCSSPrefix+"toolbar-item",plain:a.usePlainButtons,ownerCt:a,ownerLayout:c,iconCls:Ext.baseCSSPrefix+d.getOwnerType(a)+"-more-icon",ui:a instanceof Ext.toolbar.Toolbar?"default-toolbar":"default",menu:d.menu,showEmptyMenu:true,getSplitCls:function(){return""}});return d.menuTrigger.getRenderTree()},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},handleOverflow:function(d){var c=this,b=c.layout,g=b.names,e=d.state.boxPlan,a=[null,null];c.showTrigger(d);if(c.layout.direction!=="vertical"){a[g.heightIndex]=(e.maxSize-c.menuTrigger[g.getHeight]())/2;c.menuTrigger.setPosition.apply(c.menuTrigger,a)}return{reservedSpace:c.triggerTotalWidth}},captureChildElements:function(){var a=this,c=a.menuTrigger,b=a.layout.names;if(c.rendering){c.finishRender();a.triggerTotalWidth=c[b.getWidth]()+c.el.getMargin(b.parallelMargins)}},_asLayoutRoot:{isRoot:true},clearOverflow:function(h){var g=this,b=g.menuItems,e,c=0,d=b.length,a=g.layout.owner,j=g._asLayoutRoot;a.suspendLayouts();g.captureChildElements();g.hideTrigger();a.resumeLayouts();for(;c<d;c++){e=b[c];e.suspendLayouts();e.show();e.resumeLayouts(j)}b.length=0},showTrigger:function(c){var o=this,k=o.layout,a=k.owner,n=k.names,s=n.x,e=n.width,p=c.state.boxPlan,b=p.targetSize[e],h=c.childItems,l=h.length,g=o.menuTrigger,q,j,d,m;g.suspendLayouts();g.show();g.resumeLayouts(o._asLayoutRoot);b-=o.triggerTotalWidth;a.suspendLayouts();o.menuItems.length=0;for(d=0;d<l;d++){q=h[d];m=q.props;if(m[s]+m[e]>b){j=q.target;o.menuItems.push(j);j.hide()}}a.resumeLayouts()},hideTrigger:function(){var a=this.menuTrigger;if(a){a.hide()}},beforeMenuShow:function(j){var h=this,b=h.menuItems,d=0,a=b.length,g,e,c=function(l,k){return l.isXType("buttongroup")&&!(k instanceof Ext.toolbar.Separator)};j.suspendLayouts();h.clearMenu();j.removeAll();for(;d<a;d++){g=b[d];if(!d&&g instanceof Ext.toolbar.Separator){continue}if(e&&(c(g,e)||c(e,g))){j.add("-")}h.addComponentToMenu(j,g);e=g}if(j.items.length<1){j.add(h.noItemsMenuText)}j.resumeLayouts()},createMenuConfig:function(c,a){var d=this,b=Ext.apply({},c.initialConfig),e=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu","tabIndex"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a,destroyMenu:false,listeners:{}});if(c.isFormField){b.value=c.getValue();b.listeners.change=function(j,h,g){c.setValue(h)}}else{if(e||c.enableToggle){Ext.apply(b,{hideOnClick:false,group:e,checked:c.pressed,handler:function(g,h){c.onClick(h)}})}}if(c.isButton&&!c.changeListenersAdded){c.on({textchange:d.onButtonAttrChange,iconchange:d.onButtonAttrChange,toggle:d.onButtonToggle});c.changeListenersAdded=true}delete b.ownerCt;delete b.xtype;delete b.id;return b},onButtonAttrChange:function(a){var b=a.overflowClone;b.suspendLayouts();b.setText(a.text);b.setIcon(a.icon);b.setIconCls(a.iconCls);b.resumeLayouts(true)},onButtonToggle:function(a,b){if(a.overflowClone.checked!==b){a.overflowClone.setChecked(b)}},addComponentToMenu:function(g,c){var e=this,d,b,a;if(c instanceof Ext.toolbar.Separator){g.add("-")}else{if(c.isComponent){if(c.isXType("splitbutton")){c.overflowClone=g.add(e.createMenuConfig(c,true))}else{if(c.isXType("button")){c.overflowClone=g.add(e.createMenuConfig(c,!c.menu))}else{if(c.isXType("buttongroup")){b=c.items.items;a=b.length;for(d=0;d<a;d++){e.addComponentToMenu(g,b[d])}}else{c.overflowClone=g.add(Ext.create(Ext.getClassName(c),e.createMenuConfig(c)))}}}}}},clearMenu:function(){var e=this.menu,b,c,a,d;if(e&&e.items){b=e.items.items;a=b.length;for(c=0;c<a;c++){d=b[c];if(d.setMenu){d.setMenu(null)}}}},destroy:function(){var a=this.menuTrigger;if(a&&!this.layout.owner.items.contains(a)){delete a.ownerCt}Ext.destroy(this.menu,a)}});Ext.define("Ext.layout.container.boxOverflow.Scroller",{extend:Ext.layout.container.boxOverflow.None,alternateClassName:"Ext.layout.boxOverflow.Scroller",mixins:{observable:Ext.util.Observable},animateScroll:false,scrollIncrement:20,wheelIncrement:10,scrollRepeatInterval:60,scrollDuration:400,scrollerCls:Ext.baseCSSPrefix+"box-scroller",constructor:function(c,a){var b=this;b.layout=c;Ext.apply(b,a||{});b.mixins.observable.constructor.call(b);b.addEvents("scroll");b.scrollPosition=0;b.scrollSize=0},getPrefixConfig:function(){var c=this,a=c.layout.owner,b;c.initCSSClasses();b=Ext.layout.container.Box.prototype.innerCls+" "+c.beforeCtCls;if(a.plain){b+=" "+c.scrollerCls+"-plain"}return{cls:b,cn:{id:a.id+"-before-scroller",cls:c.scrollerCls+" "+c.beforeScrollerCls,style:"display:none"}}},getSuffixConfig:function(){var c=this,a=c.layout.owner,b=Ext.layout.container.Box.prototype.innerCls+" "+c.afterCtCls;if(a.plain){b+=" "+c.scrollerCls+"-plain"}return{cls:b,cn:{id:c.layout.owner.id+"-after-scroller",cls:c.scrollerCls+" "+c.afterScrollerCls,style:"display:none"}}},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},initCSSClasses:function(){var d=this,g=Ext.baseCSSPrefix,c=d.layout,h=c.names,a=h.beforeX,e=h.afterX,b=d.getOwnerType(c.owner);d.beforeCtCls=d.beforeCtCls||g+"box-scroller-"+a;d.afterCtCls=d.afterCtCls||g+"box-scroller-"+e;d.beforeScrollerCls=d.beforeScrollerCls||g+b+"-scroll-"+a;d.afterScrollerCls=d.afterScrollerCls||g+b+"-scroll-"+e},beginLayout:function(a){a.innerCtScrollPos=this.getElScrollPos();this.callParent(arguments)},completeLayout:function(c){var b=this,e=c.state.boxPlan,d=b.layout.names,a;if(e&&e.tooNarrow){a=c.childItems[c.childItems.length-1];b.scrollSize=a.props[d.x]+a.props[d.width];b.updateScrollButtons()}this.callParent(arguments)},finishedLayout:function(a){var b=Math.min(this.getMaxScrollPosition(),a.innerCtScrollPos);this.setElScrollPos(b)},setElScrollPos:function(b){var a=this.layout;if(a.direction==="vertical"){a.innerCt.dom.scrollTop=b}else{a.innerCt.setScrollLeft(b)}},getElScrollPos:function(){var a=this.layout;if(a.direction==="vertical"){return a.innerCt.dom.scrollTop}else{return a.innerCt.getScrollLeft()}},handleOverflow:function(c){var b=this,a=b.layout.names.getWidth;b.showScrollers();return{reservedSpace:b.beforeCt[a]()+b.afterCt[a]()}},captureChildElements:function(){var e=this,c=e.layout.owner.el,g,j,b,a,d,h;if(!e.beforeCt){h="-hover";a="-pressed";b=e.scrollerCls+h;d=e.scrollerCls+a;g=e.beforeScroller=c.getById(e.layout.owner.id+"-before-scroller");j=e.afterScroller=c.getById(e.layout.owner.id+"-after-scroller");e.beforeCt=g.up("");e.afterCt=j.up("");e.createWheelListener();g.addClsOnOver(b);g.addClsOnOver(e.beforeScrollerCls+h);g.addClsOnClick(d);g.addClsOnClick(e.beforeScrollerCls+a);j.addClsOnOver(b);j.addClsOnOver(e.afterScrollerCls+h);j.addClsOnClick(d);j.addClsOnClick(e.afterScrollerCls+a);g.setVisibilityMode(Ext.Element.DISPLAY);j.setVisibilityMode(Ext.Element.DISPLAY);e.beforeRepeater=new Ext.util.ClickRepeater(g,{interval:e.scrollRepeatInterval,handler:e.scrollLeft,scope:e});e.afterRepeater=new Ext.util.ClickRepeater(j,{interval:e.scrollRepeatInterval,handler:e.scrollRight,scope:e})}},createWheelListener:function(){var a=this;a.layout.innerCt.on({mousewheel:function(b){a.scrollBy(b.getWheelDelta()*a.wheelIncrement*-1,false)},stopEvent:true})},clearOverflow:function(){this.hideScrollers()},showScrollers:function(){var a=this;a.captureChildElements();a.beforeScroller.show();a.afterScroller.show();a.layout.owner.addClsWithUI(a.layout.direction==="vertical"?"vertical-scroller":"scroller")},hideScrollers:function(){var a=this;if(a.beforeScroller!==undefined){a.beforeScroller.hide();a.afterScroller.hide();a.layout.owner.removeClsWithUI(a.layout.direction==="vertical"?"vertical-scroller":"scroller")}},destroy:function(){var a=this;Ext.destroy(a.beforeRepeater,a.afterRepeater,a.beforeScroller,a.afterScroller,a.beforeCt,a.afterCt)},scrollBy:function(b,a){this.scrollTo(this.getScrollPosition()+b,a)},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){var d=this,h,c,a,b,e,g="-disabled";if(d.beforeScroller==null||d.afterScroller==null){return}h=d.atExtremeBefore()?"addCls":"removeCls";c=d.atExtremeAfter()?"addCls":"removeCls";e=d.scrollerCls+g;a=[e,d.beforeScrollerCls+g];b=[e,d.afterScrollerCls+g];d.beforeScroller[h](a);d.afterScroller[c](b);d.scrolling=false},scrollLeft:function(){this.scrollBy(-this.scrollIncrement,false)},scrollRight:function(){this.scrollBy(this.scrollIncrement,false)},getScrollPosition:function(){var c=this,b=c.layout,a;if(isNaN(c.scrollPosition)){a=c.getElScrollPos()}else{a=c.scrollPosition}return a},getMaxScrollPosition:function(){var b=this,a=b.layout,c=b.scrollSize-a.innerCt[a.names.getWidth]();return c<0?0:c},atExtremeBefore:function(){return !this.getScrollPosition()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollPosition()},scrollTo:function(a,b){var g=this,e=g.layout,d=g.getScrollPosition(),c=Ext.Number.constrain(a,0,g.getMaxScrollPosition());if(c!=d&&!g.scrolling){g.scrollPosition=NaN;if(b===undefined){b=g.animateScroll}e.innerCt.scrollTo(e.names.beforeX,c,b?g.getScrollAnim():false);if(b){g.scrolling=true}else{g.updateScrollButtons()}g.fireEvent("scroll",g,c,b?g.getScrollAnim():false)}},scrollToItem:function(k,b){var j=this,e=j.layout,c=e.owner,h=e.names,a,d,g;k=j.getItem(k);if(k!==undefined){if(k==c.items.first()){g=0}else{if(k===c.items.last()){g=j.getMaxScrollPosition()}else{a=j.getItemVisibility(k);if(!a.fullyVisible){d=k.getBox(false,true);g=d[h.x];if(a.hiddenEnd){g-=j.layout.innerCt[h.getWidth]()-d[h.width]}}}}j.scrollTo(g,b)}},getItemVisibility:function(k){var h=this,b=h.getItem(k).getBox(true,true),c=h.layout,g=c.names,e=b[g.x],d=e+b[g.width],a=h.getScrollPosition(),j=a+c.innerCt[g.getWidth]();return{hiddenStart:e<a,hiddenEnd:d>j,fullyVisible:e>a&&d<j}}});Ext.define("Ext.util.Offset",{statics:{fromObject:function(a){return new this(a.x,a.y)}},constructor:function(a,b){this.x=a!=null&&!isNaN(a)?a:0;this.y=b!=null&&!isNaN(b)?b:0;return this},copy:function(){return new Ext.util.Offset(this.x,this.y)},copyFrom:function(a){this.x=a.x;this.y=a.y},toString:function(){return"Offset["+this.x+","+this.y+"]"},equals:function(a){return this.x==a.x&&this.y==a.y},round:function(b){if(!isNaN(b)){var a=Math.pow(10,b);this.x=Math.round(this.x*a)/a;this.y=Math.round(this.y*a)/a}else{this.x=Math.round(this.x);this.y=Math.round(this.y)}},isZero:function(){return this.x==0&&this.y==0}});Ext.define("Ext.util.Region",{statics:{getRegion:function(a){return Ext.fly(a).getRegion()},from:function(a){return new this(a.top,a.right,a.bottom,a.left)}},constructor:function(d,g,a,c){var e=this;e.y=e.top=e[1]=d;e.right=g;e.bottom=a;e.x=e.left=e[0]=c},contains:function(b){var a=this;return b.x>=a.x&&b.right<=a.right&&b.y>=a.y&&b.bottom<=a.bottom},intersect:function(h){var g=this,d=Math.max(g.y,h.y),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.x,h.x);if(a>d&&e>c){return new this.self(d,e,a,c)}else{return false}},union:function(h){var g=this,d=Math.min(g.y,h.y),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.x,h.x);return new this.self(d,e,a,c)},constrainTo:function(b){var a=this,c=Ext.Number.constrain;a.top=a.y=c(a.top,b.y,b.bottom);a.bottom=c(a.bottom,b.y,b.bottom);a.left=a.x=c(a.left,b.x,b.right);a.right=c(a.right,b.x,b.right);return a},adjust:function(d,g,a,c){var e=this;e.top=e.y+=d;e.left=e.x+=c;e.right+=g;e.bottom+=a;return e},getOutOfBoundOffset:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.getOutOfBoundOffsetX(b)}else{return this.getOutOfBoundOffsetY(b)}}else{b=a;var c=new Ext.util.Offset;c.x=this.getOutOfBoundOffsetX(b.x);c.y=this.getOutOfBoundOffsetY(b.y);return c}},getOutOfBoundOffsetX:function(a){if(a<=this.x){return this.x-a}else{if(a>=this.right){return this.right-a}}return 0},getOutOfBoundOffsetY:function(a){if(a<=this.y){return this.y-a}else{if(a>=this.bottom){return this.bottom-a}}return 0},isOutOfBound:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.isOutOfBoundX(b)}else{return this.isOutOfBoundY(b)}}else{b=a;return this.isOutOfBoundX(b.x)||this.isOutOfBoundY(b.y)}},isOutOfBoundX:function(a){return a<this.x||a>this.right},isOutOfBoundY:function(a){return a<this.y||a>this.bottom},restrict:function(b,d,a){if(Ext.isObject(b)){var c;a=d;d=b;if(d.copy){c=d.copy()}else{c={x:d.x,y:d.y}}c.x=this.restrictX(d.x,a);c.y=this.restrictY(d.y,a);return c}else{if(b=="x"){return this.restrictX(d,a)}else{return this.restrictY(d,a)}}},restrictX:function(b,a){if(!a){a=1}if(b<=this.x){b-=(b-this.x)*a}else{if(b>=this.right){b-=(b-this.right)*a}}return b},restrictY:function(b,a){if(!a){a=1}if(b<=this.y){b-=(b-this.y)*a}else{if(b>=this.bottom){b-=(b-this.bottom)*a}}return b},getSize:function(){return{width:this.right-this.x,height:this.bottom-this.y}},copy:function(){return new this.self(this.y,this.right,this.bottom,this.x)},copyFrom:function(b){var a=this;a.top=a.y=a[1]=b.y;a.right=b.right;a.bottom=b.bottom;a.left=a.x=a[0]=b.x;return this},toString:function(){return"Region["+this.top+","+this.right+","+this.bottom+","+this.left+"]"},translateBy:function(a,c){if(arguments.length==1){c=a.y;a=a.x}var b=this;b.top=b.y+=c;b.right+=a;b.bottom+=c;b.left=b.x+=a;return b},round:function(){var a=this;a.top=a.y=Math.round(a.y);a.right=Math.round(a.right);a.bottom=Math.round(a.bottom);a.left=a.x=Math.round(a.x);return a},equals:function(a){return this.top==a.top&&this.right==a.right&&this.bottom==a.bottom&&this.left==a.left}});Ext.define("Ext.dd.DragDropManager",{singleton:true,alternateClassName:["Ext.dd.DragDropMgr","Ext.dd.DDM"],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,notifyOccluded:false,dragCls:Ext.baseCSSPrefix+"dd-drag-current",_execOnAll:function(c,b){var d,a,e;for(d in this.ids){for(a in this.ids[d]){e=this.ids[d][a];if(!this.isTypeOfDD(e)){continue}e[c].apply(e,b)}}},_onLoad:function(){this.init();var a=Ext.EventManager;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(a){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(b,a){if(!this.initialized){this.init()}if(!this.ids[a]){this.ids[a]={}}this.ids[a][b.id]=b},removeDDFromGroup:function(c,a){if(!this.ids[a]){this.ids[a]={}}var b=this.ids[a];if(b&&b[c.id]){delete b[c.id]}},_remove:function(b){for(var a in b.groups){if(a&&this.ids[a]&&this.ids[a][b.id]){delete this.ids[a][b.id]}}delete this.handleIds[b.id]},regHandle:function(b,a){if(!this.handleIds[b]){this.handleIds[b]={}}this.handleIds[b][a]=a},isDragDrop:function(a){return this.getDDById(a)?true:false},getRelated:function(g,b){var e=[],d,c,a;for(d in g.groups){for(c in this.ids[d]){a=this.ids[d][c];if(!this.isTypeOfDD(a)){continue}if(!b||a.isTarget){e[e.length]=a}}}return e},isLegalTarget:function(e,d){var b=this.getRelated(e,true),c,a;for(c=0,a=b.length;c<a;++c){if(b[c].id==d.id){return true}}return false},isTypeOfDD:function(a){return a&&a.__ygDragDrop},isHandle:function(b,a){return this.handleIds[b]&&this.handleIds[b][a]},getDDById:function(c){var b,a;for(b in this.ids){a=this.ids[b][c];if(a instanceof Ext.dd.DDTarget){return a}}return null},handleMouseDown:function(d,c){var b=this,a;if(Ext.quickTipsActive){Ext.tip.QuickTipManager.ddDisable()}if(b.dragCurrent){b.handleMouseUp(d)}b.currentTarget=d.getTarget();b.dragCurrent=c;a=c.getEl();if(Ext.isIE&&a.setCapture){a.setCapture()}b.startX=d.getPageX();b.startY=d.getPageY();b.deltaX=b.startX-a.offsetLeft;b.deltaY=b.startY-a.offsetTop;b.dragThreshMet=false;b.clickTimeout=setTimeout(function(){b.startDrag(b.startX,b.startY)},b.clickTimeThresh)},startDrag:function(b,e){var c=this,d=c.dragCurrent,a;clearTimeout(c.clickTimeout);if(d){d.b4StartDrag(b,e);d.startDrag(b,e);a=d.getDragEl();if(a){Ext.fly(a).addCls(c.dragCls)}}c.dragThreshMet=true},handleMouseUp:function(b){var a=this;if(Ext.quickTipsActive){Ext.tip.QuickTipManager.ddEnable()}if(!a.dragCurrent){return}if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}clearTimeout(a.clickTimeout);if(a.dragThreshMet){a.fireEvents(b,true)}a.stopDrag(b);a.stopEvent(b)},stopEvent:function(a){if(this.stopPropagation){a.stopPropagation()}if(this.preventDefault){a.preventDefault()}},stopDrag:function(d){var b=this,c=b.dragCurrent,a;if(c){if(b.dragThreshMet){a=c.getDragEl();if(a){Ext.fly(a).removeCls(b.dragCls)}c.b4EndDrag(d);c.endDrag(d)}b.dragCurrent.onMouseUp(d)}b.dragCurrent=null;b.dragOvers={}},handleMouseMove:function(g){var c=this,d=c.dragCurrent,b,a;if(!d){return true}if(!c.dragThreshMet){b=Math.abs(c.startX-g.getPageX());a=Math.abs(c.startY-g.getPageY());if(b>c.clickPixelThresh||a>c.clickPixelThresh){c.startDrag(c.startX,c.startY)}}if(c.dragThreshMet){d.b4Drag(g);d.onDrag(g);if(!d.moveOnly){c.fireEvents(g,false)}}c.stopEvent(g);return true},fireEvents:function(w,m){var y=this,g=y.dragCurrent,c,o,t=w.getPoint(),d,l,n=[],h=[],k=[],a=[],x=[],u=[],j,b,q,s,p;if(!g||g.isLocked()){return}if(!y.notifyOccluded&&(!Ext.supports.PointerEvents||Ext.isIE10m||Ext.isOpera)&&!(g.deltaX<0||g.deltaY<0)){c=g.getDragEl();o=c.style.top;c.style.top="-10000px";j=w.getXY();w.target=document.elementFromPoint(j[0],j[1]);c.style.top=o}for(q in y.dragOvers){d=y.dragOvers[q];if(!y.isTypeOfDD(d)){continue}if(y.notifyOccluded){if(!this.isOverTarget(t,d,y.mode)){k.push(d)}}else{if(!w.within(d.getEl())){k.push(d)}}h[q]=true;delete y.dragOvers[q]}for(p in g.groups){if("string"!=typeof p){continue}for(q in y.ids[p]){d=y.ids[p][q];if(y.isTypeOfDD(d)&&(l=d.getEl())&&d.isTarget&&!d.isLocked()&&Ext.fly(l).isVisible(true)&&(d!=g||g.ignoreSelf===false)){if(y.notifyOccluded){if((d.zIndex=y.getZIndex(l))!==-1){b=true}n.push(d)}else{if(w.within(d.getEl())){n.push(d);break}}}}}if(b){Ext.Array.sort(n,y.byZIndex)}for(q=0,s=n.length;q<s;q++){d=n[q];if(y.isOverTarget(t,d,y.mode)){if(m){x.push(d)}else{if(!h[d.id]){u.push(d)}else{a.push(d)}y.dragOvers[d.id]=d}if(!y.notifyOccluded){break}}}if(y.mode){if(k.length){g.b4DragOut(w,k);g.onDragOut(w,k)}if(u.length){g.onDragEnter(w,u)}if(a.length){g.b4DragOver(w,a);g.onDragOver(w,a)}if(x.length){g.b4DragDrop(w,x);g.onDragDrop(w,x)}}else{for(q=0,s=k.length;q<s;++q){g.b4DragOut(w,k[q].id);g.onDragOut(w,k[q].id)}for(q=0,s=u.length;q<s;++q){g.onDragEnter(w,u[q].id)}for(q=0,s=a.length;q<s;++q){g.b4DragOver(w,a[q].id);g.onDragOver(w,a[q].id)}for(q=0,s=x.length;q<s;++q){g.b4DragDrop(w,x[q].id);g.onDragDrop(w,x[q].id)}}if(m&&!x.length){g.onInvalidDrop(w)}},getZIndex:function(b){var a=document.body,c,d=-1;b=Ext.getDom(b);while(b!==a){if(!isNaN(c=Number(Ext.fly(b).getStyle("zIndex")))){d=c}b=b.parentNode}return d},byZIndex:function(b,a){return b.zIndex<a.zIndex},getBestMatch:function(c){var e=null,b=c.length,d,a;if(b==1){e=c[0]}else{for(d=0;d<b;++d){a=c[d];if(a.cursorIsOver){e=a;break}else{if(!e||e.overlap.getArea()<a.overlap.getArea()){e=a}}}}return e},refreshCache:function(b){var a,c,d,e;for(a in b){if("string"!=typeof a){continue}for(c in this.ids[a]){d=this.ids[a][c];if(this.isTypeOfDD(d)){e=this.getLocation(d);if(e){this.locationCache[d.id]=e}else{delete this.locationCache[d.id]}}}}},verifyEl:function(b){if(b){var a;if(Ext.isIE){try{a=b.offsetParent}catch(c){}}else{a=b.offsetParent}if(a){return true}}return false},getLocation:function(j){if(!this.isTypeOfDD(j)){return null}if(j.getRegion){return j.getRegion()}var g=j.getEl(),n,d,c,p,o,q,a,m,h;try{n=Ext.Element.getXY(g)}catch(k){}if(!n){return null}d=n[0];c=d+g.offsetWidth;p=n[1];o=p+g.offsetHeight;q=p-j.padding[0];a=c+j.padding[1];m=o+j.padding[2];h=d-j.padding[3];return new Ext.util.Region(q,a,m,h)},isOverTarget:function(k,a,c){var e=this.locationCache[a.id],j,g,b,d,h;if(!e||!this.useCache){e=this.getLocation(a);this.locationCache[a.id]=e}if(!e){return false}a.cursorIsOver=e.contains(k);j=this.dragCurrent;if(!j||!j.getTargetCoord||!c&&!j.constrainX&&!j.constrainY){return a.cursorIsOver}a.overlap=null;g=j.getTargetCoord(k.x,k.y);b=j.getDragEl();d=new Ext.util.Region(g.y,g.x+b.offsetWidth,g.y+b.offsetHeight,g.x);h=d.intersect(e);if(h){a.overlap=h;return c?true:a.cursorIsOver}else{return false}},_onUnload:function(b,a){Ext.dd.DragDropManager.unregAll()},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null}this._execOnAll("unreg",[]);for(var a in this.elementCache){delete this.elementCache[a]}this.elementCache={};this.ids={}},elementCache:{},getElWrapper:function(b){var a=this.elementCache[b];if(!a||!a.el){a=this.elementCache[b]=new this.ElementWrapper(Ext.getDom(b))}return a},getElement:function(a){return Ext.getDom(a)},getCss:function(b){var a=Ext.getDom(b);return a?a.style:null},ElementWrapper:function(a){this.el=a||null;this.id=this.el&&a.id;this.css=this.el&&a.style},getPosX:function(a){return Ext.Element.getX(a)},getPosY:function(a){return Ext.Element.getY(a)},swapNode:function(c,a){if(c.swapNode){c.swapNode(a)}else{var d=a.parentNode,b=a.nextSibling;if(b==c){d.insertBefore(c,a)}else{if(a==c.nextSibling){d.insertBefore(a,c)}else{c.parentNode.replaceChild(a,c);d.insertBefore(c,b)}}}},getScroll:function(){var d=window.document,e=d.documentElement,a=d.body,c=0,b=0;if(Ext.isGecko4){c=window.scrollYOffset;b=window.scrollXOffset}else{if(e&&(e.scrollTop||e.scrollLeft)){c=e.scrollTop;b=e.scrollLeft}else{if(a){c=a.scrollTop;b=a.scrollLeft}}}return{top:c,left:b}},getStyle:function(b,a){return Ext.fly(b).getStyle(a)},getScrollTop:function(){return this.getScroll().top},getScrollLeft:function(){return this.getScroll().left},moveToEl:function(a,c){var b=Ext.Element.getXY(c);Ext.Element.setXY(a,b)},numericSort:function(d,c){return d-c},_timeoutCount:0,_addListeners:function(){if(document){this._onLoad()}else{if(this._timeoutCount<=2000){setTimeout(this._addListeners,10);if(document&&document.body){this._timeoutCount+=1}}}},handleWasClicked:function(a,c){if(this.isHandle(c,a.id)){return true}else{var b=a.parentNode;while(b){if(this.isHandle(c,b.id)){return true}else{b=b.parentNode}}}return false}},function(){this._addListeners()});Ext.define("Ext.layout.container.Box",{alias:["layout.box"],extend:Ext.layout.container.Container,alternateClassName:"Ext.layout.BoxLayout",defaultMargins:{top:0,right:0,bottom:0,left:0},padding:0,pack:"start",flex:undefined,stretchMaxPartner:undefined,alignRoundingMethod:"round",type:"box",scrollOffset:0,itemCls:Ext.baseCSSPrefix+"box-item",targetCls:Ext.baseCSSPrefix+"box-layout-ct",targetElCls:Ext.baseCSSPrefix+"box-target",innerCls:Ext.baseCSSPrefix+"box-inner",availableSpaceOffset:0,reserveOffset:true,manageMargins:true,createsInnerCt:true,childEls:["innerCt","targetEl"],renderTpl:["{%var oc,l=values.$comp.layout,oh=l.overflowHandler;","if (oh.getPrefixConfig!==Ext.emptyFn) {","if(oc=oh.getPrefixConfig())dh.generateMarkup(oc, out)","}%}",'<div id="{ownerId}-innerCt" class="{[l.innerCls]} {[oh.getOverflowCls()]}" role="presentation">','<div id="{ownerId}-targetEl" class="{targetElCls}">',"{%this.renderBody(out, values)%}","</div>","</div>","{%if (oh.getSuffixConfig!==Ext.emptyFn) {","if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)","}%}",{disableFormats:true,definitions:"var dh=Ext.DomHelper;"}],constructor:function(a){var c=this,b;c.callParent(arguments);c.flexSortFn=Ext.Function.bind(c.flexSort,c);c.initOverflowHandler();b=typeof c.padding;if(b=="string"||b=="number"){c.padding=Ext.util.Format.parseBox(c.padding);c.padding.height=c.padding.top+c.padding.bottom;c.padding.width=c.padding.left+c.padding.right}},_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(p,q){var l=this,j=l.sizePolicy,h=l.align,g=p.flex,n=h,k=l.names,b=p[k.width],o=p[k.height],d=l._percentageRe,c=d.test(b),e=h=="stretch",a=h=="stretchmax",m=l.constrainAlign;if(!q&&(e||g||c||m&&!a)){q=l.owner.getSizeModel()}if(e){if(!d.test(o)&&q[k.height].shrinkWrap){n="stretchmax"}}else{if(!a){if(d.test(o)){n="stretch"}else{if(m&&!q[k.height].shrinkWrap){n="stretchmax"}else{n=""}}}}if(g||c){if(!q[k.width].shrinkWrap){j=j.flex}}return j[n]},flexSort:function(n,m){var k=this.names.maxWidth,e=this.names.minWidth,l=Infinity,j=n.target,q=m.target,s=0,c,o,h,d,p,g;h=j[k]||l;d=q[k]||l;c=j[e]||0;o=q[e]||0;p=isFinite(c)||isFinite(o);g=isFinite(h)||isFinite(d);if(p||g){if(g){s=h-d}if(s===0&&p){s=o-c}}return s},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},roundFlex:function(a){return Math.ceil(a)},beginCollapse:function(b){var a=this;if(a.direction==="vertical"&&b.collapsedVertical()){b.collapseMemento.capture(["flex"]);delete b.flex}else{if(a.direction==="horizontal"&&b.collapsedHorizontal()){b.collapseMemento.capture(["flex"]);delete b.flex}}},beginExpand:function(a){a.collapseMemento.restore(["flex"])},beginLayout:function(d){var c=this,a=c.owner,g=a.stretchMaxPartner,b=c.innerCt.dom.style,e=c.names;d.boxNames=e;c.overflowHandler.beginLayout(d);if(typeof g==="string"){g=Ext.getCmp(g)||a.query(g)[0]}d.stretchMaxPartner=g&&d.context.getCmp(g);c.callParent(arguments);d.innerCtContext=d.getEl("innerCt",c);c.scrollParallel=a.scrollFlags[e.x];c.scrollPerpendicular=a.scrollFlags[e.y];if(c.scrollParallel){c.scrollPos=a.getTargetEl().dom[e.scrollLeft]}b.width="";b.height=""},beginLayoutCycle:function(e,a){var d=this,h=d.align,g=e.boxNames,b=d.pack,c=g.heightModel;d.overflowHandler.beginLayoutCycle(e,a);d.callParent(arguments);e.parallelSizeModel=e[g.widthModel];e.perpendicularSizeModel=e[c];e.boxOptions={align:h={stretch:h=="stretch",stretchmax:h=="stretchmax",center:h==g.center,bottom:h==g.afterY},pack:b={center:b=="center",end:b=="end"}};if(h.stretch&&e.perpendicularSizeModel.shrinkWrap){h.stretchmax=true;h.stretch=false}h.nostretch=!(h.stretch||h.stretchmax);if(e.parallelSizeModel.shrinkWrap){b.center=b.end=false}d.cacheFlexes(e);d.targetEl.setWidth(20000)},cacheFlexes:function(k){var w=this,l=k.boxNames,a=l.widthModel,d=l.heightModel,c=k.boxOptions.align.nostretch,o=0,b=k.childItems,q=b.length,t=[],m=0,j=l.minWidth,g=w._percentageRe,s=0,u=0,e,n,p,h;while(q--){n=b[q];e=n.target;if(n[a].calculated){n.flex=p=e.flex;if(p){o+=p;t.push(n);m+=e[j]||0}else{h=g.exec(e[l.width]);n.percentageParallel=parseFloat(h[1])/100;++s}}if(c&&n[d].calculated){h=g.exec(e[l.height]);n.percentagePerpendicular=parseFloat(h[1])/100;++u}}k.flexedItems=t;k.flexedMinSize=m;k.totalFlex=o;k.percentageWidths=s;k.percentageHeights=u;Ext.Array.sort(t,w.flexSortFn)},calculate:function(e){var c=this,b=c.getContainerSize(e),h=e.boxNames,d=e.state,g=d.boxPlan||(d.boxPlan={}),a=e.targetContext;g.targetSize=b;if(!e.parallelSizeModel.shrinkWrap&&!b[h.gotWidth]){c.done=false;return}if(!d.parallelDone){d.parallelDone=c.calculateParallel(e,h,g)}if(!d.perpendicularDone){d.perpendicularDone=c.calculatePerpendicular(e,h,g)}if(d.parallelDone&&d.perpendicularDone){if(c.owner.dock&&(Ext.isIE7m||Ext.isIEQuirks)&&!c.owner.width&&!c.horizontal){g.isIEVerticalDock=true;g.calculatedWidth=g.maxSize+e.getPaddingInfo().width+e.getFrameInfo().width;if(a!==e){g.calculatedWidth+=a.getPaddingInfo().width}}c.publishInnerCtSize(e,c.reserveOffset?c.availableSpaceOffset:0);if(c.done&&(e.childItems.length>1||e.stretchMaxPartner)&&e.boxOptions.align.stretchmax&&!d.stretchMaxDone){c.calculateStretchMax(e,h,g);d.stretchMaxDone=true}c.overflowHandler.calculate(e)}else{c.done=false}},calculateParallel:function(k,n,b){var H=this,B=n.width,a=k.childItems,t=n.beforeX,d=n.afterX,q=n.setWidth,C=a.length,z=k.flexedItems,s=z.length,x=k.boxOptions.pack,m=H.padding,h=b.targetSize[B],D=0,e=m[t],G=e+m[d]+H.scrollOffset+(H.reserveOffset?H.availableSpaceOffset:0),y=Ext.getScrollbarSize()[n.width],w,l,g,A,o,u,F,p,E,c,j;if(y&&H.scrollPerpendicular&&k.parallelSizeModel.shrinkWrap&&!k.boxOptions.align.stretch&&!k.perpendicularSizeModel.shrinkWrap){if(!k.state.perpendicularDone){return false}E=true}for(w=0;w<C;++w){o=a[w];l=o.marginInfo||o.getMarginInfo();D+=l[B];if(!o[n.widthModel].calculated){c=o.getProp(B);G+=c;if(isNaN(G)){return false}}}G+=D;if(k.percentageWidths){j=h-D;if(isNaN(j)){return false}for(w=0;w<C;++w){o=a[w];if(o.percentageParallel){c=Math.ceil(j*o.percentageParallel);c=o.setWidth(c);G+=c}}}if(k.parallelSizeModel.shrinkWrap){b.availableSpace=0;b.tooNarrow=false}else{b.availableSpace=h-G;b.tooNarrow=b.availableSpace<k.flexedMinSize;if(b.tooNarrow&&Ext.getScrollbarSize()[n.height]&&H.scrollParallel&&k.state.perpendicularDone){k.state.perpendicularDone=false;for(w=0;w<C;++w){a[w].invalidate()}}}p=G;g=b.availableSpace;A=k.totalFlex;for(w=0;w<s;w++){o=z[w];u=o.flex;F=H.roundFlex(u/A*g);F=o[q](F);p+=F;g=Math.max(0,g-F);A-=u}if(x.center){e+=g/2;if(e<0){e=0}}else{if(x.end){e+=g}}for(w=0;w<C;++w){o=a[w];l=o.marginInfo;e+=l[t];o.setProp(n.x,e);e+=l[d]+o.props[B]}p+=k.targetContext.getPaddingInfo()[B];k.state.contentWidth=p;if(E&&k.peek(n.contentHeight)>b.targetSize[n.height]){p+=y;k[n.hasOverflowY]=true;k.target.componentLayout[n.setWidthInDom]=true;k[n.invalidateScrollY]=Ext.isStrict&&Ext.isIE8}k[n.setContentWidth](p);return true},calculatePerpendicular:function(w,M,B){var u=this,d=w.perpendicularSizeModel.shrinkWrap,b=B.targetSize,j=w.childItems,A=j.length,m=Math.max,l=M.height,n=M.setHeight,h=M.beforeY,t=M.y,J=u.padding,k=J[h],o=b[l]-k-J[M.afterY],G=w.boxOptions.align,p=G.stretch,q=G.stretchmax,P=G.center,O=G.bottom,I=u.constrainAlign,H=0,D=0,F=u.onBeforeConstrainInvalidateChild,C=u.onAfterConstrainInvalidateChild,a=Ext.getScrollbarSize().height,z,K,E,x,y,c,s,e,N,L,g;if(p||(P||O)&&!d){if(isNaN(o)){return false}}if(u.scrollParallel&&B.tooNarrow){if(d){L=true}else{o-=a;B.targetSize[l]-=a}}if(p){c=o}else{for(K=0;K<A;K++){s=j[K];x=(s.marginInfo||s.getMarginInfo())[l];if(!(g=s.percentagePerpendicular)){E=s.getProp(l)}else{++D;if(d){continue}else{E=g*o-x;E=s[M.setHeight](E)}}if(!d&&I&&s[M.heightModel].shrinkWrap&&E>o){s.invalidate({before:F,after:C,layout:u,childHeight:o,names:M});w.state.parallelDone=false}if(isNaN(H=m(H,E+x,s.target[M.minHeight]||0))){return false}}if(L){H+=a;w[M.hasOverflowX]=true;w.target.componentLayout[M.setHeightInDom]=true;w[M.invalidateScrollX]=Ext.isStrict&&Ext.isIE8}e=w.stretchMaxPartner;if(e){w.setProp("maxChildHeight",H);N=e.childItems;if(N&&N.length){H=m(H,e.getProp("maxChildHeight"));if(isNaN(H)){return false}}}w[M.setContentHeight](H+u.padding[l]+w.targetContext.getPaddingInfo()[l]);if(L){H-=a}B.maxSize=H;if(q){c=H}else{if(P||O||D){if(I){c=d?H:o}else{c=d?H:m(o,H)}c-=w.innerCtContext.getBorderInfo()[l]}}}for(K=0;K<A;K++){s=j[K];x=s.marginInfo||s.getMarginInfo();z=k+x[h];if(p){s[n](c-x[l])}else{g=s.percentagePerpendicular;if(d&&g){x=s.marginInfo||s.getMarginInfo();E=g*c-x[l];E=s.setHeight(E)}if(P){y=c-s.props[l];if(y>0){z=k+Math[u.alignRoundingMethod](y/2)}}else{if(O){z=m(0,c-z-s.props[l])}}}s.setProp(t,z)}return true},onBeforeConstrainInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMin){b[c]=Ext.layout.SizeModel.calculated}},onAfterConstrainInvalidateChild:function(b,a){var c=a.names;b.setProp(c.beforeY,0);if(b[c.heightModel].calculated){b[c.setHeight](a.childHeight)}},calculateStretchMax:function(c,k,m){var l=this,h=k.height,n=k.width,g=c.childItems,a=g.length,p=m.maxSize,o=l.onBeforeStretchMaxInvalidateChild,e=l.onAfterStretchMaxInvalidateChild,q,j,d,b;for(d=0;d<a;++d){q=g[d];j=q.props;b=p-q.getMarginInfo()[h];if(b!=j[h]||q[k.heightModel].constrained){q.invalidate({before:o,after:e,layout:l,childWidth:j[n],childHeight:b,childX:j.x,childY:j.y,names:k})}}},onBeforeStretchMaxInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMax){b[c]=Ext.layout.SizeModel.calculated}},onAfterStretchMaxInvalidateChild:function(d,c){var e=c.names,a=c.childHeight,b=c.childWidth;d.setProp("x",c.childX);d.setProp("y",c.childY);if(d[e.heightModel].calculated){d[e.setHeight](a)}if(d[e.widthModel].calculated){d[e.setWidth](b)}},completeLayout:function(b){var k=this,j=b.boxNames,h=b.invalidateScrollX,g=b.invalidateScrollY,d,a,e,c,l;k.overflowHandler.completeLayout(b);if(h||g){a=k.getTarget();d=a.dom;l=d.style;if(h){e=a.getStyle("overflowX");if(e=="auto"){e=l.overflowX;l.overflowX="scroll"}else{h=false}}if(g){c=a.getStyle("overflowY");if(c=="auto"){c=l.overflowY;l.overflowY="scroll"}else{g=false}}if(h||g){d.scrollWidth;if(h){l.overflowX=e}if(g){l.overflowY=c}}}if(k.scrollParallel){k.owner.getTargetEl().dom[j.scrollLeft]=k.scrollPos}},finishedLayout:function(a){this.overflowHandler.finishedLayout(a);this.callParent(arguments);this.targetEl.setWidth(a.innerCtContext.props.width)},publishInnerCtSize:function(a,d){var j=this,h=a.boxNames,g=h.height,l=h.width,e=a.boxOptions.align,p=j.owner.dock,m=j.padding,k=a.state.boxPlan,c=k.targetSize,o=c[g],q=a.innerCtContext,b=(a.parallelSizeModel.shrinkWrap||k.tooNarrow&&j.scrollParallel?a.state.contentWidth-a.targetContext.getPaddingInfo()[l]:c[l])-(d||0),n;if(e.stretch){n=o}else{n=k.maxSize+m[h.beforeY]+m[h.afterY]+q.getBorderInfo()[g];if(!a.perpendicularSizeModel.shrinkWrap&&(e.center||e.bottom)){n=Math.max(o,n)}}q[h.setWidth](b);q[h.setHeight](n);if(isNaN(b+n)){j.done=false}if(k.calculatedWidth&&(p=="left"||p=="right")){a.setWidth(k.calculatedWidth,true,true)}},onRemove:function(a){var b=this;b.callParent(arguments);if(b.overflowHandler){b.overflowHandler.onRemove(a)}if(a.layoutMarginCap==b.id){delete a.layoutMarginCap}},initOverflowHandler:function(){var d=this,c=d.overflowHandler,b,a;if(typeof c=="string"){c={type:c}}b="None";if(c&&c.type!==undefined){b=c.type}a=Ext.layout.container.boxOverflow[b];if(a[d.type]){a=a[d.type]}d.overflowHandler=Ext.create("Ext.layout.container.boxOverflow."+b,d,c)},getRenderTarget:function(){return this.targetEl},getElementTarget:function(){return this.innerCt},destroy:function(){Ext.destroy(this.innerCt,this.overflowHandler);this.callParent(arguments)},getRenderData:function(){var a=this.callParent();a.targetElCls=this.targetElCls;return a}});Ext.define("Ext.layout.container.HBox",{alias:["layout.hbox"],extend:Ext.layout.container.Box,alternateClassName:"Ext.layout.HBoxLayout",align:"top",constrainAlign:false,type:"hbox",direction:"horizontal",horizontal:true,names:{beforeX:"left",leftCap:"Left",afterX:"right",width:"width",contentWidth:"contentWidth",minWidth:"minWidth",maxWidth:"maxWidth",widthCap:"Width",widthModel:"widthModel",widthIndex:0,x:"x",scrollLeft:"scrollLeft",overflowX:"overflowX",hasOverflowX:"hasOverflowX",invalidateScrollX:"invalidateScrollX",parallelMargins:"lr",center:"middle",beforeY:"top",afterY:"bottom",height:"height",contentHeight:"contentHeight",minHeight:"minHeight",maxHeight:"maxHeight",heightCap:"Height",heightModel:"heightModel",heightIndex:1,y:"y",scrollTop:"scrollTop",overflowY:"overflowY",hasOverflowY:"hasOverflowY",invalidateScrollY:"invalidateScrollY",perpendicularMargins:"tb",getWidth:"getWidth",getHeight:"getHeight",setWidth:"setWidth",setHeight:"setHeight",gotWidth:"gotWidth",gotHeight:"gotHeight",setContentWidth:"setContentWidth",setContentHeight:"setContentHeight",setWidthInDom:"setWidthInDom",setHeightInDom:"setHeightInDom"},sizePolicy:{flex:{"":{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},stretch:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1},stretchmax:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:1}},"":{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},stretch:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},stretchmax:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:1}}});Ext.define("Ext.layout.container.VBox",{alias:["layout.vbox"],extend:Ext.layout.container.Box,alternateClassName:"Ext.layout.VBoxLayout",align:"left",constrainAlign:false,type:"vbox",direction:"vertical",horizontal:false,names:{beforeX:"top",leftCap:"Top",afterX:"bottom",width:"height",contentWidth:"contentHeight",minWidth:"minHeight",maxWidth:"maxHeight",widthCap:"Height",widthModel:"heightModel",widthIndex:1,x:"y",scrollLeft:"scrollTop",overflowX:"overflowY",hasOverflowX:"hasOverflowY",invalidateScrollX:"invalidateScrollY",parallelMargins:"tb",center:"center",beforeY:"left",afterY:"right",height:"width",contentHeight:"contentWidth",minHeight:"minWidth",maxHeight:"maxWidth",heightCap:"Width",heightModel:"widthModel",heightIndex:0,y:"x",scrollTop:"scrollLeft",overflowY:"overflowX",hasOverflowY:"hasOverflowX",invalidateScrollY:"invalidateScrollX",perpendicularMargins:"lr",getWidth:"getHeight",getHeight:"getWidth",setWidth:"setHeight",setHeight:"setWidth",gotWidth:"gotHeight",gotHeight:"gotWidth",setContentWidth:"setContentHeight",setContentHeight:"setContentWidth",setWidthInDom:"setHeightInDom",setHeightInDom:"setWidthInDom"},sizePolicy:{flex:{"":{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},stretch:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1},stretchmax:{readsWidth:1,readsHeight:0,setsWidth:1,setsHeight:1}},"":{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},stretch:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},stretchmax:{readsWidth:1,readsHeight:1,setsWidth:1,setsHeight:0}}});Ext.define("Ext.toolbar.Toolbar",{extend:Ext.container.Container,alias:"widget.toolbar",alternateClassName:"Ext.Toolbar",isToolbar:true,baseCls:Ext.baseCSSPrefix+"toolbar",ariaRole:"toolbar",defaultType:"button",vertical:false,enableOverflow:false,menuTriggerCls:Ext.baseCSSPrefix+"toolbar-more-icon",trackMenus:true,itemCls:Ext.baseCSSPrefix+"toolbar-item",statics:{shortcuts:{"-":"tbseparator"," ":"tbspacer"},shortcutsHV:{0:{"->":{xtype:"tbfill",height:0}},1:{"->":{xtype:"tbfill",width:0}}}},initComponent:function(){var a=this;if(!a.layout&&a.enableOverflow){a.layout={overflowHandler:"Menu"}}if(a.dock==="right"||a.dock==="left"){a.vertical=true}a.layout=Ext.applyIf(Ext.isString(a.layout)?{type:a.layout}:a.layout||{},{type:a.vertical?"vbox":"hbox",align:a.vertical?"stretchmax":"middle"});if(a.vertical){a.addClsWithUI("vertical")}if(a.ui==="footer"){a.ignoreBorderManagement=true}a.callParent();a.addEvents("overflowchange")},getRefItems:function(a){var e=this,b=e.callParent(arguments),d=e.layout,c;if(a&&e.enableOverflow){c=d.overflowHandler;if(c&&c.menu){b=b.concat(c.menu.getRefItems(a))}}return b},lookupComponent:function(e){var d=arguments;if(typeof e=="string"){var b=Ext.toolbar.Toolbar,a=b.shortcutsHV[this.vertical?1:0][e]||b.shortcuts[e];if(typeof a=="string"){e={xtype:a}}else{if(a){e=Ext.apply({},a)}else{e={xtype:"tbtext",text:e}}}this.applyDefaults(e);d=[e]}return this.callParent(d)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a},trackMenu:function(c,a){if(this.trackMenus&&c.menu){var d=a?"mun":"mon",b=this;b[d](c,"mouseover",b.onButtonOver,b);b[d](c,"menushow",b.onButtonMenuShow,b);b[d](c,"menuhide",b.onButtonMenuHide,b)}},onBeforeAdd:function(b){var c=this,a=b.isButton;if(a&&c.defaultButtonUI&&b.ui==="default"&&!b.hasOwnProperty("ui")){b.ui=c.defaultButtonUI}else{if((a||b.isFormField)&&c.ui!=="footer"){b.ui=b.ui+"-toolbar"}}if(b instanceof Ext.toolbar.Separator){b.setUI(c.vertical?"vertical":"horizontal")}c.callParent(arguments)},onAdd:function(a){this.callParent(arguments);this.trackMenu(a)},onRemove:function(a){this.callParent(arguments);this.trackMenu(a,true)},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(a){if(this.activeMenuBtn&&this.activeMenuBtn!=a){this.activeMenuBtn.hideMenu();a.showMenu();this.activeMenuBtn=a}},onButtonMenuShow:function(a){this.activeMenuBtn=a},onButtonMenuHide:function(a){delete this.activeMenuBtn}});Ext.define("Ext.layout.component.Dock",{extend:Ext.layout.component.Component,alias:"layout.dock",alternateClassName:"Ext.layout.component.AbstractDock",type:"dock",horzAxisProps:{name:"horz",oppositeName:"vert",dockBegin:"left",dockEnd:"right",horizontal:true,marginBegin:"margin-left",maxSize:"maxWidth",minSize:"minWidth",pos:"x",setSize:"setWidth",shrinkWrapDock:"shrinkWrapDockWidth",size:"width",sizeModel:"widthModel"},vertAxisProps:{name:"vert",oppositeName:"horz",dockBegin:"top",dockEnd:"bottom",horizontal:false,marginBegin:"margin-top",maxSize:"maxHeight",minSize:"minHeight",pos:"y",setSize:"setHeight",shrinkWrapDock:"shrinkWrapDockHeight",size:"height",sizeModel:"heightModel"},initializedBorders:-1,horizontalCollapsePolicy:{width:true,x:true},verticalCollapsePolicy:{height:true,y:true},finishRender:function(){var b=this,c,a;b.callParent();c=b.getRenderTarget();a=b.getDockedItems();b.finishRenderItems(c,a)},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},noBorderClasses:[Ext.baseCSSPrefix+"docked-noborder-top",Ext.baseCSSPrefix+"docked-noborder-right",Ext.baseCSSPrefix+"docked-noborder-bottom",Ext.baseCSSPrefix+"docked-noborder-left"],noBorderClassesSides:{top:Ext.baseCSSPrefix+"docked-noborder-top",right:Ext.baseCSSPrefix+"docked-noborder-right",bottom:Ext.baseCSSPrefix+"docked-noborder-bottom",left:Ext.baseCSSPrefix+"docked-noborder-left"},borderWidthProps:{top:"border-top-width",right:"border-right-width",bottom:"border-bottom-width",left:"border-left-width"},handleItemBorders:function(){var n=this,a=n.owner,m,s,j=n.lastDockedItems,h=n.borders,b=a.dockedItems.generation,c=n.noBorderClassesSides,o=n.borderWidthProps,g,l,q,p,k,d,e=n.collapsed;if(n.initializedBorders==b||a.border&&!a.manageBodyBorders){return}n.initializedBorders=b;n.collapsed=false;n.lastDockedItems=s=n.getLayoutItems();n.collapsed=e;m={top:[],right:[],bottom:[],left:[]};for(g=0,l=s.length;g<l;g++){q=s[g];p=q.dock;if(q.ignoreBorderManagement){continue}if(!m[p].satisfied){m[p].push(q);m[p].satisfied=true}if(!m.top.satisfied&&p!=="bottom"){m.top.push(q)}if(!m.right.satisfied&&p!=="left"){m.right.push(q)}if(!m.bottom.satisfied&&p!=="top"){m.bottom.push(q)}if(!m.left.satisfied&&p!=="right"){m.left.push(q)}}if(j){for(g=0,l=j.length;g<l;g++){q=j[g];if(!q.isDestroyed&&!q.ignoreBorderManagement&&!a.manageBodyBorders){q.removeCls(n.noBorderClasses)}}}if(h){for(k in h){if(a.manageBodyBorders&&h[k].satisfied){a.setBodyStyle(o[k],"")}}}for(k in m){l=m[k].length;if(!a.manageBodyBorders){for(g=0;g<l;g++){m[k][g].addCls(c[k])}if(!m[k].satisfied&&!a.bodyBorder||a.bodyBorder===false){a.addBodyCls(c[k])}}else{if(m[k].satisfied){a.setBodyStyle(o[k],"1px")}}}n.borders=m},beforeLayoutCycle:function(g){var c=this,b=c.owner,h=c.sizeModels.shrinkWrap,e=b.shrinkWrapDock,d,a;if(b.collapsed){if(b.collapsedVertical()){a=true;g.measureDimensions=1}else{d=true;g.measureDimensions=2}}g.collapsedVert=a;g.collapsedHorz=d;if(a){g.heightModel=h}else{if(d){g.widthModel=h}}e=e===true?3:e||0;g.shrinkWrapDockHeight=e&1&&g.heightModel.shrinkWrap;g.shrinkWrapDockWidth=e&2&&g.widthModel.shrinkWrap},beginLayout:function(d){var k=this,c=k.owner,o=k.getLayoutItems(),b=d.context,g=o.length,l,j,n,a,e,h,m;k.callParent(arguments);h=c.getCollapsed();if(h!==k.lastCollapsedState&&Ext.isDefined(k.lastCollapsedState)){if(k.owner.collapsed){d.isCollapsingOrExpanding=1;c.addClsWithUI(c.collapsedCls)}else{d.isCollapsingOrExpanding=2;c.removeClsWithUI(c.collapsedCls);d.lastCollapsedState=k.lastCollapsedState}}k.lastCollapsedState=h;d.dockedItems=l=[];for(j=0;j<g;j++){n=o[j];if(n.rendered){m=n.dock;a=b.getCmp(n);a.dockedAt={x:0,y:0};a.offsets=e=Ext.Element.parseBox(n.offsets||0);a.horizontal=m=="top"||m=="bottom";e.width=e.left+e.right;e.height=e.top+e.bottom;l.push(a)}}d.bodyContext=d.getEl("body")},beginLayoutCycle:function(b){var e=this,l=b.dockedItems,d=l.length,a=e.owner,g=a.frameBody,k=e.lastHeightModel,c,j,h;e.callParent(arguments);if(e.owner.manageHeight){if(e.lastBodyDisplay){a.body.dom.style.display=e.lastBodyDisplay=""}}else{if(e.lastBodyDisplay!=="inline-block"){a.body.dom.style.display=e.lastBodyDisplay="inline-block"}if(k&&k.shrinkWrap&&!b.heightModel.shrinkWrap){a.body.dom.style.marginBottom=""}}if(b.widthModel.auto){if(b.widthModel.shrinkWrap){a.el.setWidth(null)}a.body.setWidth(null);if(g){g.setWidth(null)}}if(b.heightModel.auto){a.body.setHeight(null);if(g){g.setHeight(null)}}if(b.collapsedVert){b.setContentHeight(0)}else{if(b.collapsedHorz){b.setContentWidth(0)}}for(c=0;c<d;c++){j=l[c].target;h=j.dock;if(h=="right"){j.setLocalX(0)}else{if(h!="left"){continue}}}},calculate:function(d){var m=this,c=m.measureAutoDimensions(d,d.measureDimensions),b=d.state,l=b.horzDone,e=b.vertDone,g=d.bodyContext,k,a,j,h,n;d.borderInfo||d.getBorderInfo();d.paddingInfo||d.getPaddingInfo();d.frameInfo||d.getFrameInfo();g.borderInfo||g.getBorderInfo();g.paddingInfo||g.getPaddingInfo();if(!d.frameBorder){if(!(k=d.framing)){d.frameBorder=d.borderInfo;d.framePadding=d.paddingInfo}else{d.frameBorder=k.border;d.framePadding=k.padding}}a=!l&&m.createAxis(d,c.contentWidth,d.widthModel,m.horzAxisProps,d.collapsedHorz);j=!e&&m.createAxis(d,c.contentHeight,d.heightModel,m.vertAxisProps,d.collapsedVert);for(h=0,n=d.dockedItems.length;n--;++h){if(a){m.dockChild(d,a,n,h)}if(j){m.dockChild(d,j,n,h)}}if(a&&m.finishAxis(d,a)){b.horzDone=l=a}if(j&&m.finishAxis(d,j)){b.vertDone=e=j}if(l&&e&&m.finishConstraints(d,l,e)){m.finishPositions(d,l,e)}else{m.done=false}},createAxis:function(q,k,e,n,d){var x=this,w=0,b=x.owner,g=b[n.maxSize],c=b[n.minSize]||0,o=n.dockBegin,j=n.dockEnd,t=n.pos,m=n.size,l=g!=null,p=e.shrinkWrap,a,u,s,h;if(p){if(d){h=0}else{a=q.bodyContext;h=k+a.borderInfo[m]}}else{u=q.frameBorder;s=q.framePadding;w=u[o]+s[o];h=q.getProp(m)-(u[j]+s[j])}return{shrinkWrap:e.shrinkWrap,sizeModel:e,initialBegin:w,begin:w,end:h,collapsed:d,horizontal:n.horizontal,ignoreFrameBegin:null,ignoreFrameEnd:null,initialSize:h-w,maxChildSize:0,hasMinMaxConstraints:(c||l)&&e.shrinkWrap,minSize:c,maxSize:l?g:1000000000,bodyPosProp:x.owner.manageHeight?t:n.marginBegin,dockBegin:o,dockEnd:j,posProp:t,sizeProp:m,setSize:n.setSize,shrinkWrapDock:q[n.shrinkWrapDock],sizeModelName:n.sizeModel,dockedPixelsEnd:0}},dockChild:function(b,c,m,e){var g=this,a=b.dockedItems[c.shrinkWrap?m:e],j=a.target,k=j.dock,d=c.sizeProp,h,l;if(j.ignoreParentFrame&&b.isCollapsingOrExpanding){a.clearMarginCache()}a.marginInfo||a.getMarginInfo();if(k==c.dockBegin){if(c.shrinkWrap){h=g.dockOutwardBegin(b,a,j,c)}else{h=g.dockInwardBegin(b,a,j,c)}}else{if(k==c.dockEnd){if(c.shrinkWrap){h=g.dockOutwardEnd(b,a,j,c)}else{h=g.dockInwardEnd(b,a,j,c)}}else{if(c.shrinkWrapDock){l=a.getProp(d)+a.marginInfo[d];c.maxChildSize=Math.max(c.maxChildSize,l);h=0}else{h=g.dockStretch(b,a,j,c)}}}a.dockedAt[c.posProp]=h},dockInwardBegin:function(b,a,k,d){var g=d.begin,e=d.sizeProp,c=k.ignoreParentFrame,h,l,j;if(c){d.ignoreFrameBegin=a;j=k.dock;h=b.frameBorder[j];g-=h+b.framePadding[j]}if(!k.overlay){l=a.getProp(e)+a.marginInfo[e];d.begin+=l;if(c){d.begin-=h}}return g},dockInwardEnd:function(e,d,c,b){var j=b.sizeProp,a=d.getProp(j)+d.marginInfo[j],h=b.end-a,g;if(!c.overlay){b.end=h}if(c.ignoreParentFrame){b.ignoreFrameEnd=d;g=e.frameBorder[c.dock];h+=g+e.framePadding[c.dock];b.end+=g}return h},dockOutwardBegin:function(e,d,c,b){var h=b.begin,g=b.sizeProp,a;if(b.collapsed){b.ignoreFrameBegin=b.ignoreFrameEnd=d}else{if(c.ignoreParentFrame){b.ignoreFrameBegin=d}}if(!c.overlay){a=d.getProp(g)+d.marginInfo[g];h-=a;b.begin=h}return h},dockOutwardEnd:function(e,d,c,b){var h=b.end,g=b.sizeProp,a;a=d.getProp(g)+d.marginInfo[g];if(b.collapsed){b.ignoreFrameBegin=b.ignoreFrameEnd=d}else{if(c.ignoreParentFrame){b.ignoreFrameEnd=d}}if(!c.overlay){b.end=h+a;b.dockedPixelsEnd+=a}return h},dockStretch:function(c,b,n,d){var o=n.dock,k=d.sizeProp,a=o=="top"||o=="bottom",j=c.frameBorder,e=b.offsets,m=c.framePadding,h=a?"right":"bottom",q=a?"left":"top",l=d.begin+e[q],g,p;if(n.stretch!==false){p=d.end-l-e[h];if(n.ignoreParentFrame){l-=m[q]+j[q];p+=m[k]+j[k]}g=b.marginInfo;p-=g[k];b[d.setSize](p)}return l},finishAxis:function(n,e){if(isNaN(e.maxChildSize)){return false}var d=e.begin,q=e.end-d,h=e.collapsed,z=e.setSize,l=e.dockBegin,x=e.dockEnd,p=n.framePadding,t=n.frameBorder,g=t[l],u=n.framing,o=u&&u[l],b=h?0:p[l],k=e.sizeProp,w=e.ignoreFrameBegin,s=e.ignoreFrameEnd,a=n.bodyContext,m=Math.max(g+b-o,0),c,A,y,j;if(e.shrinkWrap){A=e.initialSize;if(u){y=-d+g+b;c=y-o-m}else{c=-d;y=c+b}if(!h){q+=p[k]}if(w){y-=g;c-=g;w.dockedAt[e.posProp]-=b}else{q+=g}if(h){}else{if(s){s.dockedAt[e.posProp]+=p[x]}else{q+=t[x]}}e.size=q;if(!e.horizontal&&!this.owner.manageHeight){j=false}}else{if(u){y=0;c=d-o-m}else{y=-g;c=d-b-g}A=q}e.delta=y;a[z](A,j);a.setProp(e.bodyPosProp,c);return !isNaN(q)},beforeInvalidateShrinkWrapDock:function(c,b){var a=b.axis.sizeModelName;if(!c[a].constrainedMin){c[a]=Ext.layout.SizeModel.calculated}},afterInvalidateShrinkWrapDock:function(d,a){var b=a.axis,c=a.layout,e;if(d[b.sizeModelName].calculated){e=c.dockStretch(a.ownerContext,d,d.target,b);d.setProp(b.posProp,b.delta+e)}},finishConstraints:function(l,c,q){var u=this,t=u.sizeModels,p=c.shrinkWrap,s=q.shrinkWrap,a=u.owner,j,n,o,g,h,m,b,d,e,k;if(p){m=c.size;b=c.collapsed?0:c.minSize;d=c.maxSize;e=c.maxChildSize;k=Math.max(m,e);if(k>d){h=t.constrainedMax;o=d}else{if(k<b){h=t.constrainedMin;o=b}else{if(m<e){h=t.constrainedDock;a.dockConstrainedWidth=o=e}else{o=m}}}}if(s){m=q.size;b=q.collapsed?0:q.minSize;d=q.maxSize;e=q.maxChildSize;k=Math.max(m,e+m-q.initialSize);if(k>d){g=t.constrainedMax;n=d}else{if(k<b){g=t.constrainedMin;n=b}else{if(m<e){g=t.constrainedDock;a.dockConstrainedHeight=n=e}else{if(!l.collapsedVert&&!a.manageHeight){j=false;l.bodyContext.setProp("margin-bottom",q.dockedPixelsEnd)}n=m}}}}if(h||g){if(h&&g&&h.constrainedMax&&g.constrainedByMin){l.invalidate({widthModel:h});return false}if(!l.widthModel.calculatedFromShrinkWrap&&!l.heightModel.calculatedFromShrinkWrap){l.invalidate({widthModel:h,heightModel:g});return false}}else{u.invalidateAxes(l,c,q)}if(p){l.setWidth(o);if(h){l.widthModel=h}}if(s){l.setHeight(n,j);if(g){l.heightModel=g}}return true},invalidateAxes:function(g,a,l){var p=this.beforeInvalidateShrinkWrapDock,b=this.afterInvalidateShrinkWrapDock,e=a.end-a.begin,t=l.initialSize,c=a.shrinkWrapDock&&a.maxChildSize<e,m=l.shrinkWrapDock&&l.maxChildSize<t,q,n,k,d,s,o,h,j;if(c||m){if(m){l.begin=l.initialBegin;l.end=l.begin+l.initialSize}q=g.dockedItems;for(k=0,n=q.length;k<n;++k){d=q[k];o=d.horizontal;h=null;if(c&&o){j=a.sizeProp;s=e;h=a}else{if(m&&!o){j=l.sizeProp;s=t;h=l}}if(h){s-=d.getMarginInfo()[j];if(s!==d.props[j]){d.invalidate({before:p,after:b,axis:h,ownerContext:g,layout:this})}}}}},finishPositions:function(d,a,h){var k=d.dockedItems,c=k.length,g=a.delta,e=h.delta,j,b;for(j=0;j<c;++j){b=k[j];b.setProp("x",g+b.dockedAt.x);b.setProp("y",e+b.dockedAt.y)}},finishedLayout:function(b){var a=this,c=b.target;a.callParent(arguments);if(!b.animatePolicy){if(b.isCollapsingOrExpanding===1){c.afterCollapse(false)}else{if(b.isCollapsingOrExpanding===2){c.afterExpand(false)}}}},getAnimatePolicy:function(c){var b=this,a,d;if(c.isCollapsingOrExpanding==1){a=b.lastCollapsedState}else{if(c.isCollapsingOrExpanding==2){a=c.lastCollapsedState}}if(a=="left"||a=="right"){d=b.horizontalCollapsePolicy}else{if(a=="top"||a=="bottom"){d=b.verticalCollapsePolicy}}return d},getDockedItems:function(c,n){var j=this,e=c==="visual",k=e?Ext.ComponentQuery.query("[rendered]",j.owner.dockedItems.items):j.owner.dockedItems.items,h=k&&k.length&&c!==false,b,m,l,g,d,a;if(n==null){l=h&&!e?k.slice():k}else{l=[];for(g=0,a=k.length;g<a;++g){m=k[g].dock;d=m=="top"||m=="left";if(n?d:!d){l.push(k[g])}}h=h&&l.length}if(h){b=(c=c||"render")=="render";Ext.Array.sort(l,function(p,o){var q,s;if(b&&(q=j.owner.dockOrder[p.dock])!==(s=j.owner.dockOrder[o.dock])){if(!(q+s)){return q-s}}q=j.getItemWeight(p,c);s=j.getItemWeight(o,c);if(q!==undefined&&s!==undefined){return q-s}return 0})}return l||[]},getItemWeight:function(b,a){var c=b.weight||this.owner.defaultDockWeights[b.dock];return c[a]||c},getLayoutItems:function(){var e=this,b,g,d,c,a;if(e.owner.collapsed){a=e.owner.getCollapsedDockedItems()}else{b=e.getDockedItems("visual");g=b.length;a=[];for(c=0;c<g;c++){d=b[c];if(!d.hidden){a.push(d)}}}return a},measureContentWidth:function(a){var b=a.bodyContext;return b.el.getWidth()-b.getBorderInfo().width},measureContentHeight:function(a){var b=a.bodyContext;return b.el.getHeight()-b.getBorderInfo().height},redoLayout:function(c){var b=this,a=b.owner;if(c.isCollapsingOrExpanding==1){if(a.reExpander){a.reExpander.el.show()}a.addClsWithUI(a.collapsedCls);c.redo(true)}else{if(c.isCollapsingOrExpanding==2){a.removeClsWithUI(a.collapsedCls);c.bodyContext.redo()}}},renderChildren:function(){var b=this,a=b.getDockedItems(),c=b.getRenderTarget();b.handleItemBorders();b.renderItems(a,c)},renderItems:function(k,h){var l=this,c=k.length,a=0,b=0,p=0,m=l.getRenderTarget().dom.childNodes,n=m.length,g,d,e,o;for(g=0,d=0;g<n;g++){e=m[g];if(Ext.fly(e).hasCls(Ext.baseCSSPrefix+"resizable-handle")){break}for(d=0;d<c;d++){o=k[d];if(o.rendered&&o.el.dom===e){break}}if(d===c){p++}}for(;a<c;a++,b++){o=k[a];if(a===b&&(o.dock==="right"||o.dock==="bottom")){b+=p}if(o&&!o.rendered){l.renderItem(o,h,b)}else{if(!l.isValidParent(o,h,b)){l.moveItem(o,h,b)}}}},undoLayout:function(c){var b=this,a=b.owner;if(c.isCollapsingOrExpanding==1){if(a.reExpander){a.reExpander.el.hide()}a.removeClsWithUI(a.collapsedCls);c.undo(true)}else{if(c.isCollapsingOrExpanding==2){a.addClsWithUI(a.collapsedCls);c.bodyContext.undo()}}},sizePolicy:{nostretch:{setsWidth:0,setsHeight:0},horz:{shrinkWrap:{setsWidth:1,setsHeight:0,readsWidth:1},stretch:{setsWidth:1,setsHeight:0}},vert:{shrinkWrap:{setsWidth:0,setsHeight:1,readsHeight:1},stretch:{setsWidth:0,setsHeight:1}},stretchV:{setsWidth:0,setsHeight:1},autoStretchH:{readsWidth:1,setsWidth:1,setsHeight:0},autoStretchV:{readsHeight:1,setsWidth:0,setsHeight:1}},getItemSizePolicy:function(d,g){var c=this,h=c.sizePolicy,e=c.owner.shrinkWrapDock,b,a;if(d.stretch===false){return h.nostretch}b=d.dock;a=b=="left"||b=="right";e=e===true?3:e||0;if(a){h=h.vert;e=e&1}else{h=h.horz;e=e&2}if(e){if(!g){g=c.owner.getSizeModel()}if(g[a?"height":"width"].shrinkWrap){return h.shrinkWrap}}return h.stretch},configureItem:function(a,b){this.callParent(arguments);a.addCls(Ext.baseCSSPrefix+"docked");a.addClsWithUI(this.getDockCls(a.dock))},getDockCls:function(a){return"docked-"+a},afterRemove:function(a){this.callParent(arguments);if(this.itemCls){a.el.removeCls(this.itemCls+"-"+a.dock)}var b=a.el.dom;if(!a.destroying&&b){b.parentNode.removeChild(b)}this.childrenChanged=true},borderCollapseMap:{},getBorderCollapseTable:function(){var d=this,g=d.borderCollapseMap,a=d.owner,b=a.baseCls,e=a.ui,c;g=g[b]||(g[b]={});c=g[e];if(!c){b+="-"+e+"-outer-border-";g[e]=c=[0,b+"l",b+"b",b+"bl",b+"r",b+"rl",b+"rb",b+"rbl",b+"t",b+"tl",b+"tb",b+"tbl",b+"tr",b+"trl",b+"trb",b+"trbl"]}return c}});Ext.define("Ext.panel.AbstractPanel",{extend:Ext.container.Container,mixins:{docking:Ext.container.DockingContainer},baseCls:Ext.baseCSSPrefix+"panel",isPanel:true,contentPaddingProperty:"bodyPadding",shrinkWrapDock:false,componentLayout:"dock",childEls:["body"],renderTpl:["{% this.renderDockedItems(out,values,0); %}",Ext.isIE7m||Ext.isIEQuirks?'<div style="position:relative"></div>':"",'<div id="{id}-body" class="{baseCls}-body<tpl if="bodyCls"> {bodyCls}</tpl>',' {baseCls}-body-{ui}<tpl if="uiCls">','<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl>','</tpl>{childElCls}"','<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values);%}","</div>","{% this.renderDockedItems(out,values,1); %}"],bodyPosProps:{x:"x",y:"y"},border:true,emptyArray:[],initComponent:function(){this.initBorderProps();this.callParent()},initBorderProps:function(){var a=this;if(a.frame&&a.border&&a.bodyBorder===undefined){a.bodyBorder=false}if(a.frame&&a.border&&(a.bodyBorder===false||a.bodyBorder===0)){a.manageBodyBorders=true}},beforeDestroy:function(){this.destroyDockedItems();this.callParent()},initItems:function(){this.callParent();this.initDockingItems()},initRenderData:function(){var a=this,b=a.callParent();a.initBodyStyles();a.protoBody.writeTo(b);delete a.protoBody;return b},getComponent:function(a){var b=this.callParent(arguments);if(b===undefined&&!Ext.isNumber(a)){b=this.getDockedComponent(a)}return b},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({cls:b.bodyCls,style:b.bodyStyle,clsProp:"bodyCls",styleProp:"bodyStyle",styleIsText:true})}return a},initBodyStyles:function(){var b=this,a=b.getProtoBody();if(b.bodyPadding!==undefined){if(b.layout.managePadding){a.setStyle("padding",0)}else{a.setStyle("padding",this.unitizeBox(b.bodyPadding===true?5:b.bodyPadding))}}b.initBodyBorder()},initBodyBorder:function(){var a=this;if(a.frame&&a.bodyBorder){if(!Ext.isNumber(a.bodyBorder)){a.bodyBorder=1}a.getProtoBody().setStyle("border-width",this.unitizeBox(a.bodyBorder))}},getCollapsedDockedItems:function(){var a=this;return a.header===false||a.collapseMode=="placeholder"?a.emptyArray:[a.getReExpander()]},setBodyStyle:function(b,d){var c=this,a=c.rendered?c.body:c.getProtoBody();if(Ext.isFunction(b)){b=b()}if(arguments.length==1){if(Ext.isString(b)){b=Ext.Element.parseStyles(b)}a.setStyle(b)}else{a.setStyle(b,d)}return c},addBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.addCls(b);return c},removeBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.removeCls(b);return c},addUIClsToElement:function(b){var c=this,a=c.callParent(arguments);c.addBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},removeUIClsFromElement:function(b){var c=this,a=c.callParent(arguments);c.removeBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},addUIToElement:function(){var a=this;a.callParent(arguments);a.addBodyCls(a.baseCls+"-body-"+a.ui)},removeUIFromElement:function(){var a=this;a.callParent(arguments);a.removeBodyCls(a.baseCls+"-body-"+a.ui)},getTargetEl:function(){return this.body},applyTargetCls:function(a){this.getProtoBody().addCls(a)},getRefItems:function(a){var b=this.callParent(arguments);return this.getDockingRefItems(a,b)},setupRenderTpl:function(a){this.callParent(arguments);this.setupDockingRenderTpl(a)}});Ext.define("Ext.panel.Header",{extend:Ext.container.Container,alias:"widget.header",isHeader:true,defaultType:"tool",indicateDrag:false,weight:-1,componentLayout:"body",childEls:["body"],renderTpl:['<div id="{id}-body" class="{headerCls}-body {baseCls}-body {bodyCls} {bodyTargetCls}','<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl>"','<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values)%}","</div>"],headingTpl:['<span id="{id}-textEl" class="{headerCls}-text {cls}-text" unselectable="on">{title}</span>'],shrinkWrap:3,titlePosition:0,headerCls:Ext.baseCSSPrefix+"header",initComponent:function(){var g=this,e=g.hasOwnProperty("titlePosition"),c=g.items,a=e?g.titlePosition:c?c.length:0,b=[g.orientation,g.getDockName()],d=g.ownerCt;g.addEvents("click","dblclick");g.indicateDragCls=g.headerCls+"-draggable";g.title=g.title||"&#160;";g.tools=g.tools||[];c=g.items=c?Ext.Array.slice(c):[];g.orientation=g.orientation||"horizontal";g.dock=g.dock?g.dock:g.orientation=="horizontal"?"top":"left";if(d?!d.border&&!d.frame:!g.border){b.push(g.orientation+"-noborder")}g.addClsWithUI(b);g.addCls([g.headerCls,g.headerCls+"-"+g.orientation]);if(g.indicateDrag){g.addCls(g.indicateDragCls)}if(g.iconCls||g.icon||g.glyph){g.initIconCmp();if(!e&&!c.length){++a}c.push(g.iconCmp)}g.titleCmp=new Ext.Component({ariaRole:"heading",focusable:false,noWrap:true,flex:1,rtl:g.rtl,id:g.id+"_hd",style:g.titleAlign?"text-align:"+g.titleAlign:"",cls:g.headerCls+"-text-container "+g.baseCls+"-text-container "+g.baseCls+"-text-container-"+g.ui,renderTpl:g.getTpl("headingTpl"),renderData:{title:g.title,cls:g.baseCls,headerCls:g.headerCls,ui:g.ui},childEls:["textEl"],autoEl:{unselectable:"on"},listeners:{render:g.onTitleRender,scope:g}});g.layout=g.orientation=="vertical"?{type:"vbox",align:"center",alignRoundingMethod:"ceil"}:{type:"hbox",align:"middle",alignRoundingMethod:"floor"};Ext.Array.push(c,g.tools);g.tools.length=0;g.callParent();if(c.length<a){a=c.length}g.titlePosition=a;g.insert(a,g.titleCmp);g.on({dblclick:g.onDblClick,click:g.onClick,element:"el",scope:g})},initIconCmp:function(){var c=this,b=[c.headerCls+"-icon",c.baseCls+"-icon",c.iconCls],a;if(c.glyph){b.push(c.baseCls+"-glyph")}a={focusable:false,src:Ext.BLANK_IMAGE_URL,cls:b,baseCls:c.baseCls+"-icon",id:c.id+"-iconEl",iconCls:c.iconCls,glyph:c.glyph};if(!Ext.isEmpty(c.icon)){delete a.iconCls;a.src=c.icon}c.iconCmp=new Ext.Img(a)},beforeRender:function(){this.protoEl.unselectable();this.callParent()},afterLayout:function(){var b=this,e,a,c,d;if(b.orientation==="vertical"){b.adjustTitlePosition();a=b.frameTR;if(a){e=b.frameBR;c=b.frameTL;d=b.getWidth()-a.getPadding("r")-(c?c.getPadding("l"):b.el.getBorderWidth("l"))+"px";e.setStyle("background-position-x",d);a.setStyle("background-position-x",d)}if(Ext.isIE7&&Ext.isStrict&&b.frame){b.el.repaint()}}},beforeLayout:function(){this.callParent();this.syncBeforeAfterTitleClasses()},adjustTitlePosition:function(){var b=this.titleCmp,a;if(!Ext.isIE9m&&b){a=b.el;a.setStyle("left",a.getWidth()+"px")}},onTitleRender:function(){if(this.orientation==="vertical"){this.titleCmp.el.setVertical(90)}},addUIClsToElement:function(b){var e=this,a=e.callParent(arguments),d=[e.baseCls+"-body-"+b,e.baseCls+"-body-"+e.ui+"-"+b],g,c;if(e.bodyCls){g=e.bodyCls.split(" ");for(c=0;c<d.length;c++){if(!Ext.Array.contains(g,d[c])){g.push(d[c])}}e.bodyCls=g.join(" ")}else{e.bodyCls=d.join(" ")}return a},removeUIClsFromElement:function(b){var e=this,a=e.callParent(arguments),d=[e.baseCls+"-body-"+b,e.baseCls+"-body-"+e.ui+"-"+b],g,c;if(e.bodyCls){g=e.bodyCls.split(" ");for(c=0;c<d.length;c++){Ext.Array.remove(g,d[c])}e.bodyCls=g.join(" ")}return a},addUIToElement:function(){var b=this,c,a;b.callParent(arguments);a=b.baseCls+"-body-"+b.ui;if(b.rendered){if(b.bodyCls){b.body.addCls(b.bodyCls)}else{b.body.addCls(a)}}else{if(b.bodyCls){c=b.bodyCls.split(" ");if(!Ext.Array.contains(c,a)){c.push(a)}b.bodyCls=c.join(" ")}else{b.bodyCls=a}}if(b.titleCmp&&b.titleCmp.rendered){b.titleCmp.addCls(b.baseCls+"-text-container-"+b.ui)}},removeUIFromElement:function(){var b=this,c,a;b.callParent(arguments);a=b.baseCls+"-body-"+b.ui;if(b.rendered){if(b.bodyCls){b.body.removeCls(b.bodyCls)}else{b.body.removeCls(a)}}else{if(b.bodyCls){c=b.bodyCls.split(" ");Ext.Array.remove(c,a);b.bodyCls=c.join(" ")}else{b.bodyCls=a}}if(b.titleCmp&&b.titleCmp.rendered){b.titleCmp.removeCls(b.baseCls+"-text-container-"+b.ui)}},onClick:function(a){this.fireClickEvent("click",a)},onDblClick:function(a){this.fireClickEvent("dblclick",a)},fireClickEvent:function(a,c){var b="."+Ext.panel.Tool.prototype.baseCls;if(!c.getTarget(b)){this.fireEvent(a,this,c)}},getFocusEl:function(){return this.el},getTargetEl:function(){return this.body||this.frameBody||this.el},applyTargetCls:function(a){this.bodyTargetCls=a},setTitle:function(c){var b=this,a=b.titleCmp;b.title=c;if(a.rendered){a.textEl.update(b.title||"&#160;");a.updateLayout()}else{b.titleCmp.on({render:function(){b.setTitle(c)},single:true})}},getMinWidth:function(){var e=this,d=e.titleCmp.textEl.dom,a,g=e.tools,b,c;d.style.display="inline";a=d.offsetWidth;d.style.display="";if(g&&(b=g.length)){for(c=0;c<b;c++){if(g[c].el){a+=g[c].el.dom.offsetWidth}}}if(e.iconCmp){a+=e.iconCmp.el.dom.offsetWidth}return a+10},setIconCls:function(a){var b=this,d=!a||!a.length,c=b.iconCmp;b.iconCls=a;if(!b.iconCmp&&!d){b.initIconCmp();b.insert(0,b.iconCmp)}else{if(c){if(d){b.iconCmp.destroy();delete b.iconCmp}else{c.removeCls(c.iconCls);c.addCls(a);c.iconCls=a}}}},setIcon:function(a){var b=this,d=!a||!a.length,c=b.iconCmp;b.icon=a;if(!b.iconCmp&&!d){b.initIconCmp();b.insert(0,b.iconCmp)}else{if(c){if(d){b.iconCmp.destroy();delete b.iconCmp}else{c.setSrc(b.icon)}}}},setGlyph:function(b){var a=this,c=a.iconCmp;if(!a.iconCmp){a.initIconCmp();a.insert(0,a.iconCmp)}else{if(c){if(b){a.iconCmp.setGlyph(b)}else{a.iconCmp.destroy();delete a.iconCmp}}}},getTools:function(){return this.tools.slice()},addTool:function(a){this.add(Ext.ComponentManager.create(a,"tool"))},syncBeforeAfterTitleClasses:function(){var j=this,h=j.items,e=h.items,b=j.titlePosition,a=e.length,g=h.generation,k=j.syncBeforeAfterGen,m,d,c,l;if(k===g){return}j.syncBeforeAfterGen=g;for(c=0;c<a;++c){l=e[c];m=l.afterTitleCls||(l.afterTitleCls=l.baseCls+"-after-title");d=l.beforeTitleCls||(l.beforeTitleCls=l.baseCls+"-before-title");if(!j.title||c<b){if(k){l.removeCls(m)}l.addCls(d)}else{if(c>b){if(k){l.removeCls(d)}l.addCls(m)}}}},onAdd:function(b,a){var c=this.tools;this.callParent(arguments);if(b.isTool){c.push(b);c[b.type]=b}},initRenderData:function(){return Ext.applyIf(this.callParent(),{bodyCls:this.bodyCls,bodyTargetCls:this.bodyTargetCls,headerCls:this.headerCls})},getDockName:function(){return this.dock}});Ext.define("Ext.dd.DragDrop",{constructor:function(c,a,b){if(c){this.init(c,a,b)}},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(a,b){},startDrag:function(a,b){},b4Drag:function(a){},onDrag:function(a){},onDragEnter:function(a,b){},b4DragOver:function(a){},onDragOver:function(a,b){},b4DragOut:function(a){},onDragOut:function(a,b){},b4DragDrop:function(a){},onDragDrop:function(a,b){},onInvalidDrop:function(a){},b4EndDrag:function(a){},endDrag:function(a){},b4MouseDown:function(a){},onMouseDown:function(a){},onMouseUp:function(a){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(j,g,o){if(Ext.isNumber(g)){g={left:g,right:g,top:g,bottom:g}}g=g||this.defaultPadding;var l=Ext.get(this.getEl()).getBox(),a=Ext.get(j),n=a.getScroll(),k,d=a.dom,m,h,e;if(d==document.body){k={x:n.left,y:n.top,width:Ext.Element.getViewWidth(),height:Ext.Element.getViewHeight()}}else{m=a.getXY();k={x:m[0],y:m[1],width:d.clientWidth,height:d.clientHeight}}h=l.y-k.y;e=l.x-k.x;this.resetConstraints();this.setXConstraint(e-(g.left||0),k.width-e-l.width-(g.right||0),this.xTickSize);this.setYConstraint(h-(g.top||0),k.height-h-l.height-(g.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(c,a,b){this.initTarget(c,a,b);Ext.EventManager.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(c,a,b){this.config=b||{};this.DDMInstance=Ext.dd.DragDropManager;this.groups={};if(typeof c!=="string"){c=Ext.id(c)}this.id=c;this.addToGroup(a?a:"default");this.handleElId=c;this.setDragElId(c);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(c,a,d,b){if(!a&&0!==a){this.padding=[c,c,c,c]}else{if(!d&&0!==d){this.padding=[c,a,c,a]}else{this.padding=[c,a,d,b]}}},setInitPosition:function(d,c){var e=this.getEl(),b,a,g;if(!this.DDMInstance.verifyEl(e)){return}b=d||0;a=c||0;g=Ext.Element.getXY(e);this.initPageX=g[0]-b;this.initPageY=g[1]-a;this.lastPageX=g[0];this.lastPageY=g[1];this.setStartPosition(g)},setStartPosition:function(b){var a=b||Ext.Element.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=a[0];this.startPageY=a[1]},addToGroup:function(a){this.groups[a]=true;this.DDMInstance.regDragDrop(this,a)},removeFromGroup:function(a){if(this.groups[a]){delete this.groups[a]}this.DDMInstance.removeDDFromGroup(this,a)},setDragElId:function(a){this.dragElId=a},setHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.handleElId=a;this.DDMInstance.regHandle(this.id,a)},setOuterHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}Ext.EventManager.on(a,"mousedown",this.handleMouseDown,this);this.setHandleElId(a);this.hasOuterHandles=true},unreg:function(){Ext.EventManager.un(this.id,"mousedown",this.handleMouseDown,this);this._domRef=null;this.DDMInstance._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return this.DDMInstance.isLocked()||this.locked},handleMouseDown:function(c,b){var a=this,d;if(a.primaryButtonOnly&&c.button!=0||a.isLocked()){return}a.DDMInstance.refreshCache(a.groups);if(a.hasOuterHandles||a.DDMInstance.isOverTarget(c.getPoint(),a)){if(a.clickValidator(c)){d=Ext.Element.getActiveElement();a.setStartPosition();a.b4MouseDown(c);a.onMouseDown(c);a.DDMInstance.handleMouseDown(c,a);if(d){Ext.fly(d).blur()}a.DDMInstance.stopEvent(c)}}},clickValidator:function(b){var a=b.getTarget();return this.isValidHandleChild(a)&&(this.id==this.handleElId||this.DDMInstance.handleWasClicked(a,this.id))},addInvalidHandleType:function(a){var b=a.toUpperCase();this.invalidHandleTypes[b]=b},addInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.invalidHandleIds[a]=a},addInvalidHandleClass:function(a){this.invalidHandleClasses.push(a)},removeInvalidHandleType:function(a){var b=a.toUpperCase();delete this.invalidHandleTypes[b]},removeInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}delete this.invalidHandleIds[a]},removeInvalidHandleClass:function(b){for(var c=0,a=this.invalidHandleClasses.length;c<a;++c){if(this.invalidHandleClasses[c]==b){delete this.invalidHandleClasses[c]}}},isValidHandleChild:function(d){var c=true,h,b,a;try{h=d.nodeName.toUpperCase()}catch(g){h=d.nodeName}c=c&&!this.invalidHandleTypes[h];c=c&&!this.invalidHandleIds[d.id];for(b=0,a=this.invalidHandleClasses.length;c&&b<a;++b){c=!Ext.fly(d).hasCls(this.invalidHandleClasses[b])}return c},setXTicks:function(d,a){this.xTicks=[];this.xTickSize=a;var c={},b;for(b=this.initPageX;b>=this.minX;b=b-a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}for(b=this.initPageX;b<=this.maxX;b=b+a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(d,a){this.yTicks=[];this.yTickSize=a;var c={},b;for(b=this.initPageY;b>=this.minY;b=b-a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}for(b=this.initPageY;b<=this.maxY;b=b+a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=this.initPageX-c;this.maxX=this.initPageX+b;if(a){this.setXTicks(this.initPageX,a)}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(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=this.initPageY-a;this.maxY=this.initPageY+c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var b=this.maintainOffset?this.lastPageX-this.initPageX:0,a=this.maintainOffset?this.lastPageY-this.initPageY:0;this.setInitPosition(b,a)}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(h,d){if(!d){return h}else{if(d[0]>=h){return d[0]}else{var b,a,c,g,e;for(b=0,a=d.length;b<a;++b){c=b+1;if(d[c]&&d[c]>=h){g=h-d[b];e=d[c]-h;return e>g?d[b]:d[c]}}return d[d.length-1]}}},toString:function(){return"DragDrop "+this.id}});Ext.define("Ext.dd.DD",{extend:Ext.dd.DragDrop,constructor:function(c,a,b){if(c){this.init(c,a,b)}},scroll:true,autoOffset:function(c,b){var a=c-this.startPageX,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(b,e,c){var g=this.getTargetCoord(e,c),d=b.dom?b:Ext.fly(b,"_dd"),m=d.getSize(),j=Ext.Element,k,a,l,h;if(!this.deltaSetXY){k=this.cachedViewportSize={width:j.getDocumentWidth(),height:j.getDocumentHeight()};a=[Math.max(0,Math.min(g.x,k.width-m.width)),Math.max(0,Math.min(g.y,k.height-m.height))];d.setXY(a);l=this.getLocalX(d);h=d.getLocalY();this.deltaSetXY=[l-g.x,h-g.y]}else{k=this.cachedViewportSize;this.setLocalXY(d,Math.max(0,Math.min(g.x+this.deltaSetXY[0],k.width-m.width)),Math.max(0,Math.min(g.y+this.deltaSetXY[1],k.height-m.height)))}this.cachePosition(g.x,g.y);this.autoScroll(g.x,g.y,b.offsetHeight,b.offsetWidth);return g},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.Element.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(m,l,e,n){if(this.scroll){var o=Ext.Element.getViewHeight(),b=Ext.Element.getViewWidth(),q=this.DDMInstance.getScrollTop(),d=this.DDMInstance.getScrollLeft(),k=e+l,p=n+m,j=o+q-l-this.deltaY,g=b+d-m-this.deltaX,c=40,a=document.all?80:30;if(k>o&&j<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,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(){this.callParent();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},getLocalX:function(a){return a.getLocalX()},setLocalXY:function(b,a,c){b.setLocalXY(a,c)}});Ext.define("Ext.dd.DDProxy",{extend:Ext.dd.DD,statics:{dragElId:"ygddfdiv"},constructor:function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}},resizeFrame:true,centerFrame:false,createFrame:function(){var b=this,a=document.body,d,c;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;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(){this.callParent();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(),a=this.getDragEl(),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(),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(),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.define("Ext.dd.StatusProxy",{extend:Ext.Component,animRepair:false,childEls:["ghost"],renderTpl:['<div class="'+Ext.baseCSSPrefix+'dd-drop-icon"></div><div id="{id}-ghost" class="'+Ext.baseCSSPrefix+'dd-drag-ghost"></div>'],repairCls:Ext.baseCSSPrefix+"dd-drag-repair",constructor:function(a){var b=this;a=a||{};Ext.apply(b,{hideMode:"visibility",hidden:true,floating:true,id:b.id||Ext.id(),cls:Ext.baseCSSPrefix+"dd-drag-proxy "+this.dropNotAllowed,shadow:a.shadow||false,renderTo:Ext.getDetachedBody()});b.callParent(arguments);this.dropStatus=this.dropNotAllowed},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",setStatus:function(a){a=a||this.dropNotAllowed;if(this.dropStatus!=a){this.el.replaceCls(this.dropStatus,a);this.dropStatus=a}},reset:function(b){var c=this,a=Ext.baseCSSPrefix+"dd-drag-proxy ";c.el.replaceCls(a+c.dropAllowed,a+c.dropNotAllowed);c.dropStatus=c.dropNotAllowed;if(b){c.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")}},getGhost:function(){return this.ghost},hide:function(a){this.callParent();if(a){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},sync:function(){this.el.sync()},repair:function(c,d,a){var b=this;b.callback=d;b.scope=a;if(c&&b.animRepair!==false){b.el.addCls(b.repairCls);b.el.hideUnders(true);b.anim=b.el.animate({duration:b.repairDuration||500,easing:"ease-out",to:{x:c[0],y:c[1]},stopAnimation:true,callback:b.afterRepair,scope:b})}else{b.afterRepair()}},afterRepair:function(){var a=this;a.hide(true);a.el.removeCls(a.repairCls);if(typeof a.callback=="function"){a.callback.call(a.scope||a)}delete a.callback;delete a.scope}});Ext.define("Ext.dd.DragSource",{extend:Ext.dd.DDProxy,dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",animRepair:true,repairHighlightColor:"c3daf9",constructor: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({id:this.el.id+"-drag-status-proxy",animRepair:this.animRepair})}this.callParent([this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true}]);this.dragging=false},getDragData:function(a){return this.dragData},onDragEnter:function(c,d){var b=Ext.dd.DragDropManager.getDDById(d),a;this.cachedTarget=b;if(this.beforeDragEnter(b,c,d)!==false){if(b.isNotifyTarget){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},onDragOver:function(c,d){var b=this.cachedTarget||Ext.dd.DragDropManager.getDDById(d),a;if(this.beforeDragOver(b,c,d)!==false){if(b.isNotifyTarget){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.DragDropManager.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.DragDropManager.getDDById(c);if(this.beforeDragDrop(a,b,c)!==false){if(a.isNotifyTarget){if(a.notifyDrop(this,b,this.dragData)!==false){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){if(!a){a=b;b=null;c=a.getTarget().id}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(){var a=this;if(Ext.enableFx){a.el.highlight(a.repairHighlightColor)}a.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();this.callParent(arguments)}},onBeforeDrag:function(a,b){return true},onStartDrag:Ext.emptyFn,alignElWithMouse:function(){this.proxy.ensureAttachedToBody(true);return this.callParent(arguments)},startDrag:function(a,b){this.proxy.reset();this.proxy.hidden=false;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(){this.callParent();Ext.destroy(this.proxy)}});Ext.define("Ext.panel.Proxy",{alternateClassName:"Ext.dd.PanelProxy",moveOnDrag:true,constructor:function(a,b){var c=this;c.panel=a;c.id=c.panel.id+"-ddproxy";Ext.apply(c,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost.el},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){var a=this;if(a.ghost){if(a.proxy){a.proxy.remove();delete a.proxy}a.panel.unghost(null,a.moveOnDrag);delete a.ghost}},show:function(){var b=this,a;if(!b.ghost){a=b.panel.getSize();b.panel.el.setVisibilityMode(Ext.Element.DISPLAY);b.ghost=b.panel.ghost();if(b.insertProxy){b.proxy=b.panel.el.insertSibling({cls:Ext.baseCSSPrefix+"panel-dd-spacer"});b.proxy.setSize(a)}}},repair:function(b,c,a){this.hide();Ext.callback(c,a||this)},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}});Ext.define("Ext.panel.DD",{extend:Ext.dd.DragSource,constructor:function(b,a){var c=this;c.panel=b;c.dragData={panel:b};c.panelProxy=new Ext.panel.Proxy(b,a);c.proxy=c.panelProxy.proxy;c.callParent([b.el,a]);c.setupEl(b)},setupEl:function(a){var c=this,d=a.header,b=a.body;if(d){c.setHandleElId(d.id);b=d.el}if(b){b.setStyle("cursor","move");c.scroll=false}else{a.on("boxready",c.setupEl,c,{single:true})}},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.panelProxy.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(b){var a=this.panelProxy.ghost;if(a){return a.el.dom}},endDrag:function(a){this.panelProxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)},onInvalidDrop:function(c,b,d){var a=this;a.beforeInvalidDrop(c,b,d);if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}});Ext.define("Ext.util.Memento",function(){function d(j,h,k,g){j[g?g+k:k]=h[k]}function c(h,g,j){delete h[j]}function e(l,k,m,j){var g=j?j+m:m,h=l[g];if(h||l.hasOwnProperty(g)){a(k,m,h)}}function a(h,j,g){if(Ext.isDefined(g)){h[j]=g}else{delete h[j]}}function b(h,n,m,j,k){if(n){if(Ext.isArray(j)){var l,g=j.length;for(l=0;l<g;l++){h(n,m,j[l],k)}}else{h(n,m,j,k)}}}return{data:null,target:null,constructor:function(h,g){if(h){this.target=h;if(g){this.capture(g)}}},capture:function(g,k,j){var h=this;b(d,h.data||(h.data={}),k||h.target,g,j)},remove:function(g){b(c,this.data,null,g)},restore:function(h,g,k,j){b(e,this.data,k||this.target,h,j);if(g!==false){this.remove(h)}},restoreAll:function(g,l){var j=this,h=l||this.target,k=j.data,m;for(m in k){if(k.hasOwnProperty(m)){a(h,m,k[m])}}if(g!==false){delete j.data}}}}());Ext.define("Ext.panel.Panel",{extend:Ext.panel.AbstractPanel,alias:"widget.panel",alternateClassName:"Ext.Panel",collapsedCls:"collapsed",animCollapse:Ext.enableFx,minButtonWidth:75,collapsed:false,collapseFirst:true,hideCollapseTool:false,titleCollapse:undefined,floatable:true,collapsible:undefined,closable:false,closeAction:"destroy",placeholderCollapseHideMode:Ext.Element.VISIBILITY,preventHeader:false,header:undefined,headerPosition:"top",frame:false,frameHeader:true,manageHeight:true,constrain:false,constrainHeader:false,initComponent:function(){var a=this;a.addEvents("beforeclose","close","beforeexpand","beforecollapse","expand","collapse","titlechange","iconchange","iconclschange","glyphchange","float","unfloat");if(a.collapsible){this.addStateEvents(["expand","collapse"])}if(a.unstyled){a.setUI("plain")}if(a.frame){a.setUI(a.ui+"-framed")}a.bridgeToolbars();a.callParent();a.collapseDirection=a.collapseDirection||a.headerPosition||Ext.Component.DIRECTION_TOP;a.hiddenOnCollapse=new Ext.dom.CompositeElement},beforeDestroy:function(){var a=this;Ext.destroy(a.placeholder,a.ghostPanel,a.dd);a.callParent()},initAria:function(){this.callParent();this.initHeaderAria()},getFocusEl:function(){return this.el},initHeaderAria:function(){var b=this,a=b.el,c=b.header;if(a&&c){a.dom.setAttribute("aria-labelledby",c.titleCmp.id)}},getHeader:function(){return this.header},setTitle:function(g){var c=this,b=c.title,e=c.header,a=c.reExpander,d=c.placeholder;c.title=g;if(e){if(e.isHeader){e.setTitle(g)}else{e.title=g}}else{c.updateHeader()}if(a){a.setTitle(g)}if(d&&d.setTitle){d.setTitle(g)}c.fireEvent("titlechange",c,g,b)},setIconCls:function(a){var c=this,b=c.iconCls,e=c.header,d=c.placeholder;c.iconCls=a;if(e){if(e.isHeader){e.setIconCls(a)}else{e.iconCls=a}}else{c.updateHeader()}if(d&&d.setIconCls){d.setIconCls(a)}c.fireEvent("iconclschange",c,a,b)},setIcon:function(a){var b=this,c=b.icon,e=b.header,d=b.placeholder;b.icon=a;if(e){if(e.isHeader){e.setIcon(a)}else{e.icon=a}}else{b.updateHeader()}if(d&&d.setIcon){d.setIcon(a)}b.fireEvent("iconchange",b,a,c)},setGlyph:function(c){var b=this,a=b.glyph,e=b.header,d=b.placeholder;b.glyph=c;if(e){if(e.isHeader){e.setGlyph(c)}else{e.glyph=c}}else{b.updateHeader()}if(d&&d.setGlyph){d.setIcon(c)}b.fireEvent("glyphchange",b,c,a)},bridgeToolbars:function(){var a=this,g=[],c,b,e=a.minButtonWidth;function d(h,k,j){if(Ext.isArray(h)){h={xtype:"toolbar",items:h}}else{if(!h.xtype){h.xtype="toolbar"}}h.dock=k;if(k=="left"||k=="right"){h.vertical=true}if(j){h.layout=Ext.applyIf(h.layout||{},{pack:{left:"start",center:"center"}[a.buttonAlign]||"end"})}return h}if(a.tbar){g.push(d(a.tbar,"top"));a.tbar=null}if(a.bbar){g.push(d(a.bbar,"bottom"));a.bbar=null}if(a.buttons){a.fbar=a.buttons;a.buttons=null}if(a.fbar){c=d(a.fbar,"bottom",true);c.ui="footer";if(e){b=c.defaults;c.defaults=function(h){var j=b||{};if((!h.xtype||h.xtype==="button"||h.isComponent&&h.isXType("button"))&&!("minWidth" in j)){j=Ext.apply({minWidth:e},j)}return j}}g.push(c);a.fbar=null}if(a.lbar){g.push(d(a.lbar,"left"));a.lbar=null}if(a.rbar){g.push(d(a.rbar,"right"));a.rbar=null}if(a.dockedItems){if(!Ext.isArray(a.dockedItems)){a.dockedItems=[a.dockedItems]}a.dockedItems=a.dockedItems.concat(g)}else{a.dockedItems=g}},isPlaceHolderCollapse:function(){return this.collapseMode=="placeholder"},onBoxReady:function(){this.callParent();if(this.collapsed){this.setHiddenDocked()}},beforeRender:function(){var b=this,a;b.callParent();b.initTools();if(!(b.preventHeader||b.header===false)){b.updateHeader()}if(b.collapsed){if(b.isPlaceHolderCollapse()){if(!b.hidden){b.hidden=true;b.preventCollapseFire=true;b.placeholderCollapse();delete b.preventCollapseFire;a=b.collapsed;b.collapsed=false}}else{b.beginCollapse();b.addClsWithUI(b.collapsedCls)}}if(a){b.collapsed=a}},initTools:function(){var a=this;a.tools=a.tools?Ext.Array.clone(a.tools):[];if(a.collapsible&&!(a.hideCollapseTool||a.header===false||a.preventHeader)){a.collapseDirection=a.collapseDirection||a.headerPosition||"top";a.collapseTool=a.expandTool=Ext.widget({xtype:"tool",type:a.collapsed&&!a.isPlaceHolderCollapse()?"expand-"+a.getOppositeDirection(a.collapseDirection):"collapse-"+a.collapseDirection,handler:a.toggleCollapse,scope:a});if(a.collapseFirst){a.tools.unshift(a.collapseTool)}}a.addTools();if(a.closable){a.addClsWithUI("closable");a.addTool(Ext.widget({xtype:"tool",type:"close",handler:Ext.Function.bind(a.close,a,[])}))}if(a.collapseTool&&!a.collapseFirst){a.addTool(a.collapseTool)}},addTools:Ext.emptyFn,close:function(){if(this.fireEvent("beforeclose",this)!==false){this.doClose()}},doClose:function(){this.fireEvent("close",this);this[this.closeAction]()},updateHeader:function(d){var c=this,h=c.header,g=c.title,e=c.tools,b=c.icon||c.iconCls,a=c.headerPosition=="left"||c.headerPosition=="right";if(Ext.isObject(h)||h!==false&&(d||g||b||e&&e.length||c.collapsible&&!c.titleCollapse)){if(h&&h.isHeader){h.show()}else{h=c.header=Ext.widget(Ext.apply({xtype:"header",title:g,titleAlign:c.titleAlign,orientation:a?"vertical":"horizontal",dock:c.headerPosition||"top",textCls:c.headerTextCls,iconCls:c.iconCls,icon:c.icon,glyph:c.glyph,baseCls:c.baseCls+"-header",tools:e,ui:c.ui,id:c.id+"_header",overCls:c.headerOverCls,indicateDrag:c.draggable,frame:(c.frame||c.alwaysFramed)&&c.frameHeader,ignoreParentFrame:c.frame||c.overlapHeader,ignoreBorderManagement:c.frame||c.ignoreHeaderBorderManagement,ownerCt:c,listeners:c.collapsible&&c.titleCollapse?{click:c.toggleCollapse,scope:c}:null},c.header));c.addDocked(h,0)}c.initHeaderAria()}else{if(h){h.hide()}}},setUI:function(b){var a=this;a.callParent(arguments);if(a.header&&a.header.rendered){a.header.setUI(b)}},getDefaultContentTarget:function(){return this.body},getTargetEl:function(){var a=this;return a.body||a.protoBody||a.frameBody||a.el},isVisible:function(a){var b=this;if(b.collapsed&&b.placeholder){return b.placeholder.isVisible(a)}return b.callParent(arguments)},onHide:function(){var a=this;if(a.collapsed&&a.placeholder){a.placeholder.hide()}else{a.callParent(arguments)}},onShow:function(){var a=this;if(a.collapsed&&a.isPlaceHolderCollapse()){a.hidden=true;a.placeholderCollapse()}else{a.callParent(arguments)}},onRemoved:function(b){var a=this;if(a.placeholder&&!b){a.ownerCt.remove(a.placeholder,false)}a.callParent(arguments)},addTool:function(e){if(!Ext.isArray(e)){e=[e]}var d=this,g=d.header,c,a=e.length,b;for(c=0;c<a;c++){b=e[c];if(g&&g.isHeader){g.addTool(b)}else{d.tools.push(b)}}d.updateHeader()},getOppositeDirection:function(a){var b=Ext.Component;switch(a){case b.DIRECTION_TOP:return b.DIRECTION_BOTTOM;case b.DIRECTION_RIGHT:return b.DIRECTION_LEFT;case b.DIRECTION_BOTTOM:return b.DIRECTION_TOP;case b.DIRECTION_LEFT:return b.DIRECTION_RIGHT}},getWidthAuthority:function(){if(this.collapsed&&this.collapsedHorizontal()){return 1}return this.callParent()},getHeightAuthority:function(){if(this.collapsed&&this.collapsedVertical()){return 1}return this.callParent()},collapsedHorizontal:function(){var a=this.getCollapsed();return a=="left"||a=="right"},collapsedVertical:function(){var a=this.getCollapsed();return a=="top"||a=="bottom"},restoreDimension:function(){var a=this.collapseDirection;return a==="top"||a==="bottom"?"height":"width"},getCollapsed:function(){var a=this;if(a.collapsed===true){return a.collapseDirection}return a.collapsed},getState:function(){var a=this,b=a.callParent(),c;b=a.addPropertyToState(b,"collapsed");if(a.collapsed){c=a.collapseMemento;c=c&&c.data;if(a.collapsedVertical()){if(b){delete b.height}if(c){b=a.addPropertyToState(b,"height",c.height)}}else{if(b){delete b.width}if(c){b=a.addPropertyToState(b,"width",c.width)}}}return b},findReExpander:function(h){var g=this,j=Ext.Component,e=g.dockedItems.items,a=e.length,b,d;if(g.collapseMode=="mini"){return}switch(h){case j.DIRECTION_TOP:case j.DIRECTION_BOTTOM:for(d=0;d<a;d++){b=e[d];if(!b.hidden){if(b.isHeader&&(!b.dock||b.dock=="top"||b.dock=="bottom")){return b}}}break;case j.DIRECTION_LEFT:case j.DIRECTION_RIGHT:for(d=0;d<a;d++){b=e[d];if(!b.hidden){if(b.isHeader&&(b.dock=="left"||b.dock=="right")){return b}}}break;default:throw"Panel#findReExpander must be passed a valid collapseDirection"}},getReExpander:function(c){var b=this,d=c||b.collapseDirection,a=b.reExpander||b.findReExpander(d);b.expandDirection=b.getOppositeDirection(d);if(!a){b.reExpander=a=b.createReExpander(d,{dock:d,cls:Ext.baseCSSPrefix+"docked "+b.baseCls+"-"+b.ui+"-collapsed"});b.dockedItems.insert(0,a)}return a},createReExpander:function(e,d){var c=this,h=e=="left",b=e=="right",g=h||b,a=Ext.apply({hideMode:"offsets",title:c.title||"&#160;",titleAlign:c.titleAlign,orientation:g?"vertical":"horizontal",textCls:c.headerTextCls,icon:c.icon,iconCls:c.iconCls,glyph:c.glyph,baseCls:c.self.prototype.baseCls+"-header",ui:c.ui,frame:c.frame&&c.frameHeader,ignoreParentFrame:c.frame||c.overlapHeader,indicateDrag:c.draggable,collapseImmune:true,ownerCt:c.ownerCt,ownerLayout:c.componentLayout},d);if(c.collapseMode=="mini"){if(g){a.width=1}else{a.height=1}}if(!c.hideCollapseTool){if(h||b&&c.isPlaceHolderCollapse()){a.titlePosition=1}a.tools=[{xtype:"tool",type:"expand-"+c.getOppositeDirection(e),uiCls:["top"],handler:c.toggleCollapse,scope:c}]}a=new Ext.panel.Header(a);a.addClsWithUI(c.getHeaderCollapsedClasses(a));return a},getHeaderCollapsedClasses:function(d){var b=this,c=b.collapsedCls,a;a=[c,c+"-"+d.getDockName()];if(b.border&&(!b.frame||b.frame&&Ext.supports.CSS3BorderRadius)){a.push(c+"-border-"+d.getDockName())}return a},beginCollapse:function(){var e=this,c=e.lastBox,h=e.rendered,b=e.collapseMemento||(e.collapseMemento=new Ext.util.Memento(e)),d=e.getSizeModel(),g=e.header,a;b.capture(["height","minHeight","width","minWidth"]);if(c){b.capture(e.restoreDimension(),c,"last.")}if(e.collapsedVertical()){if(d.width.shrinkWrap){e.width=h?e.getWidth():e.width||e.minWidth||100}delete e.height;e.minHeight=0}else{if(e.collapsedHorizontal()){if(d.height.shrinkWrap){e.height=h?e.getHeight():e.height||e.minHeight||100}delete e.width;e.minWidth=0}}if(e.ownerCt){e.ownerCt.getLayout().beginCollapse(e)}if(!e.isPlaceHolderCollapse()&&g!==false){if(g===(a=e.getReExpander())){g.collapseImmune=true;g.getHierarchyState().collapseImmune=true;g.addClsWithUI(e.getHeaderCollapsedClasses(g));if(g.rendered){g.updateFrame()}}else{if(a.el){a.el.show();a.hidden=false}}}if(e.resizer){e.resizer.disable()}},beginExpand:function(){var e=this,d=e.lastBox,c=e.collapseMemento,a=this.restoreDimension(),g=e.header,b;if(c){c.restore(["minHeight","minWidth",a]);if(d){c.restore(a,true,d,"last.")}}if(e.ownerCt){e.ownerCt.getLayout().beginExpand(e)}if(!e.isPlaceHolderCollapse()&&g!==false){if(g===(b=e.getReExpander())){delete g.collapseImmune;delete g.getHierarchyState().collapseImmune;g.removeClsWithUI(e.getHeaderCollapsedClasses(g));if(g.rendered){g.updateFrame()}}else{b.hidden=true;b.el.hide()}}if(e.resizer){e.resizer.enable()}},collapse:function(d,a){var c=this,e=d||c.collapseDirection,b=c.ownerCt;if(c.isCollapsingOrExpanding){return c}if(arguments.length<2){a=c.animCollapse}if(c.collapsed||c.fireEvent("beforecollapse",c,d,a)===false){return c}if(b&&c.isPlaceHolderCollapse()){return c.placeholderCollapse(d,a)}c.collapsed=e;c.beginCollapse();c.getHierarchyState().collapsed=true;c.fireHierarchyEvent("collapse");return c.doCollapseExpand(1,a)},doCollapseExpand:function(a,b){var d=this,c=d.animCollapse,e=d.ownerLayout;d.animCollapse=b;d.isCollapsingOrExpanding=a;if(b){d.addCls(Ext.baseCSSPrefix+"animating-size")}if(e&&!b){e.onContentChange(d)}else{d.updateLayout({isRoot:true})}d.animCollapse=c;return d},afterCollapse:function(b){var a=this,c=a.ownerLayout;a.isCollapsingOrExpanding=0;if(a.collapseTool){a.collapseTool.setType("expand-"+a.getOppositeDirection(a.collapseDirection))}if(b){a.removeCls(Ext.baseCSSPrefix+"animating-size")}if(c&&b){c.onContentChange(a)}a.setHiddenDocked();a.fireEvent("collapse",a)},setHiddenDocked:function(){var h=this,d=h.hiddenOnCollapse,c=h.getDockedItems(),a=c.length,e=0,g,b;if(h.header!==false){b=h.getReExpander()}d.add(h.body);for(;e<a;e++){g=c[e];if(g&&g!==b&&g.el){d.add(g.el)}}d.setStyle("visibility","hidden")},restoreHiddenDocked:function(){var a=this.hiddenOnCollapse;a.setStyle("visibility","");a.clear()},getPlaceholder:function(e){var d=this,h=e||d.collapseDirection,c=null,g=d.placeholder,b=d.floatable,a=d.titleCollapse;if(!g){if(b||d.collapsible&&a){c={click:{fn:!a&&b?d.floatCollapsedPanel:d.toggleCollapse,element:"el",scope:d}}}d.placeholder=g=Ext.widget(d.createReExpander(h,{id:d.id+"-placeholder",listeners:c}))}if(!g.placeholderFor){if(!g.isComponent){d.placeholder=g=d.lookupComponent(g)}Ext.applyIf(g,{margins:d.margins,placeholderFor:d});g.addCls([Ext.baseCSSPrefix+"region-collapsed-placeholder",Ext.baseCSSPrefix+"region-collapsed-"+h+"-placeholder",d.collapsedCls])}return g},placeholderCollapse:function(g,a){var d=this,c=d.ownerCt,j=g||d.collapseDirection,b=Ext.baseCSSPrefix+"border-region-slide-in",h=d.getPlaceholder(g),e;d.isCollapsingOrExpanding=1;d.hidden=true;d.collapsed=j;if(h.rendered){if(h.el.dom.parentNode!==d.el.dom.parentNode){d.el.dom.parentNode.insertBefore(h.el.dom,d.el.dom)}h.hidden=false;h.el.show();c.updateLayout()}else{c.insert(c.items.indexOf(d),h)}if(d.rendered){d.el.setVisibilityMode(d.placeholderCollapseHideMode);if(a){d.el.addCls(b);h.el.hide();e=d.convertCollapseDir(j);d.el.slideOut(e,{preserveScroll:true,duration:Ext.Number.from(a,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){d.el.removeCls(b);h.el.show().setStyle("display","none").slideIn(e,{easing:"linear",duration:100,listeners:{afteranimate:function(){h.focus();d.isCollapsingOrExpanding=0;d.fireEvent("collapse",d)}}})}}})}else{d.el.hide();d.isCollapsingOrExpanding=0;d.fireEvent("collapse",d)}}else{d.isCollapsingOrExpanding=0;if(!d.preventCollapseFire){d.fireEvent("collapse",d)}}return d},floatCollapsedPanel:function(){var c=this,j=c.placeholder,h=j.getSize(),d,b=Ext.baseCSSPrefix+"border-region-slide-in",g=c.collapsed,e=c.ownerCt||c,a;if(c.isSliding){return}if(c.el.hasCls(b)){c.slideOutFloatedPanel();return}c.isSliding=true;j.el.hide();j.hidden=true;c.el.show();c.hidden=false;c.collapsed=false;e.updateLayout();d=c.getBox(false,true);j.el.show();j.hidden=false;c.el.hide();c.hidden=true;c.collapsed=g;e.updateLayout();c.slideOutTask=c.slideOutTask||new Ext.util.DelayedTask(c.slideOutFloatedPanel,c);j.el.on("mouseleave",c.onMouseLeaveFloated,c);c.el.on("mouseleave",c.onMouseLeaveFloated,c);j.el.on("mouseenter",c.onMouseEnterFloated,c);c.el.on("mouseenter",c.onMouseEnterFloated,c);c.el.addCls(b);c.floated=true;if(c.collapseTool){c.collapseTool.el.hide()}switch(c.collapsed){case"top":c.setLocalXY(d.x,d.y+h.height-1);break;case"right":c.setLocalXY(d.x-h.width+1,d.y);break;case"bottom":c.setLocalXY(d.x,d.y-h.height+1);break;case"left":c.setLocalXY(d.x+h.width-1,d.y);break}a=c.convertCollapseDir(c.collapsed);c.floatedFromCollapse=c.collapsed;c.collapsed=c.hidden=false;c.el.slideIn(a,{preserveScroll:true,duration:Ext.Number.from(c.animCollapse,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){c.isSliding=false;c.fireEvent("float",c)}}})},onMouseLeaveFloated:function(a){this.slideOutTask.delay(500)},onMouseEnterFloated:function(a){this.slideOutTask.cancel()},isLayoutRoot:function(){if(this.floatedFromCollapse){return true}return this.callParent()},slideOutFloatedPanel:function(){var a=this,c=this.el,b;if(a.isSliding||a.isDestroyed){return}a.isSliding=true;a.floated=false;a.slideOutFloatedPanelBegin();if(typeof a.collapsed=="string"){b=a.convertCollapseDir(a.collapsed)}c.slideOut(b,{preserveScroll:true,duration:Ext.Number.from(a.animCollapse,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){a.slideOutFloatedPanelEnd();a.el.removeCls(Ext.baseCSSPrefix+"border-region-slide-in")}}})},slideOutFloatedPanelBegin:function(){var b=this,c=b.placeholder.el,a=b.el;b.collapsed=b.floatedFromCollapse;b.hidden=true;b.floatedFromCollapse=null;c.un("mouseleave",b.onMouseLeaveFloated,b);a.un("mouseleave",b.onMouseLeaveFloated,b);c.un("mouseenter",b.onMouseEnterFloated,b);a.un("mouseenter",b.onMouseEnterFloated,b)},slideOutFloatedPanelEnd:function(){var a=this;if(a.collapseTool){a.collapseTool.el.show()}a.isSliding=false;a.fireEvent("unfloat",a)},expand:function(a){var b=this;if(b.isCollapsingOrExpanding){return b}if(!arguments.length){a=b.animCollapse}if(!b.collapsed&&!b.floatedFromCollapse){return b}if(b.fireEvent("beforeexpand",b,a)===false){return b}delete this.getHierarchyState().collapsed;if(b.isPlaceHolderCollapse()){return b.placeholderExpand(a)}b.restoreHiddenDocked();b.beginExpand();b.collapsed=false;return b.doCollapseExpand(2,a)},placeholderExpand:function(c){var e=this,h=e.collapsed,d=Ext.baseCSSPrefix+"border-region-slide-in",g,b,a=e.ownerLayout?e.ownerLayout.centerRegion:null;if(Ext.AbstractComponent.layoutSuspendCount){c=false}if(e.floatedFromCollapse){b=e.getPosition(true);e.slideOutFloatedPanelBegin();e.slideOutFloatedPanelEnd();e.floated=false}if(c){Ext.suspendLayouts();e.placeholder.hide();e.el.show();e.hidden=e.collapsed=false;if(a&&!b){a.hidden=true}Ext.resumeLayouts(true);a.hidden=false;e.el.addCls(d);e.isCollapsingOrExpanding=2;if(b){g=e.getXY();e.setLocalXY(b[0],b[1]);e.setXY([g[0],g[1]],{duration:Ext.Number.from(c,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){e.el.removeCls(d);e.isCollapsingOrExpanding=0;e.fireEvent("expand",e)}}})}else{e.el.hide();e.placeholder.el.show();e.placeholder.hidden=false;e.hidden=false;e.el.slideIn(e.convertCollapseDir(h),{preserveScroll:true,duration:Ext.Number.from(c,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){e.el.removeCls(d);e.placeholder.hide();e.updateLayout();e.isCollapsingOrExpanding=0;e.fireEvent("expand",e)}}})}}else{e.floated=e.collapsed=false;Ext.suspendLayouts();e.placeholder.hide();e.show();Ext.resumeLayouts(true);e.fireEvent("expand",e)}return e},afterExpand:function(b){var a=this,c=a.ownerLayout;a.isCollapsingOrExpanding=0;if(a.collapseTool){a.collapseTool.setType("collapse-"+a.collapseDirection)}if(b){a.removeCls(Ext.baseCSSPrefix+"animating-size")}if(c&&b){c.onContentChange(a)}a.fireEvent("expand",a);a.fireHierarchyEvent("expand")},setBorder:function(a,c){if(c){return}var b=this,d=b.header;if(!a){a=0}else{if(a===true){a="1px"}else{a=Ext.Element.unitizeBox(a)}}if(d){if(d.isHeader){d.setBorder(a)}else{d.border=a}}if(b.rendered&&b.bodyBorder!==false){b.body.setStyle("border-width",a)}b.updateLayout();b.border=a},toggleCollapse:function(){return this.collapsed||this.floatedFromCollapse?this.expand():this.collapse()},getKeyMap:function(){return this.keyMap||(this.keyMap=new Ext.util.KeyMap(Ext.apply({target:this.el},this.keys)))},initDraggable:function(){if(this.simpleDrag){this.initSimpleDraggable()}else{this.dd=new Ext.panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)}},initSimpleDraggable:function(){var c=this,b,a;if(!c.header){c.updateHeader(true)}if(c.header){b=Ext.applyIf({el:c.el,delegate:"#"+Ext.escapeId(c.header.id)},c.draggable);if(c.constrain||c.constrainHeader){b.constrain=c.constrain;b.constrainDelegate=c.constrainHeader;b.constrainTo=c.constrainTo||c.container}a=c.dd=new Ext.util.ComponentDragger(this,b);c.relayEvents(a,["dragstart","drag","dragend"]);if(c.maximized){a.disable()}}},ghostTools:function(){var e=[],g=this.header,d=g?g.query("tool[hidden=false]"):[],c,a,b;if(d.length){c=0;a=d.length;for(;c<a;c++){b=d[c];e.push({type:b.type})}}else{e=[{type:"placeholder"}]}return e},ghost:function(a){var d=this,b=d.ghostPanel,c=d.getBox(),e;if(!b){b=new Ext.panel.Panel({renderTo:Ext.getBody(),floating:{shadow:false},frame:d.frame&&!d.alwaysFramed,alwaysFramed:d.alwaysFramed,overlapHeader:d.overlapHeader,headerPosition:d.headerPosition,baseCls:d.baseCls,cls:d.baseCls+"-ghost "+(a||"")});d.ghostPanel=b}else{b.el.show()}d.ghostPanel.hidden=false;b.floatParent=d.floatParent;if(d.floating){b.setZIndex(Ext.Number.from(d.el.getStyle("zIndex"),0))}else{b.toFront()}if(!(d.preventHeader||d.header===false)){e=b.header;if(e){e.suspendLayouts();Ext.Array.forEach(e.query("tool"),e.remove,e);e.resumeLayouts()}b.addTool(d.ghostTools());b.setTitle(d.title);if(d.iconCls){b.setIconCls(d.iconCls)}else{if(d.icon){b.setIcon(d.icon)}else{if(d.glyph){b.setGlyph(d.glyph)}}}b.header.addCls(Ext.baseCSSPrefix+"header-ghost")}b.setPagePosition(c.x,c.y);b.setSize(c.width,c.height);d.el.hide();return b},unghost:function(b,a){var c=this;if(!c.ghostPanel){return}if(b!==false){c.el.show();if(a!==false){c.setPagePosition(c.ghostPanel.getXY());if(c.hideMode=="offsets"){delete c.el.hideModeStyles}}Ext.defer(c.focus,10,c)}c.ghostPanel.el.hide();c.ghostPanel.hidden=true},beginDrag:function(){if(this.floatingDescendants){this.floatingDescendants.hide()}},endDrag:function(){if(this.floatingDescendants){this.floatingDescendants.show()}},initResizable:function(){this.callParent(arguments);if(this.collapsed){this.resizer.disable()}},convertCollapseDir:function(a){return a.substr(0,1)}},function(){this.prototype.animCollapse=Ext.enableFx});Ext.define("Ext.tip.Tip",{extend:Ext.panel.Panel,alternateClassName:"Ext.Tip",minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",constrainPosition:true,autoRender:true,hidden:true,baseCls:Ext.baseCSSPrefix+"tip",floating:{shadow:true,shim:true},focusOnToFront:false,closeAction:"hide",ariaRole:"tooltip",alwaysFramed:true,frameHeader:false,initComponent:function(){var a=this;a.floating=Ext.apply({},{shadow:a.shadow,constrain:a.constrainPosition},a.self.prototype.floating);a.callParent(arguments);a.constrain=a.constrain||a.constrainPosition},showAt:function(b){var a=this;this.callParent(arguments);if(a.isVisible()){a.setPagePosition(b[0],b[1]);if(a.constrainPosition||a.constrain){a.doConstrain()}a.toFront(true)}},showBy:function(a,b){this.showAt(this.getAlignToXY(a,b||this.defaultAlign))},initDraggable:function(){var a=this;a.draggable={el:a.getDragEl(),delegate:a.header.el,constrain:a,constrainTo:a.el.dom.parentNode};Ext.Component.prototype.initDraggable.call(a)},ghost:undefined,unghost:undefined});Ext.define("Ext.tip.ToolTip",{extend:Ext.tip.Tip,alias:"widget.tooltip",alternateClassName:"Ext.ToolTip",autoHide:true,showDelay:500,hideDelay:200,dismissDelay:5000,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,quickShowInterval:250,initComponent:function(){var a=this;a.callParent(arguments);a.lastActive=new Date;a.setTarget(a.target);a.origAnchor=a.anchor},onRender:function(b,a){var c=this;c.callParent(arguments);c.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+c.getAnchorPosition();c.anchorEl=c.el.createChild({cls:Ext.baseCSSPrefix+"tip-anchor "+c.anchorCls})},setTarget:function(d){var b=this,a=Ext.get(d),c;if(b.target){c=Ext.get(b.target);b.mun(c,"mouseover",b.onTargetOver,b);b.mun(c,"mouseout",b.onTargetOut,b);b.mun(c,"mousemove",b.onMouseMove,b)}b.target=a;if(a){b.mon(a,{freezeEvent:true,mouseover:b.onTargetOver,mouseout:b.onTargetOut,mousemove:b.onMouseMove,scope:b})}if(b.anchor){b.anchorTarget=b.target}},onMouseMove:function(d){var b=this,a=b.delegate?d.getTarget(b.delegate):(b.triggerElement=true),c;if(a){b.targetXY=d.getXY();if(a===b.triggerElement){if(!b.hidden&&b.trackMouse){c=b.getTargetXY();if(b.constrainPosition){c=b.el.adjustForConstraints(c,b.el.parent())}b.setPagePosition(c)}}else{b.hide();b.lastActive=new Date(0);b.onTargetOver(d)}}else{if(!b.closable&&b.isVisible()&&b.autoHide!==false){b.hide()}}},getTargetXY:function(){var k=this,d,c,o,a,j,m,e,n,l,b,h,g;if(k.delegate){k.anchorTarget=k.triggerElement}if(k.anchor){k.targetCounter++;c=k.getOffsets();o=k.anchorToTarget&&!k.trackMouse?k.getAlignToXY(k.anchorTarget,k.getAnchorAlign()):k.targetXY;a=Ext.Element.getViewWidth()-5;j=Ext.Element.getViewHeight()-5;m=document.documentElement;e=document.body;n=(m.scrollLeft||e.scrollLeft||0)+5;l=(m.scrollTop||e.scrollTop||0)+5;b=[o[0]+c[0],o[1]+c[1]];h=k.getSize();g=k.constrainPosition;k.anchorEl.removeCls(k.anchorCls);if(k.targetCounter<2&&g){if(b[0]<n){if(k.anchorToTarget){k.defaultAlign="l-r";if(k.mouseOffset){k.mouseOffset[0]*=-1}}k.anchor="left";return k.getTargetXY()}if(b[0]+h.width>a){if(k.anchorToTarget){k.defaultAlign="r-l";if(k.mouseOffset){k.mouseOffset[0]*=-1}}k.anchor="right";return k.getTargetXY()}if(b[1]<l){if(k.anchorToTarget){k.defaultAlign="t-b";if(k.mouseOffset){k.mouseOffset[1]*=-1}}k.anchor="top";return k.getTargetXY()}if(b[1]+h.height>j){if(k.anchorToTarget){k.defaultAlign="b-t";if(k.mouseOffset){k.mouseOffset[1]*=-1}}k.anchor="bottom";return k.getTargetXY()}}k.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+k.getAnchorPosition();k.anchorEl.addCls(k.anchorCls);k.targetCounter=0;return b}else{d=k.getMouseOffset();return k.targetXY?[k.targetXY[0]+d[0],k.targetXY[1]+d[1]]:d}},getMouseOffset:function(){var a=this,b=a.anchor?[0,0]:[15,18];if(a.mouseOffset){b[0]+=a.mouseOffset[0];b[1]+=a.mouseOffset[1]}return b},getAnchorPosition:function(){var b=this,a;if(b.anchor){b.tipAnchor=b.anchor.charAt(0)}else{a=b.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);b.tipAnchor=a[1].charAt(0)}switch(b.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 c=this,d,b,a=c.getAnchorPosition().charAt(0);if(c.anchorToTarget&&!c.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-c.anchorOffset,30];break;case"b":b=[-19-c.anchorOffset,-13-c.el.dom.offsetHeight];break;case"r":b=[-15-c.el.dom.offsetWidth,-13-c.anchorOffset];break;default:b=[25,-13-c.anchorOffset];break}}d=c.getMouseOffset();b[0]+=d[0];b[1]+=d[1];return b},onTargetOver:function(c){var b=this,a;if(b.disabled||c.within(b.target.dom,true)){return}a=c.getTarget(b.delegate);if(a){b.triggerElement=a;b.triggerEvent=c;b.clearTimer("hide");b.targetXY=c.getXY();b.delayShow()}},delayShow:function(){var a=this;if(a.hidden&&!a.showTimer){if(Ext.Date.getElapsed(a.lastActive)<a.quickShowInterval){a.show()}else{a.showTimer=Ext.defer(a.showFromDelay,a.showDelay,a)}}else{if(!a.hidden&&a.autoHide!==false){a.show()}}},showFromDelay:function(){this.fromDelayShow=true;this.show();delete this.fromDelayShow},onShowVeto:function(){this.callParent();delete this.triggerElement;this.clearTimer("show")},onTargetOut:function(b){var a=this;if(a.disabled||b.within(a.target.dom,true)){return}a.clearTimer("show");if(a.autoHide!==false){a.delayHide()}},delayHide:function(){var a=this;if(!a.hidden&&!a.hideTimer){a.hideTimer=Ext.defer(a.hide,a.hideDelay,a)}},hide:function(){var a=this;a.clearTimer("dismiss");a.lastActive=new Date;if(a.anchorEl){a.anchorEl.hide()}a.callParent(arguments);delete a.triggerElement},show:function(){var a=this;this.callParent();if(this.hidden===false){a.setPagePosition(-10000,-10000);if(a.anchor){a.anchor=a.origAnchor}if(!a.calledFromShowAt){a.showAt(a.getTargetXY())}if(a.anchor){a.syncAnchor();a.anchorEl.show()}else{a.anchorEl.hide()}}},showAt:function(b){var a=this;a.lastActive=new Date;a.clearTimers();a.calledFromShowAt=true;if(!a.isVisible()){this.callParent(arguments)}if(a.isVisible()){a.setPagePosition(b[0],b[1]);if(a.constrainPosition||a.constrain){a.doConstrain()}a.toFront(true);a.el.sync(true);if(a.dismissDelay&&a.autoHide!==false){a.dismissTimer=Ext.defer(a.hide,a.dismissDelay,a)}if(a.anchor){a.syncAnchor();if(!a.anchorEl.isVisible()){a.anchorEl.show()}}else{a.anchorEl.hide()}}delete a.calledFromShowAt},syncAnchor:function(){var c=this,a,b,d;switch(c.tipAnchor.charAt(0)){case"t":a="b";b="tl";d=[20+c.anchorOffset,1];break;case"r":a="l";b="tr";d=[-1,12+c.anchorOffset];break;case"b":a="t";b="bl";d=[20+c.anchorOffset,-1];break;default:a="r";b="tl";d=[1,12+c.anchorOffset];break}c.anchorEl.alignTo(c.el,a+"-"+b,d);c.anchorEl.setStyle("z-index",parseInt(c.el.getZIndex(),10)||0+1).setVisibilityMode(Ext.Element.DISPLAY)},setPagePosition:function(a,c){var b=this;b.callParent(arguments);if(b.anchor){b.syncAnchor()}},clearTimer:function(a){a=a+"Timer";clearTimeout(this[a]);delete this[a]},clearTimers:function(){var a=this;a.clearTimer("show");a.clearTimer("dismiss");a.clearTimer("hide")},onShow:function(){var a=this;a.callParent();a.mon(Ext.getDoc(),"mousedown",a.onDocMouseDown,a)},onHide:function(){var a=this;a.callParent();a.mun(Ext.getDoc(),"mousedown",a.onDocMouseDown,a)},onDocMouseDown:function(b){var a=this;if(!a.closable&&!b.within(a.el.dom)){a.disable();Ext.defer(a.doEnable,100,a)}},doEnable:function(){if(!this.isDestroyed){this.enable()}},onDisable:function(){this.callParent();this.clearTimers();this.hide()},beforeDestroy:function(){var a=this;a.clearTimers();Ext.destroy(a.anchorEl);delete a.anchorEl;delete a.target;delete a.anchorTarget;delete a.triggerElement;a.callParent()},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);this.callParent()}});Ext.define("Ext.tip.QuickTip",{extend:Ext.tip.ToolTip,alias:"widget.quicktip",alternateClassName:"Ext.QuickTip",interceptTitles:false,title:"&#160;",tagConfig:{namespace:"data-",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor",showDelay:"qshowDelay"},initComponent:function(){var a=this;a.target=a.target||Ext.getDoc();a.targets=a.targets||{};a.callParent()},register:function(c){var h=Ext.isArray(c)?c:arguments,d=0,a=h.length,g,b,e;for(;d<a;d++){c=h[d];g=c.target;if(g){if(Ext.isArray(g)){for(b=0,e=g.length;b<e;b++){this.targets[Ext.id(g[b])]=c}}else{this.targets[Ext.id(g)]=c}}}},unregister:function(a){delete this.targets[Ext.id(a)]},cancelShow:function(a){var b=this,c=b.activeTarget;a=Ext.get(a).dom;if(b.isVisible()){if(c&&c.el==a){b.hide()}}else{if(c&&c.el==a){b.clearTimer("show")}}},getTipCfg:function(d){var c=d.getTarget(),b=c.title,a;if(this.interceptTitles&&b&&Ext.isString(b)){c.qtip=b;c.removeAttribute("title");d.preventDefault();return{text:b}}else{a=this.tagConfig;c=d.getTarget("["+a.namespace+a.attribute+"]");if(c){return{target:c,text:c.getAttribute(a.namespace+a.attribute)}}}},onTargetOver:function(j){var l=this,k=j.getTarget(l.delegate),a,d,b,h,m,c,o,g,q,n,p;if(l.disabled){return}l.targetXY=j.getXY();if(!k||k.nodeType!==1||k==document.documentElement||k==document.body){return}if(l.activeTarget&&(k==l.activeTarget.el||Ext.fly(l.activeTarget.el).contains(k))){if(l.targetTextEmpty()){l.onShowVeto();delete l.activeTarget}else{l.clearTimer("hide");l.show()}return}if(k){g=l.targets;for(p in g){if(g.hasOwnProperty(p)){n=g[p];q=Ext.fly(n.target);if(q&&(q.dom===k||q.contains(k))){b=q.dom;break}}}if(b){l.activeTarget=l.targets[b.id];l.activeTarget.el=k;l.anchor=l.activeTarget.anchor;if(l.anchor){l.anchorTarget=k}a=parseInt(l.activeTarget.showDelay,10);if(a){d=l.showDelay;l.showDelay=a}l.delayShow();if(a){l.showDelay=d}return}}b=Ext.fly(k,"_quicktip-target");h=l.tagConfig;m=h.namespace;c=l.getTipCfg(j);if(c){if(c.target){k=c.target;b=Ext.fly(k,"_quicktip-target")}o=b.getAttribute(m+h.hide);l.activeTarget={el:k,text:c.text,width:+b.getAttribute(m+h.width)||null,autoHide:o!="user"&&o!=="false",title:b.getAttribute(m+h.title),cls:b.getAttribute(m+h.cls),align:b.getAttribute(m+h.align),showDelay:parseInt(b.getAttribute(m+h.showDelay),10)};l.anchor=b.getAttribute(m+h.anchor);if(l.anchor){l.anchorTarget=k}a=parseInt(l.activeTarget.showDelay,10);if(a){d=l.showDelay;l.showDelay=a}l.delayShow();if(a){l.showDelay=d}}},onTargetOut:function(g){var c=this,d=c.activeTarget,a,b;if(d&&g.within(c.activeTarget.el)&&!c.getTipCfg(g)){return}c.clearTimer("show");delete c.activeTarget;if(c.autoHide!==false){a=d&&parseInt(d.hideDelay,10);if(a){b=c.hideDelay;c.hideDelay=a}c.delayHide();if(a){c.hideDelay=b}}},targetTextEmpty:function(){var c=this,d=c.activeTarget,a=c.tagConfig,b,e;if(d){b=d.el;if(b){e=b.getAttribute(a.namespace+a.attribute);if(!e&&!c.targets[d.target]){return true}}}return false},show:function(){var b=this,a=b.fromDelayShow;if(a&&b.targetTextEmpty()){b.onShowVeto();delete b.activeTarget;return}b.callParent(arguments)},showAt:function(d){var b=this,c=b.activeTarget,e=b.header,a;if(c){if(!b.rendered){b.render(Ext.getBody());b.activeTarget=c}b.suspendLayouts();if(c.title){b.setTitle(c.title);e.show()}else{if(e){e.hide()}}b.update(c.text);b.autoHide=c.autoHide;b.dismissDelay=c.dismissDelay||b.dismissDelay;if(c.mouseOffset){d[0]+=c.mouseOffset[0];d[1]+=c.mouseOffset[1]}a=b.lastCls;if(a){b.removeCls(a);delete b.lastCls}a=c.cls;if(a){b.addCls(a);b.lastCls=a}b.setWidth(c.width);if(b.anchor){b.constrainPosition=false}else{if(c.align){d=b.getAlignToXY(c.el,c.align);b.constrainPosition=false}else{b.constrainPosition=true}}b.resumeLayouts(true)}b.callParent([d])},hide:function(){delete this.activeTarget;this.callParent()}});Ext.define("Ext.tip.QuickTipManager",function(){var b,a=false;return{singleton:true,alternateClassName:"Ext.QuickTips",init:function(g,d){if(!b){if(!Ext.isReady){Ext.onReady(function(){Ext.tip.QuickTipManager.init(g,d)});return}var c=Ext.apply({disabled:a,id:"ext-quicktips-tip"},d),e=c.className,h=c.xtype;if(e){delete c.className}else{if(h){e="widget."+h;delete c.xtype}}if(g!==false){c.renderTo=document.body}b=Ext.create(e||"Ext.tip.QuickTip",c);Ext.quickTipsActive=true}},destroy:function(){if(b){var c;b.destroy();b=c}},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.define("Ext.app.Application",{extend:Ext.app.Controller,scope:undefined,enableQuickTips:true,appFolder:"app",appProperty:"app",namespaces:[],autoCreateViewport:false,paths:null,onClassExtended:function(j,c,h){var b=Ext.app.Controller,d=j.prototype,a=c.name,l=[],e,k,g;c.$namespace=c.name;Ext.app.addNamespaces(c.name);if(c.namespaces){Ext.app.addNamespaces(c.namespaces)}if(!c["paths processed"]){Ext.Loader.setPath(c.name,c.appFolder||"app");k=c.paths;if(k){for(g in k){if(k.hasOwnProperty(g)){Ext.Loader.setPath(g,k[g])}}}}else{delete c["paths processed"]}if(c.autoCreateViewport){b.processDependencies(d,l,a,"view",["Viewport"])}if(l.length){e=h.onBeforeCreated;h.onBeforeCreated=function(m,o){var n=Ext.Array.clone(arguments);Ext.require(l,function(){return e.apply(this,n)})}}},constructor:function(a){var b=this;b.callParent(arguments);b.doInit(b);b.initNamespace();b.initControllers();b.onBeforeLaunch()},initNamespace:function(){var c=this,a=c.appProperty,b;b=Ext.namespace(c.name);if(b){b.getApplication=function(){return c};if(a){if(!b[a]){b[a]=c}}}},initControllers:function(){var c=this,d=Ext.Array.from(c.controllers);c.controllers=new Ext.util.MixedCollection;for(var a=0,b=d.length;a<b;a++){c.getController(d[a])}},launch:Ext.emptyFn,onBeforeLaunch:function(){var b=this,e,g,d,a;if(b.enableQuickTips){b.initQuickTips()}if(b.autoCreateViewport){b.initViewport()}b.launch.call(b.scope||b);b.launched=true;b.fireEvent("launch",b);e=b.controllers.items;d=e.length;for(g=0;g<d;g++){a=e[g];a.onLaunch(b)}},getModuleClassName:function(a,b){return Ext.app.Controller.getFullName(a,b,this.name).absoluteName},initQuickTips:function(){Ext.tip.QuickTipManager.init()},initViewport:function(){var a=this.getView("Viewport");if(a){a.create()}},getController:function(b){var d=this,e=d.controllers,c,a;a=e.get(b);if(!a){c=d.getModuleClassName(b,"controller");a=Ext.create(c,{application:d,id:b});e.add(a);if(d._initialized){a.doInit(d)}}return a},getApplication:function(){return this}});Ext.define("Ext.app.domain.Controller",{extend:Ext.app.EventDomain,singleton:true,type:"controller",idProperty:"id",constructor:function(){var a=this;a.callParent();a.monitor(Ext.app.Controller)}});Ext.define("Ext.direct.Provider",{alias:"direct.provider",mixins:{observable:Ext.util.Observable},isProvider:true,constructor:function(a){var b=this;Ext.apply(b,a);Ext.applyIf(b,{id:Ext.id(null,"provider-")});b.addEvents("connect","disconnect","data","exception");b.mixins.observable.constructor.call(b,a)},isConnected:function(){return false},connect:Ext.emptyFn,disconnect:Ext.emptyFn});Ext.define("Ext.app.domain.Direct",{extend:Ext.app.EventDomain,singleton:true,type:"direct",idProperty:"id",constructor:function(){var a=this;a.callParent();a.monitor(Ext.direct.Provider)}});Ext.define("Ext.button.Split",{alias:"widget.splitbutton",extend:Ext.button.Button,alternateClassName:"Ext.SplitButton",arrowCls:"split",split:true,initComponent:function(){this.callParent();this.addEvents("arrowclick")},setArrowHandler:function(b,a){this.arrowHandler=b;this.scope=a},onClick:function(c,a){var b=this;c.preventDefault();if(!b.disabled){if(b.overMenuTrigger){b.maybeShowMenu();b.fireEvent("arrowclick",b,c);if(b.arrowHandler){b.arrowHandler.call(b.scope||b,b,c)}}else{b.doToggle();b.fireHandler(c)}}}});Ext.define("Ext.button.Cycle",{alias:"widget.cycle",extend:Ext.button.Split,alternateClassName:"Ext.CycleButton",getButtonText:function(b){var a=this,c="";if(b&&a.showText===true){if(a.prependText){c+=a.prependText}c+=b.text;return c}return a.text},setActiveItem:function(c,a){var b=this;if(!Ext.isObject(c)){c=b.menu.getComponent(c)}if(c){if(!b.rendered){b.text=b.getButtonText(c);b.iconCls=c.iconCls;b.glyph=c.glyph}else{b.setText(b.getButtonText(c));b.setIconCls(c.iconCls);b.setGlyph(c.glyph)}b.activeItem=c;if(!c.checked){c.setChecked(true,false)}if(b.forceIcon){b.setIconCls(b.forceIcon)}if(b.forceGlyph){b.setGlyph(b.forceGlyph)}if(!a){b.fireEvent("change",b,c)}}},getActiveItem:function(){return this.activeItem},initComponent:function(){var g=this,e=0,b,c,a,d;g.addEvents("change");if(g.changeHandler){g.on("change",g.changeHandler,g.scope||g);delete g.changeHandler}b=(g.menu.items||[]).concat(g.items||[]);g.menu=Ext.applyIf({cls:Ext.baseCSSPrefix+"cycle-menu",items:[]},g.menu);a=b.length;for(c=0;c<a;c++){d=b[c];d=Ext.applyIf({group:g.id,itemIndex:c,checkHandler:g.checkHandler,scope:g,checked:d.checked||false},d);g.menu.items.push(d);if(d.checked){e=c}}g.itemCount=g.menu.items.length;g.callParent(arguments);g.on("click",g.toggleSelected,g);g.setActiveItem(e,g);if(g.width&&g.showText){g.addCls(Ext.baseCSSPrefix+"cycle-fixed-width")}},checkHandler:function(a,b){if(b){this.setActiveItem(a)}},toggleSelected:function(){var c=this,a=c.menu,b;b=c.activeItem.next(":not([disabled])")||a.items.getAt(0);b.setChecked(true)}});Ext.define("Ext.chart.Callout",{constructor:function(a){if(a.callouts){a.callouts.styles=Ext.applyIf(a.callouts.styles||{},{color:"#000",font:"11px Helvetica, sans-serif"});this.callouts=Ext.apply(this.callouts||{},a.callouts);this.calloutsArray=[]}},renderCallouts:function(){if(!this.callouts){return}var x=this,m=x.items,a=x.chart.animate,w=x.callouts,h=w.styles,e=x.calloutsArray,b=x.chart.getChartStore(),t=b.getCount(),d=m.length/t,l=[],s,c,q,n,u,g,k,o;for(s=0,c=0;s<t;s++){for(q=0;q<d;q++){u=m[c];g=e[c];k=b.getAt(s);o=!w.filter||w.filter(k);if(!o&&!g){c++;continue}if(!g){e[c]=g=x.onCreateCallout(k,u,s,o,q,c)}for(n in g){if(g[n]&&g[n].setAttributes){g[n].setAttributes(h,true)}}if(!o){for(n in g){if(g[n]){if(g[n].setAttributes){g[n].setAttributes({hidden:true},true)}else{if(g[n].setVisible){g[n].setVisible(false)}}}}}if(w&&w.renderer){w.renderer(g,k)}x.onPlaceCallout(g,k,u,s,o,a,q,c,l);l.push(g);c++}}this.hideCallouts(c)},onCreateCallout:function(g,n,e,j){var k=this,l=k.calloutsGroup,d=k.callouts,o=d?d.styles:undefined,c=o?o.width:0,m=o?o.height:0,h=k.chart,b=h.surface,a={lines:false};a.lines=b.add(Ext.apply({},{type:"path",path:"M0,0",stroke:k.getLegendColor()||"#555"},o));if(d.items){a.panel=new Ext.Panel({style:"position: absolute;",width:c,height:m,items:d.items,renderTo:h.el})}return a},hideCallouts:function(b){var d=this.calloutsArray,a=d.length,e,c;while(a-->b){e=d[a];for(c in e){if(e[c]){e[c].hide(true)}}}}});Ext.define("Ext.draw.CompositeSprite",{extend:Ext.util.MixedCollection,mixins:{animate:Ext.util.Animate},autoDestroy:false,isCompositeSprite:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.addEvents("mousedown","mouseup","mouseover","mouseout","click");b.id=Ext.id(null,"ext-sprite-group-");b.callParent()},onClick:function(a){this.fireEvent("click",a)},onMouseUp:function(a){this.fireEvent("mouseup",a)},onMouseDown:function(a){this.fireEvent("mousedown",a)},onMouseOver:function(a){this.fireEvent("mouseover",a)},onMouseOut:function(a){this.fireEvent("mouseout",a)},attachEvents:function(b){var a=this;b.on({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick})},add:function(b,c){var a=this.callParent(arguments);this.attachEvents(a);return a},insert:function(a,b,c){return this.callParent(arguments)},remove:function(b){var a=this;b.un({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick});return a.callParent(arguments)},getBBox:function(){var e=0,n,j,k=this.items,g=this.length,h=Infinity,c=h,m=-h,b=h,l=-h,d,a;for(;e<g;e++){n=k[e];if(n.el&&!n.bboxExcluded){j=n.getBBox();c=Math.min(c,j.x);b=Math.min(b,j.y);m=Math.max(m,j.height+j.y);l=Math.max(l,j.width+j.x)}}return{x:c,y:b,height:m-b,width:l-c}},setAttributes:function(c,e){var d=0,b=this.items,a=this.length;for(;d<a;d++){b[d].setAttributes(c,e)}return this},hide:function(d){var c=0,b=this.items,a=this.length;for(;c<a;c++){b[c].hide(d)}return this},show:function(d){var c=0,b=this.items,a=this.length;for(;c<a;c++){b[c].show(d)}return this},redraw:function(){var e=this,d=0,c=e.items,b=e.getSurface(),a=e.length;if(b){for(;d<a;d++){b.renderItem(c[d])}}return e},setStyle:function(g){var c=0,b=this.items,a=this.length,e,d;for(;c<a;c++){e=b[c];d=e.el;if(d){d.setStyle(g)}}},addCls:function(e){var d=0,c=this.items,b=this.getSurface(),a=this.length;if(b){for(;d<a;d++){b.addCls(c[d],e)}}},removeCls:function(e){var d=0,c=this.items,b=this.getSurface(),a=this.length;if(b){for(;d<a;d++){b.removeCls(c[d],e)}}},getSurface:function(){var a=this.first();if(a){return a.surface}return null},destroy:function(){var d=this,a=d.getSurface(),c=d.autoDestroy,b;if(a){while(d.getCount()>0){b=d.first();d.remove(b);a.remove(b,c)}}d.clearListeners()}});Ext.define("Ext.draw.Surface",{mixins:{observable:Ext.util.Observable},separatorRe:/[, ]+/,enginePriority:["Svg","Vml"],statics:{create:function(b,d){d=d||this.prototype.enginePriority;var c=0,a=d.length;for(;c<a;c++){if(Ext.supports[d[c]]){return Ext.create("Ext.draw.engine."+d[c],b)}}return false},save:function(a,b){b=b||{};var e={"image/png":"Image","image/jpeg":"Image","image/svg+xml":"Svg"},d=e[b.type]||"Svg",c=Ext.draw.engine[d+"Exporter"];return c.generate(a,b)}},availableAttrs:{blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,"dominant-baseline":"auto",fill:"none","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:"",height:0,hidden:false,href:"http://sencha.com/",opacity:1,path:"M0,0",radius:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"none","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank",text:"","text-anchor":"middle",title:"Ext Draw",width:0,x:0,y:0,zIndex:0},container:undefined,height:352,width:512,x:0,y:0,orderSpritesByZIndex:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.domRef=Ext.getDoc().dom;b.customAttributes={};b.addEvents("mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","click","dblclick");b.mixins.observable.constructor.call(b);b.getId();b.initGradients();b.initItems();if(b.renderTo){b.render(b.renderTo);delete b.renderTo}b.initBackground(a.background)},initSurface:Ext.emptyFn,renderItem:Ext.emptyFn,renderItems:Ext.emptyFn,setViewBox:function(b,d,c,a){if(isFinite(b)&&isFinite(d)&&isFinite(c)&&isFinite(a)){this.viewBox={x:b,y:d,width:c,height:a};this.applyViewBox()}},addCls:Ext.emptyFn,removeCls:Ext.emptyFn,setStyle:Ext.emptyFn,initGradients:function(){if(this.hasOwnProperty("gradients")){var a=this.gradients,b=this.addGradient,d,c;if(a){for(d=0,c=a.length;d<c;d++){if(b.call(this,a[d],d,c)===false){break}}}}},initItems:function(){var a=this.items;this.items=new Ext.draw.CompositeSprite;this.items.autoDestroy=true;this.groups=new Ext.draw.CompositeSprite;if(a){this.add(a)}},initBackground:function(b){var d=this,c=d.width,a=d.height,e,g;if(Ext.isString(b)){b={fill:b}}if(b){if(b.gradient){g=b.gradient;e=g.id;d.addGradient(g);d.background=d.add({type:"rect",x:0,y:0,width:c,height:a,fill:"url(#"+e+")",zIndex:-1})}else{if(b.fill){d.background=d.add({type:"rect",x:0,y:0,width:c,height:a,fill:b.fill,zIndex:-1})}else{if(b.image){d.background=d.add({type:"image",x:0,y:0,width:c,height:a,src:b.image,zIndex:-1})}}}d.background.bboxExcluded=true}},setSize:function(a,b){this.applyViewBox()},scrubAttrs:function(d){var c,b={},a={},e=d.attr;for(c in e){if(this.translateAttrs.hasOwnProperty(c)){b[this.translateAttrs[c]]=e[c];a[this.translateAttrs[c]]=true}else{if(this.availableAttrs.hasOwnProperty(c)&&!a[c]){b[c]=e[c]}}}return b},onClick:function(a){this.processEvent("click",a)},onDblClick:function(a){this.processEvent("dblclick",a)},onMouseUp:function(a){this.processEvent("mouseup",a)},onMouseDown:function(a){this.processEvent("mousedown",a)},onMouseOver:function(a){this.processEvent("mouseover",a)},onMouseOut:function(a){this.processEvent("mouseout",a)},onMouseMove:function(a){this.fireEvent("mousemove",a)},onMouseEnter:Ext.emptyFn,onMouseLeave:Ext.emptyFn,addGradient:Ext.emptyFn,add:function(){var b=Array.prototype.slice.call(arguments),e,j=b.length>1,a,d,c,h,g;if(j||Ext.isArray(b[0])){a=j?b:b[0];d=[];for(c=0,h=a.length;c<h;c++){g=a[c];g=this.add(g);d.push(g)}return d}e=this.prepareItems(b[0],true)[0];this.insertByZIndex(e);this.onAdd(e);return e},insertByZIndex:function(k){var g=this,d=g.items.items,c=d.length,l=Math.ceil,h=k.attr.zIndex,j=c,b=j-1,e=0,a;if(g.orderSpritesByZIndex&&c&&h<d[b].attr.zIndex){while(e<=b){j=l((e+b)/2);a=d[j].attr.zIndex;if(a>h){b=j-1}else{if(a<h){e=j+1}else{break}}}while(j<c&&d[j].attr.zIndex<=h){j++}}g.items.insert(j,k);return j},onAdd:function(d){var g=d.group,b=d.draggable,a,e,c;if(g){a=[].concat(g);e=a.length;for(c=0;c<e;c++){g=a[c];this.getGroup(g).add(d)}delete d.group}if(b){d.initDraggable()}},remove:function(b,e){if(b){this.items.remove(b);var a=[].concat(this.groups.items),d=a.length,c;for(c=0;c<d;c++){a[c].remove(b)}b.onRemove();if(e===true){b.destroy()}}},removeAll:function(d){var a=this.items.items,c=a.length,b;for(b=c-1;b>-1;b--){this.remove(a[b],d)}},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,applyViewBox:function(){var d=this,m=d.viewBox,a=d.width||1,h=d.height||1,g,e,k,b,j,c,l;if(m&&(a||h)){g=m.x;e=m.y;k=m.width;b=m.height;j=h/b;c=a/k;l=Math.min(c,j);if(k*l<a){g-=(a-k*l)/2/l}if(b*l<h){e-=(h-b*l)/2/l}d.viewBoxShift={dx:-g,dy:-e,scale:l};if(d.background){d.background.setAttributes(Ext.apply({},{x:g,y:e,width:a/l,height:h/l},{hidden:false}),true)}}else{if(d.background&&a&&h){d.background.setAttributes(Ext.apply({x:0,y:0,width:a,height:h},{hidden:false}),true)}}},getBBox:function(a,b){var c=this["getPath"+a.type](a);if(b){a.bbox.plain=a.bbox.plain||Ext.draw.Draw.pathDimensions(c);return a.bbox.plain}if(a.dirtyTransform){this.applyTransformations(a,true)}a.bbox.transform=a.bbox.transform||Ext.draw.Draw.pathDimensions(Ext.draw.Draw.mapPath(c,a.matrix));return a.bbox.transform},transformToViewBox:function(a,d){if(this.viewBoxShift){var c=this,b=c.viewBoxShift;return[a/b.scale-b.dx,d/b.scale-b.dy]}else{return[a,d]}},applyTransformations:function(b,d){if(b.type=="text"){b.bbox.transform=0;this.transform(b,false)}b.dirtyTransform=false;var c=this,a=b.attr;if(a.translation.x!=null||a.translation.y!=null){c.translate(b)}if(a.scaling.x!=null||a.scaling.y!=null){c.scale(b)}if(a.rotation.degrees!=null){c.rotate(b)}b.bbox.transform=0;this.transform(b,d);b.transformations=[]},rotate:function(a){var e,b=a.attr.rotation.degrees,d=a.attr.rotation.x,c=a.attr.rotation.y;if(!Ext.isNumber(d)||!Ext.isNumber(c)){e=this.getBBox(a,true);d=!Ext.isNumber(d)?e.x+e.width/2:d;c=!Ext.isNumber(c)?e.y+e.height/2:c}a.transformations.push({type:"rotate",degrees:b,x:d,y:c})},translate:function(b){var a=b.attr.translation.x||0,c=b.attr.translation.y||0;b.transformations.push({type:"translate",x:a,y:c})},scale:function(b){var e,a=b.attr.scaling.x||1,g=b.attr.scaling.y||1,d=b.attr.scaling.centerX,c=b.attr.scaling.centerY;if(!Ext.isNumber(d)||!Ext.isNumber(c)){e=this.getBBox(b,true);d=!Ext.isNumber(d)?e.x+e.width/2:d;c=!Ext.isNumber(c)?e.y+e.height/2:c}b.transformations.push({type:"scale",x:a,y:g,centerX:d,centerY:c})},rectPath:function(a,e,b,c,d){if(d){return[["M",a+d,e],["l",b-d*2,0],["a",d,d,0,0,1,d,d],["l",0,c-d*2],["a",d,d,0,0,1,-d,d],["l",d*2-b,0],["a",d,d,0,0,1,-d,-d],["l",0,d*2-c],["a",d,d,0,0,1,d,-d],["z"]]}return[["M",a,e],["l",b,0],["l",0,c],["l",-b,0],["z"]]},ellipsePath:function(a,d,c,b){if(b==null){b=c}return[["M",a,d],["m",0,-b],["a",c,b,0,1,1,0,2*b],["a",c,b,0,1,1,0,-2*b],["z"]]},getPathpath:function(a){return a.attr.path},getPathcircle:function(c){var b=c.attr;return this.ellipsePath(b.x,b.y,b.radius,b.radius)},getPathellipse:function(c){var b=c.attr;return this.ellipsePath(b.x,b.y,b.radiusX||b.width/2||0,b.radiusY||b.height/2||0)},getPathrect:function(c){var b=c.attr;return this.rectPath(b.x||0,b.y||0,b.width||0,b.height||0,b.r||0)},getPathimage:function(c){var b=c.attr;return this.rectPath(b.x||0,b.y||0,b.width,b.height)},getPathtext:function(a){var b=this.getBBoxText(a);return this.rectPath(b.x,b.y,b.width,b.height)},createGroup:function(b){var a=this.groups.get(b);if(!a){a=new Ext.draw.CompositeSprite({surface:this});a.id=b||Ext.id(null,"ext-surface-group-");this.groups.add(a)}return a},getGroup:function(b){var a;if(typeof b=="string"){a=this.groups.get(b);if(!a){a=this.createGroup(b)}}else{a=b}return a},prepareItems:function(a,c){a=[].concat(a);var e,b,d;for(b=0,d=a.length;b<d;b++){e=a[b];if(!(e instanceof Ext.draw.Sprite)){e.surface=this;a[b]=this.createItem(e)}else{e.surface=this}}return a},setText:Ext.emptyFn,createItem:Ext.emptyFn,getId:function(){return this.id||(this.id=Ext.id(null,"ext-surface-"))},destroy:function(){var a=this;delete a.domRef;if(a.background){a.background.destroy()}a.removeAll(true);Ext.destroy(a.groups.items)}});Ext.define("Ext.layout.component.Draw",{alias:"layout.draw",extend:Ext.layout.component.Auto,setHeightInDom:true,setWidthInDom:true,type:"draw",measureContentWidth:function(b){var c=b.target,a=b.getPaddingInfo(),d=this.getBBox(b);if(!c.viewBox){if(c.autoSize){return d.width+a.width}else{return d.x+d.width+a.width}}else{if(b.heightModel.shrinkWrap){return a.width}else{return d.width/d.height*(b.getProp("contentHeight")-a.height)+a.width}}},measureContentHeight:function(b){var c=b.target,a=b.getPaddingInfo(),d=this.getBBox(b);if(!b.target.viewBox){if(c.autoSize){return d.height+a.height}else{return d.y+d.height+a.height}}else{if(b.widthModel.shrinkWrap){return a.height}else{return d.height/d.width*(b.getProp("contentWidth")-a.width)+a.height}}},getBBox:function(a){var b=a.surfaceBBox;if(!b){b=a.target.surface.items.getBBox();if(b.width===-Infinity&&b.height===-Infinity){b.width=b.height=b.x=b.y=0}a.surfaceBBox=b}return b},publishInnerWidth:function(b,a){b.setContentWidth(a-b.getFrameInfo().width,true)},publishInnerHeight:function(b,a){b.setContentHeight(a-b.getFrameInfo().height,true)},finishedLayout:function(c){var b=c.props,a=c.getPaddingInfo();this.owner.setSurfaceSize(b.contentWidth-a.width,b.contentHeight-a.height);this.callParent(arguments)}});Ext.define("Ext.draw.Component",{alias:"widget.draw",extend:Ext.Component,enginePriority:["Svg","Vml"],baseCls:Ext.baseCSSPrefix+"surface",componentLayout:"draw",viewBox:true,shrinkWrap:3,autoSize:false,initComponent:function(){this.callParent(arguments);this.addEvents("mousedown","mouseup","mousemove","mouseenter","mouseleave","click","dblclick")},onRender:function(){var d=this,k=d.viewBox,b=d.autoSize,h,c,a,j,g,e;d.callParent(arguments);if(d.createSurface()!==false){c=d.surface.items;if(k||b){h=c.getBBox();a=h.width;j=h.height;g=h.x;e=h.y;if(d.viewBox){d.surface.setViewBox(g,e,a,j)}else{d.autoSizeSurface()}}}},autoSizeSurface:function(){var a=this.surface.items.getBBox();this.setSurfaceSize(a.width,a.height)},setSurfaceSize:function(b,a){this.surface.setSize(b,a);if(this.autoSize){var c=this.surface.items.getBBox();this.surface.setViewBox(c.x,c.y-+Ext.isOpera,b,a)}},createSurface:function(){var d=this,b=Ext.applyIf({renderTo:d.el,height:d.height,width:d.width,items:d.items},d.initialConfig),a;delete b.listeners;if(!b.gradients){b.gradients=d.gradients}a=Ext.draw.Surface.create(b,d.enginePriority);if(!a){return false}d.surface=a;function c(e){return function(g){d.fireEvent(e,g)}}a.on({scope:d,mouseup:c("mouseup"),mousedown:c("mousedown"),mousemove:c("mousemove"),mouseenter:c("mouseenter"),mouseleave:c("mouseleave"),click:c("click"),dblclick:c("dblclick")})},onDestroy:function(){Ext.destroy(this.surface);this.callParent(arguments)}});Ext.chart=Ext.chart||{};Ext.define("Ext.chart.theme.Theme",function(){(function(){Ext.chart.theme=function(c,b){c=c||{};var m=0,p=+new Date,j,a,k,s,t,g,o,q,n=[],e,h;if(c.baseColor){e=Ext.draw.Color.fromString(c.baseColor);h=e.getHSL()[2];if(h<0.15){e=e.getLighter(0.3)}else{if(h<0.3){e=e.getLighter(0.15)}else{if(h>0.85){e=e.getDarker(0.3)}else{if(h>0.7){e=e.getDarker(0.15)}}}}c.colors=[e.getDarker(0.3).toString(),e.getDarker(0.15).toString(),e.toString(),e.getLighter(0.15).toString(),e.getLighter(0.3).toString()];delete c.baseColor}if(c.colors){a=c.colors.slice();t=b.markerThemes;s=b.seriesThemes;j=a.length;b.colors=a;for(;m<j;m++){k=a[m];o=t[m]||{};g=s[m]||{};o.fill=g.fill=o.stroke=g.stroke=k;t[m]=o;s[m]=g}b.markerThemes=t.slice(0,j);b.seriesThemes=s.slice(0,j)}for(q in b){if(q in c){if(Ext.isObject(c[q])&&Ext.isObject(b[q])){Ext.apply(b[q],c[q])}else{b[q]=c[q]}}}if(c.useGradients){a=b.colors||function(){var d=[];for(m=0,s=b.seriesThemes,j=s.length;m<j;m++){d.push(s[m].fill||s[m].stroke)}return d}();for(m=0,j=a.length;m<j;m++){e=Ext.draw.Color.fromString(a[m]);if(e){k=e.getDarker(0.1).toString();e=e.toString();q="theme-"+e.substr(1)+"-"+k.substr(1)+"-"+p;n.push({id:q,angle:45,stops:{0:{color:e.toString()},100:{color:k.toString()}}});a[m]="url(#"+q+")"}}b.gradients=n;b.colors=a}Ext.apply(this,b)}})();return{theme:"Base",themeAttrs:false,initTheme:function(e){var d=this,b=Ext.chart.theme,c,a;if(e){e=e.split(":");for(c in b){if(c==e[0]){a=e[1]=="gradients";d.themeAttrs=new b[c]({useGradients:a});if(a){d.gradients=d.themeAttrs.gradients}if(d.themeAttrs.background){d.background=d.themeAttrs.background}return}}}}}}());Ext.define("Ext.chart.MaskLayer",{extend:Ext.Component,constructor:function(a){a=Ext.apply(a||{},{style:"position:absolute;background-color:#ff9;cursor:crosshair;opacity:0.5;border:1px solid #00f;"});this.callParent([a])},initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("mousedown","mouseup","mousemove","mouseenter","mouseleave")},initDraggable:function(){this.callParent(arguments);this.dd.onStart=function(c){var b=this,a=b.comp;this.startPosition=a.getPosition(true);if(a.ghost&&!a.liveDrag){b.proxy=a.ghost();b.dragTarget=b.proxy.header.el}if(b.constrain||b.constrainDelegate){b.constrainTo=b.calculateConstrainRegion()}}}});Ext.define("Ext.chart.Mask",{constructor:function(a){var b=this;b.addEvents("select");if(a){Ext.apply(b,a)}if(b.enableMask){b.on("afterrender",function(){var c=new Ext.chart.MaskLayer({renderTo:b.el,hidden:true});c.el.on({mousemove:function(d){b.onMouseMove(d)},mouseup:function(d){b.onMouseUp(d)}});c.initDraggable();b.maskType=b.mask;b.mask=c;b.maskSprite=b.surface.add({type:"path",path:["M",0,0],zIndex:1001,opacity:0.6,hidden:true,stroke:"#00f",cursor:"crosshair"})},b,{single:true})}},onMouseUp:function(c){var a=this,d=a.bbox||a.chartBBox,b;a.maskMouseDown=false;a.mouseDown=false;if(a.mouseMoved){a.handleMouseEvent(c);a.mouseMoved=false;b=a.maskSelection;a.fireEvent("select",a,{x:b.x-d.x,y:b.y-d.y,width:b.width,height:b.height})}},onMouseDown:function(a){this.handleMouseEvent(a)},onMouseMove:function(a){this.handleMouseEvent(a)},handleMouseEvent:function(d){var h=this,u=h.maskType,p=h.bbox||h.chartBBox,m=p.x,k=p.y,l=Math,c=l.floor,t=l.abs,b=l.min,j=l.max,o=c(k+p.height),a=c(m+p.width),q=d.getPageX()-h.el.getX(),n=d.getPageY()-h.el.getY(),g=h.maskMouseDown,s;q=j(q,m);n=j(n,k);q=b(q,a);n=b(n,o);if(d.type==="mousedown"){h.mouseDown=true;h.mouseMoved=false;h.maskMouseDown={x:q,y:n}}else{h.mouseMoved=h.mouseDown;if(g&&h.mouseDown){if(u=="horizontal"){n=k;g.y=o}else{if(u=="vertical"){q=m;g.x=a}}a=g.x-q;o=g.y-n;s=["M",q,n,"l",a,0,0,o,-a,0,"z"];h.maskSelection={x:(a>0?q:q+a)+h.el.getX(),y:(o>0?n:n+o)+h.el.getY(),width:t(a),height:t(o)};h.mask.updateBox(h.maskSelection);h.mask.show();h.maskSprite.setAttributes({hidden:true},true)}else{if(u=="horizontal"){s=["M",q,k,"L",q,o]}else{if(u=="vertical"){s=["M",m,n,"L",a,n]}else{s=["M",q,k,"L",q,o,"M",m,n,"L",a,n]}}h.maskSprite.setAttributes({path:s,"stroke-width":u===true?1:1,hidden:false},true)}}},onMouseLeave:function(b){var a=this;a.mouseMoved=false;a.mouseDown=false;a.maskMouseDown=false;a.mask.hide();a.maskSprite.hide(true)}});Ext.define("Ext.chart.Navigation",{setZoom:function(p){var u=this,o=u.axes.items,s,m,c,a=u.chartBBox,w=a.width,d=a.height,g={x:p.x-u.el.getX(),y:p.y-u.el.getY(),width:p.width,height:p.height},j,n,q,b,h,l,k,e,t;for(s=0,m=o.length;s<m;s++){c=o[s];t=c.position=="bottom"||c.position=="top";if(c.type=="Category"){if(!h){h=u.getChartStore();l=h.data.items.length}j=g;e=c.length;k=Math.round(e/l);if(t){q=j.x?Math.floor(j.x/k)+1:0;b=(j.x+j.width)/k}else{q=j.y?Math.floor(j.y/k)+1:0;b=(j.y+j.height)/k}}else{j={x:g.x/w,y:g.y/d,width:g.width/w,height:g.height/d};n=c.calcEnds();if(t){q=(n.to-n.from)*j.x+n.from;b=(n.to-n.from)*j.width+q}else{b=(n.to-n.from)*(1-j.y)+n.from;q=b-(n.to-n.from)*j.height}}c.minimum=q;c.maximum=b;if(t){if(c.doConstrain&&u.maskType!="vertical"){c.doConstrain()}}else{if(c.doConstrain&&u.maskType!="horizontal"){c.doConstrain()}}}u.redraw(false)},restoreZoom:function(){var e=this,b=e.axes.items,a,d,c;e.setSubStore(null);for(a=0,d=b.length;a<d;a++){c=b[a];delete c.minimum;delete c.maximum}e.redraw(false)}});Ext.define("Ext.chart.Shape",{singleton:true,circle:function(a,b){return a.add(Ext.apply({type:"circle",x:b.x,y:b.y,stroke:null,radius:b.radius},b))},line:function(a,b){return a.add(Ext.apply({type:"rect",x:b.x-b.radius,y:b.y-b.radius,height:2*b.radius,width:2*b.radius/5},b))},square:function(a,b){return a.add(Ext.applyIf({type:"rect",x:b.x-b.radius,y:b.y-b.radius,height:2*b.radius,width:2*b.radius,radius:null},b))},triangle:function(a,b){b.radius*=1.75;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(b.x,",",b.y,"m0-",b.radius*0.58,"l",b.radius*0.5,",",b.radius*0.87,"-",b.radius,",0z")},b))},diamond:function(a,c){var b=c.radius;b*=1.5;return a.add(Ext.apply({type:"path",stroke:null,path:["M",c.x,c.y-b,"l",b,b,-b,b,-b,-b,b,-b,"z"]},c))},cross:function(a,c){var b=c.radius;b=b/1.7;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(c.x-b,",",c.y,"l",[-b,-b,b,-b,b,b,b,-b,b,b,-b,b,b,b,-b,b,-b,-b,-b,b,-b,-b,"z"])},c))},plus:function(a,c){var b=c.radius/1.3;return a.add(Ext.apply({type:"path",stroke:null,path:"M".concat(c.x-b/2,",",c.y-b/2,"l",[0,-b,b,0,0,b,b,0,0,b,-b,0,0,b,-b,0,0,-b,-b,0,0,-b,"z"])},c))},arrow:function(a,c){var b=c.radius;return a.add(Ext.apply({type:"path",path:"M".concat(c.x-b*0.7,",",c.y-b*0.4,"l",[b*0.6,0,0,-b*0.4,b,b*0.8,-b,b*0.8,0,-b*0.4,-b*0.6,0],"z")},c))},drop:function(b,a,g,e,c,d){c=c||30;d=d||0;b.add({type:"path",path:["M",a,g,"l",c,0,"A",c*0.4,c*0.4,0,1,0,a+c*0.7,g-c*0.7,"z"],fill:"#000",stroke:"none",rotate:{degrees:22.5-d,x:a,y:g}});d=(d+90)*Math.PI/180;b.add({type:"text",x:a+c*Math.sin(d)-10,y:g+c*Math.cos(d)+5,text:e,"font-size":c*12/40,stroke:"none",fill:"#fff"})}});Ext.define("Ext.chart.LegendItem",{extend:Ext.draw.CompositeSprite,hiddenSeries:false,label:undefined,mask:undefined,x:0,y:0,zIndex:500,boldRe:/bold\s\d{1,}.*/i,constructor:function(a){this.callParent(arguments);this.createLegend(a)},createLegend:function(b){var d=this,c=d.series,a=b.yFieldIndex;d.label=d.createLabel(b);d.createSeriesMarkers(b);d.setAttributes({hidden:false},true);d.mask=d.createMask(b);d.yFieldIndex=a;d.on("mouseover",d.onMouseOver,d);d.on("mouseout",d.onMouseOut,d);d.on("mousedown",d.onMouseDown,d);if(!c.visibleInLegend(a)){d.hiddenSeries=true;d.label.setAttributes({opacity:0.5},true)}d.updatePosition({x:0,y:0})},getLabelText:function(){var d=this,c=d.series,a=d.yFieldIndex;function b(e){var g=c[e];return Ext.isArray(g)?g[a]:g}return b("title")||b("yField")},createLabel:function(a){var c=this,b=c.legend;return c.add("label",c.surface.add({type:"text",x:20,y:0,zIndex:(c.zIndex||0)+2,fill:b.labelColor,font:b.labelFont,text:c.getLabelText(),style:{cursor:"pointer"}}))},createMask:function(b){var d=this,a=d.surface,c=d.legend,e;e=d.getBBox();return d.add("mask",a.add({type:"rect",x:e.x,y:e.y,width:e.width||20,height:e.height||20,zIndex:(d.zIndex||0)+1,fill:c.boxFill,style:{cursor:"pointer"}}))},createSeriesMarkers:function(c){var j=this,g=c.yFieldIndex,e=j.series,d=e.type,a=j.surface,h=j.zIndex;if(d==="line"||d==="scatter"){if(d==="line"){var k=Ext.apply(e.seriesStyle,e.style);j.drawLine(0.5,0.5,16.5,0.5,h,k,g)}if(e.showMarkers||d==="scatter"){var b=Ext.apply(e.markerStyle,e.markerConfig||{},{fill:e.getLegendColor(g)});j.drawMarker(8.5,0.5,h,b)}}else{j.drawFilledBox(12,12,h,g)}},drawLine:function(j,g,k,h,d,l,c){var e=this,a=e.surface,b=e.series;return e.add("line",a.add({type:"path",path:"M"+j+","+g+"L"+k+","+h,zIndex:(d||0)+2,"stroke-width":b.lineWidth,"stroke-linejoin":"round","stroke-dasharray":b.dash,stroke:l.stroke||b.getLegendColor(c)||"#000",style:{cursor:"pointer"}}))},drawMarker:function(b,h,g,e){var d=this,a=d.surface,c=d.series;return d.add("marker",Ext.chart.Shape[e.type](a,{fill:e.fill,x:b,y:h,zIndex:(g||0)+2,radius:e.radius||e.size,style:{cursor:"pointer"}}))},drawFilledBox:function(e,b,h,c){var g=this,a=g.surface,d=g.series;return g.add("box",a.add({type:"rect",zIndex:(h||0)+2,x:0,y:0,width:e,height:b,fill:d.getLegendColor(c),style:{cursor:"pointer"}}))},onMouseOver:function(){var a=this;a.label.setStyle({"font-weight":"bold"});a.mask.setStyle({cursor:"pointer"});a.series._index=a.yFieldIndex;a.series.highlightItem()},onMouseOut:function(){var b=this,a=b.legend,c=b.boldRe;b.label.setStyle({"font-weight":a.labelFont&&c.test(a.labelFont)?"bold":"normal"});b.series._index=b.yFieldIndex;b.series.unHighlightItem()},onMouseDown:function(){var b=this,a=b.yFieldIndex;if(!b.hiddenSeries){b.series.hideAll(a);b.label.setAttributes({opacity:0.5},true)}else{b.series.showAll(a);b.label.setAttributes({opacity:1},true)}b.hiddenSeries=!b.hiddenSeries;b.legend.chart.redraw()},updatePosition:function(c){var g=this,a=g.items,e=a.length,b=0,d;if(!c){c=g.legend}for(;b<e;b++){d=a[b];switch(d.type){case"text":d.setAttributes({x:20+c.x+g.x,y:c.y+g.y},true);break;case"rect":d.setAttributes({translate:{x:c.x+g.x,y:c.y+g.y-6}},true);break;default:d.setAttributes({translate:{x:c.x+g.x,y:c.y+g.y}},true)}}}});Ext.define("Ext.chart.Legend",{visible:true,update:true,position:"bottom",x:0,y:0,labelColor:"#000",labelFont:"12px Helvetica, sans-serif",boxStroke:"#000",boxStrokeWidth:1,boxFill:"#FFF",itemSpacing:10,padding:5,width:0,height:0,boxZIndex:100,constructor:function(a){var b=this;if(a){Ext.apply(b,a)}b.items=[];b.isVertical="left|right|float".indexOf(b.position)!==-1;b.origX=b.x;b.origY=b.y},create:function(){var e=this,a=e.chart.series.items,c,d,b;e.createBox();if(e.rebuild!==false){e.createItems()}if(!e.created&&e.isDisplayed()){e.created=true;for(c=0,d=a.length;c<d;c++){b=a[c];b.on("titlechange",e.redraw,e)}}},redraw:function(){var a=this;a.create();a.updatePosition()},isDisplayed:function(){return this.visible&&this.chart.series.findIndex("showInLegend",true)!==-1},createItems:function(){var h=this,d=h.chart.series.items,g=h.items,e,c,l,a,k,b,m;h.removeItems();for(c=0,l=d.length;c<l;c++){b=d[c];if(b.showInLegend){e=[].concat(b.yField);for(a=0,k=e.length;a<k;a++){m=h.createLegendItem(b,a);g.push(m)}}}h.alignItems()},removeItems:function(){var d=this,b=d.items,a=b?b.length:0,c;if(a){for(c=0;c<a;c++){b[c].destroy()}}b.length=[]},alignItems:function(){var k=this,h=k.items,l=k.padding,d=2,b=k.isVertical,o=Math.floor,a=Math.max,e,n,m,c,g,j;e=k.updateItemDimensions();n=e.maxWidth,m=e.maxHeight,c=e.totalWidth,g=e.totalHeight,j=e.spacing;k.width=o((b?n:c)+l*2);if(b&&h.length===1){d=1}k.height=o((b?g-d*j:m)+l*2);k.itemHeight=m},updateItemDimensions:function(){var t=this,j=t.items,g=t.padding,u=t.itemSpacing,p=0,k=0,d=0,s=0,b=t.isVertical,c=Math.floor,w=Math.max,e=0,o,n,q,a,m,h;for(o=0,n=j.length;o<n;o++){q=j[o];a=q.getBBox();m=a.width;h=a.height;if(o===0){e=b?g+h/2:g}else{e=u/(b?2:1)}q.x=c(b?g:d+e);q.y=c(b?s+e:g+h/2);d+=m+e;s+=h+e;p=w(p,m);k=w(k,h)}return{totalWidth:d,totalHeight:s,maxWidth:p,maxHeight:k,spacing:e}},createLegendItem:function(b,a){var c=this;return new Ext.chart.LegendItem({legend:c,series:b,surface:c.chart.surface,yFieldIndex:a})},getBBox:function(){var a=this;return{x:Math.round(a.x)-a.boxStrokeWidth/2,y:Math.round(a.y)-a.boxStrokeWidth/2,width:a.width,height:a.height}},createBox:function(){var b=this,a,c;if(b.boxSprite){b.boxSprite.destroy()}c=b.getBBox();if(isNaN(c.width)||isNaN(c.height)){b.boxSprite=false;return}a=b.boxSprite=b.chart.surface.add(Ext.apply({type:"rect",stroke:b.boxStroke,"stroke-width":b.boxStrokeWidth,fill:b.boxFill,zIndex:b.boxZIndex},c));a.redraw()},calcPosition:function(){var j=this,m,k,o=j.width,n=j.height,l=j.padding,h=j.chart,p=h.chartBBox,b=h.insetPadding,d=p.width-b*2,c=p.height-b*2,g=p.x+b,e=p.y+b,a=h.surface,q=Math.floor;switch(j.position){case"left":m=b;k=q(e+c/2-n/2);break;case"right":m=q(a.width-o)-b;k=q(e+c/2-n/2);break;case"top":m=q(g+d/2-o/2);k=b;break;case"bottom":m=q(g+d/2-o/2);k=q(a.height-n)-b;break;default:m=q(j.origX)+b;k=q(j.origY)+b}return{x:m,y:k}},updatePosition:function(){var d=this,b=d.items,g,c,a,e;if(d.isDisplayed()){g=d.calcPosition();d.x=g.x;d.y=g.y;for(c=0,a=b.length;c<a;c++){b[c].updatePosition()}e=d.getBBox();if(isNaN(e.width)||isNaN(e.height)){if(d.boxSprite){d.boxSprite.hide(true)}}else{if(!d.boxSprite){d.createBox()}d.boxSprite.setAttributes(e,true);d.boxSprite.show(true)}}},toggle:function(b){var e=this,d=0,c=e.items,a=c.length;if(e.boxSprite){if(b){e.boxSprite.show(true)}else{e.boxSprite.hide(true)}}for(;d<a;++d){if(b){c[d].show(true)}else{c[d].hide(true)}}e.visible=b}});Ext.define("Ext.chart.theme.Base",{constructor:function(a){var b=Ext.identityFn;Ext.chart.theme.call(this,a,{background:false,axis:{stroke:"#444","stroke-width":1},axisLabelTop:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:b},axisLabelRight:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:b},axisLabelBottom:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:b},axisLabelLeft:{fill:"#444",font:"12px Arial, Helvetica, sans-serif",spacing:2,padding:5,renderer:b},axisTitleTop:{font:"bold 18px Arial",fill:"#444"},axisTitleRight:{font:"bold 18px Arial",fill:"#444",rotate:{x:0,y:0,degrees:270}},axisTitleBottom:{font:"bold 18px Arial",fill:"#444"},axisTitleLeft:{font:"bold 18px Arial",fill:"#444",rotate:{x:0,y:0,degrees:270}},series:{"stroke-width":0},seriesLabel:{font:"12px Arial",fill:"#333"},marker:{stroke:"#555",radius:3,size:3},colors:["#94ae0a","#115fa6","#a61120","#ff8809","#ffd13e","#a61187","#24ad9a","#7c7474","#a66111"],seriesThemes:[{fill:"#115fa6"},{fill:"#94ae0a"},{fill:"#a61120"},{fill:"#ff8809"},{fill:"#ffd13e"},{fill:"#a61187"},{fill:"#24ad9a"},{fill:"#7c7474"},{fill:"#115fa6"},{fill:"#94ae0a"},{fill:"#a61120"},{fill:"#ff8809"},{fill:"#ffd13e"},{fill:"#a61187"},{fill:"#24ad9a"},{fill:"#7c7474"},{fill:"#a66111"}],markerThemes:[{fill:"#115fa6",type:"circle"},{fill:"#94ae0a",type:"cross"},{fill:"#115fa6",type:"plus"},{fill:"#94ae0a",type:"circle"},{fill:"#a61120",type:"cross"}]})}},function(){var c=["#b1da5a","#4ce0e7","#e84b67","#da5abd","#4d7fe6","#fec935"],k=["Green","Sky","Red","Purple","Blue","Yellow"],h=0,g=0,b=c.length,a=Ext.chart.theme,d=[["#f0a50a","#c20024","#2044ba","#810065","#7eae29"],["#6d9824","#87146e","#2a9196","#d39006","#1e40ac"],["#fbbc29","#ce2e4e","#7e0062","#158b90","#57880e"],["#ef5773","#fcbd2a","#4f770d","#1d3eaa","#9b001f"],["#7eae29","#fdbe2a","#910019","#27b4bc","#d74dbc"],["#44dce1","#0b2592","#996e05","#7fb325","#b821a1"]],e=d.length;for(;h<b;h++){a[k[h]]=function(j){return Ext.extend(a.Base,{constructor:function(l){a.Base.prototype.constructor.call(this,Ext.apply({baseColor:j},l))}})}(c[h])}for(h=0;h<e;h++){a["Category"+(h+1)]=function(j){return Ext.extend(a.Base,{constructor:function(l){a.Base.prototype.constructor.call(this,Ext.apply({colors:j},l))}})}(d[h])}});Ext.define("Ext.chart.Chart",{alias:"widget.chart",extend:Ext.draw.Component,mixins:{themeManager:Ext.chart.theme.Theme,mask:Ext.chart.Mask,navigation:Ext.chart.Navigation,bindable:Ext.util.Bindable,observable:Ext.util.Observable},viewBox:false,animate:false,legend:false,insetPadding:10,background:false,constructor:function(b){var c=this,a;b=Ext.apply({},b);c.initTheme(b.theme||c.theme);if(c.gradients){Ext.apply(b,{gradients:c.gradients})}if(c.background){Ext.apply(b,{background:c.background})}if(b.animate){a={easing:"ease",duration:500};if(Ext.isObject(b.animate)){b.animate=Ext.applyIf(b.animate,a)}else{b.animate=a}}c.mixins.observable.constructor.call(c,b);if(b.enableMask){c.mixins.mask.constructor.call(c)}c.mixins.navigation.constructor.call(c);c.callParent([b])},getChartStore:function(){return this.substore||this.store},initComponent:function(){var b=this,c,a;b.callParent();b.addEvents("itemmousedown","itemmouseup","itemmouseover","itemmouseout","itemclick","itemdblclick","itemdragstart","itemdrag","itemdragend","beforerefresh","refresh");Ext.applyIf(b,{zoom:{width:1,height:1,x:0,y:0}});b.maxGutters={left:0,right:0,bottom:0,top:0};b.store=Ext.data.StoreManager.lookup(b.store);c=b.axes;b.axes=new Ext.util.MixedCollection(false,function(d){return d.position});if(c){b.axes.addAll(c)}a=b.series;b.series=new Ext.util.MixedCollection(false,function(d){return d.seriesId||(d.seriesId=Ext.id(null,"ext-chart-series-"))});if(a){b.series.addAll(a)}if(b.legend!==false){b.legend=new Ext.chart.Legend(Ext.applyIf({chart:b},b.legend))}b.on({mousemove:b.onMouseMove,mouseleave:b.onMouseLeave,mousedown:b.onMouseDown,mouseup:b.onMouseUp,click:b.onClick,dblclick:b.onDblClick,scope:b})},afterComponentLayout:function(c,a,b,e){var d=this;if(Ext.isNumber(c)&&Ext.isNumber(a)){if(c!==b||a!==e){d.curWidth=c;d.curHeight=a;d.redraw(true);d.needsRedraw=false}else{if(d.needsRedraw){d.redraw();d.needsRedraw=false}}}this.callParent(arguments)},redraw:function(c){var k=this,j=k.series.items,g=j.length,b=k.axes.items,d=b.length,a=0,h,n,m=k.chartBBox={x:0,y:0,height:k.curHeight,width:k.curWidth},l=k.legend,e;k.surface.setSize(m.width,m.height);for(h=0;h<g;h++){n=j[h];if(!n.initialized){e=k.initializeSeries(n,h,a)}else{e=n}e.onRedraw();if(Ext.isArray(n.yField)){a+=n.yField.length}else{++a}}for(h=0;h<d;h++){n=b[h];if(!n.initialized){k.initializeAxis(n)}}for(h=0;h<d;h++){b[h].processView()}for(h=0;h<d;h++){b[h].drawAxis(true)}if(l!==false&&l.visible){if(l.update||!l.created){l.create()}}k.alignAxes();if(l!==false&&l.visible){l.updatePosition()}k.getMaxGutters();k.resizing=!!c;for(h=0;h<d;h++){b[h].drawAxis()}for(h=0;h<g;h++){k.drawCharts(j[h])}k.resizing=false},afterRender:function(){var a=this;a.callParent(arguments);if(a.categoryNames){a.setCategoryNames(a.categoryNames)}a.bindStore(a.store,true);a.refresh();if(a.surface.engine==="Vml"){a.on("added",a.onAddedVml,a);a.mon(a.hierarchyEventSource,"added",a.onContainerAddedVml,a)}},onAddedVml:function(){this.needsRedraw=true},onContainerAddedVml:function(a){if(this.isDescendantOf(a)){this.needsRedraw=true}},getEventXY:function(d){var c=this,b=this.surface.getRegion(),h=d.getXY(),a=h[0]-b.left,g=h[1]-b.top;return[a,g]},onClick:function(a){this.handleClick("itemclick",a)},onDblClick:function(a){this.handleClick("itemdblclick",a)},handleClick:function(a,h){var k=this,g=k.getEventXY(h),d=k.series.items,b,j,c,l;for(b=0,j=d.length;b<j;b++){c=d[b];if(Ext.draw.Draw.withinBox(g[0],g[1],c.bbox)){if(c.getItemForPoint){l=c.getItemForPoint(g[0],g[1]);if(l){c.fireEvent(a,l)}}}}},onMouseDown:function(k){var j=this,a=j.getEventXY(k),b=j.series.items,d,h,c,g;if(j.enableMask){j.mixins.mask.onMouseDown.call(j,k)}for(d=0,h=b.length;d<h;d++){c=b[d];if(Ext.draw.Draw.withinBox(a[0],a[1],c.bbox)){if(c.getItemForPoint){g=c.getItemForPoint(a[0],a[1]);if(g){c.fireEvent("itemmousedown",g)}}}}},onMouseUp:function(k){var j=this,a=j.getEventXY(k),b=j.series.items,d,h,c,g;if(j.enableMask){j.mixins.mask.onMouseUp.call(j,k)}for(d=0,h=b.length;d<h;d++){c=b[d];if(Ext.draw.Draw.withinBox(a[0],a[1],c.bbox)){if(c.getItemForPoint){g=c.getItemForPoint(a[0],a[1]);if(g){c.fireEvent("itemmouseup",g)}}}}},onMouseMove:function(h){var k=this,d=k.getEventXY(h),c=k.series.items,a,j,b,n,l,g,m;if(k.enableMask){k.mixins.mask.onMouseMove.call(k,h)}for(a=0,j=c.length;a<j;a++){b=c[a];if(Ext.draw.Draw.withinBox(d[0],d[1],b.bbox)){if(b.getItemForPoint){n=b.getItemForPoint(d[0],d[1]);l=b._lastItemForPoint;g=b._lastStoreItem;m=b._lastStoreField;if(n!==l||n&&(n.storeItem!=g||n.storeField!=m)){if(l){b.fireEvent("itemmouseout",l);delete b._lastItemForPoint;delete b._lastStoreField;delete b._lastStoreItem}if(n){b.fireEvent("itemmouseover",n);b._lastItemForPoint=n;b._lastStoreItem=n.storeItem;b._lastStoreField=n.storeField}}}}else{l=b._lastItemForPoint;if(l){b.fireEvent("itemmouseout",l);delete b._lastItemForPoint;delete b._lastStoreField;delete b._lastStoreItem}}}},onMouseLeave:function(h){var g=this,a=g.series.items,c,d,b;if(g.enableMask){g.mixins.mask.onMouseLeave.call(g,h)}for(c=0,d=a.length;c<d;c++){b=a[c];delete b._lastItemForPoint}},delayRefresh:function(){var a=this;if(!a.refreshTask){a.refreshTask=new Ext.util.DelayedTask(a.refresh,a)}a.refreshTask.delay(a.refreshBuffer)},refresh:function(){var a=this;if(a.rendered&&a.curWidth!==undefined&&a.curHeight!==undefined){if(!a.isVisible(true)){if(!a.refreshPending){a.setShowListeners("mon");a.refreshPending=true}return}if(a.fireEvent("beforerefresh",a)!==false){a.redraw();a.fireEvent("refresh",a)}}},onShow:function(){var a=this;a.callParent(arguments);if(a.refreshPending){a.delayRefresh();a.setShowListeners("mun")}delete a.refreshPending},setShowListeners:function(b){var a=this;a[b](a.hierarchyEventSource,{scope:a,single:true,show:a.forceRefresh,expand:a.forceRefresh})},doRefresh:function(){this.setSubStore(null);this.refresh()},forceRefresh:function(a){var b=this;if(b.isDescendantOf(a)&&b.refreshPending){b.setShowListeners("mun");b.delayRefresh()}delete b.refreshPending},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(c.store&&!b){c.refresh()}},getStoreListeners:function(){var b=this.doRefresh,a=this.delayRefresh;return{refresh:b,add:a,bulkremove:a,update:a,clear:b}},setSubStore:function(a){this.substore=a},initializeAxis:function(b){var e=this,l=e.chartBBox,k=l.width,d=l.height,j=l.x,g=l.y,c=e.themeAttrs,a={chart:e};if(c){a.axisStyle=Ext.apply({},c.axis);a.axisLabelLeftStyle=Ext.apply({},c.axisLabelLeft);a.axisLabelRightStyle=Ext.apply({},c.axisLabelRight);a.axisLabelTopStyle=Ext.apply({},c.axisLabelTop);a.axisLabelBottomStyle=Ext.apply({},c.axisLabelBottom);a.axisTitleLeftStyle=Ext.apply({},c.axisTitleLeft);a.axisTitleRightStyle=Ext.apply({},c.axisTitleRight);a.axisTitleTopStyle=Ext.apply({},c.axisTitleTop);a.axisTitleBottomStyle=Ext.apply({},c.axisTitleBottom)}switch(b.position){case"top":Ext.apply(a,{length:k,width:d,x:j,y:g});break;case"bottom":Ext.apply(a,{length:k,width:d,x:j,y:d});break;case"left":Ext.apply(a,{length:d,width:k,x:j,y:d});break;case"right":Ext.apply(a,{length:d,width:k,x:k,y:d});break}if(!b.chart){Ext.apply(a,b);b=e.axes.replace(Ext.createByAlias("axis."+b.type.toLowerCase(),a))}else{Ext.apply(b,a)}b.initialized=true},getInsets:function(){var b=this,a=b.insetPadding;return{top:a,right:a,bottom:a,left:a}},calculateInsets:function(){var k=this,n=k.legend,j=k.axes,g=["top","right","bottom","left"],d,h,e,a,m,c,o;function b(p){var l=j.findIndex("position",p);return l<0?null:j.getAt(l)}d=k.getInsets();for(h=0,e=g.length;h<e;h++){a=g[h];m=a==="left"||a==="right";c=b(a);if(n!==false){if(n.position===a){o=n.getBBox();d[a]+=(m?o.width:o.height)+k.insetPadding}}if(c&&c.bbox){o=c.bbox;d[a]+=m?o.width:o.height}}return d},alignAxes:function(){var g=this,a=g.axes.items,c,k,e,d,b,h,j;c=g.calculateInsets();k={x:c.left,y:c.top,width:g.curWidth-c.left-c.right,height:g.curHeight-c.top-c.bottom};g.chartBBox=k;for(e=0,d=a.length;e<d;e++){b=a[e];h=b.position;j=h==="left"||h==="right";b.x=h==="right"?k.x+k.width:k.x;b.y=h==="top"?k.y:k.y+k.height;b.width=j?k.width:k.height;b.length=j?k.height:k.width}},initializeSeries:function(k,n,a){var m=this,g=m.themeAttrs,e,h,p,s,q,o=[],c=k instanceof Ext.chart.series.Series,j=0,d,b;if(!c){b={chart:m,seriesId:k.seriesId};if(g){p=g.seriesThemes;q=g.markerThemes;e=Ext.apply({},g.series);h=Ext.apply({},g.marker);b.seriesStyle=Ext.apply(e,p[a%p.length]);b.seriesLabelStyle=Ext.apply({},g.seriesLabel);b.markerStyle=Ext.apply(h,q[a%q.length]);if(g.colors){b.colorArrayStyle=g.colors}else{o=[];for(d=p.length;j<d;j++){s=p[j];if(s.fill||s.stroke){o.push(s.fill||s.stroke)}}if(o.length){b.colorArrayStyle=o}}b.seriesIdx=n;b.themeIdx=a}Ext.applyIf(b,k);k=m.series.replace(Ext.createByAlias("series."+k.type.toLowerCase(),b))}if(k.initialize){k.initialize()}k.initialized=true;return k},getMaxGutters:function(){var j=this,e=j.series.items,b,h,c,k,g=0,a=0,l=0,d=0;for(b=0,h=e.length;b<h;b++){k=e[b].getGutters();if(k){if(k.verticalAxis){l=Math.max(l,k.lower);d=Math.max(d,k.upper)}else{g=Math.max(g,k.lower);a=Math.max(a,k.upper)}}}j.maxGutters={left:g,right:a,bottom:l,top:d}},drawAxis:function(a){a.drawAxis()},drawCharts:function(a){a.triggerafterrender=false;a.drawSeries();if(!this.animate){a.fireEvent("afterrender")}},save:function(a){return Ext.draw.Surface.save(this.surface,a)},destroy:function(){Ext.destroy(this.surface);this.bindStore(null);this.callParent(arguments)}});Ext.define("Ext.chart.Highlight",{highlight:false,highlightCfg:{fill:"#fdd","stroke-width":5,stroke:"#f55"},constructor:function(a){if(a.highlight&&typeof a.highlight!=="boolean"){this.highlightCfg=Ext.merge({},this.highlightCfg,a.highlight)}},highlightItem:function(l){if(!l){return}var g=this,k=l.sprite,a=Ext.merge({},g.highlightCfg,g.highlight),d=g.chart.surface,c=g.chart.animate,b,j,h,e;if(!g.highlight||!k||k._highlighted){return}if(k._anim){k._anim.paused=true}k._highlighted=true;if(!k._defaults){k._defaults=Ext.apply({},k.attr);j={};h={};for(b in a){if(!(b in k._defaults)){k._defaults[b]=d.availableAttrs[b]}j[b]=k._defaults[b];h[b]=a[b];if(Ext.isObject(a[b])){j[b]={};h[b]={};Ext.apply(k._defaults[b],k.attr[b]);Ext.apply(j[b],k._defaults[b]);for(e in k._defaults[b]){if(!(e in a[b])){h[b][e]=j[b][e]}else{h[b][e]=a[b][e]}}for(e in a[b]){if(!(e in h[b])){h[b][e]=a[b][e]}}}}k._from=j;k._to=h;k._endStyle=h}if(c){k._anim=new Ext.fx.Anim({target:k,from:k._from,to:k._to,duration:150})}else{k.setAttributes(k._to,true)}},unHighlightItem:function(){if(!this.highlight||!this.items){return}var j=this,h=j.items,g=h.length,a=Ext.merge({},j.highlightCfg,j.highlight),c=j.chart.animate,e=0,d,b,k;for(;e<g;e++){if(!h[e]){continue}k=h[e].sprite;if(k&&k._highlighted){if(k._anim){k._anim.paused=true}d={};for(b in a){if(Ext.isObject(k._defaults[b])){d[b]=Ext.apply({},k._defaults[b])}else{d[b]=k._defaults[b]}}if(c){k._endStyle=d;k._anim=new Ext.fx.Anim({target:k,to:d,duration:150})}else{k.setAttributes(d,true)}delete k._highlighted}}},cleanHighlights:function(){if(!this.highlight){return}var d=this.group,c=this.markerGroup,b=0,a;for(a=d.getCount();b<a;b++){delete d.getAt(b)._defaults}if(c){for(a=c.getCount();b<a;b++){delete c.getAt(b)._defaults}}}});Ext.define("Ext.chart.Label",{colorStringRe:/url\s*\(\s*#([^\/)]+)\s*\)/,constructor:function(a){var b=this;b.label=Ext.applyIf(b.label||{},{display:"none",stackedDisplay:"none",color:"#000",field:"name",minMargin:50,font:"11px Helvetica, sans-serif",orientation:"horizontal",renderer:Ext.identityFn});if(b.label.display!=="none"){b.labelsGroup=b.chart.surface.getGroup(b.seriesId+"-labels")}},renderLabels:function(){var q=this,T=q.chart,C=T.gradients,u=q.items,O=T.animate,G=q.label,y=G.display,d=G.stackedDisplay,B=G.renderer,z=G.color,e=[].concat(G.field),t=q.labelsGroup,m=(t||0)&&t.length,b=q.chart.getChartStore(),s=b.getCount(),l=(u||0)&&u.length,J=l/s,F=(C||0)&&C.length,n=Ext.draw.Color,S=[],p,R,L,c,E,Q,N,g,h,x,A,M,U,w,W,I,H,a,D,V,K,o,P;if(y=="none"){return}if(l==0){while(m--){S.push(m)}}else{for(R=0,L=0,c=0;R<s;R++){E=0;for(Q=0;Q<J;Q++){A=u[L];M=t.getAt(c);U=b.getAt(R);while(this.__excludes&&this.__excludes[E]){E++}if(!A&&M){M.hide(true);c++}if(A&&e[Q]){if(!M){M=q.onCreateLabel(U,A,R,y)}q.onPlaceLabel(M,U,A,R,y,O,E);c++;if(G.contrast&&A.sprite){w=A.sprite;if(O&&w._endStyle){a=w._endStyle.fill}else{if(O&&w._to){a=w._to.fill}else{a=w.attr.fill}}a=a||w.attr.fill;W=n.fromString(a);if(a&&!W){a=a.match(q.colorStringRe)[1];for(N=0;N<F;N++){p=C[N];if(p.id==a){x=0;g=0;for(h in p.stops){x++;g+=n.fromString(p.stops[h].color).getGrayscale()}I=g/x/255;break}}}else{I=W.getGrayscale()/255}if(M.isOutside){I=1}H=n.fromString(M.attr.color||M.attr.fill).getHSL();H[2]=I>0.5?0.2:0.8;M.setAttributes({fill:String(n.fromHSL.apply({},H))},true)}if(q.stacked&&d&&(A.totalPositiveValues||A.totalNegativeValues)){V=A.totalPositiveValues||0;K=A.totalNegativeValues||0;D=V+K;if(d=="total"){o=B(D)}else{if(d=="balances"){if(V==0&&K==0){o=B(0)}else{o=B(V);P=B(K)}}}if(o){M=t.getAt(c);if(!M){M=q.onCreateLabel(U,A,R,"over")}M.setAttributes({text:o});q.onPlaceLabel(M,U,A,R,"over",O,E);c++;H=n.fromString(M.attr.color||M.attr.fill).getHSL();M.setAttributes({fill:String(n.fromHSL.apply({},H))},true)}if(P){M=t.getAt(c);if(!M){M=q.onCreateLabel(U,A,R,"under")}M.setAttributes({text:P});q.onPlaceLabel(M,U,A,R,"under",O,E);c++;H=n.fromString(M.attr.color||M.attr.fill).getHSL();M.setAttributes({fill:String(n.fromHSL.apply({},H))},true)}}}L++;E++}}m=t.length;while(m>c){S.push(c);c++}}q.hideLabels(S)},hideLabels:function(b){var a=this.labelsGroup,c=!!b&&b.length;if(!a){return}if(c===false){c=a.getCount();while(c--){a.getAt(c).hide(true)}}else{while(c--){a.getAt(b[c]).hide(true)}}}});Ext.define("Ext.chart.TipSurface",{extend:Ext.draw.Component,spriteArray:false,renderFirst:true,constructor:function(a){this.callParent([a]);if(a.sprites){this.spriteArray=[].concat(a.sprites);delete a.sprites}},onRender:function(){var c=this,b=0,a=0,d,e;this.callParent(arguments);e=c.spriteArray;if(c.renderFirst&&e){c.renderFirst=false;for(a=e.length;b<a;b++){d=c.surface.add(e[b]);d.setAttributes({hidden:false},true)}}}});Ext.define("Ext.chart.Tip",{constructor:function(b){var c=this,a,d,e;if(b.tips){c.tipTimeout=null;c.tipConfig=Ext.apply({},b.tips,{renderer:Ext.emptyFn,constrainPosition:true,autoHide:true});c.tooltip=new Ext.tip.ToolTip(c.tipConfig);c.chart.surface.on("mousemove",c.tooltip.onMouseMove,c.tooltip);c.chart.surface.on("mouseleave",function(){c.hideTip()});if(c.tipConfig.surface){a=c.tipConfig.surface;d=a.sprites;e=new Ext.chart.TipSurface({id:"tipSurfaceComponent",sprites:d});if(a.width&&a.height){e.setSize(a.width,a.height)}c.tooltip.add(e);c.spriteTip=e}}},showTip:function(m){var e=this,n,a,c,d,l,b,k,h,j,g;if(!e.tooltip){return}clearTimeout(e.tipTimeout);n=e.tooltip;a=e.spriteTip;c=e.tipConfig;d=n.trackMouse;if(!d){n.trackMouse=true;l=m.sprite;b=l.surface;k=Ext.get(b.getId());if(k){h=k.getXY();j=h[0]+(l.attr.x||0)+(l.attr.translation&&l.attr.translation.x||0);g=h[1]+(l.attr.y||0)+(l.attr.translation&&l.attr.translation.y||0);n.targetXY=[j,g]}}if(a){c.renderer.call(n,m.storeItem,m,a.surface)}else{c.renderer.call(n,m.storeItem,m)}n.show();n.trackMouse=d},hideTip:function(a){var b=this.tooltip;if(!b){return}clearTimeout(this.tipTimeout);this.tipTimeout=setTimeout(function(){b.hide()},0)}});Ext.define("Ext.chart.axis.Abstract",{constructor:function(a){a=a||{};var b=this,c=a.position||"left";c=c.charAt(0).toUpperCase()+c.substring(1);a.label=Ext.apply(a["axisLabel"+c+"Style"]||{},a.label||{});a.axisTitleStyle=Ext.apply(a["axisTitle"+c+"Style"]||{},a.labelTitle||{});Ext.apply(b,a);b.fields=Ext.Array.from(b.fields);this.callParent();b.labels=[];b.getId();b.labelGroup=b.chart.surface.getGroup(b.axisId+"-labels")},alignment:null,grid:false,steps:10,x:0,y:0,minValue:0,maxValue:0,getId:function(){return this.axisId||(this.axisId=Ext.id(null,"ext-axis-"))},processView:Ext.emptyFn,drawAxis:Ext.emptyFn,addDisplayAndLabels:Ext.emptyFn});Ext.define("Ext.chart.axis.Axis",{extend:Ext.chart.axis.Abstract,alternateClassName:"Ext.chart.Axis",forceMinMax:false,dashSize:3,position:"bottom",skipFirst:false,length:0,width:0,adjustEnd:true,majorTickSteps:false,nullGutters:{lower:0,upper:0,verticalAxis:undefined},applyData:Ext.emptyFn,getRange:function(){var E=this,p=E.chart,l=p.getChartStore(),G=l.data.items,o=p.series.items,F=E.position,A,a=Ext.chart.series,w=[],u=Infinity,z=-Infinity,c=E.position==="left"||E.position==="right"||E.position==="radial",B,n,d,y,x,m=G.length,g,D={},t={},C=true,q,h,e,b,s;q=E.fields;for(y=0,n=q.length;y<n;y++){t[q[y]]=true}for(B=0,n=o.length;B<n;B++){if(o[B].seriesIsHidden){continue}if(!o[B].getAxesForXAndYFields){continue}A=o[B].getAxesForXAndYFields();if(A.xAxis&&A.xAxis!==F&&A.yAxis&&A.yAxis!==F){continue}if(a.Bar&&o[B] instanceof a.Bar&&!o[B].column){q=c?Ext.Array.from(o[B].xField):Ext.Array.from(o[B].yField)}else{q=c?Ext.Array.from(o[B].yField):Ext.Array.from(o[B].xField)}if(E.fields.length){for(y=0,d=q.length;y<d;y++){if(t[q[y]]){break}}if(y==d){continue}}if(g=o[B].stacked){if(a.Bar&&o[B] instanceof a.Bar){if(o[B].column!=c){g=false;C=false}}else{if(!c){g=false;C=false}}}if(g){h={};for(y=0;y<q.length;y++){if(C&&o[B].__excludes&&o[B].__excludes[y]){continue}if(!t[q[y]]){Ext.Logger.warn("Field `"+q[y]+"` is not included in the "+F+" axis config.")}t[q[y]]=h[q[y]]=true}w.push({fields:h,positiveValue:0,negativeValue:0})}else{if(!q||q.length==0){q=E.fields}for(y=0;y<q.length;y++){if(C&&o[B].__excludes&&o[B].__excludes[y]){continue}t[q[y]]=D[q[y]]=true}}}for(B=0;B<m;B++){e=G[B];for(x=0;x<w.length;x++){w[x].positiveValue=0;w[x].negativeValue=0}for(b in t){s=e.get(b);if(E.type=="Time"&&typeof s=="string"){s=Date.parse(s)}if(isNaN(s)){continue}if(s===undefined){s=0}if(D[b]){if(u>s){u=s}if(z<s){z=s}}for(x=0;x<w.length;x++){if(w[x].fields[b]){if(s>=0){w[x].positiveValue+=s;if(z<w[x].positiveValue){z=w[x].positiveValue}if(u>0){u=0}}else{w[x].negativeValue+=s;if(u>w[x].negativeValue){u=w[x].negativeValue}if(z<0){z=0}}}}}}if(!isFinite(z)){z=E.prevMax||0}if(!isFinite(u)){u=E.prevMin||0}if(typeof u==="number"){u=Ext.Number.correctFloat(u)}if(typeof z==="number"){z=Ext.Number.correctFloat(z)}if(u!=z&&(z!=Math.floor(z)||u!=Math.floor(u))){u=Math.floor(u);z=Math.floor(z)+1}if(!isNaN(E.minimum)){u=E.minimum}if(!isNaN(E.maximum)){z=E.maximum}if(u>=z){u=Math.floor(u);z=u+1}return{min:u,max:z}},calcEnds:function(){var h=this,d=h.getRange(),g=d.min,a=d.max,c,j,e,b;c=Ext.isNumber(h.majorTickSteps)?h.majorTickSteps+1:h.steps;j=!(Ext.isNumber(h.maximum)&&Ext.isNumber(h.minimum)&&Ext.isNumber(h.majorTickSteps)&&h.majorTickSteps>0);e=Ext.draw.Draw.snapEnds(g,a,c,j);if(Ext.isNumber(h.maximum)){e.to=h.maximum;b=true}if(Ext.isNumber(h.minimum)){e.from=h.minimum;b=true}if(h.adjustMaximumByMajorUnit){e.to=Math.ceil(e.to/e.step)*e.step;b=true}if(h.adjustMinimumByMajorUnit){e.from=Math.floor(e.from/e.step)*e.step;b=true}if(b){e.steps=Math.ceil((e.to-e.from)/e.step)}h.prevMin=g==a?0:g;h.prevMax=a;return e},drawAxis:function(P){var m=this,R,J=m.x,I=m.y,V=m.dashSize,p=m.length,K=m.position,b=K=="left"||K=="right",k=[],j=m.isNumericAxis,u=m.applyData(),B=u.step,F=u.steps,H=Ext.isArray(F),h=u.from,U=u.to,g=U-h||1,S,A,z,N,D=m.minorTickSteps||0,C=m.minorTickSteps||0,o=Math.max(D+1,0),n=Math.max(C+1,0),L=K=="left"||K=="top"?-1:1,d=V*L,c=m.chart.series.items,O=c[0],q=O?O.nullGutters:m.nullGutters,Q,T,s,G=0,E=0,a,M,w,t,e,l;m.from=h;m.to=U;if(m.hidden||h>U){return}if(H&&F.length==0||!H&&isNaN(B)){return}if(H){F=Ext.Array.filter(F,function(y,x,W){return +y>+m.from&&+y<+m.to},this);F=Ext.Array.union([m.from],F,[m.to])}else{F=new Array;for(t=+m.from;t<+m.to;t+=B){F.push(t)}F.push(+m.to)}E=F.length;for(R=0,w=c.length;R<w;R++){if(c[R].seriesIsHidden){continue}if(!c[R].getAxesForXAndYFields){continue}M=c[R].getAxesForXAndYFields();if(!M.xAxis||!M.yAxis||M.xAxis===K||M.yAxis===K){q=c[R].getGutters();if(q.verticalAxis!==undefined&&q.verticalAxis!=b){Q=c[R].getPadding();if(b){q={lower:Q.bottom,upper:Q.top,verticalAxis:true}}else{q={lower:Q.left,upper:Q.right,verticalAxis:false}}}break}}if(j){m.labels=[]}if(q){if(b){A=Math.floor(J);N=["M",A+0.5,I,"l",0,-p];S=p-(q.lower+q.upper);for(a=0;a<E;a++){z=I-q.lower-(F[a]-F[0])*S/g;N.push("M",A,Math.floor(z)+0.5,"l",d*2,0);k.push([A,Math.floor(z)]);if(j){m.labels.push(F[a])}}}else{z=Math.floor(I);N=["M",J,z+0.5,"l",p,0];S=p-(q.lower+q.upper);for(a=0;a<E;a++){A=J+q.lower+(F[a]-F[0])*S/g;N.push("M",Math.floor(A)+0.5,z,"l",0,d*2+1);k.push([Math.floor(A),z]);if(j){m.labels.push(F[a])}}}}T=b?C:D;if(Ext.isArray(T)){if(T.length==2){s=+Ext.Date.add(new Date,T[0],T[1])-Date.now()}else{s=T[0]}}else{if(Ext.isNumber(T)&&T>0){s=B/(T+1)}}if(q&&s){for(a=0;a<E-1;a++){e=+F[a];l=+F[a+1];if(b){for(value=e+s;value<l;value+=s){z=I-q.lower-(value-F[0])*S/g;N.push("M",A,Math.floor(z)+0.5,"l",d,0)}}else{for(value=e+s;value<l;value+=s){A=J+q.upper+(value-F[0])*S/g;N.push("M",Math.floor(A)+0.5,z,"l",0,d+1)}}}}if(!m.axis){m.axis=m.chart.surface.add(Ext.apply({type:"path",path:N},m.axisStyle))}m.axis.setAttributes({path:N},true);m.inflections=k;if(!P&&m.grid){m.drawGrid()}m.axisBBox=m.axis.getBBox();m.drawLabel()},drawGrid:function(){var u=this,o=u.chart.surface,b=u.grid,d=b.odd,e=b.even,h=u.inflections,j=h.length-(d||e?0:1),w=u.position,c=u.chart.maxGutters,n=u.width-2,p,q,s=1,m=[],g,a,k,l=[],t=[];if((c.bottom!==0||c.top!==0)&&(w=="left"||w=="right")||(c.left!==0||c.right!==0)&&(w=="top"||w=="bottom")){s=0;j++}for(;s<j;s++){p=h[s];q=h[s-1];if(d||e){m=s%2?l:t;g=(s%2?d:e)||{};a=(g.lineWidth||g["stroke-width"]||0)/2;k=2*a;if(w=="left"){m.push("M",q[0]+1+a,q[1]+0.5-a,"L",q[0]+1+n-a,q[1]+0.5-a,"L",p[0]+1+n-a,p[1]+0.5+a,"L",p[0]+1+a,p[1]+0.5+a,"Z")}else{if(w=="right"){m.push("M",q[0]-a,q[1]+0.5-a,"L",q[0]-n+a,q[1]+0.5-a,"L",p[0]-n+a,p[1]+0.5+a,"L",p[0]-a,p[1]+0.5+a,"Z")}else{if(w=="top"){m.push("M",q[0]+0.5+a,q[1]+1+a,"L",q[0]+0.5+a,q[1]+1+n-a,"L",p[0]+0.5-a,p[1]+1+n-a,"L",p[0]+0.5-a,p[1]+1+a,"Z")}else{m.push("M",q[0]+0.5+a,q[1]-a,"L",q[0]+0.5+a,q[1]-n+a,"L",p[0]+0.5-a,p[1]-n+a,"L",p[0]+0.5-a,p[1]-a,"Z")}}}}else{if(w=="left"){m=m.concat(["M",p[0]+0.5,p[1]+0.5,"l",n,0])}else{if(w=="right"){m=m.concat(["M",p[0]-0.5,p[1]+0.5,"l",-n,0])}else{if(w=="top"){m=m.concat(["M",p[0]+0.5,p[1]+0.5,"l",0,n])}else{m=m.concat(["M",p[0]+0.5,p[1]-0.5,"l",0,-n])}}}}}if(d||e){if(l.length){if(!u.gridOdd&&l.length){u.gridOdd=o.add({type:"path",path:l})}u.gridOdd.setAttributes(Ext.apply({path:l,hidden:false},d||{}),true)}if(t.length){if(!u.gridEven){u.gridEven=o.add({type:"path",path:t})}u.gridEven.setAttributes(Ext.apply({path:t,hidden:false},e||{}),true)}}else{if(m.length){if(!u.gridLines){u.gridLines=u.chart.surface.add({type:"path",path:m,"stroke-width":u.lineWidth||1,stroke:u.gridColor||"#ccc"})}u.gridLines.setAttributes({hidden:false,path:m},true)}else{if(u.gridLines){u.gridLines.hide(true)}}}},getOrCreateLabel:function(c,g){var d=this,b=d.labelGroup,e=b.getAt(c),a=d.chart.surface;if(e){if(g!=e.attr.text){e.setAttributes(Ext.apply({text:g},d.label),true);e._bbox=e.getBBox()}}else{e=a.add(Ext.apply({group:b,type:"text",x:0,y:0,text:g},d.label));a.renderItem(e);e._bbox=e.getBBox()}if(d.label.rotation){e.setAttributes({rotation:{degrees:0}},true);e._ubbox=e.getBBox();e.setAttributes(d.label,true)}else{e._ubbox=e._bbox}return e},rect2pointArray:function(m){var b=this.chart.surface,g=b.getBBox(m,true),n=[g.x,g.y],d=n.slice(),l=[g.x+g.width,g.y],a=l.slice(),k=[g.x+g.width,g.y+g.height],e=k.slice(),j=[g.x,g.y+g.height],c=j.slice(),h=m.matrix;n[0]=h.x.apply(h,d);n[1]=h.y.apply(h,d);l[0]=h.x.apply(h,a);l[1]=h.y.apply(h,a);k[0]=h.x.apply(h,e);k[1]=h.y.apply(h,e);j[0]=h.x.apply(h,c);j[1]=h.y.apply(h,c);return[n,l,k,j]},intersect:function(c,a){var d=this.rect2pointArray(c),b=this.rect2pointArray(a);return !!Ext.draw.Draw.intersect(d,b).length},drawHorizontalLabels:function(){var F=this,e=F.label,B=Math.floor,z=Math.max,A=F.chart.axes,h=F.chart.insetPadding,g=F.chart.maxGutters,G=F.position,k=F.inflections,o=k.length,E=F.labels,t=0,j,c,u,p,b,D=F.adjustEnd,a=A.findIndex("position","left")!=-1,n=A.findIndex("position","right")!=-1,C,s,m,q,l,w,d;m=o-1;u=k[0];d=F.getOrCreateLabel(0,F.label.renderer(E[0]));j=Math.floor(Math.abs(Math.sin(e.rotate&&e.rotate.degrees*Math.PI/180||0)));for(w=0;w<o;w++){u=k[w];s=F.label.renderer(E[w]);C=F.getOrCreateLabel(w,s);c=C._bbox;t=z(t,c.height+F.dashSize+F.label.padding);q=B(u[0]-(j?c.height:c.width)/2);if(D&&g.left==0&&g.right==0){if(w==0&&!a){q=u[0]}else{if(w==m&&!n){q=Math.min(q,u[0]-c.width+h)}}}if(G=="top"){l=u[1]-F.dashSize*2-F.label.padding-c.height/2}else{l=u[1]+F.dashSize*2+F.label.padding+c.height/2}C.setAttributes({hidden:false,x:q,y:l},true);if(w!=0&&(F.intersect(C,p)||F.intersect(C,d))){if(w===m&&b!==0){p.hide(true)}else{C.hide(true);continue}}p=C;b=w}return t},drawVerticalLabels:function(){var E=this,g=E.inflections,F=E.position,k=g.length,p=E.chart,e=p.insetPadding,D=E.labels,z=0,t=Math.max,w=Math.floor,c=Math.ceil,u=E.chart.axes,d=E.chart.maxGutters,b,q,l,a,o=u.findIndex("position","top")!=-1,A=u.findIndex("position","bottom")!=-1,C=E.adjustEnd,B,n,j=k-1,m,h,s;for(s=0;s<k;s++){q=g[s];n=E.label.renderer(D[s]);B=E.getOrCreateLabel(s,n);b=B._bbox;z=t(z,b.width+E.dashSize+E.label.padding);h=q[1];if(C&&d.bottom+d.top<b.height/2){if(s==j&&!o){h=Math.max(h,E.y-E.length+c(b.height/2)-e)}else{if(s==0&&!A){h=E.y+d.bottom-w(b.height/2)}}}if(F=="left"){m=q[0]-b.width-E.dashSize-E.label.padding-2}else{m=q[0]+E.dashSize+E.label.padding+2}B.setAttributes(Ext.apply({hidden:false,x:m,y:h},E.label),true);if(s!=0&&E.intersect(B,l)){if(s===j&&a!==0){l.hide(true)}else{B.hide(true);continue}}l=B;a=s}return z},drawLabel:function(){var h=this,a=h.position,b=h.labelGroup,j=h.inflections,g=0,e=0,d,c;if(a=="left"||a=="right"){g=h.drawVerticalLabels()}else{e=h.drawHorizontalLabels()}d=b.getCount();c=j.length;for(;c<d;c++){b.getAt(c).hide(true)}h.bbox={};Ext.apply(h.bbox,h.axisBBox);h.bbox.height=e;h.bbox.width=g;if(Ext.isString(h.title)){h.drawTitle(g,e)}},setTitle:function(a){this.title=a;this.drawLabel()},drawTitle:function(m,n){var h=this,g=h.position,b=h.chart.surface,c=h.displaySprite,l=h.title,e=g=="left"||g=="right",k=h.x,j=h.y,a,o,d;if(c){c.setAttributes({text:l},true)}else{a={type:"text",x:0,y:0,text:l};c=h.displaySprite=b.add(Ext.apply(a,h.axisTitleStyle,h.labelTitle));b.renderItem(c)}o=c.getBBox();d=h.dashSize+h.label.padding;if(e){j-=h.length/2-o.height/2;if(g=="left"){k-=m+d+o.width/2}else{k+=m+d+o.width-o.width/2}h.bbox.width+=o.width+10}else{k+=h.length/2-o.width*0.5;if(g=="top"){j-=n+d+o.height*0.3}else{j+=n+d+o.height*0.8}h.bbox.height+=o.height+10}c.setAttributes({translate:{x:k,y:j}},true)}});Ext.define("Ext.chart.axis.Category",{extend:Ext.chart.axis.Axis,alternateClassName:"Ext.chart.CategoryAxis",alias:"axis.category",categoryNames:null,calculateCategoryCount:false,doConstrain:function(){var h=this,g=h.chart,c=g.getChartStore(),b=c.data.items,e=g.series.items,a=e.length,j=[],d;for(d=0;d<a;d++){if(e[d].type==="bar"&&e[d].stacked){return}}for(d=h.minimum;d<h.maximum;d++){j.push(b[d])}g.setSubStore(new Ext.data.Store({model:c.model,data:j}))},setLabels:function(){var m=this.chart.getChartStore(),c=m.data.items,k,h,e,j=this.fields,l=j.length,g,a,b;g=this.labels=[];for(k=0,h=c.length;k<h;k++){e=c[k];for(b=0;b<l;b++){a=e.get(j[b]);g.push(a)}}},applyData:function(){this.callParent();this.setLabels();var a=this.chart.getChartStore().getCount();return{from:0,to:a-1,power:1,step:1,steps:a-1}}});Ext.define("Ext.chart.axis.Gauge",{extend:Ext.chart.axis.Abstract,position:"gauge",alias:"axis.gauge",drawAxis:function(q){var j=this.chart,a=j.surface,p=j.chartBBox,d=p.x+p.width/2,b=p.y+p.height,c=this.margin||10,m=Math.min(p.width,2*p.height)/2+c,h=[],n,l=this.steps,e,g=Math.PI,o=Math.cos,k=Math.sin;if(this.sprites&&!j.resizing){this.drawLabel();return}if(this.margin>=0){if(!this.sprites){for(e=0;e<=l;e++){n=a.add({type:"path",path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"});n.setAttributes({hidden:false},true);h.push(n)}}else{h=this.sprites;for(e=0;e<=l;e++){h[e].setAttributes({path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"},true)}}}this.sprites=h;this.drawLabel();if(this.title){this.drawTitle()}},drawTitle:function(){var e=this,d=e.chart,a=d.surface,g=d.chartBBox,c=e.titleSprite,b;if(!c){e.titleSprite=c=a.add(Ext.apply({type:"text",zIndex:2},e.axisTitleStyle,e.labelTitle))}c.setAttributes(Ext.apply({text:e.title},e.label||{}),true);b=c.getBBox();c.setAttributes({x:g.x+g.width/2-b.width/2,y:g.y+g.height-b.height/2-4},true)},setTitle:function(a){this.title=a;this.drawTitle()},drawLabel:function(){var l=this.chart,p=l.surface,b=l.chartBBox,j=b.x+b.width/2,h=b.y+b.height,m=this.margin||10,d=Math.min(b.width,2*b.height)/2+2*m,w=Math.round,n=[],g,t=this.maximum||0,k=this.minimum||0,s=this.steps,q=0,x,u=Math.PI,c=Math.cos,a=Math.sin,e=this.label,o=e.renderer||Ext.identityFn;if(!this.labelArray){for(q=0;q<=s;q++){x=q===0||q===s?7:0;g=p.add({type:"text",text:o(w(k+q/s*(t-k))),x:j+d*c(q/s*u-u),y:h+d*a(q/s*u-u)-x,"text-anchor":"middle","stroke-width":0.2,zIndex:10,stroke:"#333"});g.setAttributes({hidden:false},true);n.push(g)}}else{n=this.labelArray;for(q=0;q<=s;q++){x=q===0||q===s?7:0;n[q].setAttributes({text:o(w(k+q/s*(t-k))),x:j+d*c(q/s*u-u),y:h+d*a(q/s*u-u)-x},true)}}this.labelArray=n}});Ext.define("Ext.chart.axis.Numeric",{extend:Ext.chart.axis.Axis,alternateClassName:"Ext.chart.NumericAxis",type:"Numeric",isNumericAxis:true,alias:"axis.numeric",constructor:function(c){var d=this,a=!!(c.label&&c.label.renderer),b;d.callParent([c]);b=d.label;if(c.constrain==null){d.constrain=c.minimum!=null&&c.maximum!=null}if(!a){b.renderer=function(e){return d.roundToDecimal(e,d.decimals)}}},roundToDecimal:function(a,c){var b=Math.pow(10,c||0);return Math.round(a*b)/b},minimum:NaN,maximum:NaN,constrain:true,decimals:2,scale:"linear",doConstrain:function(){var w=this,h=w.chart,b=h.getChartStore(),j=b.data.items,u,y,a,e=h.series.items,k=w.fields,c=k.length,g=w.calcEnds(),n=g.from,q=g.to,s,o,t=false,m,x=[],p;for(u=0,y=j.length;u<y;u++){p=true;a=j[u];for(s=0;s<c;s++){m=a.get(k[s]);if(w.type=="Time"&&typeof m=="string"){m=Date.parse(m)}if(+m<+n){p=false;break}if(+m>+q){p=false;break}}if(p){x.push(a)}}h.setSubStore(new Ext.data.Store({model:b.model,data:x}))},position:"left",adjustMaximumByMajorUnit:false,adjustMinimumByMajorUnit:false,processView:function(){var e=this,d=e.chart,c=d.series.items,b,a;for(b=0,a=c.length;b<a;b++){if(c[b].stacked){delete e.minimum;delete e.maximum;e.constrain=false;break}}if(e.constrain){e.doConstrain()}},applyData:function(){this.callParent();return this.calcEnds()}});Ext.define("Ext.chart.axis.Radial",{extend:Ext.chart.axis.Numeric,position:"radial",alias:"axis.radial",drawAxis:function(w){var m=this.chart,a=m.surface,u=m.chartBBox,q=m.getChartStore(),b=q.getCount(),e=u.x+u.width/2,c=u.y+u.height/2,p=Math.min(u.width,u.height)/2,k=[],s,o=this.steps,g,d,h=Math.PI*2,t=Math.cos,n=Math.sin;if(this.sprites&&!m.resizing){this.drawLabel();return}if(!this.sprites){for(g=1;g<=o;g++){s=a.add({type:"circle",x:e,y:c,radius:Math.max(p*g/o,0),stroke:"#ccc"});s.setAttributes({hidden:false},true);k.push(s)}for(g=0;g<b;g++){s=a.add({type:"path",path:["M",e,c,"L",e+p*t(g/b*h),c+p*n(g/b*h),"Z"],stroke:"#ccc"});s.setAttributes({hidden:false},true);k.push(s)}}else{k=this.sprites;for(g=0;g<o;g++){k[g].setAttributes({x:e,y:c,radius:Math.max(p*(g+1)/o,0),stroke:"#ccc"},true)}for(d=0;d<b;d++){k[g+d].setAttributes({path:["M",e,c,"L",e+p*t(d/b*h),c+p*n(d/b*h),"Z"],stroke:"#ccc"},true)}}this.sprites=k;this.drawLabel()},drawLabel:function(){var y=this.chart,c=y.series.items,s,D=y.surface,b=y.chartBBox,l=y.getChartStore(),L=l.data.items,p,k,o=b.x+b.width/2,n=b.y+b.height/2,h=Math.min(b.width,b.height)/2,H=Math.max,K=Math.round,z=[],m,B=[],d,C=[],g,x=!this.maximum,J=this.maximum||0,I=this.steps,G=0,F,u,t,A=Math.PI*2,e=Math.cos,a=Math.sin,E=this.label.display,q=E!=="none",w=10;if(!q){return}for(G=0,p=c.length;G<p;G++){s=c[G];B.push(s.yField);g=s.xField}for(F=0,p=L.length;F<p;F++){k=L[F];C.push(k.get(g));if(x){for(G=0,d=B.length;G<d;G++){J=H(+k.get(B[G]),J)}}}if(!this.labelArray){if(E!="categories"){for(G=1;G<=I;G++){m=D.add({type:"text",text:K(G/I*J),x:o,y:n-h*G/I,"text-anchor":"middle","stroke-width":0.1,stroke:"#333"});m.setAttributes({hidden:false},true);z.push(m)}}if(E!="scale"){for(F=0,I=C.length;F<I;F++){u=e(F/I*A)*(h+w);t=a(F/I*A)*(h+w);m=D.add({type:"text",text:C[F],x:o+u,y:n+t,"text-anchor":u*u<=0.001?"middle":u<0?"end":"start"});m.setAttributes({hidden:false},true);z.push(m)}}}else{z=this.labelArray;if(E!="categories"){for(G=0;G<I;G++){z[G].setAttributes({text:K((G+1)/I*J),x:o,y:n-h*(G+1)/I,"text-anchor":"middle","stroke-width":0.1,stroke:"#333"},true)}}if(E!="scale"){for(F=0,I=C.length;F<I;F++){u=e(F/I*A)*(h+w);t=a(F/I*A)*(h+w);if(z[G+F]){z[G+F].setAttributes({type:"text",text:C[F],x:o+u,y:n+t,"text-anchor":u*u<=0.001?"middle":u<0?"end":"start"},true)}}}}this.labelArray=z},getRange:function(){var a=this.callParent();a.min=0;return a},processView:function(){var h=this,c=h.chart.series.items,e,g,d,b,a=[];for(e=0,g=c.length;e<g;e++){d=c[e];a.push(d.yField)}h.fields=a;b=h.calcEnds();h.maximum=b.to;h.steps=b.steps}});Ext.define("Ext.chart.axis.Time",{extend:Ext.chart.axis.Numeric,alternateClassName:"Ext.chart.TimeAxis",type:"Time",alias:"axis.time",dateFormat:false,fromDate:false,toDate:false,step:[Ext.Date.DAY,1],constrain:false,constructor:function(b){var c=this,a,d,e;c.callParent([b]);a=c.label||{};e=this.dateFormat;if(e){if(a.renderer){d=a.renderer;a.renderer=function(g){g=d(g);return Ext.Date.format(new Date(d(g)),e)}}else{a.renderer=function(g){return Ext.Date.format(new Date(g>>0),e)}}}},processView:function(){var a=this;if(a.fromDate){a.minimum=+a.fromDate}if(a.toDate){a.maximum=+a.toDate}if(a.constrain){a.doConstrain()}},calcEnds:function(){var c=this,a,b=c.step;if(b){a=c.getRange();a=Ext.draw.Draw.snapEndsByDateAndStep(new Date(a.min),new Date(a.max),Ext.isNumber(b)?[Date.MILLI,b]:b);if(c.minimum){a.from=c.minimum}if(c.maximum){a.to=c.maximum}return a}else{return c.callParent(arguments)}}});Ext.define("Ext.chart.series.Series",{mixins:{observable:Ext.util.Observable,labels:Ext.chart.Label,highlights:Ext.chart.Highlight,tips:Ext.chart.Tip,callouts:Ext.chart.Callout},type:null,title:null,showInLegend:true,renderer:function(e,a,c,d,b){return c},shadowAttributes:null,animating:false,nullGutters:{lower:0,upper:0,verticalAxis:undefined},nullPadding:{left:0,right:0,width:0,bottom:0,top:0,height:0},constructor:function(a){var b=this;if(a){Ext.apply(b,a)}b.shadowGroups=[];b.mixins.labels.constructor.call(b,a);b.mixins.highlights.constructor.call(b,a);b.mixins.tips.constructor.call(b,a);b.mixins.callouts.constructor.call(b,a);b.addEvents({scope:b,itemclick:true,itemmouseover:true,itemmouseout:true,itemmousedown:true,itemmouseup:true,mouseleave:true,afterdraw:true,titlechange:true});b.mixins.observable.constructor.call(b,a);b.on({scope:b,itemmouseover:b.onItemMouseOver,itemmouseout:b.onItemMouseOut,mouseleave:b.onMouseLeave});if(b.style){Ext.apply(b.seriesStyle,b.style)}},onRedraw:Ext.emptyFn,eachRecord:function(c,b){var a=this.chart;a.getChartStore().each(c,b)},getRecordCount:function(){var b=this.chart,a=b.getChartStore();return a?a.getCount():0},isExcluded:function(a){var b=this.__excludes;return !!(b&&b[a])},setBBox:function(a){var d=this,c=d.chart,b=c.chartBBox,h=a?{left:0,right:0,bottom:0,top:0}:c.maxGutters,e,g;e={x:b.x,y:b.y,width:b.width,height:b.height};d.clipBox=e;g={x:e.x+h.left-c.zoom.x*c.zoom.width,y:e.y+h.bottom-c.zoom.y*c.zoom.height,width:(e.width-(h.left+h.right))*c.zoom.width,height:(e.height-(h.bottom+h.top))*c.zoom.height};d.bbox=g},onAnimate:function(b,a){var c=this;b.stopAnimation();if(c.animating){return b.animate(Ext.applyIf(a,c.chart.animate))}else{c.animating=true;return b.animate(Ext.apply(Ext.applyIf(a,c.chart.animate),{callback:function(){c.animating=false;c.fireEvent("afterrender")}}))}},getGutters:function(){return this.nullGutters},getPadding:function(){return this.nullPadding},onItemMouseOver:function(b){var a=this;if(b.series===a){if(a.highlight){a.highlightItem(b)}if(a.tooltip){a.showTip(b)}}},onItemMouseOut:function(b){var a=this;if(b.series===a){a.unHighlightItem();if(a.tooltip){a.hideTip(b)}}},onMouseLeave:function(){var a=this;a.unHighlightItem();if(a.tooltip){a.hideTip()}},getItemForPoint:function(a,j){if(!this.items||!this.items.length||this.seriesIsHidden){return null}var g=this,b=g.items,h=g.bbox,e,c,d;if(!Ext.draw.Draw.withinBox(a,j,h)){return null}for(c=0,d=b.length;c<d;c++){if(b[c]&&this.isItemInPoint(a,j,b[c],c)){return b[c]}}return null},isItemInPoint:function(a,d,c,b){return false},hideAll:function(){var h=this,g=h.items,m,e,d,c,a,k,b;h.seriesIsHidden=true;h._prevShowMarkers=h.showMarkers;h.showMarkers=false;h.hideLabels(0);for(d=0,e=g.length;d<e;d++){m=g[d];k=m.sprite;if(k){k.setAttributes({hidden:true},true)}if(k&&k.shadows){b=k.shadows;for(c=0,a=b.length;c<a;++c){b[c].setAttributes({hidden:true},true)}}}},showAll:function(){var a=this,b=a.chart.animate;a.chart.animate=false;a.seriesIsHidden=false;a.showMarkers=a._prevShowMarkers;a.drawSeries();a.chart.animate=b},hide:function(){if(this.items){var h=this,b=h.items,d,c,a,g,e;if(b&&b.length){for(d=0,g=b.length;d<g;++d){if(b[d].sprite){b[d].sprite.hide(true);e=b[d].shadows||b[d].sprite.shadows;if(e){for(c=0,a=e.length;c<a;++c){e[c].hide(true)}}}}h.hideLabels()}}},getLegendColor:function(a){var b=this,d,c;if(b.seriesStyle){d=b.seriesStyle.fill;c=b.seriesStyle.stroke;if(d&&d!="none"){return d}if(c){return c}}return b.colorArrayStyle?b.colorArrayStyle[b.themeIdx%b.colorArrayStyle.length]:"#000"},visibleInLegend:function(a){var b=this.__excludes;if(b){return !b[a]}return !this.seriesIsHidden},setTitle:function(a,d){var c=this,b=c.title;if(Ext.isString(a)){d=a;a=0}if(Ext.isArray(b)){b[a]=d}else{c.title=d}c.fireEvent("titlechange",d,a)}});Ext.define("Ext.chart.series.Cartesian",{extend:Ext.chart.series.Series,alternateClassName:["Ext.chart.CartesianSeries","Ext.chart.CartesianChart"],xField:null,yField:null,axis:"left",getLegendLabels:function(){var j=this,e=[],g,d,h,k=j.combinations,l,a,c,b;g=[].concat(j.yField);for(d=0,h=g.length;d<h;d++){l=j.title;e.push((Ext.isArray(l)?l[d]:l)||g[d])}if(k){k=Ext.Array.from(k);for(d=0,h=k.length;d<h;d++){a=k[d];c=e[a[0]];b=e[a[1]];e[a[1]]=c+" & "+b;e.splice(a[0],1)}}return e},eachYValue:function(b,e,d){var j=this,h=j.getYValueAccessors(),c,g,a;for(c=0,g=h.length;c<g;c++){a=h[c];e.call(d,a(b),c)}},getYValueCount:function(){return this.getYValueAccessors().length},combine:function(g,e){var d=this,c=d.getYValueAccessors(),b=c[g],a=c[e];c[e]=function(h){return b(h)+a(h)};c.splice(g,1);d.callParent([g,e])},clearCombinations:function(){delete this.yValueAccessors;this.callParent()},getYValueAccessors:function(){var e=this,a=e.yValueAccessors,g,c,b,d;if(!a){a=e.yValueAccessors=[];g=[].concat(e.yField);for(b=0,d=g.length;b<d;b++){c=g[b];a.push(function(h){return h.get(c)})}}return a},getMinMaxXValues:function(){var l=this,k=l.chart,n=k.getChartStore(),d=n.data.items,h=l.getRecordCount(),e,j,g,c,m,a=l.xField,b;if(h>0){c=Infinity;m=-c;for(e=0,j=d.length;e<j;e++){g=d[e];b=g.get(a);if(b>m){m=b}if(b<c){c=b}}if(c==Infinity){c=0}if(m==-Infinity){m=h-1}}else{c=m=0}return[c,m]},getMinMaxYValues:function(){var l=this,k=l.chart,p=k.getChartStore(),c=p.data.items,g=l.getRecordCount(),d,j,e,h=l.stacked,b,m,o,n;function a(t,s){if(!l.isExcluded(s)){if(t<0){n+=t}else{o+=t}}}function q(t,s){if(!l.isExcluded(s)){if(t>m){m=t}if(t<b){b=t}}}if(g>0){b=Infinity;m=-b;for(d=0,j=c.length;d<j;d++){e=c[d];if(h){o=0;n=0;l.eachYValue(e,a);if(o>m){m=o}if(n<b){b=n}}else{l.eachYValue(e,q)}}if(b==Infinity){b=0}if(m==-Infinity){m=g-1}}else{b=m=0}return[b,m]},getAxesForXAndYFields:function(){var m=this,l=m.chart.axes,d=[].concat(m.axis),c={},e=[].concat(m.yField),n={},o=[].concat(m.xField),j,b,a,h,k,g;g=m.type==="bar"&&m.column===false;if(g){j=e;e=o;o=j}if(Ext.Array.indexOf(d,"top")>-1){b="top"}else{if(Ext.Array.indexOf(d,"bottom")>-1){b="bottom"}else{if(l.get("top")&&l.get("bottom")){for(h=0,k=o.length;h<k;h++){n[o[h]]=true}j=[].concat(l.get("bottom").fields);for(h=0,k=j.length;h<k;h++){if(n[j[h]]){b="bottom";break}}j=[].concat(l.get("top").fields);for(h=0,k=j.length;h<k;h++){if(n[j[h]]){b="top";break}}}else{if(l.get("top")){b="top"}else{if(l.get("bottom")){b="bottom"}}}}}if(Ext.Array.indexOf(d,"left")>-1){a="left"}else{if(Ext.Array.indexOf(d,"right")>-1){a="right"}else{if(l.get("left")&&l.get("right")){for(h=0,k=e.length;h<k;h++){c[e[h]]=true}j=[].concat(l.get("right").fields);for(h=0,k=j.length;h<k;h++){if(c[j[h]]){break}}j=[].concat(l.get("left").fields);for(h=0,k=j.length;h<k;h++){if(c[j[h]]){a="left";break}}}else{if(l.get("left")){a="left"}else{if(l.get("right")){a="right"}}}}}return g?{xAxis:a,yAxis:b}:{xAxis:b,yAxis:a}}});Ext.define("Ext.chart.series.Area",{extend:Ext.chart.series.Cartesian,alias:"series.area",type:"area",stacked:true,style:{},constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,d,b;c.highlightCfg=Ext.Object.merge({},{lineWidth:3,stroke:"#55c",opacity:0.8,color:"#f00"},c.highlightCfg);Ext.apply(e,c,{__excludes:[]});if(e.highlight){e.highlightSprite=a.add({type:"path",path:["M",0,0],zIndex:1000,opacity:0.3,lineWidth:5,hidden:true,stroke:"#444"})}e.group=a.getGroup(e.seriesId)},shrink:function(b,n,o){var k=b.length,m=Math.floor(k/o),h,g,d=0,l=this.areas.length,a=[],e=[],c=[];for(g=0;g<l;++g){a[g]=0}for(h=0;h<k;++h){d+=+b[h];for(g=0;g<l;++g){a[g]+=+n[h][g]}if(h%m==0){e.push(d/m);for(g=0;g<l;++g){a[g]/=m}c.push(a);d=0;for(g=0,a=[];g<l;++g){a[g]=0}}}return{x:e,y:c}},getBounds:function(){var j=this,P=j.chart,a=P.getChartStore(),O=a.data.items,L,I,z,x=[].concat(j.yField),C=x.length,B=[],F=[],g=Infinity,E=g,D=g,n=-g,m=-g,t=Math,y=t.min,e=t.max,p=j.getAxesForXAndYFields(),M=p.xAxis,w=p.yAxis,J,s,G,k,h,H,q,Q,N,b,u,K,c,d,o,A;j.setBBox();k=j.bbox;if(o=P.axes.get(M)){if(o.type==="Time"){s=true}J=o.applyData();E=J.from;n=J.to}if(o=P.axes.get(w)){J=o.applyData();D=J.from;m=J.to}if(j.xField&&!Ext.isNumber(E)){o=j.getMinMaxXValues();s=true;E=o[0];n=o[1]}if(j.yField&&!Ext.isNumber(D)){o=j.getMinMaxYValues();D=o[0];m=o[1]}if(!Ext.isNumber(D)){D=0}if(!Ext.isNumber(m)){m=0}I=O.length;if(I>0&&s){G=O[0].get(j.xField);if(typeof G!="number"){G=+G;if(isNaN(G)){s=false}}}for(L=0;L<I;L++){z=O[L];q=z.get(j.xField);Q=[];if(typeof q!="number"){if(s){q=+q}else{q=L}}B.push(q);b=0;for(N=0;N<C;N++){if(j.__excludes[N]){continue}d=z.get(x[N]);if(typeof d=="number"){Q.push(d)}}F.push(Q)}h=k.width/(n-E||1);H=k.height/(m-D||1);u=B.length;if(u>k.width&&j.areas){K=j.shrink(B,F,k.width);B=K.x;F=K.y}return{bbox:k,minX:E,minY:D,xValues:B,yValues:F,xScale:h,yScale:H,areasLen:C}},getPaths:function(){var B=this,m=B.chart,c=m.getChartStore(),e=true,g=B.getBounds(),a=g.bbox,n=B.items=[],A=[],b,d=0,p=[],t,j,k,h,q,w,l,C,s,z,o,u;j=g.xValues.length;for(t=0;t<j;t++){q=g.xValues[t];w=g.yValues[t];k=a.x+(q-g.minX)*g.xScale;if(u===undefined){u=k}l=0;d=0;for(C=0;C<g.areasLen;C++){if(B.__excludes[C]){continue}if(!A[C]){A[C]=[]}z=w[d];l+=z;h=a.y+a.height-(l-g.minY)*g.yScale;if(!p[C]){p[C]=["M",k,h];A[C].push(["L",k,h])}else{p[C].push("L",k,h);A[C].push(["L",k,h])}if(!n[C]){n[C]={pointsUp:[],pointsDown:[],series:B}}n[C].pointsUp.push([k,h]);d++}}for(C=0;C<g.areasLen;C++){if(B.__excludes[C]){continue}o=p[C];if(C==0||e){e=false;o.push("L",k,a.y+a.height,"L",u,a.y+a.height,"Z")}else{b=A[s];b.reverse();o.push("L",k,b[0][2]);for(t=0;t<j;t++){o.push(b[t][0],b[t][1],b[t][2]);n[C].pointsDown[j-t-1]=[b[t][1],b[t][2]]}o.push("L",u,o[2],"Z")}s=C}return{paths:p,areasLen:g.areasLen}},drawSeries:function(){var j=this,h=j.chart,l=h.getChartStore(),d=h.surface,c=h.animate,n=j.group,b=Ext.apply(j.seriesStyle,j.style),o=j.colorArrayStyle,s=o&&o.length||0,a=j.themeIdx,e,g,q,p,m,k;j.unHighlightItem();j.cleanHighlights();if(!l||!l.getCount()||j.seriesIsHidden){j.hide();j.items=[];return}q=j.getPaths();if(!j.areas){j.areas=[]}for(e=0;e<q.areasLen;e++){if(j.__excludes[e]){continue}k=a+e;if(!j.areas[e]){j.items[e].sprite=j.areas[e]=d.add(Ext.apply({},{type:"path",group:n,path:q.paths[e],stroke:b.stroke||o[k%s],fill:o[k%s]},b||{}))}g=j.areas[e];p=q.paths[e];if(c){m=j.renderer(g,false,{path:p,fill:o[e%s],stroke:b.stroke||o[e%s]},e,l);j.animation=j.onAnimate(g,{to:m})}else{m=j.renderer(g,false,{path:p,hidden:false,fill:o[k%s],stroke:b.stroke||o[k%s]},e,l);j.areas[e].setAttributes(m,true)}}j.renderLabels();j.renderCallouts()},onAnimate:function(b,a){b.show();return this.callParent(arguments)},onCreateLabel:function(d,k,c,e){var g=this,h=g.labelsGroup,a=g.label,j=g.bbox,b=Ext.apply(a,g.seriesLabelStyle);return g.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:h,x:k.point[0],y:j.y+j.height/2},b||{}))},onPlaceLabel:function(g,k,t,p,o,c,e){var w=this,l=w.chart,s=l.resizing,u=w.label,q=u.renderer,b=u.field,a=w.bbox,j=t.point[0],h=t.point[1],d,n,m;g.setAttributes({text:q(k.get(b[e]),g,k,t,p,o,c,e),hidden:true},true);d=g.getBBox();n=d.width/2;m=d.height/2;j=j-n<a.x?a.x+n:j;j=j+n>a.x+a.width?j-(j+n-a.x-a.width):j;h=h-m<a.y?a.y+m:h;h=h+m>a.y+a.height?h-(h+m-a.y-a.height):h;if(w.chart.animate&&!w.chart.resizing){g.show(true);w.onAnimate(g,{to:{x:j,y:h}})}else{g.setAttributes({x:j,y:h},true);if(s){w.animation.on("afteranimate",function(){g.show(true)})}else{g.show(true)}}},onPlaceCallout:function(m,s,L,I,H,d,k){var O=this,t=O.chart,F=t.surface,J=t.resizing,N=O.callouts,u=O.items,z=I==0?false:u[I-1].point,B=I==u.length-1?false:u[I+1].point,c=L.point,C,g,P,M,o,q,b=m&&m.label?m.label.getBBox():{width:0,height:0},K=30,E=10,D=3,h,e,j,A,w,G=O.clipRect,n,l;if(!b.width||!b.height){return}if(!z){z=c}if(!B){B=c}M=(B[1]-z[1])/(B[0]-z[0]);o=(c[1]-z[1])/(c[0]-z[0]);q=(B[1]-c[1])/(B[0]-c[0]);g=Math.sqrt(1+M*M);C=[1/g,M/g];P=[-C[1],C[0]];if(o>0&&q<0&&P[1]<0||o<0&&q>0&&P[1]>0){P[0]*=-1;P[1]*=-1}else{if(Math.abs(o)<Math.abs(q)&&P[0]<0||Math.abs(o)>Math.abs(q)&&P[0]>0){P[0]*=-1;P[1]*=-1}}n=c[0]+P[0]*K;l=c[1]+P[1]*K;h=n+(P[0]>0?0:-(b.width+2*D));e=l-b.height/2-D;j=b.width+2*D;A=b.height+2*D;if(h<G[0]||h+j>G[0]+G[2]){P[0]*=-1}if(e<G[1]||e+A>G[1]+G[3]){P[1]*=-1}n=c[0]+P[0]*K;l=c[1]+P[1]*K;h=n+(P[0]>0?0:-(b.width+2*D));e=l-b.height/2-D;j=b.width+2*D;A=b.height+2*D;m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);m.box.setAttributes({x:h,y:e,width:j,height:A},true);m.label.setAttributes({x:n+(P[0]>0?D:-(b.width+D)),y:l},true);for(w in m){m[w].show(true)}},isItemInPoint:function(j,h,m,c){var g=this,b=m.pointsUp,d=m.pointsDown,q=Math.abs,o=false,l=false,e=Infinity,a,n,k;for(a=0,n=b.length;a<n;a++){k=[b[a][0],b[a][1]];o=false;l=a==n-1;if(e>q(j-k[0])){e=q(j-k[0]);o=true;if(l){++a}}if(!o||o&&l){k=b[a-1];if(h>=k[1]&&(!d.length||h<=d[a-1][1])){m.storeIndex=a-1;m.storeField=g.yField[c];m.storeItem=g.chart.getChartStore().getAt(a-1);m._points=d.length?[k,d[a-1]]:[k];return true}else{break}}}return false},highlightSeries:function(){var a,c,b;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}a.__highlighted=true;a.__prevOpacity=a.__prevOpacity||a.attr.opacity||1;a.__prevFill=a.__prevFill||a.attr.fill;a.__prevLineWidth=a.__prevLineWidth||a.attr.lineWidth;b=Ext.draw.Color.fromString(a.__prevFill);c={lineWidth:(a.__prevLineWidth||0)+2};if(b){c.fill=b.getLighter(0.2).toString()}else{c.opacity=Math.max(a.__prevOpacity-0.3,0)}if(this.chart.animate){a.__highlightAnim=new Ext.fx.Anim(Ext.apply({target:a,to:c},this.chart.animate))}else{a.setAttributes(c,true)}}},unHighlightSeries:function(){var a;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}if(a.__highlighted){a.__highlighted=false;a.__highlightAnim=new Ext.fx.Anim({target:a,to:{fill:a.__prevFill,opacity:a.__prevOpacity,lineWidth:a.__prevLineWidth}})}}},highlightItem:function(c){var b=this,a,d;if(!c){this.highlightSeries();return}a=c._points;d=a.length==2?["M",a[0][0],a[0][1],"L",a[1][0],a[1][1]]:["M",a[0][0],a[0][1],"L",a[0][0],b.bbox.y+b.bbox.height];b.highlightSprite.setAttributes({path:d,hidden:false},true)},unHighlightItem:function(a){if(!a){this.unHighlightSeries()}if(this.highlightSprite){this.highlightSprite.hide(true)}},hideAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=true;b.areas[a].hide(true);b.redraw()},showAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=false;b.areas[a].show(true);b.redraw()},redraw:function(){var a=this,b;b=a.chart.legend.rebuild;a.chart.legend.rebuild=false;a.chart.redraw();a.chart.legend.rebuild=b},hide:function(){if(this.areas){var h=this,b=h.areas,d,c,a,g,e;if(b&&b.length){for(d=0,g=b.length;d<g;++d){if(b[d]){b[d].hide(true)}}h.hideLabels()}}},getLegendColor:function(a){var b=this;a+=b.themeIdx;return b.colorArrayStyle[a%b.colorArrayStyle.length]}});Ext.define("Ext.chart.series.Bar",{extend:Ext.chart.series.Cartesian,alternateClassName:["Ext.chart.BarSeries","Ext.chart.BarChart","Ext.chart.StackedBarChart"],type:"bar",alias:"series.bar",column:false,style:{},gutter:38.2,groupGutter:38.2,xPadding:0,yPadding:10,constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,g=e.chart.shadow,d,b;c.highlightCfg=Ext.Object.merge({lineWidth:3,stroke:"#55c",opacity:0.8,color:"#f00"},c.highlightCfg);Ext.apply(e,c,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:1.2}},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:0.9}},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:0.6}}]});e.group=a.getGroup(e.seriesId+"-bars");if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},getPadding:function(){var c=this,b=c.xPadding,a=c.yPadding,d={};if(Ext.isNumber(b)){d.left=b;d.right=b}else{if(Ext.isObject(b)){d.left=b.left;d.right=b.right}else{d.left=0;d.right=0}}d.width=d.left+d.right;if(Ext.isNumber(a)){d.bottom=a;d.top=a}else{if(Ext.isObject(a)){d.bottom=a.bottom;d.top=a.top}else{d.bottom=0;d.top=0}}d.height=d.bottom+d.top;return d},getBarGirth:function(){var d=this,a=d.chart.getChartStore(),b=d.column,c=a.getCount(),h=d.gutter/100,g,e;if(d.style&&d.style.width){return d.style.width}g=d.getPadding();e=b?"width":"height";return(d.chart.chartBBox[e]-g[e])/(c*(h+1)-h)},getGutters:function(){var c=this,b=c.column,e=c.getPadding(),d=c.getBarGirth()/2,g=Math.ceil((b?e.left:e.bottom)+d),a=Math.ceil((b?e.right:e.top)+d);return{lower:g,upper:a,verticalAxis:!b}},getBounds:function(){var o=this,V=o.chart,b=V.getChartStore(),U=b.data.items,T,B,H,z=[].concat(o.yField),l,p=z.length,m=p,c=o.groupGutter/100,M=o.column,R=o.getPadding(),P=o.stacked,x=o.getBarGirth(),C=M?"width":"height",y=Math,F=y.min,k=y.max,n=y.abs,K=o.getAxesForXAndYFields(),E=K.yAxis,L,u,O,h,t,S,G,e,q,J,s,w,I,D,a,A,N,Q,d,g;o.setBBox(true);q=o.bbox;if(o.__excludes){for(Q=0,A=o.__excludes.length;Q<A;Q++){if(o.__excludes[Q]){m--}}}w=V.axes.get(E);if(w){S=w.applyData();J=S.from;s=S.to}if(o.yField&&!Ext.isNumber(J)){I=o.getMinMaxYValues();J=I[0];s=I[1]}if(!Ext.isNumber(J)){J=0}if(!Ext.isNumber(s)){s=0}D=(M?q.height-R.height:q.width-R.width)/(s-J);G=x;e=x/((P?1:m)*(c+1)-c);if(C in o.style){e=F(e,o.style[C]);G=e*((P?1:m)*(c+1)-c)}a=M?q.y+q.height-R.bottom:q.x+R.left;if(P){A=[[],[]];for(T=0,B=U.length;T<B;T++){H=U[T];A[0][T]=A[0][T]||0;A[1][T]=A[1][T]||0;for(Q=0;Q<p;Q++){if(o.__excludes&&o.__excludes[Q]){continue}N=H.get(z[Q]);A[+(N>0)][T]+=n(N)}}A[+(s>0)].push(n(s));A[+(J>0)].push(n(J));g=k.apply(y,A[0]);d=k.apply(y,A[1]);D=(M?q.height-R.height:q.width-R.width)/(d+g);a=a+g*D*(M?-1:1)}else{if(J/s<0){a=a-J*D*(M?-1:1)}}if(o.boundColumn){w=V.axes.get(K.xAxis);if(w){S=w.applyData();L=S.from;u=S.to}if(o.xField&&!Ext.isNumber(L)){I=o.getMinMaxYValues();L=I[0];u=I[1]}if(!Ext.isNumber(L)){L=0}if(!Ext.isNumber(u)){u=0}t=o.getGutters();O=(q.width-(t.lower+t.upper))/(u-L||1);h=q.x+t.lower;l=[];for(T=0,B=U.length;T<B;T++){H=U[T];N=H.get(o.xField);l[T]=h+(N-L)*O-e/2}}return{bars:z,barsLoc:l,bbox:q,shrunkBarWidth:G,barsLen:p,groupBarsLen:m,barWidth:x,groupBarWidth:e,scale:D,zero:a,padding:R,signed:J/s<0,minY:J,maxY:s}},getPaths:function(){var w=this,ab=w.chart,b=ab.getChartStore(),aa=b.data.items,Y,G,N,I=w.bounds=w.getBounds(),A=w.items=[],R=Ext.isArray(w.yField)?w.yField:[w.yField],m=w.gutter/100,c=w.groupGutter/100,V=ab.animate,P=w.column,y=w.group,n=ab.shadow,T=w.shadowGroups,S=w.shadowAttributes,q=T.length,z=I.bbox,C=I.barWidth,M=I.shrunkBarWidth,X=w.getPadding(),U=w.stacked,x=I.barsLen,Q=w.colorArrayStyle,k=Q&&Q.length||0,h=w.themeIdx,D=Math,o=D.max,K=D.min,u=D.abs,W,ac,e,L,F,a,l,t,s,p,g,ad,E,d,H,B,O,J,Z;for(Y=0,G=aa.length;Y<G;Y++){N=aa[Y];a=I.zero;l=I.zero;L=0;F=0;ad=E=0;t=false;for(W=0,g=0;W<x;W++){if(w.__excludes&&w.__excludes[W]){continue}ac=N.get(I.bars[W]);if(ac>=0){ad+=ac}else{E+=ac}e=Math.round((ac-o(I.minY,0))*I.scale);Z=h+(x>1?W:0);s={fill:Q[Z%k]};if(P){Ext.apply(s,{height:e,width:o(I.groupBarWidth,0),x:w.boundColumn?I.barsLoc[Y]:z.x+X.left+(C-M)*0.5+Y*C*(1+m)+g*I.groupBarWidth*(1+c)*!U,y:a-e})}else{O=G-1-Y;Ext.apply(s,{height:o(I.groupBarWidth,0),width:e+(a==I.zero),x:a+(a!=I.zero),y:z.y+X.top+(C-M)*0.5+O*C*(1+m)+g*I.groupBarWidth*(1+c)*!U+1})}if(e<0){if(P){s.y=l;s.height=u(e)}else{s.x=l+e;s.width=u(e)}}if(U){if(e<0){l+=e*(P?-1:1)}else{a+=e*(P?-1:1)}L+=u(e);if(e<0){F+=u(e)}}s.x=Math.floor(s.x)+1;J=Math.floor(s.y);if(Ext.isIE8m&&s.y>J){J--}s.y=J;s.width=Math.floor(s.width);s.height=Math.floor(s.height);A.push({series:w,yField:R[W],storeItem:N,value:[N.get(w.xField),ac],attr:s,point:P?[s.x+s.width/2,ac>=0?s.y:s.y+s.height]:[ac>=0?s.x+s.width:s.x,s.y+s.height/2]});if(V&&ab.resizing){p=P?{x:s.x,y:I.zero,width:s.width,height:0}:{x:I.zero,y:s.y,width:0,height:s.height};if(n&&(U&&!t||!U)){t=true;for(d=0;d<q;d++){H=T[d].getAt(U?Y:Y*x+W);if(H){H.setAttributes(p,true)}}}B=y.getAt(Y*x+W);if(B){B.setAttributes(p,true)}}g++}if(U&&A.length){A[Y*g].totalDim=L;A[Y*g].totalNegDim=F;A[Y*g].totalPositiveValues=ad;A[Y*g].totalNegativeValues=E}}if(U&&g==0){for(Y=0,G=aa.length;Y<G;Y++){for(d=0;d<q;d++){H=T[d].getAt(Y);if(H){H.hide(true)}}}}},renderShadows:function(w,x,A,l){var B=this,p=B.chart,t=p.surface,g=p.animate,z=B.stacked,a=B.shadowGroups,y=B.shadowAttributes,o=a.length,h=p.getChartStore(),d=B.column,s=B.items,b=[],m=l.zero,e,q,k,C,n,u,c;if(z&&w%l.groupBarsLen===0||!z){u=w/l.groupBarsLen;for(e=0;e<o;e++){q=Ext.apply({},y[e]);k=a[e].getAt(z?u:w);Ext.copyTo(q,x,"x,y,width,height");if(!k){k=t.add(Ext.apply({type:"rect",group:a[e]},Ext.apply({},A,q)))}if(z){C=s[w].totalDim;n=s[w].totalNegDim;if(d){q.y=m+n-C-1;q.height=C}else{q.x=m-n;q.width=C}}c=B.renderer(k,h.getAt(u),q,w,h);c.hidden=!!x.hidden;if(g){B.onAnimate(k,{to:c})}else{k.setAttributes(c,true)}b.push(k)}}return b},drawSeries:function(){var I=this,t=I.chart,m=t.getChartStore(),z=t.surface,k=t.animate,F=I.stacked,d=I.column,G=t.axes,A=I.getAxesForXAndYFields(),y=A.xAxis,n=A.yAxis,b=t.shadow,a=I.shadowGroups,s=a.length,p=I.group,g=I.seriesStyle,u,q,D,C,H,w,c,e,h,o,l,E,x,B;if(!m||!m.getCount()||I.seriesIsHidden){I.hide();I.items=[];return}l=Ext.apply({},this.style,g);delete l.fill;delete l.x;delete l.y;delete l.width;delete l.height;I.unHighlightItem();I.cleanHighlights();I.boundColumn=y&&Ext.Array.contains(I.axis,y)&&G.get(y)&&G.get(y).isNumericAxis;I.getPaths();o=I.bounds;u=I.items;H=d?{y:o.zero,height:0}:{x:o.zero,width:0};q=u.length;for(D=0;D<q;D++){w=p.getAt(D);E=u[D].attr;if(b){u[D].shadows=I.renderShadows(D,E,H,o)}if(!w){x=Ext.apply({},H,E);x=Ext.apply(x,l||{});w=z.add(Ext.apply({},{type:"rect",group:p},x))}if(k){c=I.renderer(w,m.getAt(D),E,D,m);w._to=c;B=I.onAnimate(w,{to:Ext.apply(c,l)});if(b&&F&&D%o.barsLen===0){C=D/o.barsLen;for(e=0;e<s;e++){B.on("afteranimate",function(){this.show(true)},a[e].getAt(C))}}}else{c=I.renderer(w,m.getAt(D),Ext.apply(E,{hidden:false}),D,m);w.setAttributes(Ext.apply(c,l),true)}u[D].sprite=w}q=p.getCount();for(C=D;C<q;C++){p.getAt(C).hide(true)}if(I.stacked){D=m.getCount()}if(b){for(e=0;e<s;e++){h=a[e];q=h.getCount();for(C=D;C<q;C++){h.getAt(C).hide(true)}}}I.renderLabels()},onCreateLabel:function(e,l,d,g){var h=this,a=h.chart.surface,k=h.labelsGroup,b=h.label,c=Ext.apply({},b,h.seriesLabelStyle||{}),j;return a.add(Ext.apply({type:"text",group:k},c||{}))},onPlaceLabel:function(L,S,u,O,q,N,A){var m=this,n=m.bounds,d=n.groupBarWidth,K=m.column,Q=m.chart,z=Q.chartBBox,F=Q.resizing,p=u.value[0],T=u.value[1],l=u.attr,D=m.label,M=m.stacked,h=D.stackedDisplay,P=D.orientation=="vertical",j=[].concat(D.field),w=D.renderer,t,g,a,c,b=n.zero,s="insideStart",R="insideEnd",k="outside",I="over",o="under",J=4,H=2,e=n.signed,G,E,C;if(q==s||q==R||q==k){if(M&&q==k){L.hide(true);return}L.setAttributes({style:undefined});t=Ext.isNumber(A)?w(S.get(j[A]),L,S,u,O,q,N,A):"";L.setAttributes({text:t});g=m.getLabelSize(t,L.attr.style);a=g.width;c=g.height;if(K){if(!a||!c||M&&l.height<c){L.hide(true);return}G=l.x+(P?d/2:(d-a)/2);if(q==k){var B=T>=0?l.y-z.y:z.y+z.height-l.y-l.height;if(B<c+H){q=R}}if(!M&&q!=k){if(c+H>l.height){q=k}}if(!E){E=l.y;if(T>=0){switch(q){case s:E+=l.height+(P?-H:-c/2);break;case R:E+=P?c+J:c/2;break;case k:E+=P?-H:-c/2;break}}else{switch(q){case s:E+=P?c+H:c/2;break;case R:E+=P?l.height-H:l.height-c/2;break;case k:E+=P?l.height+c+H:l.height+c/2;break}}}}else{if(!a||!c||M&&!l.width){L.hide(true);return}E=l.y+(P?(d+c)/2:d/2);if(q==k){var B=T>=0?z.x+z.width-l.x-l.width:l.x-z.x;if(B<a+J){q=R}}if(q!=k&&!P){if(a+J>l.width){if(M){if(c>l.width){L.hide(true);return}G=l.x+l.width/2;E=l.y+l.height-(l.height-a)/2;P=true}else{q=k}}}if(!G){G=l.x;if(T>=0){switch(q){case s:G+=P?a/2:J;break;case R:G+=l.width+(P?-a/2:-a-J);break;case k:G+=l.width+(P?a/2:J);break}}else{switch(q){case s:G+=l.width+(P?-a/2:-a-J);break;case R:G+=P?a/2:J;break;case k:G+=P?-a/2:-a-J;break}}}}}else{if(q==I||q==o){if(M&&h){t=L.attr.text;L.setAttributes({style:Ext.applyIf(L.attr&&L.attr.style||{},{"font-weight":"bold","font-size":"14px"})});g=m.getLabelSize(t,L.attr.style);a=g.width;c=g.height;switch(q){case I:if(K){G=l.x+(P?d/2:(d-a)/2);E=b-(u.totalDim-u.totalNegDim)-c/2-H}else{G=b+(u.totalDim-u.totalNegDim)+J;E=l.y+(P?(d+c)/2:d/2)}break;case o:if(K){G=l.x+(P?d/2:(d-a)/2);E=b+u.totalNegDim+c/2}else{G=b-u.totalNegDim-a-J;E=l.y+(P?(d+c)/2:d/2)}break}}}}if(G==undefined||E==undefined){L.hide(true);return}L.isOutside=q==k;L.setAttributes({text:t});C={x:G,y:E};if(P){C.rotate={x:G,y:E,degrees:270}}if(N&&F){if(K){G=l.x+l.width/2;E=b}else{G=b;E=l.y+l.height/2}L.setAttributes({x:G,y:E},true);if(P){L.setAttributes({rotate:{x:G,y:E,degrees:270}},true)}}if(N){m.onAnimate(L,{to:C})}else{L.setAttributes(Ext.apply(C,{hidden:false}),true)}},getLabelSize:function(j,g){var m=this.testerLabel,a=this.label,d=Ext.apply({},a,g,this.seriesLabelStyle||{}),b=a.orientation==="vertical",l,k,e,c;if(!m){m=this.testerLabel=this.chart.surface.add(Ext.apply({type:"text",opacity:0},d))}m.setAttributes({style:g,text:j},true);l=m.getBBox();k=l.width;e=l.height;return{width:b?e:k,height:b?k:e}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(a,d,b){var c=b.sprite.getBBox();return c.x<=a&&c.y<=d&&c.x+c.width>=a&&c.y+c.height>=d},hideAll:function(a){var e=this.chart.axes,c=e.items,d=c.length,b=0;a=(isNaN(this._index)?a:this._index)||0;if(!this.__excludes){this.__excludes=[]}this.__excludes[a]=true;this.drawSeries();for(b;b<d;b++){c[b].drawAxis()}},showAll:function(a){var e=this.chart.axes,c=e.items,d=c.length,b=0;a=(isNaN(this._index)?a:this._index)||0;if(!this.__excludes){this.__excludes=[]}this.__excludes[a]=false;this.drawSeries();for(b;b<d;b++){c[b].drawAxis()}},getLegendColor:function(a){var c=this,b=c.colorArrayStyle.length;if(c.style&&c.style.fill){return c.style.fill}else{return c.colorArrayStyle[a%b]}},highlightItem:function(a){this.callParent(arguments);this.renderLabels()},unHighlightItem:function(){this.callParent(arguments);this.renderLabels()},cleanHighlights:function(){this.callParent(arguments);this.renderLabels()}});Ext.define("Ext.chart.series.Column",{alternateClassName:["Ext.chart.ColumnSeries","Ext.chart.ColumnChart","Ext.chart.StackedColumnChart"],extend:Ext.chart.series.Bar,type:"column",alias:"series.column",column:true,boundColumn:false,xPadding:10,yPadding:0});Ext.define("Ext.chart.series.Gauge",{extend:Ext.chart.series.Series,type:"gauge",alias:"series.gauge",rad:Math.PI/180,highlightDuration:150,angleField:false,needle:false,donut:false,showInLegend:false,style:{},constructor:function(b){this.callParent(arguments);var h=this,g=h.chart,a=g.surface,j=g.store,k=g.shadow,d,c,e;Ext.apply(h,b,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":1,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:2}},{"stroke-width":4,"stroke-opacity":1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:1.5}},{"stroke-width":2,"stroke-opacity":1,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:1}}]});h.group=a.getGroup(h.seriesId);if(k){for(d=0,c=h.shadowAttributes.length;d<c;d++){h.shadowGroups.push(a.getGroup(h.seriesId+"-shadows"+d))}}a.customAttributes.segment=function(l){return h.getSegment(l)}},initialize:function(){var d=this,a=d.chart.getChartStore(),e=a.data.items,b=d.label,c=e.length;d.yField=[];if(b&&b.field&&c>0){d.yField.push(e[0].get(b.field))}},getSegment:function(b){var E=this,D=E.rad,d=Math.cos,a=Math.sin,o=Math.abs,l=E.centerX,j=E.centerY,A=0,z=0,w=0,t=0,h=0,g=0,e=0,c=0,B=0.01,n=b.endRho-b.startRho,s=b.startAngle,q=b.endAngle,k=(s+q)/2*D,m=b.margin||0,u=o(q-s)>180,F=Math.min(s,q)*D,C=Math.max(s,q)*D,p=false;l+=m*d(k);j+=m*a(k);A=l+b.startRho*d(F);h=j+b.startRho*a(F);z=l+b.endRho*d(F);g=j+b.endRho*a(F);w=l+b.startRho*d(C);e=j+b.startRho*a(C);t=l+b.endRho*d(C);c=j+b.endRho*a(C);if(o(A-w)<=B&&o(h-e)<=B){p=true}if(p){return{path:[["M",A,h],["L",z,g],["A",b.endRho,b.endRho,0,+u,1,t,c],["Z"]]}}else{return{path:[["M",A,h],["L",z,g],["A",b.endRho,b.endRho,0,+u,1,t,c],["L",w,e],["A",b.startRho,b.startRho,0,+u,0,A,h],["Z"]]}}},calcMiddle:function(q){var l=this,m=l.rad,p=q.slice,o=l.centerX,n=l.centerY,k=p.startAngle,e=p.endAngle,j=Math.max("rho" in p?p.rho:l.radius,l.label.minMargin),h=+l.donut,b=Math.min(k,e)*m,a=Math.max(k,e)*m,d=-(b+(a-b)/2),g=o+(q.endRho+q.startRho)/2*Math.cos(d),c=n-(q.endRho+q.startRho)/2*Math.sin(d);q.middle={x:g,y:c}},drawSeries:function(){var y=this,W=y.chart,b=W.getChartStore(),C=y.group,S=y.chart.animate,F=y.chart.axes.get(0),G=F&&F.minimum||y.minimum||0,K=F&&F.maximum||y.maximum||0,n=y.angleField||y.field||y.xField,M=W.surface,J=W.chartBBox,h=y.rad,c=+y.donut,X={},D=[],m=y.seriesStyle,a=y.seriesLabelStyle,g=y.colorArrayStyle,B=g&&g.length||0,k=Math.cos,t=Math.sin,u,e,d,x,s,E,O,H,I,L,U,T,l,V,z,o,Q,R,q,A,w,P,N;Ext.apply(m,y.style||{});y.setBBox();A=y.bbox;if(y.colorSet){g=y.colorSet;B=g.length}if(!b||!b.getCount()||y.seriesIsHidden){y.hide();y.items=[];return}e=y.centerX=J.x+J.width/2;d=y.centerY=J.y+J.height;y.radius=Math.min(e-J.x,d-J.y);y.slices=s=[];y.items=D=[];if(!y.value){L=b.getAt(0);y.value=L.get(n)}O=y.value;if(y.needle){P={series:y,value:O,startAngle:-180,endAngle:0,rho:y.radius};w=-180*(1-(O-G)/(K-G));s.push(P)}else{w=-180*(1-(O-G)/(K-G));P={series:y,value:O,startAngle:-180,endAngle:w,rho:y.radius};N={series:y,value:y.maximum-O,startAngle:w,endAngle:0,rho:y.radius};s.push(P,N)}for(U=0,I=s.length;U<I;U++){x=s[U];E=C.getAt(U);u=Ext.apply({segment:{startAngle:x.startAngle,endAngle:x.endAngle,margin:0,rho:x.rho,startRho:x.rho*+c/100,endRho:x.rho}},Ext.apply(m,g&&{fill:g[U%B]}||{}));H=Ext.apply({},u.segment,{slice:x,series:y,storeItem:L,index:U});D[U]=H;if(!E){q=Ext.apply({type:"path",group:C},Ext.apply(m,g&&{fill:g[U%B]}||{}));E=M.add(Ext.apply(q,u))}x.sprite=x.sprite||[];H.sprite=E;x.sprite.push(E);if(S){u=y.renderer(E,L,u,U,b);E._to=u;y.onAnimate(E,{to:u})}else{u=y.renderer(E,L,Ext.apply(u,{hidden:false}),U,b);E.setAttributes(u,true)}}if(y.needle){w=w*Math.PI/180;if(!y.needleSprite){y.needleSprite=y.chart.surface.add({type:"path",path:["M",e+y.radius*+c/100*k(w),d+-Math.abs(y.radius*+c/100*t(w)),"L",e+y.radius*k(w),d+-Math.abs(y.radius*t(w))],"stroke-width":4,stroke:"#222"})}else{if(S){y.onAnimate(y.needleSprite,{to:{path:["M",e+y.radius*+c/100*k(w),d+-Math.abs(y.radius*+c/100*t(w)),"L",e+y.radius*k(w),d+-Math.abs(y.radius*t(w))]}})}else{y.needleSprite.setAttributes({type:"path",path:["M",e+y.radius*+c/100*k(w),d+-Math.abs(y.radius*+c/100*t(w)),"L",e+y.radius*k(w),d+-Math.abs(y.radius*t(w))]})}}y.needleSprite.setAttributes({hidden:false},true)}delete y.value},setValue:function(a){this.value=a;this.drawSeries()},onCreateLabel:function(c,b,a,d){},onPlaceLabel:function(c,g,e,d,h,a,b){},onPlaceCallout:function(){},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(l,j,n,e){var h=this,d=h.centerX,c=h.centerY,p=Math.abs,o=p(l-d),m=p(j-c),g=n.startAngle,a=n.endAngle,k=Math.sqrt(o*o+m*m),b=Math.atan2(j-c,l-d)/h.rad;return e===0&&b>=g&&b<a&&k>=n.startRho&&k<=n.endRho},getLegendColor:function(b){var a=this.colorSet||this.colorArrayStyle;return a[b%a.length]}});Ext.define("Ext.chart.series.Line",{extend:Ext.chart.series.Cartesian,alternateClassName:["Ext.chart.LineSeries","Ext.chart.LineChart"],type:"line",alias:"series.line",selectionTolerance:20,showMarkers:true,markerConfig:{},style:{},smooth:false,defaultSmoothness:3,fill:false,constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,g=e.chart.shadow,d,b;c.highlightCfg=Ext.Object.merge({"stroke-width":3},c.highlightCfg);Ext.apply(e,c,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}}]});e.group=a.getGroup(e.seriesId);if(e.showMarkers){e.markerGroup=a.getGroup(e.seriesId+"-markers")}if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},shrink:function(b,k,l){var h=b.length,j=Math.floor(h/l),g=1,d=0,a=0,e=[+b[0]],c=[+k[0]];for(;g<h;++g){d+=+b[g]||0;a+=+k[g]||0;if(g%j==0){e.push(d/j);c.push(a/j);d=0;a=0}}return{x:e,y:c}},drawSeries:function(){var ar=this,aE=ar.chart,Y=aE.axes,az=aE.getChartStore(),D=az.data.items,aw,ab=az.getCount(),B=ar.chart.surface,ay={},X=ar.group,Q=ar.showMarkers,aK=ar.markerGroup,J=aE.shadow,I=ar.shadowGroups,ae=ar.shadowAttributes,U=ar.smooth,t=I.length,aC=["M"],Z=["M"],d=["M"],b=["M"],P=aE.markerIndex,aq=[].concat(ar.axis),ap,aF=[],ao={},ai=[],C={},O=false,W=[],aJ=Ext.apply({},ar.markerStyle),ah=ar.seriesStyle,A=ar.colorArrayStyle,V=A&&A.length||0,R=Ext.isNumber,aG=ar.seriesIdx,k=ar.getAxesForXAndYFields(),n=k.xAxis,aI=k.yAxis,ag=n?Y.get(n).type:"",e=aI?Y.get(aI).type:"",ak,l,aj,al,G,c,am,N,M,h,g,z,u,ad,T,S,aD,o,L,K,aL,p,s,H,a,af,an,F,aB,E,aA,q,aH,ax,av,aa,m,w,at,au,ac;if(ar.fireEvent("beforedraw",ar)===false){return}if(!ab||ar.seriesIsHidden){ar.hide();ar.items=[];if(ar.line){ar.line.hide(true);if(ar.line.shadows){ak=ar.line.shadows;for(S=0,t=ak.length;S<t;S++){l=ak[S];l.hide(true)}}if(ar.fillPath){ar.fillPath.hide(true)}}ar.line=null;ar.fillPath=null;return}ax=Ext.apply(aJ||{},ar.markerConfig,{fill:ar.seriesStyle.fill||A[ar.themeIdx%A.length]});aa=ax.type;delete ax.type;av=ah;if(!av["stroke-width"]){av["stroke-width"]=0.5}w="opacity" in av?av.opacity:1;ac="opacity" in av?av.opacity:0.3;at="lineOpacity" in av?av.lineOpacity:w;au="fillOpacity" in av?av.fillOpacity:ac;if(P&&aK&&aK.getCount()){for(T=0;T<P;T++){K=aK.getAt(T);aK.remove(K);aK.add(K);aL=aK.getAt(aK.getCount()-2);K.setAttributes({x:0,y:0,translate:{x:aL.attr.translation.x,y:aL.attr.translation.y}},true)}}ar.unHighlightItem();ar.cleanHighlights();ar.setBBox();ay=ar.bbox;ar.clipRect=[ay.x,ay.y,ay.width,ay.height];if(o=Y.get(n)){L=o.applyData();F=L.from;aB=L.to}if(o=Y.get(aI)){L=o.applyData();E=L.from;aA=L.to}if(ar.xField&&!Ext.isNumber(F)){o=ar.getMinMaxXValues();F=o[0];aB=o[1]}if(ar.yField&&!Ext.isNumber(E)){o=ar.getMinMaxYValues();E=o[0];aA=o[1]}if(isNaN(F)){F=0;af=ay.width/(ab-1||1)}else{af=ay.width/(aB-F||ab-1||1)}if(isNaN(E)){E=0;an=ay.height/(ab-1||1)}else{an=ay.height/(aA-E||ab-1||1)}for(T=0,aD=D.length;T<aD;T++){aw=D[T];s=aw.get(ar.xField);if(ag=="Time"&&typeof s=="string"){s=Date.parse(s)}if(typeof s=="string"||typeof s=="object"&&!Ext.isDate(s)||n&&Y.get(n)&&Y.get(n).type=="Category"){if(s in ao){s=ao[s]}else{s=ao[s]=T}}H=aw.get(ar.yField);if(e=="Time"&&typeof H=="string"){H=Date.parse(H)}if(typeof H=="undefined"||typeof H=="string"&&!H){continue}if(typeof H=="string"||typeof H=="object"&&!Ext.isDate(H)||aI&&Y.get(aI)&&Y.get(aI).type=="Category"){H=T}W.push(T);aF.push(s);ai.push(H)}aD=aF.length;if(aD>ay.width){a=ar.shrink(aF,ai,ay.width);aF=a.x;ai=a.y}ar.items=[];m=0;aD=aF.length;for(T=0;T<aD;T++){s=aF[T];H=ai[T];if(H===false){if(Z.length==1){Z=[]}O=true;ar.items.push(false);continue}else{N=(ay.x+(s-F)*af).toFixed(2);M=(ay.y+ay.height-(H-E)*an).toFixed(2);if(O){O=false;Z.push("M")}Z=Z.concat([N,M])}if(typeof u=="undefined"&&typeof M!="undefined"){u=M;z=N}if(!ar.line||aE.resizing){aC=aC.concat([N,ay.y+ay.height/2])}if(aE.animate&&aE.resizing&&ar.line){ar.line.setAttributes({path:aC,opacity:at},true);if(ar.fillPath){ar.fillPath.setAttributes({path:aC,opacity:au},true)}if(ar.line.shadows){ak=ar.line.shadows;for(S=0,t=ak.length;S<t;S++){l=ak[S];l.setAttributes({path:aC},true)}}}if(Q){K=aK.getAt(m++);if(!K){K=Ext.chart.Shape[aa](B,Ext.apply({group:[X,aK],x:0,y:0,translate:{x:+(h||N),y:g||ay.y+ay.height/2},value:'"'+s+", "+H+'"',zIndex:4000},ax));K._to={translate:{x:+N,y:+M}}}else{K.setAttributes({value:'"'+s+", "+H+'"',x:0,y:0,hidden:false},true);K._to={translate:{x:+N,y:+M}}}}ar.items.push({series:ar,value:[s,H],point:[N,M],sprite:K,storeItem:az.getAt(W[T])});h=N;g=M}if(Z.length<=1){return}if(ar.smooth){b=Ext.draw.Draw.smooth(Z,R(U)?U:ar.defaultSmoothness)}d=U?b:Z;if(aE.markerIndex&&ar.previousPath){al=ar.previousPath;if(!U){Ext.Array.erase(al,1,2)}}else{al=Z}if(!ar.line){ar.line=B.add(Ext.apply({type:"path",group:X,path:aC,stroke:av.stroke||av.fill},av||{}));ar;ar.line.setAttributes({opacity:at},true);if(J){ar.line.setAttributes(Ext.apply({},ar.shadowOptions),true)}ar.line.setAttributes({fill:"none",zIndex:3000});if(!av.stroke&&V){ar.line.setAttributes({stroke:A[ar.themeIdx%V]},true)}if(J){ak=ar.line.shadows=[];for(aj=0;aj<t;aj++){ap=ae[aj];ap=Ext.apply({},ap,{path:aC});l=B.add(Ext.apply({},{type:"path",group:I[aj]},ap));ak.push(l)}}}if(ar.fill){c=d.concat([["L",N,ay.y+ay.height],["L",z,ay.y+ay.height],["L",z,u]]);if(!ar.fillPath){ar.fillPath=B.add({group:X,type:"path",fill:av.fill||A[ar.themeIdx%V],path:aC})}}ad=Q&&aK.getCount();if(aE.animate){G=ar.fill;q=ar.line;am=ar.renderer(q,false,{path:d},T,az);Ext.apply(am,av||{},{stroke:av.stroke||av.fill});delete am.fill;q.show(true);if(aE.markerIndex&&ar.previousPath){ar.animation=aH=ar.onAnimate(q,{to:am,from:{path:al}})}else{ar.animation=aH=ar.onAnimate(q,{to:am})}if(J){ak=q.shadows;for(S=0;S<t;S++){ak[S].show(true);if(aE.markerIndex&&ar.previousPath){ar.onAnimate(ak[S],{to:{path:d},from:{path:al}})}else{ar.onAnimate(ak[S],{to:{path:d}})}}}if(G){ar.fillPath.show(true);ar.onAnimate(ar.fillPath,{to:Ext.apply({},{path:c,fill:av.fill||A[ar.themeIdx%V],"stroke-width":0,opacity:au},av||{})})}if(Q){m=0;for(T=0;T<aD;T++){if(ar.items[T]){p=aK.getAt(m++);if(p){am=ar.renderer(p,az.getAt(T),p._to,T,az);ar.onAnimate(p,{to:Ext.applyIf(am,ax||{})});p.show(true)}}}for(;m<ad;m++){p=aK.getAt(m);p.hide(true)}}}else{am=ar.renderer(ar.line,false,{path:d,hidden:false},T,az);Ext.apply(am,av||{},{stroke:av.stroke||av.fill});delete am.fill;ar.line.setAttributes(am,true);ar.line.setAttributes({opacity:at},true);if(J){ak=ar.line.shadows;for(S=0;S<t;S++){ak[S].setAttributes({path:d,hidden:false},true)}}if(ar.fill){ar.fillPath.setAttributes({path:c,hidden:false,opacity:au},true)}if(Q){m=0;for(T=0;T<aD;T++){if(ar.items[T]){p=aK.getAt(m++);if(p){am=ar.renderer(p,az.getAt(T),p._to,T,az);p.setAttributes(Ext.apply(ax||{},am||{}),true);if(!p.attr.hidden){p.show(true)}}}}for(;m<ad;m++){p=aK.getAt(m);p.hide(true)}}}if(aE.markerIndex){if(ar.smooth){Ext.Array.erase(Z,1,2)}else{Ext.Array.splice(Z,1,0,Z[1],Z[2])}ar.previousPath=Z}ar.renderLabels();ar.renderCallouts();ar.fireEvent("draw",ar)},onCreateLabel:function(d,k,c,e){var g=this,h=g.labelsGroup,a=g.label,j=g.bbox,b=Ext.apply(a,g.seriesLabelStyle);return g.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:h,x:k.point[0],y:j.y+j.height/2},b||{}))},onPlaceLabel:function(h,l,u,q,p,d,g){var z=this,m=z.chart,t=m.resizing,w=z.label,s=w.renderer,b=w.field,a=z.bbox,k=u.point[0],j=u.point[1],c=u.sprite.attr.radius,e,o,n;h.setAttributes({text:s(l.get(b),h,l,u,q,p,d,g),hidden:true},true);if(p=="rotate"){h.setAttributes({"text-anchor":"start",rotation:{x:k,y:j,degrees:-45}},true);e=h.getBBox();o=e.width;n=e.height;k=k<a.x?a.x:k;k=k+o>a.x+a.width?k-(k+o-a.x-a.width):k;j=j-n<a.y?a.y+n:j}else{if(p=="under"||p=="over"){e=u.sprite.getBBox();e.width=e.width||c*2;e.height=e.height||c*2;j=j+(p=="over"?-e.height:e.height);e=h.getBBox();o=e.width/2;n=e.height/2;k=k-o<a.x?a.x+o:k;k=k+o>a.x+a.width?k-(k+o-a.x-a.width):k;j=j-n<a.y?a.y+n:j;j=j+n>a.y+a.height?j-(j+n-a.y-a.height):j}}if(z.chart.animate&&!z.chart.resizing){h.show(true);z.onAnimate(h,{to:{x:k,y:j}})}else{h.setAttributes({x:k,y:j},true);if(t&&z.animation){z.animation.on("afteranimate",function(){h.show(true)})}else{h.show(true)}}},highlightItem:function(){var b=this,a=b.line;b.callParent(arguments);if(a&&!b.highlighted){if(!("__strokeWidth" in a)){a.__strokeWidth=parseFloat(a.attr["stroke-width"])||0}if(a.__anim){a.__anim.paused=true}a.__anim=new Ext.fx.Anim({target:a,to:{"stroke-width":a.__strokeWidth+3}});b.highlighted=true}},unHighlightItem:function(){var c=this,a=c.line,b;c.callParent(arguments);if(a&&c.highlighted){b=a.__strokeWidth||parseFloat(a.attr["stroke-width"])||0;a.__anim=new Ext.fx.Anim({target:a,to:{"stroke-width":b}});c.highlighted=false}},onPlaceCallout:function(m,s,L,I,H,d,k){if(!H){return}var O=this,t=O.chart,F=t.surface,J=t.resizing,N=O.callouts,u=O.items,z=I==0?false:u[I-1].point,B=I==u.length-1?false:u[I+1].point,c=[+L.point[0],+L.point[1]],C,g,P,M,o,q,K=N.offsetFromViz||30,E=N.offsetToSide||10,D=N.offsetBox||3,h,e,j,A,w,G=O.clipRect,b={width:N.styles.width||10,height:N.styles.height||10},n,l;if(!z){z=c}if(!B){B=c}M=(B[1]-z[1])/(B[0]-z[0]);o=(c[1]-z[1])/(c[0]-z[0]);q=(B[1]-c[1])/(B[0]-c[0]);g=Math.sqrt(1+M*M);C=[1/g,M/g];P=[-C[1],C[0]];if(o>0&&q<0&&P[1]<0||o<0&&q>0&&P[1]>0){P[0]*=-1;P[1]*=-1}else{if(Math.abs(o)<Math.abs(q)&&P[0]<0||Math.abs(o)>Math.abs(q)&&P[0]>0){P[0]*=-1;P[1]*=-1}}n=c[0]+P[0]*K;l=c[1]+P[1]*K;h=n+(P[0]>0?0:-(b.width+2*D));e=l-b.height/2-D;j=b.width+2*D;A=b.height+2*D;if(h<G[0]||h+j>G[0]+G[2]){P[0]*=-1}if(e<G[1]||e+A>G[1]+G[3]){P[1]*=-1}n=c[0]+P[0]*K;l=c[1]+P[1]*K;h=n+(P[0]>0?0:-(b.width+2*D));e=l-b.height/2-D;j=b.width+2*D;A=b.height+2*D;if(t.animate){O.onAnimate(m.lines,{to:{path:["M",c[0],c[1],"L",n,l,"Z"]}});if(m.panel){m.panel.setPosition(h,e,true)}}else{m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);if(m.panel){m.panel.setPosition(h,e)}}for(w in m){m[w].show(true)}},isItemInPoint:function(j,g,C,q){var E=this,n=E.items,t=E.selectionTolerance,k=null,B,c,p,z,h,A,b,u,a,l,D,e,d,o,w,s,F=Math.sqrt,m=Math.abs;c=n[q];B=q&&n[q-1];if(q>=h){B=n[h-1]}p=B&&B.point;z=c&&c.point;A=B?p[0]:z[0]-t;b=B?p[1]:z[1];u=c?z[0]:p[0]+t;a=c?z[1]:p[1];e=F((j-A)*(j-A)+(g-b)*(g-b));d=F((j-u)*(j-u)+(g-a)*(g-a));o=Math.min(e,d);if(o<=t){return o==e?B:c}return false},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Cartesian.prototype.hideAll.call(e)}else{Ext.chart.series.Cartesian.prototype.showAll.call(e)}if(e.line){e.line.setAttributes({hidden:!a},true);if(e.line.shadows){for(b=0,c=e.line.shadows,d=c.length;b<d;b++){g=c[b];g.setAttributes({hidden:!a},true)}}}if(e.fillPath){e.fillPath.setAttributes({hidden:!a},true)}},hideAll:function(){this.toggleAll(false)},showAll:function(){this.toggleAll(true)}});Ext.define("Ext.chart.series.Pie",{alternateClassName:["Ext.chart.PieSeries","Ext.chart.PieChart"],extend:Ext.chart.series.Series,type:"pie",alias:"series.pie",accuracy:100000,rad:Math.PI*2/100000,highlightDuration:150,angleField:false,lengthField:false,donut:false,showInLegend:false,style:{},constructor:function(b){this.callParent(arguments);var h=this,g=h.chart,a=g.surface,j=g.store,k=g.shadow,d,c,e;b.highlightCfg=Ext.merge({segment:{margin:20}},b.highlightCfg);Ext.apply(h,b,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":1,stroke:"rgb(200, 200, 200)",translate:{x:1.2,y:2}},{"stroke-width":4,"stroke-opacity":1,stroke:"rgb(150, 150, 150)",translate:{x:0.9,y:1.5}},{"stroke-width":2,"stroke-opacity":1,stroke:"rgb(100, 100, 100)",translate:{x:0.6,y:1}}]});h.group=a.getGroup(h.seriesId);if(k){for(d=0,c=h.shadowAttributes.length;d<c;d++){h.shadowGroups.push(a.getGroup(h.seriesId+"-shadows"+d))}}a.customAttributes.segment=function(m){var l=h.getSegment(m);if(!l.path||l.path.length===0){l.path=["M",0,0]}return l};h.__excludes=h.__excludes||[]},onRedraw:function(){this.initialize()},initialize:function(){var d=this,a=d.chart.getChartStore(),e=a.data.items,b,c,g;d.yField=[];if(d.label.field){for(b=0,c=e.length;b<c;b++){g=e[b];d.yField.push(g.get(d.label.field))}}},getSegment:function(d){var M=this,L=M.rad,j=Math.cos,a=Math.sin,q=M.centerX,o=M.centerY,H=0,G=0,F=0,D=0,m=0,l=0,k=0,g=0,B=0,c=0,A=0,b=0,J=0.01,C=d.startAngle,z=d.endAngle,p=(C+z)/2*L,t=d.margin||0,N=Math.min(C,z)*L,K=Math.max(C,z)*L,w=j(N),h=a(N),u=j(K),e=a(K),n=j(p),I=a(p),E=0,s=0.7071067811865476;if(K-N<J){return{path:""}}if(t!==0){q+=t*n;o+=t*I}G=q+d.endRho*w;l=o+d.endRho*h;D=q+d.endRho*u;g=o+d.endRho*e;A=q+d.endRho*n;b=o+d.endRho*I;if(d.startRho!==0){H=q+d.startRho*w;m=o+d.startRho*h;F=q+d.startRho*u;k=o+d.startRho*e;B=q+d.startRho*n;c=o+d.startRho*I;return{path:[["M",G,l],["A",d.endRho,d.endRho,0,0,1,A,b],["L",A,b],["A",d.endRho,d.endRho,0,E,1,D,g],["L",D,g],["L",F,k],["A",d.startRho,d.startRho,0,E,0,B,c],["L",B,c],["A",d.startRho,d.startRho,0,0,0,H,m],["L",H,m],["Z"]]}}else{return{path:[["M",q,o],["L",G,l],["A",d.endRho,d.endRho,0,0,1,A,b],["L",A,b],["A",d.endRho,d.endRho,0,E,1,D,g],["L",D,g],["L",q,o],["Z"]]}}},calcMiddle:function(o){var j=this,k=j.rad,n=o.slice,m=j.centerX,l=j.centerY,h=n.startAngle,d=n.endAngle,g=+j.donut,c=-(h+d)*k/2,a=(o.endRho+o.startRho)/2,e=m+a*Math.cos(c),b=l-a*Math.sin(c);o.middle={x:e,y:b}},drawSeries:function(){var t=this,a=t.chart.getChartStore(),Y=a.data.items,K,z=t.group,U=t.chart.animate,k=t.angleField||t.field||t.xField,C=[].concat(t.lengthField),T=0,Z=t.chart,L=Z.surface,I=Z.chartBBox,g=Z.shadow,S=t.shadowGroups,R=t.shadowAttributes,ac=S.length,M=C.length,D=0,b=+t.donut,ab=[],A=[],w=0,O=0,u=0,h=t.seriesStyle,e=t.colorArrayStyle,y=e&&e.length||0,o,aa,E,J,G,d,c,q,l=0,s,n,B,N,F,ad,H,W,V,X,P,Q,m,x;Ext.apply(h,t.style||{});t.setBBox();x=t.bbox;if(t.colorSet){e=t.colorSet;y=e.length}if(!a||!a.getCount()||t.seriesIsHidden){t.hide();t.items=[];return}t.unHighlightItem();t.cleanHighlights();d=t.centerX=I.x+I.width/2;c=t.centerY=I.y+I.height/2;t.radius=Math.min(d-I.x,c-I.y);t.slices=n=[];t.items=A=[];for(W=0,H=Y.length;W<H;W++){K=Y[W];if(this.__excludes&&this.__excludes[W]){continue}w+=+K.get(k);if(C[0]){for(V=0,T=0;V<M;V++){T+=+K.get(C[V])}ab[W]=T;O=Math.max(O,T)}}w=w||1;for(W=0,H=Y.length;W<H;W++){K=Y[W];if(this.__excludes&&this.__excludes[W]){N=0}else{N=K.get(k);if(l==0){l=1}}if(l==1){l=2;t.firstAngle=u=t.accuracy*N/w/2;for(V=0;V<W;V++){n[V].startAngle=n[V].endAngle=t.firstAngle}}X=u-t.accuracy*N/w;s={series:t,value:N,startAngle:u,endAngle:X,storeItem:K};if(C[0]){ad=+ab[W];s.rho=Math.floor(t.radius/O*ad)}else{s.rho=t.radius}n[W]=s;(function(){u=X})()}if(g){for(W=0,H=n.length;W<H;W++){s=n[W];s.shadowAttrs=[];for(V=0,D=0,E=[];V<M;V++){B=z.getAt(W*M+V);q=C[V]?a.getAt(W).get(C[V])/ab[W]*s.rho:s.rho;o={segment:{startAngle:s.startAngle,endAngle:s.endAngle,margin:0,rho:s.rho,startRho:D+q*b/100,endRho:D+q},hidden:!s.value&&s.startAngle%t.accuracy==s.endAngle%t.accuracy};for(G=0,E=[];G<ac;G++){aa=R[G];J=S[G].getAt(W);if(!J){J=Z.surface.add(Ext.apply({},{type:"path",group:S[G],strokeLinejoin:"round"},o,aa))}aa=t.renderer(J,a.getAt(W),Ext.apply({},o,aa),W,a);if(U){t.onAnimate(J,{to:aa})}else{J.setAttributes(aa,true)}E.push(J)}s.shadowAttrs[V]=E}}}for(W=0,H=n.length;W<H;W++){s=n[W];for(V=0,D=0;V<M;V++){B=z.getAt(W*M+V);q=C[V]?a.getAt(W).get(C[V])/ab[W]*s.rho:s.rho;o=Ext.apply({segment:{startAngle:s.startAngle,endAngle:s.endAngle,margin:0,rho:s.rho,startRho:D+q*b/100,endRho:D+q},hidden:!s.value&&s.startAngle%t.accuracy==s.endAngle%t.accuracy},Ext.apply(h,e&&{fill:e[(M>1?V:W)%y]}||{}));F=Ext.apply({},o.segment,{slice:s,series:t,storeItem:s.storeItem,index:W});t.calcMiddle(F);if(g){F.shadows=s.shadowAttrs[V]}A[W]=F;if(!B){m=Ext.apply({type:"path",group:z,middle:F.middle},Ext.apply(h,e&&{fill:e[(M>1?V:W)%y]}||{}));B=L.add(Ext.apply(m,o))}s.sprite=s.sprite||[];F.sprite=B;s.sprite.push(B);s.point=[F.middle.x,F.middle.y];if(U){o=t.renderer(B,a.getAt(W),o,W,a);B._to=o;B._animating=true;t.onAnimate(B,{to:o,listeners:{afteranimate:{fn:function(){this._animating=false},scope:B}}})}else{o=t.renderer(B,a.getAt(W),Ext.apply(o,{hidden:false}),W,a);B.setAttributes(o,true)}D+=q}}H=z.getCount();for(W=0;W<H;W++){if(!n[W/M>>0]&&z.getAt(W)){z.getAt(W).hide(true)}}if(g){ac=S.length;for(G=0;G<H;G++){if(!n[G/M>>0]){for(V=0;V<ac;V++){if(S[V].getAt(G)){S[V].getAt(G).hide(true)}}}}}t.renderLabels();t.renderCallouts()},onCreateLabel:function(g,l,e,h){var j=this,k=j.labelsGroup,a=j.label,d=j.centerX,c=j.centerY,m=l.middle,b=Ext.apply(j.seriesLabelStyle||{},a||{});return j.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:k,x:m.x,y:m.y},b))},onPlaceLabel:function(k,p,B,u,t,e,g){var D=this,q=D.chart,A=q.resizing,C=D.label,w=C.renderer,c=C.field,m=D.centerX,l=D.centerY,E=B.middle,b={x:E.x,y:E.y},o=E.x-m,n=E.y-l,s={},d=1,j=Math.atan2(n,o||1),z=j*180/Math.PI,h;b.hidden=false;if(this.__excludes&&this.__excludes[u]){b.hidden=true}function a(x){if(x<0){x+=360}return x%360}k.setAttributes({text:w(p.get(c),k,p,B,u,t,e,g)},true);switch(t){case"outside":d=Math.sqrt(o*o+n*n)*2;b.x=d*Math.cos(j)+m;b.y=d*Math.sin(j)+l;break;case"rotate":z=a(z);z=z>90&&z<270?z+180:z;h=k.attr.rotation.degrees;if(h!=null&&Math.abs(h-z)>180*0.5){if(z>h){z-=360}else{z+=360}z=z%360}else{z=a(z)}b.rotate={degrees:z,x:b.x,y:b.y};break;default:break}b.translate={x:0,y:0};if(e&&!A&&(t!="rotate"||h!=null)){D.onAnimate(k,{to:b})}else{k.setAttributes(b,true)}k._from=s},onPlaceCallout:function(l,o,B,z,w,d,e){var C=this,q=C.chart,j=C.centerX,h=C.centerY,D=B.middle,b={x:D.x,y:D.y},m=D.x-j,k=D.y-h,c=1,n,g=Math.atan2(k,m||1),a=l&&l.label?l.label.getBBox():{width:0,height:0},A=20,u=10,t=10,s;if(!a.width||!a.height){return}c=B.endRho+A;n=(B.endRho+B.startRho)/2+(B.endRho-B.startRho)/3;b.x=c*Math.cos(g)+j;b.y=c*Math.sin(g)+h;m=n*Math.cos(g);k=n*Math.sin(g);if(q.animate){C.onAnimate(l.lines,{to:{path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?u:-u,0,"z"]}});C.onAnimate(l.box,{to:{x:b.x+(m>0?u:-(u+a.width+2*t)),y:b.y+(k>0?-a.height-t/2:-a.height-t/2),width:a.width+2*t,height:a.height+2*t}});C.onAnimate(l.label,{to:{x:b.x+(m>0?u+t:-(u+a.width+t)),y:b.y+(k>0?-a.height/4:-a.height/4)}})}else{l.lines.setAttributes({path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?u:-u,0,"z"]},true);l.box.setAttributes({x:b.x+(m>0?u:-(u+a.width+2*t)),y:b.y+(k>0?-a.height-t/2:-a.height-t/2),width:a.width+2*t,height:a.height+2*t},true);l.label.setAttributes({x:b.x+(m>0?u+t:-(u+a.width+t)),y:b.y+(k>0?-a.height/4:-a.height/4)},true)}for(s in l){l[s].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(l,j,n,e){var h=this,d=h.centerX,c=h.centerY,p=Math.abs,o=p(l-d),m=p(j-c),g=n.startAngle,a=n.endAngle,k=Math.sqrt(o*o+m*m),b=Math.atan2(j-c,l-d)/h.rad;if(b>h.firstAngle){b-=h.accuracy}return b<=g&&b>a&&k>=n.startRho&&k<=n.endRho},hideAll:function(c){var g,b,j,h,e,a,d;c=(isNaN(this._index)?c:this._index)||0;this.__excludes=this.__excludes||[];this.__excludes[c]=true;d=this.slices[c].sprite;for(e=0,a=d.length;e<a;e++){d[e].setAttributes({hidden:true},true)}if(this.slices[c].shadowAttrs){for(g=0,h=this.slices[c].shadowAttrs,b=h.length;g<b;g++){j=h[g];for(e=0,a=j.length;e<a;e++){j[e].setAttributes({hidden:true},true)}}}this.drawSeries()},showAll:function(a){a=(isNaN(this._index)?a:this._index)||0;this.__excludes[a]=false;this.drawSeries()},highlightItem:function(s){var u=this,t=u.rad,z,d,o,q,a,e,k,b,m,c,g,p,h,w,n,l,j;s=s||this.items[this._index];this.unHighlightItem();if(!s||u.animating||s.sprite&&s.sprite._animating){return}u.callParent([s]);if(!u.highlight){return}if("segment" in u.highlightCfg){z=u.highlightCfg.segment;d=u.chart.animate;if(u.labelsGroup){g=u.labelsGroup;p=u.label.display;h=g.getAt(s.index);w=(s.startAngle+s.endAngle)/2*t;n=z.margin||0;l=n*Math.cos(w);j=n*Math.sin(w);if(Math.abs(l)<1e-10){l=0}if(Math.abs(j)<1e-10){j=0}if(d){h.stopAnimation();h.animate({to:{translate:{x:l,y:j}},duration:u.highlightDuration})}else{h.setAttributes({translate:{x:l,y:j}},true)}}if(u.chart.shadow&&s.shadows){q=0;a=s.shadows;k=a.length;for(;q<k;q++){e=a[q];b={};m=s.sprite._from.segment;for(c in m){if(!(c in z)){b[c]=m[c]}}o={segment:Ext.applyIf(b,u.highlightCfg.segment)};if(d){e.stopAnimation();e.animate({to:o,duration:u.highlightDuration})}else{e.setAttributes(o,true)}}}}},unHighlightItem:function(){var y=this,l,e,d,k,u,t,s,q,z,m,c,a,x,n,b,g,w,h,o;if(!y.highlight){return}if("segment" in y.highlightCfg&&y.items){l=y.items;e=y.chart.animate;d=!!y.chart.shadow;k=y.labelsGroup;u=l.length;t=0;s=0;q=y.label.display;for(;t<u;t++){w=l[t];if(!w){continue}n=w.sprite;if(n&&n._highlighted){if(k){h=k.getAt(w.index);o=Ext.apply({translate:{x:0,y:0}},q=="rotate"?{rotate:{x:h.attr.x,y:h.attr.y,degrees:h.attr.rotation.degrees}}:{});if(e){h.stopAnimation();h.animate({to:o,duration:y.highlightDuration})}else{h.setAttributes(o,true)}}if(d){b=w.shadows;z=b.length;for(;s<z;s++){c={};a=w.sprite._to.segment;x=w.sprite._from.segment;Ext.apply(c,x);for(m in a){if(!(m in x)){c[m]=a[m]}}g=b[s];if(e){g.stopAnimation();g.animate({to:{segment:c},duration:y.highlightDuration})}else{g.setAttributes({segment:c},true)}}}}}}y.callParent(arguments)},getLegendColor:function(a){var b=this;return b.colorSet&&b.colorSet[a%b.colorSet.length]||b.colorArrayStyle[a%b.colorArrayStyle.length]}});Ext.define("Ext.chart.series.Radar",{extend:Ext.chart.series.Series,type:"radar",alias:"series.radar",rad:Math.PI/180,showInLegend:false,style:{},constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,d,b;e.group=a.getGroup(e.seriesId);if(e.showMarkers){e.markerGroup=a.getGroup(e.seriesId+"-markers")}},drawSeries:function(){var A=this,c=A.chart.getChartStore(),U=c.data.items,V,K,B=A.group,D,W=A.chart,N=W.series.items,O,z,m,S=W.animate,o=A.field||A.yField,M=W.surface,H=W.chartBBox,G=A.seriesIdx,j=A.colorArrayStyle,g,e,C,P,t=0,a=[],F=Math.max,k=Math.cos,u=Math.sin,q=Math.PI*2,R=c.getCount(),h,Q,L,J,I,T,w,n=A.seriesStyle,b=A.seriesLabelStyle,p=W.resizing||!A.radar,E=W.axes&&W.axes.get(0),X=!(E&&E.maximum);A.setBBox();t=X?0:E.maximum||0;Ext.apply(n,A.style||{});if(!c||!c.getCount()||A.seriesIsHidden){A.hide();A.items=[];if(A.radar){A.radar.hide(true)}A.radar=null;return}if(!n.stroke){n.stroke=j[A.themeIdx%j.length]}A.unHighlightItem();A.cleanHighlights();g=A.centerX=H.x+H.width/2;e=A.centerY=H.y+H.height/2;A.radius=P=Math.min(H.width,H.height)/2;A.items=C=[];if(X){for(O=0,z=N.length;O<z;O++){m=N[O];a.push(m.yField)}for(V=0;V<R;V++){K=U[V];for(T=0,w=a.length;T<w;T++){t=F(+K.get(a[T]),t)}}}t=t||1;h=[];Q=[];for(T=0;T<R;T++){K=U[T];I=P*K.get(o)/t;L=I*k(T/R*q);J=I*u(T/R*q);if(T==0){Q.push("M",L+g,J+e);h.push("M",0.01*L+g,0.01*J+e)}else{Q.push("L",L+g,J+e);h.push("L",0.01*L+g,0.01*J+e)}C.push({sprite:false,point:[g+L,e+J],storeItem:K,series:A})}Q.push("Z");if(!A.radar){A.radar=M.add(Ext.apply({type:"path",group:B,path:h},n||{}))}if(W.resizing){A.radar.setAttributes({path:h},true)}if(W.animate){A.onAnimate(A.radar,{to:Ext.apply({path:Q},n||{})})}else{A.radar.setAttributes(Ext.apply({path:Q},n||{}),true)}if(A.showMarkers){A.drawMarkers()}A.renderLabels();A.renderCallouts()},drawMarkers:function(){var n=this,k=n.chart,a=k.surface,p=k.getChartStore(),b=Ext.apply({},n.markerStyle||{}),j=Ext.apply(b,n.markerConfig,{fill:n.colorArrayStyle[n.themeIdx%n.colorArrayStyle.length]}),m=n.items,o=j.type,t=n.markerGroup,e=n.centerX,d=n.centerY,s,h,c,g,q;delete j.type;for(h=0,c=m.length;h<c;h++){s=m[h];g=t.getAt(h);if(!g){g=Ext.chart.Shape[o](a,Ext.apply({group:t,x:0,y:0,translate:{x:e,y:d}},j))}else{g.show()}s.sprite=g;if(k.resizing){g.setAttributes({x:0,y:0,translate:{x:e,y:d}},true)}g._to={translate:{x:s.point[0],y:s.point[1]}};q=n.renderer(g,p.getAt(h),g._to,h,p);q=Ext.applyIf(q||{},j||{});if(k.animate){n.onAnimate(g,{to:q})}else{g.setAttributes(q,true)}}},isItemInPoint:function(c,g,e){var b,d=10,a=Math.abs;b=e.point;return a(b[0]-c)<=d&&a(b[1]-g)<=d},onCreateLabel:function(g,m,e,h){var j=this,l=j.labelsGroup,a=j.label,d=j.centerX,c=j.centerY,k=m.point,b=Ext.apply(j.seriesLabelStyle||{},a);return j.chart.surface.add(Ext.apply({type:"text","text-anchor":"middle",group:l,x:d,y:c},a||{}))},onPlaceLabel:function(e,l,s,o,n,c,d){var u=this,m=u.chart,q=m.resizing,t=u.label,p=t.renderer,b=t.field,h=u.centerX,g=u.centerY,a={x:s.point[0],y:s.point[1]},k=a.x-h,j=a.y-g;e.setAttributes({text:p(l.get(b),e,l,s,o,n,c,d),hidden:true},true);if(q){e.setAttributes({x:h,y:g},true)}if(c){e.show(true);u.onAnimate(e,{to:a})}else{e.setAttributes(a,true);e.show(true)}},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Radar.superclass.hideAll.call(e)}else{Ext.chart.series.Radar.superclass.showAll.call(e)}if(e.radar){e.radar.setAttributes({hidden:!a},true);if(e.radar.shadows){for(b=0,c=e.radar.shadows,d=c.length;b<d;b++){g=c[b];g.setAttributes({hidden:!a},true)}}}},hideAll:function(){this.toggleAll(false);this.hideMarkers(0)},showAll:function(){this.toggleAll(true)},hideMarkers:function(a){var d=this,c=d.markerGroup&&d.markerGroup.getCount()||0,b=a||0;for(;b<c;b++){d.markerGroup.getAt(b).hide(true)}},getAxesForXAndYFields:function(){var c=this,b=c.chart,d=b.axes,a=[].concat(d&&d.get(0));return{yAxis:a}}});Ext.define("Ext.chart.series.Scatter",{extend:Ext.chart.series.Cartesian,type:"scatter",alias:"series.scatter",constructor:function(c){this.callParent(arguments);var e=this,g=e.chart.shadow,a=e.chart.surface,d,b;Ext.apply(e,c,{style:{},markerConfig:{},shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(0, 0, 0)"},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(0, 0, 0)"},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(0, 0, 0)"}]});e.group=a.getGroup(e.seriesId);if(g){for(d=0,b=e.shadowAttributes.length;d<b;d++){e.shadowGroups.push(a.getGroup(e.seriesId+"-shadows"+d))}}},getBounds:function(){var t=this,j=t.chart,d=j.getChartStore(),o=j.axes,l=t.getAxesForXAndYFields(),k=l.xAxis,e=l.yAxis,a,u,c,g,s,p,q,n,m,b,h;t.setBBox();a=t.bbox;if(b=o.get(k)){h=b.applyData();s=h.from;q=h.to}if(b=o.get(e)){h=b.applyData();p=h.from;n=h.to}if(t.xField&&!Ext.isNumber(s)){b=t.getMinMaxXValues();s=b[0];q=b[1]}if(t.yField&&!Ext.isNumber(p)){b=t.getMinMaxYValues();p=b[0];n=b[1]}if(isNaN(s)){s=0;q=d.getCount()-1;u=a.width/(d.getCount()-1)}else{u=a.width/(q-s)}if(isNaN(p)){p=0;n=d.getCount()-1;c=a.height/(d.getCount()-1)}else{c=a.height/(n-p)}return{bbox:a,minX:s,minY:p,xScale:u,yScale:c}},getPaths:function(){var B=this,n=B.chart,b=n.shadow,e=n.getChartStore(),D=e.data.items,t,l,d,j=B.group,g=B.bounds=B.getBounds(),a=B.bbox,E=g.xScale,c=g.yScale,z=g.minX,w=g.minY,C=a.x,A=a.y,h=a.height,o=B.items=[],q=[],m,k,s,u,p;for(t=0,l=D.length;t<l;t++){d=D[t];s=d.get(B.xField);u=d.get(B.yField);if(typeof u=="undefined"||typeof u=="string"&&!u||s==null||u==null){continue}if(typeof s=="string"||typeof s=="object"&&!Ext.isDate(s)){s=t}if(typeof u=="string"||typeof u=="object"&&!Ext.isDate(u)){u=t}m=C+(s-z)*E;k=A+h-(u-w)*c;q.push({x:m,y:k});B.items.push({series:B,value:[s,u],point:[m,k],storeItem:d});if(n.animate&&n.resizing){p=j.getAt(t);if(p){B.resetPoint(p);if(b){B.resetShadow(p)}}}}return q},resetPoint:function(a){var b=this.bbox;a.setAttributes({translate:{x:(b.x+b.width)/2,y:(b.y+b.height)/2}},true)},resetShadow:function(c){var g=this,e=c.shadows,j=g.shadowAttributes,d=g.shadowGroups.length,h=g.bbox,b,a;for(b=0;b<d;b++){a=Ext.apply({},j[b]);if(a.translate){a.translate.x+=(h.x+h.width)/2;a.translate.y+=(h.y+h.height)/2}else{a.translate={x:(h.x+h.width)/2,y:(h.y+h.height)/2}}e[b].setAttributes(a,true)}},createPoint:function(a,c){var d=this,b=d.chart,e=d.group,g=d.bbox;return Ext.chart.Shape[c](b.surface,Ext.apply({},{x:0,y:0,group:e,translate:{x:(g.x+g.width)/2,y:(g.y+g.height)/2}},a))},createShadow:function(n,g,k){var j=this,h=j.chart,l=j.shadowGroups,d=j.shadowAttributes,a=l.length,o=j.bbox,c,m,b,e;n.shadows=b=[];for(c=0;c<a;c++){e=Ext.apply({},d[c]);if(e.translate){e.translate.x+=(o.x+o.width)/2;e.translate.y+=(o.y+o.height)/2}else{Ext.apply(e,{translate:{x:(o.x+o.width)/2,y:(o.y+o.height)/2}})}Ext.apply(e,g);m=Ext.chart.Shape[k](h.surface,Ext.apply({},{x:0,y:0,group:l[c]},e));b.push(m)}},drawSeries:function(){var w=this,l=w.chart,h=l.getChartStore(),j=w.group,c=l.shadow,a=w.shadowGroups,q=w.shadowAttributes,s=a.length,m,n,o,k,p,u,e,g,b,d,t;u=Ext.apply(w.markerStyle,w.markerConfig);g=u.type;delete u.type;if(!h||!h.getCount()){w.hide();w.items=[];return}w.unHighlightItem();w.cleanHighlights();n=w.getPaths();k=n.length;for(p=0;p<k;p++){o=n[p];m=j.getAt(p);Ext.apply(o,u);if(!m){m=w.createPoint(o,g);if(c){w.createShadow(m,u,g)}}b=m.shadows;if(l.animate){d=w.renderer(m,h.getAt(p),{translate:o},p,h);m._to=d;w.onAnimate(m,{to:d});for(e=0;e<s;e++){t=Ext.apply({},q[e]);d=w.renderer(b[e],h.getAt(p),Ext.apply({},{hidden:false,translate:{x:o.x+(t.translate?t.translate.x:0),y:o.y+(t.translate?t.translate.y:0)}},t),p,h);w.onAnimate(b[e],{to:d})}}else{d=w.renderer(m,h.getAt(p),{translate:o},p,h);m._to=d;m.setAttributes(d,true);for(e=0;e<s;e++){t=Ext.apply({},q[e]);d=w.renderer(b[e],h.getAt(p),Ext.apply({},{hidden:false,translate:{x:o.x+(t.translate?t.translate.x:0),y:o.y+(t.translate?t.translate.y:0)}},t),p,h);b[e].setAttributes(d,true)}}w.items[p].sprite=m}k=j.getCount();for(p=n.length;p<k;p++){j.getAt(p).hide(true)}w.renderLabels();w.renderCallouts()},onCreateLabel:function(d,k,c,e){var g=this,h=g.labelsGroup,a=g.label,b=Ext.apply({},a,g.seriesLabelStyle),j=g.bbox;return g.chart.surface.add(Ext.apply({type:"text",group:h,x:k.point[0],y:j.y+j.height/2},b))},onPlaceLabel:function(h,l,w,s,q,d,g){var A=this,m=A.chart,u=m.resizing,z=A.label,t=z.renderer,b=z.field,a=A.bbox,k=w.point[0],j=w.point[1],c=w.sprite.attr.radius,e,o,n,p;h.setAttributes({text:t(l.get(b),h,l,w,s,q,d,g),hidden:true},true);if(q=="rotate"){h.setAttributes({"text-anchor":"start",rotation:{x:k,y:j,degrees:-45}},true);e=h.getBBox();o=e.width;n=e.height;k=k<a.x?a.x:k;k=k+o>a.x+a.width?k-(k+o-a.x-a.width):k;j=j-n<a.y?a.y+n:j}else{if(q=="under"||q=="over"){e=w.sprite.getBBox();e.width=e.width||c*2;e.height=e.height||c*2;j=j+(q=="over"?-e.height:e.height);e=h.getBBox();o=e.width/2;n=e.height/2;k=k-o<a.x?a.x+o:k;k=k+o>a.x+a.width?k-(k+o-a.x-a.width):k;j=j-n<a.y?a.y+n:j;j=j+n>a.y+a.height?j-(j+n-a.y-a.height):j}}if(!m.animate){h.setAttributes({x:k,y:j},true);h.show(true)}else{if(u){p=w.sprite.getActiveAnimation();if(p){p.on("afteranimate",function(){h.setAttributes({x:k,y:j},true);h.show(true)})}else{h.show(true)}}else{A.onAnimate(h,{to:{x:k,y:j}})}}},onPlaceCallout:function(k,m,D,B,A,c,h){var G=this,n=G.chart,w=n.surface,C=n.resizing,F=G.callouts,o=G.items,b=D.point,H,a=k.label.getBBox(),E=30,u=10,t=3,e,d,g,s,q,z=G.bbox,l,j;H=[Math.cos(Math.PI/4),-Math.sin(Math.PI/4)];l=b[0]+H[0]*E;j=b[1]+H[1]*E;e=l+(H[0]>0?0:-(a.width+2*t));d=j-a.height/2-t;g=a.width+2*t;s=a.height+2*t;if(e<z[0]||e+g>z[0]+z[2]){H[0]*=-1}if(d<z[1]||d+s>z[1]+z[3]){H[1]*=-1}l=b[0]+H[0]*E;j=b[1]+H[1]*E;e=l+(H[0]>0?0:-(a.width+2*t));d=j-a.height/2-t;g=a.width+2*t;s=a.height+2*t;if(n.animate){G.onAnimate(k.lines,{to:{path:["M",b[0],b[1],"L",l,j,"Z"]}},true);G.onAnimate(k.box,{to:{x:e,y:d,width:g,height:s}},true);G.onAnimate(k.label,{to:{x:l+(H[0]>0?t:-(a.width+t)),y:j}},true)}else{k.lines.setAttributes({path:["M",b[0],b[1],"L",l,j,"Z"]},true);k.box.setAttributes({x:e,y:d,width:g,height:s},true);k.label.setAttributes({x:l+(H[0]>0?t:-(a.width+t)),y:j},true)}for(q in k){k[q].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(c,h,e){var b,d=10,a=Math.abs;function g(j){var l=a(j[0]-c),k=a(j[1]-h);return Math.sqrt(l*l+k*k)}b=e.point;return b[0]-d<=c&&b[0]+d>=c&&b[1]-d<=h&&b[1]+d>=h}});Ext.define("Ext.layout.container.Table",{alias:["layout.table"],extend:Ext.layout.container.Container,alternateClassName:"Ext.layout.TableLayout",monitorResize:false,type:"table",createsInnerCt:true,targetCls:Ext.baseCSSPrefix+"table-layout-ct",tableCls:Ext.baseCSSPrefix+"table-layout",cellCls:Ext.baseCSSPrefix+"table-layout-cell",tableAttrs:null,getItemSizePolicy:function(a){return this.autoSizePolicy},initHierarchyState:function(a){a.inShrinkWrapTable=true},getLayoutItems:function(){var g=this,b=[],c=g.callParent(),e,a=c.length,d;for(d=0;d<a;d++){e=c[d];if(!e.hidden){b.push(e)}}return b},getHiddenItems:function(){var b=[],c=this.owner.items.items,a=c.length,d=0,e;for(;d<a;++d){e=c[d];if(e.rendered&&e.hidden){b.push(e)}}return b},renderChildren:function(){var l=this,k=l.getLayoutItems(),h=l.owner.getTargetEl().child("table",true).tBodies[0],s=h.rows,g=0,j=k.length,e=l.getHiddenItems(),q,o,c,a,p,n,m,b,d;q=l.calculateCells(k);for(;g<j;g++){o=q[g];c=o.rowIdx;a=o.cellIdx;p=k[g];n=s[c];if(!n){n=h.insertRow(c);if(l.trAttrs){n.set(l.trAttrs)}}b=m=Ext.get(n.cells[a]||n.insertCell(a));if(l.needsDivWrap()){b=m.first()||m.createChild({tag:"div"});b.setWidth(null)}if(!p.rendered){l.renderItem(p,b,0)}else{if(!l.isValidParent(p,b,c,a,h)){l.moveItem(p,b,0)}}if(l.tdAttrs){m.set(l.tdAttrs)}if(p.tdAttrs){m.set(p.tdAttrs)}m.set({colSpan:p.colspan||1,rowSpan:p.rowspan||1,id:p.cellId||"",cls:l.cellCls+" "+(p.cellCls||"")});if(!q[g+1]||q[g+1].rowIdx!==c){a++;while(n.cells[a]){n.deleteCell(a)}}}c++;while(h.rows[c]){h.deleteRow(c)}for(g=0,j=e.length;g<j;++g){l.ensureInDocument(e[g].getEl())}},ensureInDocument:function(a){var b=a.dom.parentNode;while(b){if(b.tagName.toUpperCase()=="BODY"){return}b=b.parentNode}Ext.getDetachedBody().appendChild(a)},calculate:function(g){if(!g.hasDomProp("containerChildrenSizeDone")){this.done=false}else{var c=g.targetContext,b=g.widthModel.shrinkWrap,a=g.heightModel.shrinkWrap,h=a||b,d=h&&c.el.child("table",true),e=h&&c.getPaddingInfo();if(b){g.setContentWidth(d.offsetWidth+e.width,true)}if(a){g.setContentHeight(d.offsetHeight+e.height,true)}}},finalizeLayout:function(){if(this.needsDivWrap()){var b=this.getLayoutItems(),c,a=b.length,d;for(c=0;c<a;c++){d=b[c];Ext.fly(d.el.dom.parentNode).setWidth(d.getWidth())}}if(Ext.isIE6||Ext.isIEQuirks){this.owner.getTargetEl().child("table").repaint()}},calculateCells:function(k){var m=[],b=0,d=0,a=0,h=this.columns||Infinity,n=[],e=0,c,g=k.length,l;for(;e<g;e++){l=k[e];while(d>=h||n[d]>0){if(d>=h){d=0;a=0;b++;for(c=0;c<h;c++){if(n[c]>0){n[c]--}}}else{d++}}m.push({rowIdx:b,cellIdx:a});for(c=l.colspan||1;c;--c){n[d]=l.rowspan||1;++d}++a}return m},getRenderTree:function(){var k=this,h=k.getLayoutItems(),o,p=[],q=Ext.apply({tag:"table",role:"presentation",cls:k.tableCls,cellspacing:0,cellpadding:0,cn:{tag:"tbody",cn:p}},k.tableAttrs),c=k.tdAttrs,d=k.needsDivWrap(),e,g=h.length,n,m,j,b,a,l;o=k.calculateCells(h);for(e=0;e<g;e++){n=h[e];m=o[e];b=m.rowIdx;a=m.cellIdx;j=p[b];if(!j){j=p[b]={tag:"tr",cn:[]};if(k.trAttrs){Ext.apply(j,k.trAttrs)}}l=j.cn[a]={tag:"td"};if(c){Ext.apply(l,c)}Ext.apply(l,{colSpan:n.colspan||1,rowSpan:n.rowspan||1,id:n.cellId||"",cls:k.cellCls+" "+(n.cellCls||"")});if(d){l=l.cn={tag:"div"}}k.configureItem(n);l.cn=n.getRenderTree()}return q},isValidParent:function(g,h,e,d){var b,a,c;if(arguments.length===3){c=g.el.up("table");return c&&c.dom.parentNode===h.dom}b=this.owner.getTargetEl().child("table",true).tBodies[0];a=b.rows[e].cells[d];return g.el.dom.parentNode===a},needsDivWrap:function(){return Ext.isOpera10_5}});Ext.define("Ext.container.ButtonGroup",{extend:Ext.panel.Panel,alias:"widget.buttongroup",alternateClassName:"Ext.ButtonGroup",baseCls:Ext.baseCSSPrefix+"btn-group",layout:{type:"table"},defaultType:"button",frame:true,frameHeader:false,titleAlign:"center",noTitleCls:"notitle",initComponent:function(){var a=this,b=a.columns;if(b){a.layout=Ext.apply({},{columns:b},a.layout)}if(!a.title){a.addClsWithUI(a.noTitleCls)}a.callParent(arguments)},onBeforeAdd:function(a){if(a.isButton){if(this.defaultButtonUI&&a.ui==="default"&&!a.hasOwnProperty("ui")){a.ui=this.defaultButtonUI}else{a.ui=a.ui+"-toolbar"}}this.callParent(arguments)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a}});Ext.define("Ext.container.Monitor",{target:null,selector:"",scope:null,addHandler:null,removeHandler:null,disabled:0,constructor:function(a){Ext.apply(this,a)},bind:function(b){var a=this;a.target=b;b.on("beforedestroy",a.disable,a);a.onContainerAdd(b)},unbind:function(){var a=this,b=a.target;if(b){b.un("beforedestroy",a.disable,a)}a.items=null},disable:function(){++this.disabled},enable:function(){if(this.disabled>0){--this.disabled}},handleAdd:function(b,a){if(!this.disabled){if(a.is(this.selector)){this.onItemAdd(a.ownerCt,a)}if(a.isContainer){this.onContainerAdd(a)}}},onItemAdd:function(c,b){var e=this,a=e.items,d=e.addHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.add(b)}}},onItemRemove:function(c,b){var e=this,a=e.items,d=e.removeHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.remove(b)}}},onContainerAdd:function(g,b){var k=this,j,h,c=k.handleAdd,a=k.handleRemove,d,e;g.on("add",c,k);g.on("dockedadd",c,k);g.on("remove",a,k);g.on("dockedremove",a,k);if(b!==true){j=g.query(k.selector);for(d=0,h=j.length;d<h;++d){e=j[d];k.onItemAdd(e.ownerCt,e)}}j=g.query("container");for(d=0,h=j.length;d<h;++d){k.onContainerAdd(j[d],true)}},handleRemove:function(b,a){var c=this;if(!c.disabled){if(a.is(c.selector)){c.onItemRemove(b,a)}if(a.isContainer){c.onContainerRemove(b,a)}}},onContainerRemove:function(e,c){var h=this,j=e.destroying,b,d,a,g;if(!j){h.removeCtListeners(c)}b=c.query(h.selector);for(d=0,a=b.length;d<a;++d){g=b[d];h.onItemRemove(g.ownerCt,g)}if(!j){b=c.query("container");for(d=0,a=b.length;d<a;++d){h.removeCtListeners(b[d])}}},removeCtListeners:function(a){var b=this;a.un("add",b.handleAdd,b);a.un("dockedadd",b.handleAdd,b);a.un("remove",b.handleRemove,b);a.un("dockedremove",b.handleRemove,b)},getItems:function(){var b=this,a=b.items;if(!a){a=b.items=new Ext.util.MixedCollection;a.addAll(b.target.query(b.selector))}return a},invalidateItems:function(){this.items=null}});Ext.define("Ext.container.Viewport",{extend:Ext.container.Container,alias:"widget.viewport",alternateClassName:"Ext.Viewport",isViewport:true,ariaRole:"application",preserveElOnDestroy:true,initComponent:function(){var c=this,a=document.body.parentNode,b=c.el=Ext.getBody();Ext.getScrollbarSize();c.width=c.height=undefined;c.callParent(arguments);Ext.fly(a).addCls(Ext.baseCSSPrefix+"viewport");if(c.autoScroll){Ext.fly(a).setStyle(c.getOverflowStyle());delete c.autoScroll}b.setHeight=b.setWidth=Ext.emptyFn;b.dom.scroll="no";c.allowDomMove=false;c.renderTo=c.el},applyTargetCls:function(a){this.el.addCls(a)},onRender:function(){var a=this;a.callParent(arguments);a.width=Ext.Element.getViewportWidth();a.height=Ext.Element.getViewportHeight()},afterFirstLayout:function(){var a=this;a.callParent(arguments);setTimeout(function(){Ext.EventManager.onWindowResize(a.fireResize,a)},1)},fireResize:function(b,a){if(b!=this.width||a!=this.height){this.setSize(b,a)}},initHierarchyState:function(a){this.callParent([this.hierarchyState=Ext.rootHierarchyState])}});Ext.define("Ext.data.IdGenerator",{isGenerator:true,constructor:function(a){var b=this;Ext.apply(b,a);if(b.id){Ext.data.IdGenerator.all[b.id]=b}},getRecId:function(a){return a.modelName+"-"+a.internalId},statics:{all:{},get:function(a){var c,d,b;if(typeof a=="string"){d=b=a;a=null}else{if(a.isGenerator){return a}else{d=a.id||a.type;b=a.type}}c=this.all[d];if(!c){c=Ext.create("idgen."+b,a)}return c}}});Ext.define("Ext.data.SortTypes",{singleton:true,none:Ext.identityFn,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.define("Ext.data.Types",{singleton:true},function(){var a=Ext.data.SortTypes;Ext.apply(Ext.data.Types,{stripRe:/[\$,%]/g,AUTO:{sortType:a.none,type:"auto"},STRING:{convert:function(c){var b=this.useNull?null:"";return c===undefined||c===null?b:String(c)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){if(typeof b=="number"){return parseInt(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){if(typeof b==="number"){return 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){if(typeof b==="boolean"){return b}if(this.useNull&&(b===undefined||b===null||b==="")){return null}return b===true||b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateReadFormat||this.dateFormat,b;if(!c){return null}if(c instanceof Date){return c}if(d){return Ext.Date.parse(c,d)}b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(Ext.data.Types,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})});Ext.define("Ext.data.Field",{alias:"data.field",isField:true,constructor:function(b){var d=this,c=Ext.data.Types,a;if(Ext.isString(b)){b={name:b}}Ext.apply(d,b);a=d.sortType;if(d.type){if(Ext.isString(d.type)){d.type=c[d.type.toUpperCase()]||c.AUTO}}else{d.type=c.AUTO}if(Ext.isString(a)){d.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){d.sortType=d.type.sortType}}if(!b.hasOwnProperty("convert")){d.convert=d.type.convert}else{if(!d.convert&&d.type.convert&&!b.hasOwnProperty("defaultValue")){d.defaultValue=d.type.convert(d.defaultValue)}}if(b.convert){d.hasCustomConvert=true}},dateFormat:null,dateReadFormat:null,dateWriteFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true,persist:true});Ext.define("Ext.data.Errors",{extend:Ext.util.MixedCollection,isValid:function(){return this.length===0},getByField:function(d){var c=[],a,b;for(b=0;b<this.length;b++){a=this.items[b];if(a.field==d){c.push(a)}}return c}});Ext.define("Ext.data.validations",{singleton:true,presenceMessage:"must be present",lengthMessage:"is the wrong length",formatMessage:"is the wrong format",inclusionMessage:"is not included in the list of acceptable values",exclusionMessage:"is not an acceptable value",emailMessage:"is not a valid email address",emailRe:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,presence:function(a,b){if(arguments.length===1){b=a}return !!b||b===0||b===false},length:function(b,e){if(e===undefined||e===null){return false}var d=e.length,c=b.min,a=b.max;if(c&&d<c||a&&d>a){return false}else{return true}},email:function(b,a){return Ext.data.validations.emailRe.test(a)},format:function(a,b){return !!(a.matcher&&a.matcher.test(b))},inclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)!=-1},exclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)==-1}});Ext.define("Ext.data.Model",{alternateClassName:"Ext.data.Record",mixins:{observable:Ext.util.Observable},compareConvertFields:function(a,d){var c=a.convert&&a.type&&a.convert!==a.type.convert,b=d.convert&&d.type&&d.convert!==d.type.convert;if(c&&!b){return 1}if(!c&&b){return -1}return 0},itemNameFn:function(a){return a.name},onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(g,H){var G=this,I=Ext.getClassName(g),u=g.prototype,B=g.prototype.superclass,j=H.validations||[],x=H.fields||[],h,o=H.associations||[],e=function(K,M){var L=0,J,N;if(K){K=Ext.Array.from(K);for(J=K.length;L<J;++L){N=K[L];if(!Ext.isObject(N)){N={model:N}}N.type=M;o.push(N)}}},y=H.idgen,E=new Ext.util.MixedCollection(false,u.itemNameFn),C=new Ext.util.MixedCollection(false,u.itemNameFn),t=B.validations,F=B.fields,m=B.associations,D,A,q,s=[],p="idProperty" in H?H.idProperty:u.idProperty,n=p?p.isField?p:new Ext.data.Field(p):null,k=false,z=function(L,K,J){var M,N;if(E.events.add.firing){N=L;M=K}else{M=J;N=K.originalIndex}M.originalIndex=N;if(n&&(M.mapping&&M.mapping===n.mapping||M.name===n.name)){u.idField=M;k=true;M.defaultValue=undefined}},w=H.proxy,l=function(){E.sortBy(u.compareConvertFields)};g.modelName=I;u.modelName=I;if(t){j=t.concat(j)}H.validations=j;if(F){x=F.items.concat(x)}E.on({add:z,replace:z});for(A=0,q=x.length;A<q;++A){h=x[A];E.add(h.isField?h:new Ext.data.Field(h))}if(n&&!k){u.idField=n;n.defaultValue=undefined;E.add(n)}l();E.on({add:l,replace:l});H.fields=E;if(y){H.idgen=Ext.data.IdGenerator.get(y)}e(H.belongsTo,"belongsTo");delete H.belongsTo;e(H.hasMany,"hasMany");delete H.hasMany;e(H.hasOne,"hasOne");delete H.hasOne;if(m){o=m.items.concat(o)}for(A=0,q=o.length;A<q;++A){s.push("association."+o[A].type.toLowerCase())}if(w){if(!w.isProxy){s.push("proxy."+(w.type||w))}}else{if(!g.prototype.proxy){g.prototype.proxy=g.prototype.defaultProxyType;s.push("proxy."+g.prototype.defaultProxyType)}}Ext.require(s,function(){Ext.ModelManager.registerType(I,g);for(A=0,q=o.length;A<q;++A){D=o[A];if(D.isAssociation){D=Ext.applyIf({ownerModel:I,associatedModel:D.model},D.initialConfig)}else{Ext.apply(D,{ownerModel:I,associatedModel:D.model})}if(Ext.ModelManager.getModel(D.model)===undefined){Ext.ModelManager.registerDeferredAssociation(D)}else{C.add(Ext.data.association.Association.create(D))}}H.associations=C;d.call(G,g,H,a);if(w&&w.isProxy){g.setProxy(w)}Ext.ModelManager.onModelDefined(g)})}},inheritableStatics:{setProxy:function(a){if(!a.isProxy){if(typeof a=="string"){a={type:a}}a=Ext.createByAlias("proxy."+a.type,a)}a.setModel(this);this.proxy=this.prototype.proxy=a;return a},getProxy:function(){var a=this.proxy;if(!a){a=this.prototype.proxy;if(a.isProxy){a=a.clone()}return this.setProxy(a)}return a},setFields:function(g,n,m){var k=this,a,b,l=false,e=k.prototype,c=e.fields,j=e.superclass.fields,h,d;if(n){e.idProperty=n;b=n.isField?n:new Ext.data.Field(n)}if(m){e.clientIdProperty=m}if(c){c.clear()}else{c=k.prototype.fields=new Ext.util.MixedCollection(false,function(o){return o.name})}if(j){g=j.items.concat(g)}for(d=0,h=g.length;d<h;d++){a=new Ext.data.Field(g[d]);if(b&&(a.mapping&&a.mapping===b.mapping||a.name===b.name)){l=true;a.defaultValue=undefined}c.add(a)}if(b&&!l){b.defaultValue=undefined;c.add(b)}k.fields=c;return c},getFields:function(){return this.prototype.fields.items},load:function(g,c){c=Ext.apply({},c);c=Ext.applyIf(c,{action:"read",id:g});var b=new Ext.data.Operation(c),d=c.scope||this,a=null,e;e=function(h){if(h.wasSuccessful()){a=h.getRecords()[0];if(!a.hasId()){a.setId(g)}Ext.callback(c.success,d,[a,h])}else{Ext.callback(c.failure,d,[a,h])}Ext.callback(c.callback,d,[a,h])};this.getProxy().read(b,e,this)}},statics:{PREFIX:"ext-record",AUTO_ID:1,EDIT:"edit",REJECT:"reject",COMMIT:"commit",id:function(a){var b=[this.PREFIX,"-",this.AUTO_ID++].join("");a.phantom=true;a.internalId=b;return b}},idgen:{isGenerator:true,type:"default",generate:function(){return null},getRecId:function(a){return a.modelName+"-"+a.internalId}},editing:false,dirty:false,persistenceProperty:"data",evented:false,isModel:true,phantom:false,idProperty:"id",clientIdProperty:null,defaultProxyType:"ajax",emptyData:[],constructor:function(l,e,q,b){var n=this,k=e||e===0,s,m,g,o,a,p,h,d,t=n.idProperty,c=n.idField,j;n.raw=q||l;n.modified={};d=n[n.persistenceProperty]=b||{};n.data=n[n.persistenceProperty];n.mixins.observable.constructor.call(n);if(!b){if(l){if(!k&&t){e=l[t];s=e||e===0}}else{l=n.emptyData}m=n.fields.items;g=m.length;j=0;if(Ext.isArray(l)){for(;j<g;j++){o=m[j];a=o.name;p=l[o.originalIndex];if(p===undefined){p=o.defaultValue}if(o.convert){p=o.convert(p,n)}if(p!==undefined){d[a]=p}}}else{for(;j<g;j++){o=m[j];a=o.name;p=l[a];if(p===undefined){p=o.defaultValue}if(o.convert){p=o.convert(p,n)}if(p!==undefined){d[a]=p}}}}n.stores=[];if(k){s=true;d[t]=c&&c.convert?c.convert(e):e}else{if(!s){h=n.idgen.generate();if(h!=null){n.preventInternalUpdate=true;n.setId(h);delete n.preventInternalUpdate}}}n.internalId=s?e:Ext.data.Model.id(n);if(typeof n.init=="function"){n.init()}n.id=n.idgen.getRecId(n)},get:function(a){return this[this.persistenceProperty][a]},_singleProp:{},set:function(t,b){var k=this,h=k[k.persistenceProperty],j=k.fields,s=k.modified,p=typeof t=="string",q,l,g,o,e,a,c,d,m,n;if(p){n=k._singleProp;n[t]=b}else{n=t}for(a in n){if(n.hasOwnProperty(a)){m=n[a];if(j&&(l=j.get(a))&&l.convert){m=l.convert(m,k)}q=h[a];if(k.isEqual(q,m)){continue}h[a]=m;(e||(e=[])).push(a);if(l&&l.persist){if(s.hasOwnProperty(a)){if(k.isEqual(s[a],m)){delete s[a];k.dirty=false;for(o in s){if(s.hasOwnProperty(o)){k.dirty=true;break}}}}else{k.dirty=true;s[a]=q}}if(a==k.idProperty){g=true;c=q;d=m}}}if(p){delete n[t]}if(g){k.changeId(c,d)}if(!k.editing&&e){k.afterEdit(e)}return e||null},copyFrom:function(j){var h=this,e=h.fields.items,m=e.length,b=[],k,c=0,g,d,n=h.idProperty,a,l;if(j){g=h[h.persistenceProperty];d=j[j.persistenceProperty];for(;c<m;c++){k=e[c];a=k.name;if(a!=n){l=d[a];if(l!==undefined&&!h.isEqual(g[a],l)){g[a]=l;b.push(a)}}}if(h.phantom&&!j.phantom){h.beginEdit();h.setId(j.getId());h.endEdit(true);h.commit(true)}}return b},isEqual:function(d,c){if(d instanceof Date&&c instanceof Date){return d.getTime()===c.getTime()}return d===c},beginEdit:function(){var b=this,a,c,d;if(!b.editing){b.editing=true;b.dirtySave=b.dirty;d=b[b.persistenceProperty];c=b.dataSave={};for(a in d){if(d.hasOwnProperty(a)){c[a]=d[a]}}d=b.modified;c=b.modifiedSave={};for(a in d){if(d.hasOwnProperty(a)){c[a]=d[a]}}}},cancelEdit:function(){var a=this;if(a.editing){a.editing=false;a.modified=a.modifiedSave;a[a.persistenceProperty]=a.dataSave;a.dirty=a.dirtySave;a.modifiedSave=a.dataSave=a.dirtySave=null}},endEdit:function(a,d){var c=this,b,e;a=a===true;if(c.editing){c.editing=false;b=c.dataSave;c.modifiedSave=c.dataSave=c.dirtySave=null;if(!a){if(!d){d=c.getModifiedFieldNames(b)}e=c.dirty||d.length>0;if(e){c.afterEdit(d)}}}},getModifiedFieldNames:function(d){var c=this,e=c[c.persistenceProperty],a=[],b;d=d||c.dataSave;for(b in e){if(e.hasOwnProperty(b)){if(!c.isEqual(e[b],d[b])){a.push(b)}}}return a},getChanges:function(){var a=this.modified,b={},c;for(c in a){if(a.hasOwnProperty(c)){b[c]=this.get(c)}}return b},isModified:function(a){return this.modified.hasOwnProperty(a)},setDirty:function(){var c=this,a=c.fields.items,g=a.length,e,b,d;c.dirty=true;for(d=0;d<g;d++){e=a[d];if(e.persist){b=e.name;c.modified[b]=c.get(b)}}},reject:function(a){var c=this,b=c.modified,d;for(d in b){if(b.hasOwnProperty(d)){if(typeof b[d]!="function"){c[c.persistenceProperty][d]=b[d]}}}c.dirty=false;c.editing=false;c.modified={};if(a!==true){c.afterReject()}},commit:function(a,c){var b=this;b.phantom=b.dirty=b.editing=false;b.modified={};if(a!==true){b.afterCommit(c)}},copy:function(a){var b=this;return new b.self(b.raw,a,null,Ext.apply({},b[b.persistenceProperty]))},setProxy:function(a){if(!a.isProxy){if(typeof a==="string"){a={type:a}}a=Ext.createByAlias("proxy."+a.type,a)}a.setModel(this.self);this.proxy=a;return a},getProxy:function(){return this.hasOwnProperty("proxy")?this.proxy:this.self.getProxy()},validate:function(){var k=new Ext.data.Errors,c=this.validations,e=Ext.data.validations,b,d,j,a,h,g;if(c){b=c.length;for(g=0;g<b;g++){d=c[g];j=d.field||d.name;h=d.type;a=e[h](d,this.get(j));if(!a){k.add({field:j,message:d.message||e[h+"Message"]})}}}return k},isValid:function(){return this.validate().isValid()},save:function(m){m=Ext.apply({},m);var g=this,b=g.phantom?"create":"update",l=m.scope||g,j=g.stores,c=0,e,h,d,a,k;Ext.apply(m,{records:[g],action:b});a=new Ext.data.Operation(m);k=function(n){d=[g,n];if(n.wasSuccessful()){for(e=j.length;c<e;c++){h=j[c];h.fireEvent("write",h,n);h.fireEvent("datachanged",h)}Ext.callback(m.success,l,d)}else{Ext.callback(m.failure,l,d)}Ext.callback(m.callback,l,d)};g.getProxy()[b](a,k,g);return g},destroy:function(m){m=Ext.apply({records:[this],action:"destroy"},m);var g=this,a=g.phantom!==true,l=m.scope||g,j,c=0,e,h,d,b,k;b=new Ext.data.Operation(m);k=function(n){d=[g,n];j=Ext.Array.clone(g.stores);if(n.wasSuccessful()){for(e=j.length;c<e;c++){h=j[c];if(h.remove){h.remove(g,true)}if(a){h.fireEvent("write",h,n)}}g.clearListeners();Ext.callback(m.success,l,d)}else{Ext.callback(m.failure,l,d)}Ext.callback(m.callback,l,d)};if(a){g.getProxy().destroy(b,k,g)}else{b.complete=b.success=true;b.resultSet=g.getProxy().reader.nullResultSet;k(b)}return g},getId:function(){return this.get(this.idField.name)},getObservableId:function(){return this.id},setId:function(a){this.set(this.idProperty,a)},changeId:function(g,b){var e=this,d,c,a;if(!e.preventInternalUpdate){d=e.hasId(g);c=e.hasId(b);a=e.internalId;e.phantom=!c;if(c!==d||c&&d){e.internalId=c?b:Ext.data.Model.id(e)}e.fireEvent("idchanged",e,g,b,a);e.callStore("onIdChanged",g,b,a)}},hasId:function(a){if(arguments.length===0){a=this.getId()}return !!(a||a===0)},join:function(a){var b=this;if(!b.stores.length){b.stores[0]=a}else{Ext.Array.include(this.stores,a)}this.store=this.stores[0]},unjoin:function(a){Ext.Array.remove(this.stores,a);this.store=this.stores[0]||null},afterEdit:function(a){this.callStore("afterEdit",a)},afterReject:function(){this.callStore("afterReject")},afterCommit:function(a){this.callStore("afterCommit",a)},callStore:function(g){var d=Ext.Array.clone(arguments),b=this.stores,e=0,a=b.length,c;d[0]=this;for(;e<a;++e){c=b[e];if(c&&Ext.isFunction(c[g])){c[g].apply(c,d)}}},getData:function(c){var d=this,a=d.fields.items,h=a.length,g={},b,e;for(e=0;e<h;e++){b=a[e].name;g[b]=d.get(b)}if(c===true){Ext.apply(g,d.getAssociatedData())}return g},getAssociatedData:function(){return this.prepareAssociatedData({},1)},prepareAssociatedData:function(y,B){var A=this,u=A.associations.items,e=u.length,z={},q=[],x=[],m=[],p,b,a,n,g,l,k,w,h,c,t,s,d,C;for(t=0;t<e;t++){c=u[t];w=c.associationId;k=y[w];if(k&&k!==B){continue}y[w]=B;d=c.type;C=c.name;if(d=="hasMany"){p=A[c.storeName];z[C]=[];if(p&&p.getCount()>0){b=p.data.items;h=b.length;for(s=0;s<h;s++){a=b[s];z[C][s]=a.getData();q.push(a);x.push(C);m.push(s)}}}else{if(d=="belongsTo"||d=="hasOne"){a=A[c.instanceName];if(a!==undefined){z[C]=a.getData();q.push(a);x.push(C);m.push(-1)}}}}for(t=0,h=q.length;t<h;++t){a=q[t];n=z[x[t]];g=m[t];l=a.prepareAssociatedData(y,B+1);if(g===-1){Ext.apply(n,l)}else{Ext.apply(n[g],l)}}return z}});Ext.define("Ext.data.proxy.Server",{extend:Ext.data.proxy.Proxy,alias:"proxy.server",alternateClassName:"Ext.data.ServerProxy",pageParam:"page",startParam:"start",limitParam:"limit",groupParam:"group",groupDirectionParam:"groupDir",sortParam:"sort",filterParam:"filter",directionParam:"dir",idParam:"id",simpleSortMode:false,simpleGroupMode:false,noCache:true,cacheString:"_dc",timeout:30000,constructor:function(a){var b=this;a=a||{};b.callParent([a]);b.extraParams=a.extraParams||{};b.api=Ext.apply({},a.api||b.api);b.nocache=b.noCache},create:function(){return this.doRequest.apply(this,arguments)},read:function(){return this.doRequest.apply(this,arguments)},update:function(){return this.doRequest.apply(this,arguments)},destroy:function(){return this.doRequest.apply(this,arguments)},setExtraParam:function(a,b){this.extraParams[a]=b},buildRequest:function(a){var c=this,d=a.params=Ext.apply({},a.params,c.extraParams),b;Ext.applyIf(d,c.getParams(a));if(a.id!==undefined&&d[c.idParam]===undefined){d[c.idParam]=a.id}b=new Ext.data.Request({params:d,action:a.action,records:a.records,operation:a,url:a.url,proxy:c});b.url=c.buildUrl(b);a.request=b;return b},processResponse:function(h,a,c,b,g,j){var e=this,d,k;if(h===true){d=e.getReader();d.applyDefaults=a.action==="read";k=d.read(e.extractResponseData(b));if(k.success!==false){Ext.apply(a,{response:b,resultSet:k});a.commitRecords(k.records);a.setCompleted();a.setSuccessful()}else{a.setException(k.message);e.fireEvent("exception",this,b,a)}}else{e.setException(a,b);e.fireEvent("exception",this,b,a)}if(typeof g=="function"){g.call(j||e,a)}e.afterRequest(c,h)},setException:function(b,a){b.setException({status:a.status,statusText:a.statusText})},extractResponseData:Ext.identityFn,applyEncoding:function(a){return Ext.encode(a)},encodeSorters:function(d){var b=[],c=d.length,a=0;for(;a<c;a++){b[a]={property:d[a].property,direction:d[a].direction}}return this.applyEncoding(b)},encodeFilters:function(d){var b=[],c=d.length,a=0;for(;a<c;a++){b[a]={property:d[a].property,value:d[a].value}}return this.applyEncoding(b)},getParams:function(q){var z=this,y={},u=Ext.isDefined,w=q.groupers,a=q.sorters,o=q.filters,j=q.page,h=q.start,x=q.limit,m=z.simpleSortMode,d=z.simpleGroupMode,t=z.pageParam,g=z.startParam,b=z.limitParam,c=z.groupParam,n=z.groupDirectionParam,e=z.sortParam,s=z.filterParam,p=z.directionParam,l,k;if(t&&u(j)){y[t]=j}if(g&&u(h)){y[g]=h}if(b&&u(x)){y[b]=x}l=c&&w&&w.length>0;if(l){if(d){y[c]=w[0].property;y[n]=w[0].direction||"ASC"}else{y[c]=z.encodeSorters(w)}}if(e&&a&&a.length>0){if(m){k=0;if(a.length>1&&l){k=1}y[e]=a[k].property;y[p]=a[k].direction}else{y[e]=z.encodeSorters(a)}}if(s&&o&&o.length>0){y[s]=z.encodeFilters(o)}return y},buildUrl:function(c){var b=this,a=b.getUrl(c);if(b.noCache){a=Ext.urlAppend(a,Ext.String.format("{0}={1}",b.cacheString,Ext.Date.now()))}return a},getUrl:function(a){return a.url||this.api[a.action]||this.url},doRequest:function(a,c,b){},afterRequest:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.reader,this.writer)}});Ext.define("Ext.data.proxy.Ajax",{extend:Ext.data.proxy.Server,alias:"proxy.ajax",alternateClassName:["Ext.data.HttpProxy","Ext.data.AjaxProxy"],actionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},binary:false,doRequest:function(a,e,b){var d=this.getWriter(),c=this.buildRequest(a);if(a.allowWrite()){c=d.write(c)}Ext.apply(c,{binary:this.binary,headers:this.headers,timeout:this.timeout,scope:this,callback:this.createRequestCallback(c,a,e,b),method:this.getMethod(c),disableCaching:false});Ext.Ajax.request(c);return c},getMethod:function(a){return this.actionMethods[a.action]},createRequestCallback:function(d,a,e,b){var c=this;return function(h,j,g){c.processResponse(j,a,d,g,e,b)}}},function(){Ext.data.HttpProxy=this});Ext.define("Ext.data.proxy.Client",{extend:Ext.data.proxy.Proxy,alternateClassName:"Ext.data.ClientProxy",isSynchronous:true,clear:function(){}});Ext.define("Ext.data.proxy.Memory",{extend:Ext.data.proxy.Client,alias:"proxy.memory",alternateClassName:"Ext.data.MemoryProxy",constructor:function(a){this.callParent([a]);this.setReader(this.reader)},updateOperation:function(b,g,d){var c=0,e=b.getRecords(),a=e.length;for(c;c<a;c++){e[c].commit()}b.setCompleted();b.setSuccessful();Ext.callback(g,d||this,[b])},create:function(){this.updateOperation.apply(this,arguments)},update:function(){this.updateOperation.apply(this,arguments)},destroy:function(){this.updateOperation.apply(this,arguments)},read:function(c,j,k){var g=this,h=c.resultSet=g.getReader().read(g.data),b=h.records,e=c.sorters,d=c.groupers,a=c.filters;c.setCompleted();if(h.success){if(a&&a.length){b=h.records=Ext.Array.filter(b,Ext.util.Filter.createFilterFn(a))}if(d&&d.length){Ext.Array.insert(e||[],0,d)}if(e&&e.length){h.records=Ext.Array.sort(b,Ext.util.Sortable.createComparator(e))}if(g.enablePaging&&c.start!==undefined&&c.limit!==undefined){if(c.start>=h.total){h.success=false;h.count=0;h.records=[]}else{h.records=Ext.Array.slice(h.records,c.start,c.start+c.limit);h.count=h.records.length}}}if(h.success){c.setSuccessful()}else{g.fireEvent("exception",g,null,c)}Ext.callback(j,k||g,[c])},clear:Ext.emptyFn});Ext.define("Ext.util.LruCache",{extend:Ext.util.HashMap,constructor:function(a){Ext.apply(this,a);this.callParent([a])},add:function(b,e){var d=this,a=d.findKey(e),c;if(a){d.unlinkEntry(c=d.map[a]);c.prev=d.last;c.next=null}else{c={prev:d.last,next:null,key:b,value:e}}if(d.last){d.last.next=c}else{d.first=c}d.last=c;d.callParent([b,c]);d.prune();return e},insertBefore:function(b,g,c){var e=this,a,d;if(c=this.map[this.findKey(c)]){a=e.findKey(g);if(a){e.unlinkEntry(d=e.map[a])}else{d={prev:c.prev,next:c,key:b,value:g}}if(c.prev){d.prev.next=d}else{e.first=d}d.next=c;c.prev=d;e.prune();return g}else{return e.add(b,g)}},get:function(a){var b=this.map[a];if(b){if(b.next){this.moveToEnd(b)}return b.value}},removeAtKey:function(a){this.unlinkEntry(this.map[a]);return this.callParent(arguments)},clear:function(a){this.first=this.last=null;return this.callParent(arguments)},unlinkEntry:function(a){if(a){if(a.next){a.next.prev=a.prev}else{this.last=a.prev}if(a.prev){a.prev.next=a.next}else{this.first=a.next}a.prev=a.next=null}},moveToEnd:function(a){this.unlinkEntry(a);if(a.prev=this.last){this.last.next=a}else{this.first=a}this.last=a},getArray:function(c){var a=[],b=this.first;while(b){a.push(c?b.key:b.value);b=b.next}return a},each:function(c,b,a){var g=this,e=a?g.last:g.first,d=g.length;b=b||g;while(e){if(c.call(b,e.key,e.value,d)===false){break}e=a?e.prev:e.next}return g},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a].value===b){return a}}return undefined},clone:function(){var a=new this.self(this.initialConfig),c=this.map,b;a.suspendEvents();for(b in c){if(c.hasOwnProperty(b)){a.add(b,c[b].value)}}a.resumeEvents();return a},prune:function(){var a=this,b=a.maxSize?a.length-a.maxSize:0;if(b>0){for(;a.first&&b;b--){a.removeAtKey(a.first.key)}}}});Ext.define("Ext.data.Group",{extend:Ext.util.Observable,key:undefined,dirty:true,constructor:function(){this.callParent(arguments);this.records=[]},contains:function(a){return Ext.Array.indexOf(this.records,a)},add:function(a){Ext.Array.push(this.records,a);this.dirty=true},remove:function(b){if(!Ext.isArray(b)){b=[b]}var a=b.length,c;for(c=0;c<a;++c){Ext.Array.remove(this.records,b[c])}this.dirty=true},isDirty:function(){return this.dirty},hasAggregate:function(){return !!this.aggregate},setDirty:function(){this.dirty=true},commit:function(){this.dirty=false},isCollapsed:function(){return this.collapsed},getAggregateRecord:function(a){var b=this,c;if(a===true||b.dirty||!b.aggregate){c=b.store.model;b.aggregate=new c;b.aggregate.isSummary=true}return b.aggregate}});Ext.define("Ext.data.Store",{extend:Ext.data.AbstractStore,alias:"store.store",remoteSort:false,remoteFilter:false,remoteGroup:false,groupField:undefined,groupDir:"ASC",trailingBufferZone:25,leadingBufferZone:200,pageSize:undefined,currentPage:1,clearOnPageLoad:true,loading:false,sortOnFilter:true,buffered:false,purgePageCount:5,clearRemovedOnLoad:true,defaultPageSize:25,defaultViewSize:100,addRecordsOptions:{addRecords:true},statics:{recordIdFn:function(a){return a.internalId},recordIndexFn:function(a){return a.index},grouperIdFn:function(a){return a.id||a.property},groupIdFn:function(a){return a.key}},constructor:function(b){b=Ext.apply({},b);var d=this,g=b.groupers||d.groupers,a=b.groupField||d.groupField,c,e;e=b.data||d.data;if(e){d.inlineData=e;delete b.data}if(!g&&a){g=[{property:a,direction:b.groupDir||d.groupDir}]}delete b.groupers;d.groupers=new Ext.util.MixedCollection(false,Ext.data.Store.grouperIdFn);d.groupers.addAll(d.decodeGroupers(g));d.groups=new Ext.util.MixedCollection(false,Ext.data.Store.groupIdFn);d.callParent([b]);if(d.buffered){d.data=new d.PageMap({store:d,keyFn:Ext.data.Store.recordIdFn,pageSize:d.pageSize,maxSize:d.purgePageCount,listeners:{clear:d.onPageMapClear,scope:d}});d.pageRequests={};d.remoteSort=d.remoteGroup=d.remoteFilter=true;d.sortOnLoad=false;d.filterOnLoad=false}else{d.data=new Ext.util.MixedCollection({getKey:Ext.data.Store.recordIdFn,maintainIndices:true});d.data.pageSize=d.pageSize}if(d.remoteGroup){d.remoteSort=true}c=d.proxy;e=d.inlineData;if(!d.buffered&&!d.pageSize){d.pageSize=d.defaultPageSize}if(e){if(c instanceof Ext.data.proxy.Memory){c.data=e;d.read()}else{d.add.apply(d,[e])}if(!d.remoteSort){d.sort()}delete d.inlineData}else{if(d.autoLoad){Ext.defer(d.load,1,d,[typeof d.autoLoad==="object"?d.autoLoad:undefined])}}if(d.groupers.items.length&&!d.remoteGroup){d.group(null,null,true)}},onBeforeSort:function(){var a=this.groupers;if(a.getCount()>0){this.sort(a.items,"prepend",false)}},decodeGroupers:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,g=Ext.util.Grouper,b,c,a=[];for(c=0;c<d;c++){b=e[c];if(!(b instanceof g)){if(Ext.isString(b)){b={property:b}}b=Ext.apply({root:"data",direction:"ASC"},b);if(b.fn){b.sorterFn=b.fn}if(typeof b=="function"){b={sorterFn:b}}a.push(new g(b))}else{a.push(b)}}return a},group:function(c,j,k){var e=this,a,b,g=e.groupers.getRange(),d,h=g.length;for(d=0;d<h;d++){e.sorters.remove(g[d])}if(Ext.isArray(c)){b=c}else{if(Ext.isObject(c)){b=[c]}else{if(Ext.isString(c)){a=e.groupers.get(c);if(!a){a={property:c,direction:j||"ASC"};b=[a]}else{if(j===undefined){a.toggle()}else{a.setDirection(j)}}}}}if(b&&b.length){e.groupers.clear();e.groupers.addAll(e.decodeGroupers(b))}e.sorters.insert(0,e.groupers.getRange());if(e.remoteGroup){if(e.buffered){e.data.clear();e.loadPage(1,{groupChange:true})}else{e.load({scope:e,callback:k?null:e.fireGroupChange})}}else{e.doSort(e.generateComparator());e.constructGroups();if(!k){e.fireGroupChange()}}},getGroupField:function(){var b=this.groupers.first(),a;if(b){a=b.property}return a},constructGroups:function(){var e=this,g=this.data.items,c=g.length,b=e.groups,a,d,h,j;b.clear();for(d=0;d<c;++d){j=g[d];a=e.getGroupString(j);h=b.get(a);if(!h){h=new Ext.data.Group({key:a,store:e});b.add(a,h)}h.add(j)}},clearGrouping:function(){var c=this,d=c.groupers.items,b=d.length,a;for(a=0;a<b;a++){c.sorters.remove(d[a])}c.groupers.clear();if(c.remoteGroup){if(c.buffered){c.data.clear();c.loadPage(1,{groupChange:true})}else{c.load({scope:c,callback:c.fireGroupChange})}}else{c.groups.clear();if(c.sorters.length){c.sort()}else{c.fireEvent("datachanged",c);c.fireEvent("refresh",c)}c.fireGroupChange()}},isGrouped:function(){return this.groupers.getCount()>0},fireGroupChange:function(){this.fireEvent("groupchange",this,this.groupers)},getGroups:function(b){var d=this.data.items,a=d.length,c=[],k={},g,h,j,e;for(e=0;e<a;e++){g=d[e];h=this.getGroupString(g);j=k[h];if(j===undefined){j={name:h,children:[]};c.push(j);k[h]=j}j.children.push(g)}return b?k[b]:c},getGroupsForGrouper:function(g,b){var d=g.length,e=[],a,c,j,k,h;for(h=0;h<d;h++){j=g[h];c=b.getGroupString(j);if(c!==a){k={name:c,grouper:b,records:[]};e.push(k)}k.records.push(j);a=c}return e},getGroupsForGrouperIndex:function(c,j){var g=this,h=g.groupers,b=h.getAt(j),a=g.getGroupsForGrouper(c,b),e=a.length,d;if(j+1<h.length){for(d=0;d<e;d++){a[d].children=g.getGroupsForGrouperIndex(a[d].records,j+1)}}for(d=0;d<e;d++){a[d].depth=j}return a},getGroupData:function(a){var b=this;if(a!==false){b.sort()}return b.getGroupsForGrouperIndex(b.data.items,0)},getGroupString:function(a){var b=this.groupers.first();if(b){return b.getGroupString(a)}return""},insert:function(g,a){var j=this,k=false,d,h,e,b=j.modelDefaults,c;if(!Ext.isIterable(a)){c=a=[a]}else{c=[]}h=a.length;if(h){for(d=0;d<h;d++){e=a[d];if(!e.isModel){e=j.createModel(e)}c[d]=e;if(b){e.set(b)}e.join(j);k=k||e.phantom===true}j.data.insert(g,c);if(j.snapshot){j.snapshot.addAll(c)}if(j.requireSort){j.suspendEvents();j.sort();j.resumeEvents()}if(j.isGrouped()){j.updateGroupsOnAdd(c)}j.fireEvent("add",j,c,g);j.fireEvent("datachanged",j);if(j.autoSync&&k&&!j.autoSyncSuspended){j.sync()}}return c},updateGroupsOnAdd:function(c){var e=this,b=e.groups,a=c.length,d,j,g,h;for(d=0;d<a;++d){h=c[d];j=e.getGroupString(h);g=b.getByKey(j);if(!g){g=b.add(new Ext.data.Group({key:j,store:e}))}g.add(h)}},updateGroupsOnRemove:function(c){var e=this,b=e.groups,a=c.length,d,j,g,h;for(d=0;d<a;++d){h=c[d];j=e.getGroupString(h);g=b.getByKey(j);if(g){g.remove(h);if(g.records.length===0){b.remove(g)}}}},updateGroupsOnUpdate:function(e,c){var j=this,a=j.getGroupField(),l=j.getGroupString(e),b=j.groups,g,d,h,k;if(c&&Ext.Array.indexOf(c,a)!==-1){h=b.items;for(d=0,g=h.length;d<g;++d){k=h[d];if(k.contains(e)){k.remove(e);break}}b.getByKey(l);if(!k){k=b.add(new Ext.data.Group({key:l,store:j}))}k.add(e);j.suspendEvents();j.remove(e);j.addSorted(e);j.resumeEvents()}else{b.getByKey(l).setDirty()}},add:function(a){var d=this,b,c,e;if(Ext.isArray(a)){b=a}else{b=arguments}c=b.length;e=!d.remoteSort&&d.sorters&&d.sorters.items.length;if(e&&c===1){return[d.addSorted(d.createModel(b[0]))]}if(e){d.requireSort=true}b=d.insert(d.data.length,b);delete d.requireSort;return b},addSorted:function(a){var c=this,b=c.data.findInsertionIndex(a,c.generateComparator());c.insert(b,a);return a},createModel:function(a){if(!a.isModel){a=Ext.ModelManager.create(a,this.model)}return a},onUpdate:function(a,b,c){if(this.isGrouped()){this.updateGroupsOnUpdate(a,c)}},each:function(e,c){var g=this.data.items,b=g.length,a,h;for(h=0;h<b;h++){a=g[h];if(e.call(c||a,a,h,b)===false){break}}},remove:function(o,l,p){l=l===true;var u=this,j=false,d=u.snapshot,w=u.data,n=0,c,q=[],t=[],e=[],s,m,g,b,k,h,a=!p&&u.hasListeners.remove;if(o.isModel){o=[o];c=1}else{if(Ext.isIterable(o)){c=o.length}else{if(typeof o==="object"){k=true;n=o.start;c=o.end+1;h=c-n}}}if(!k){for(n=0;n<c;++n){b=o[n];if(typeof b=="number"){g=b;b=w.getAt(g)}else{g=u.indexOf(b)}if(b&&g>-1){q.push({record:b,index:g})}if(d){d.remove(b)}}q=Ext.Array.sort(q,function(y,x){var A=y.index,z=x.index;return A===x.index2?0:A<z?-1:1});n=0;c=q.length}for(;n<c;n++){if(k){b=w.getAt(n);g=n}else{s=q[n];b=s.record;g=s.index}t.push(b);e.push(g);m=b.phantom!==true;if(!l&&m){b.removedFrom=g;u.removed.push(b)}b.unjoin(u);g-=n;j=j||m;if(!k){w.removeAt(g);if(a){u.fireEvent("remove",u,b,g,!!l)}}}if(k){w.removeRange(o.start,h)}if(!p){u.fireEvent("bulkremove",u,t,e,!!l);u.fireEvent("datachanged",u)}if(!l&&u.autoSync&&j&&!u.autoSyncSuspended){u.sync()}},removeAt:function(a,c){var b=this,d=b.getCount();if(a<=d){if(arguments.length===1){b.remove([a])}else{if(c){b.remove({start:a,end:Math.min(a+c,d)-1})}}}},removeAll:function(a){var b=this;b.remove({start:0,end:b.getCount()-1},false,a);if(b.data){b.data.clear()}if(a!==true){b.fireEvent("clear",b)}},load:function(a){var b=this;a=a||{};if(typeof a=="function"){a={callback:a}}a.groupers=a.groupers||b.groupers.items;a.page=a.page||b.currentPage;a.start=a.start!==undefined?a.start:(a.page-1)*b.pageSize;a.limit=a.limit||b.pageSize;a.addRecords=a.addRecords||false;if(b.buffered){a.limit=b.viewSize||b.defaultViewSize;return b.loadToPrefetch(a)}return b.callParent([a])},reload:function(m){var h=this,j,b,g,l,d,a,k,c,e=h.getCount();if(!m){m={}}if(h.buffered){delete h.totalCount;a=function(){if(h.rangeCached(j,b)){h.loading=false;h.data.un("pageAdded",a);c=h.data.getRange(j,b);h.fireEvent("load",h,c,true)}};k=Math.ceil((h.leadingBufferZone+h.trailingBufferZone)/2);j=m.start||(e?h.getAt(0).index:0);b=j+(m.count||(e?e:h.pageSize))-1;g=h.getPageFromRecordIndex(Math.max(j-k,0));l=h.getPageFromRecordIndex(b+k);h.data.clear(true);if(h.fireEvent("beforeload",h,m)!==false){h.loading=true;h.data.on("pageAdded",a);for(d=g;d<=l;d++){h.prefetchPage(d,m)}}}else{return h.callParent(arguments)}},onProxyLoad:function(b){var d=this,c=b.getResultSet(),a=b.getRecords(),e=b.wasSuccessful();if(c){d.totalCount=c.total}d.loading=false;if(e){d.loadRecords(a,b)}if(d.hasListeners.load){d.fireEvent("load",d,a,e)}if(d.hasListeners.read){d.fireEvent("read",d,a,e)}Ext.callback(b.callback,b.scope||d,[a,b,e])},getNewRecords:function(){return this.data.filterBy(this.filterNew).items},getUpdatedRecords:function(){return this.data.filterBy(this.filterUpdated).items},filter:function(e,g){if(Ext.isString(e)){e={property:e,value:g}}var d=this,a=d.decodeFilters(e),b,h=d.sorters.length&&d.sortOnFilter&&!d.remoteSort,c=a.length;for(b=0;b<c;b++){d.filters.replace(a[b])}if(d.remoteFilter){delete d.totalCount;if(d.buffered){d.data.clear();d.loadPage(1)}else{d.currentPage=1;d.load()}}else{if(d.filters.getCount()){d.snapshot=d.snapshot||d.data.clone();d.data=d.snapshot.filter(d.filters.items);d.constructGroups();if(h){d.sort()}else{d.fireEvent("datachanged",d);d.fireEvent("refresh",d)}}}d.fireEvent("filterchange",d,d.filters.items)},clearFilter:function(a){var b=this;b.filters.clear();if(b.remoteFilter){if(a){return}delete b.totalCount;if(b.buffered){b.data.clear();b.loadPage(1)}else{b.currentPage=1;b.load()}}else{if(b.isFiltered()){b.data=b.snapshot;delete b.snapshot;b.constructGroups();if(a!==true){b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}}}b.fireEvent("filterchange",b,b.filters.items)},removeFilter:function(b,a){var c=this;if(!c.remoteFilter&&c.isFiltered()){if(b instanceof Ext.util.Filter){c.filters.remove(b)}else{c.filters.removeAtKey(b)}if(a!==false){if(c.filters.getCount()){c.filter()}else{c.clearFilter()}}c.fireEvent("filterchange",c,c.filters.items)}},addFilter:function(g,a){var e=this,b,c,d;b=e.decodeFilters(g);d=b.length;for(c=0;c<d;c++){e.filters.replace(b[c])}if(a!==false){e.filter()}e.fireEvent("filterchange",e,e.filters.items)},isFiltered:function(){var a=this.snapshot;return !!(a&&a!==this.data)},filterBy:function(b,a){var c=this;c.snapshot=c.snapshot||c.data.clone();c.data=c.queryBy(b,a||c);c.fireEvent("datachanged",c);c.fireEvent("refresh",c)},queryBy:function(b,a){var c=this;return(c.snapshot||c.data).filterBy(b,a||c)},query:function(h,g,j,a,e){var d=this,b=d.createFilterFn(h,g,j,a,e),c=d.queryBy(b);if(!c){c=new Ext.util.MixedCollection}return c},loadData:function(e,a){var d=e.length,c=[],b;for(b=0;b<d;b++){c.push(this.createModel(e[b]))}this.loadRecords(c,a?this.addRecordsOptions:undefined)},loadRawData:function(e,b){var d=this,a=d.proxy.reader.read(e),c=a.records;if(a.success){d.totalCount=a.total;d.loadRecords(c,b?d.addRecordsOptions:undefined)}},loadRecords:function(b,c){var h=this,d=0,g=b.length,j,e,a=h.snapshot;if(c){j=c.start;e=c.addRecords}if(!e){delete h.snapshot;h.clearData(true)}else{if(a){a.addAll(b)}}h.data.addAll(b);if(j!==undefined){for(;d<g;d++){b[d].index=j+d;b[d].join(h)}}else{for(;d<g;d++){b[d].join(h)}}h.suspendEvents();if(h.filterOnLoad&&!h.remoteFilter){h.filter()}if(h.sortOnLoad&&!h.remoteSort){h.sort(undefined,undefined,undefined,true)}h.resumeEvents();if(h.isGrouped()){h.constructGroups()}h.fireEvent("datachanged",h);h.fireEvent("refresh",h)},loadPage:function(c,a){var b=this;b.currentPage=c;a=Ext.apply({page:c,start:(c-1)*b.pageSize,limit:b.pageSize,addRecords:!b.clearOnPageLoad},a);if(b.buffered){a.limit=b.viewSize||b.defaultViewSize;return b.loadToPrefetch(a)}b.read(a)},nextPage:function(a){this.loadPage(this.currentPage+1,a)},previousPage:function(a){this.loadPage(this.currentPage-1,a)},clearData:function(d){var c=this,a,b;if(!c.buffered){a=c.data.items;b=a.length;while(b--){a[b].unjoin(c)}}c.data.clear();if(d!==true||c.clearRemovedOnLoad){c.removed.length=0}},loadToPrefetch:function(n){var j=this,e,b,l,c=n,k=n.start,a=n.start+n.limit-1,g=Math.min(a,n.start+(j.viewSize||n.limit)-1),h=j.getPageFromRecordIndex(Math.max(k-j.trailingBufferZone,0)),m=j.getPageFromRecordIndex(a+j.leadingBufferZone),d=function(){if(j.rangeCached(k,g)){j.loading=false;b=j.data.getRange(k,g);j.data.un("pageAdded",d);if(j.hasListeners.guaranteedrange){j.guaranteeRange(k,g,n.callback,n.scope)}if(n.callback){n.callback.call(n.scope||j,b,k,a,n)}j.fireEvent("datachanged",j);j.fireEvent("refresh",j);j.fireEvent("load",j,b,true);if(n.groupChange){j.fireGroupChange()}}};if(j.fireEvent("beforeload",j,n)!==false){delete j.totalCount;j.loading=true;if(n.callback){c=Ext.apply({},n);delete n.callback}j.on("prefetch",function(p,q,o){if(q){if(l=j.getTotalCount()){j.data.on("pageAdded",d);g=Math.min(g,l-1);m=j.getPageFromRecordIndex(g);for(e=h+1;e<=m;++e){j.prefetchPage(e,c)}}else{j.fireEvent("datachanged",j);j.fireEvent("refresh",j);j.fireEvent("load",j,p,true)}}else{j.fireEvent("load",j,p,false)}},null,{single:true});j.prefetchPage(h,c)}},prefetch:function(c){var e=this,a=e.pageSize,d,b;if(a){if(e.lastPageSize&&a!=e.lastPageSize){Ext.Error.raise("pageSize cannot be dynamically altered")}if(!e.data.pageSize){e.data.pageSize=a}}else{e.pageSize=e.data.pageSize=a=c.limit}e.lastPageSize=a;if(!c.page){c.page=e.getPageFromRecordIndex(c.start);c.start=(c.page-1)*a;c.limit=Math.ceil(c.limit/a)*a}if(!e.pageRequests[c.page]){c=Ext.apply({action:"read",filters:e.filters.items,sorters:e.sorters.items,groupers:e.groupers.items,generation:e.data.generation},c);b=new Ext.data.Operation(c);if(e.fireEvent("beforeprefetch",e,b)!==false){d=e.proxy;e.pageRequests[c.page]=d.read(b,e.onProxyPrefetch,e);if(d.isSynchronous){delete e.pageRequests[c.page]}}}return e},onPageMapClear:function(){var d=this,c=d.wasLoading,a=d.pageRequests,b,e;if(d.data.events.pageadded){d.data.events.pageadded.clearListeners()}d.loading=true;d.totalCount=0;for(e in a){if(a.hasOwnProperty(e)){b=a[e];delete a[e];delete b.callback}}d.fireEvent("clear",d);d.loading=c},prefetchPage:function(e,b){var d=this,a=d.pageSize||d.defaultPageSize,g=(e-1)*d.pageSize,c=d.totalCount;if(c!==undefined&&d.getCount()===c){return}d.prefetch(Ext.applyIf({page:e,start:g,limit:a},b))},onProxyPrefetch:function(b){var d=this,c=b.getResultSet(),a=b.getRecords(),g=b.wasSuccessful(),e=b.page;if(b.generation===d.data.generation){if(c){d.totalCount=c.total;d.fireEvent("totalcountchange",d.totalCount)}if(e!==undefined){delete d.pageRequests[e]}d.loading=false;d.fireEvent("prefetch",d,a,g,b);if(g){d.cachePage(a,b.page)}Ext.callback(b.callback,b.scope||d,[a,b,g])}},cachePage:function(b,e){var d=this,a=b.length,c;if(!Ext.isDefined(d.totalCount)){d.totalCount=b.length;d.fireEvent("totalcountchange",d.totalCount)}for(c=0;c<a;c++){b[c].join(d)}d.data.addPage(e,b)},rangeCached:function(b,a){return this.data&&this.data.hasRange(b,a)},pageCached:function(a){return this.data&&this.data.hasPage(a)},rangeSatisfied:function(b,a){return this.rangeCached(b,a)},getPageFromRecordIndex:function(a){return Math.floor(a/this.pageSize)+1},onGuaranteedRange:function(d){var e=this,b=e.getTotalCount(),g=d.prefetchStart,a=d.prefetchEnd>b-1?b-1:d.prefetchEnd,c;a=Math.max(0,a);c=e.data.getRange(g,a);if(d.fireEvent!==false){e.fireEvent("guaranteedrange",c,g,a,d)}if(d.callback){d.callback.call(d.scope||e,c,g,a,d)}},guaranteeRange:function(e,a,d,c,b){b=Ext.apply({callback:d,scope:c},b);this.getRange(e,a,b)},prefetchRange:function(g,b){var d=this,c,a,e;if(!d.rangeCached(g,b)){c=d.getPageFromRecordIndex(g);a=d.getPageFromRecordIndex(b);d.data.maxSize=d.purgePageCount?a-c+1+d.purgePageCount:0;for(e=c;e<=a;e++){if(!d.pageCached(e)){d.prefetchPage(e)}}}},primeCache:function(d,a,c){var b=this;if(c===-1){d=Math.max(d-b.leadingBufferZone,0);a=Math.min(a+b.trailingBufferZone,b.totalCount-1)}else{if(c===1){d=Math.max(Math.min(d-b.trailingBufferZone,b.totalCount-b.pageSize),0);a=Math.min(a+b.leadingBufferZone,b.totalCount-1)}else{d=Math.min(Math.max(Math.floor(d-(b.leadingBufferZone+b.trailingBufferZone)/2),0),b.totalCount-b.pageSize);a=Math.min(Math.max(Math.ceil(a+(b.leadingBufferZone+b.trailingBufferZone)/2),0),b.totalCount-1)}}b.prefetchRange(d,a)},sort:function(){var a=this;if(a.buffered&&a.remoteSort){a.data.clear()}return a.callParent(arguments)},doSort:function(b){var e=this,a,d,c;if(e.remoteSort){if(e.buffered){e.data.clear();e.loadPage(1)}else{e.load()}}else{e.data.sortBy(b);if(!e.buffered){a=e.getRange();d=a.length;for(c=0;c<d;c++){a[c].index=c}}e.fireEvent("datachanged",e);e.fireEvent("refresh",e)}},find:function(e,d,h,g,a,c){var b=this.createFilterFn(e,d,g,a,c);return b?this.data.findIndexBy(b,null,h):-1},findRecord:function(){var b=this,a=b.find.apply(b,arguments);return a!==-1?b.getAt(a):null},createFilterFn:function(d,c,e,a,b){if(Ext.isEmpty(c)){return false}c=this.data.createValueMatcher(c,e,a,b);return function(g){return c.test(g.data[d])}},findExact:function(b,a,c){return this.data.findIndexBy(function(d){return d.isEqual(d.get(b),a)},this,c)},findBy:function(b,a,c){return this.data.findIndexBy(b,a,c)},collect:function(b,a,c){var d=this,e=c===true&&d.snapshot?d.snapshot:d.data;return e.collect(b,"data",a)},getCount:function(){return this.data.getCount()},getTotalCount:function(){return this.totalCount||0},getAt:function(a){return this.data.getAt(a)},getRange:function(c,g,l){var h=this,j,b,d=h.totalCount-1,e=h.lastRequestStart,a,k;l=Ext.apply({prefetchStart:c,prefetchEnd:g},l);if(h.buffered){g=g>=h.totalCount?d:g;j=c===0?0:c-1;b=g===d?g:g+1;h.lastRequestStart=c;if(h.rangeCached(j,b)){h.onGuaranteedRange(l);k=h.data.getRange(c,g)}else{h.fireEvent("cachemiss",h,c,g);a=function(n,m){if(h.rangeCached(j,b)){h.fireEvent("cachefilled",h,c,g);h.data.un("pageAdded",a);h.onGuaranteedRange(l)}};h.data.on("pageAdded",a);h.prefetchRange(c,g)}h.primeCache(c,g,c<e?-1:1)}else{k=h.data.getRange(c,g);if(l.callback){l.callback.call(l.scope||h,k,c,g,l)}}return k},getById:function(b){var a=(this.snapshot||this.data).findBy(function(c){return c.getId()===b});return a},indexOf:function(a){return this.data.indexOf(a)},indexOfTotal:function(a){var b=a.index;if(b||b===0){return b}return this.indexOf(a)},indexOfId:function(a){return this.indexOf(this.getById(a))},first:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(c){return c.length?c[0]:undefined},b,true)}else{return b.data.first()}},last:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(d){var c=d.length;return c?d[c-1]:undefined},b,true)}else{return b.data.last()}},sum:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getSum,b,true,[c])}else{return b.getSum(b.data.items,c)}},getSum:function(b,e){var d=0,c=0,a=b.length;for(;c<a;++c){d+=b[c].get(e)}return d},count:function(a){var b=this;if(a&&b.isGrouped()){return b.aggregate(function(c){return c.length},b,true)}else{return b.getCount()}},min:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getMin,b,true,[c])}else{return b.getMin(b.data.items,c)}},getMin:function(b,g){var d=1,a=b.length,e,c;if(a>0){c=b[0].get(g)}for(;d<a;++d){e=b[d].get(g);if(e<c){c=e}}return c},max:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getMax,b,true,[c])}else{return b.getMax(b.data.items,c)}},getMax:function(c,g){var d=1,b=c.length,e,a;if(b>0){a=c[0].get(g)}for(;d<b;++d){e=c[d].get(g);if(e>a){a=e}}return a},average:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getAverage,b,true,[c])}else{return b.getAverage(b.data.items,c)}},getAverage:function(b,e){var c=0,a=b.length,d=0;if(b.length>0){for(;c<a;++c){d+=b[c].get(e)}return d/a}return 0},aggregate:function(h,k,e,g){g=g||[];if(e&&this.isGrouped()){var a=this.getGroups(),d=a.length,b={},j,c;for(c=0;c<d;++c){j=a[c];b[j.name]=this.getAggregate(h,k||this,j.children,g)}return b}else{return this.getAggregate(h,k,this.data.items,g)}},getAggregate:function(d,c,a,b){b=b||[];return d.apply(c||this,[a].concat(b))},onIdChanged:function(d,c,b,a){this.data.updateKey(a,b);this.callParent(arguments)},commitChanges:function(){var c=this,d=c.getModifiedRecords(),a=d.length,b=0;for(;b<a;b++){d[b].commit()}c.removed.length=0},filterNewOnly:function(a){return a.phantom===true},getRejectRecords:function(){return Ext.Array.push(this.data.filterBy(this.filterNewOnly).items,this.getUpdatedRecords())},rejectChanges:function(){var c=this,d=c.getRejectRecords(),a=d.length,b=0,e;for(;b<a;b++){e=d[b];e.reject();if(e.phantom){c.remove(e)}}d=c.removed;a=d.length;for(b=0;b<a;b++){e=d[b];c.insert(e.removedFrom||0,e);e.reject()}c.removed.length=0}},function(){Ext.regStore("ext-empty-store",{fields:[],proxy:"memory"});this.prototype.PageMap=new Ext.Class({extend:"Ext.util.LruCache",clear:function(a){var b=this;b.generation=(b.generation||0)+1;b.callParent(arguments)},forEach:function(k,l){var h=this,d=Ext.Object.getKeys(h.map),a=d.length,c,b,e,g;for(c=0;c<a;c++){d[c]=Number(d[c])}Ext.Array.sort(d);l=l||h;for(c=0;c<a;c++){e=h.getPage(d[c]);g=e.length;for(b=0;b<g;b++){if(k.call(l,e[b])===false){return}}}},findBy:function(c,b){var d=this,a=null;b=b||d;d.forEach(function(e){if(c.call(b,e)){a=e;return false}});return a},getPageFromRecordIndex:this.prototype.getPageFromRecordIndex,addAll:function(a){this.addPage(1,a)},addPage:function(a,b){var d=this,g=a+Math.floor((b.length-1)/d.pageSize),c,e;for(c=0;a<=g;a++,c+=d.pageSize){e=Ext.Array.slice(b,c,c+d.pageSize);d.add(a,e);d.fireEvent("pageAdded",a,e)}},getCount:function(){var a=this.callParent();if(a){a=(a-1)*this.pageSize+this.last.value.length}return a},indexOf:function(a){return a?a.index:-1},insert:function(){},remove:function(){},removeAt:function(){},getPage:function(a){return this.get(a)},hasRange:function(d,b){var a=this.getPageFromRecordIndex(d),c=this.getPageFromRecordIndex(b);for(;a<=c;a++){if(!this.hasPage(a)){return false}}return true},hasPage:function(a){return !!this.get(a)},getAt:function(a){return this.getRange(a,a)[0]},getRange:function(a,b){if(!this.hasRange(a,b)){Ext.Error.raise("PageMap asked for range which it does not have")}var j=this,m=j.getPageFromRecordIndex(a),e=j.getPageFromRecordIndex(b),c=(m-1)*j.pageSize,o=e*j.pageSize-1,k=m,p=[],n,h,l,d=0,g;for(;k<=e;k++){if(k==m){n=a-c;l=true}else{n=0;l=false}if(k==e){h=j.pageSize-(o-b);l=true}if(l){Ext.Array.push(p,Ext.Array.slice(j.getPage(k),n,h))}else{Ext.Array.push(p,j.getPage(k))}}for(g=p.length;d<g;d++){p[d].index=a++}return p}})});Ext.define("Ext.data.reader.Array",{extend:Ext.data.reader.Json,alternateClassName:"Ext.data.ArrayReader",alias:"reader.array",totalProperty:undefined,successProperty:undefined,createFieldAccessExpression:function(e,c,b){var d=e.mapping==null?e.originalIndex:e.mapping,a;if(typeof d==="function"){a=c+".mapping("+b+", this)"}else{if(isNaN(d)){d='"'+d+'"'}a=b+"["+d+"]"}return a}});Ext.define("Ext.data.ArrayStore",{extend:Ext.data.Store,alias:"store.array",constructor:function(a){a=Ext.apply({proxy:{type:"memory",reader:"array"}},a);this.callParent([a])},loadData:function(e,a){if(this.expandData===true){var d=[],b=0,c=e.length;for(;b<c;b++){d[d.length]=[e[b]]}e=d}this.callParent([e,a])}},function(){Ext.data.SimpleStore=Ext.data.ArrayStore});Ext.define("Ext.data.Batch",{mixins:{observable:Ext.util.Observable},autoStart:false,pauseOnException:false,current:-1,total:0,isRunning:false,isComplete:false,hasException:false,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);b.operations=[];b.exceptions=[]},add:function(a){this.total++;a.setBatch(this);this.operations.push(a);return this},start:function(a){var b=this;if(b.isRunning){return b}b.exceptions.length=0;b.hasException=false;b.isRunning=true;return b.runOperation(Ext.isDefined(a)?a:b.current+1)},retry:function(){return this.start(this.current)},runNextOperation:function(){return this.runOperation(this.current+1)},pause:function(){this.isRunning=false;return this},runOperation:function(d){var e=this,c=e.operations,b=c[d],a;if(b===undefined){e.isRunning=false;e.isComplete=true;e.fireEvent("complete",e,c[c.length-1])}else{e.current=d;a=function(g){var h=g.hasException();if(h){e.hasException=true;e.exceptions.push(g);e.fireEvent("exception",e,g)}if(h&&e.pauseOnException){e.pause()}else{g.setCompleted();e.fireEvent("operationcomplete",e,g);e.runNextOperation()}};b.setStarted();e.proxy[b.action](b,a,e)}return e}});Ext.define("Ext.data.BufferStore",{extend:Ext.data.Store,alias:"store.buffer",sortOnLoad:false,filterOnLoad:false,constructor:function(){Ext.Error.raise("The BufferStore class has been deprecated. Instead, specify the buffered config option on Ext.data.Store")}});Ext.define("Ext.direct.Manager",{singleton:true,mixins:{observable:Ext.util.Observable},exceptions:{TRANSPORT:"xhr",PARSE:"parse",LOGIN:"login",SERVER:"exception"},constructor:function(){var a=this;a.addEvents("event","exception");a.transactions=new Ext.util.MixedCollection;a.providers=new Ext.util.MixedCollection;a.mixins.observable.constructor.call(a)},addProvider:function(g){var d=this,b=arguments,e=d.relayers||(d.relayers={}),c,a;if(b.length>1){for(c=0,a=b.length;c<a;++c){d.addProvider(b[c])}return}if(!g.isProvider){g=Ext.create("direct."+g.type+"provider",g)}d.providers.add(g);g.on("data",d.onProviderData,d);if(g.relayedEvents){e[g.id]=d.relayEvents(g,g.relayedEvents)}if(!g.isConnected()){g.connect()}return g},getProvider:function(a){return a.isProvider?a:this.providers.get(a)},removeProvider:function(d){var b=this,a=b.providers,c=b.relayers,e;d=d.isProvider?d:a.get(d);if(d){d.un("data",b.onProviderData,b);e=d.id;if(c[e]){c[e].destroy();delete c[e]}a.remove(d);return d}return null},addTransaction:function(a){this.transactions.add(a);return a},removeTransaction:function(b){var a=this;b=a.getTransaction(b);a.transactions.remove(b);return b},getTransaction:function(a){return typeof a==="object"?a:this.transactions.get(a)},onProviderData:function(e,d){var c=this,b,a;if(Ext.isArray(d)){for(b=0,a=d.length;b<a;++b){c.onProviderData(e,d[b])}return}if(d.name&&d.name!="event"&&d.name!="exception"){c.fireEvent(d.name,d)}else{if(d.status===false){c.fireEvent("exception",d)}}c.fireEvent("event",d,e)},parseMethod:function(c){if(Ext.isString(c)){var e=c.split("."),b=0,a=e.length,d=Ext.global;while(d&&b<a){d=d[e[b]];++b}c=Ext.isFunction(d)?d:null}return c||null}},function(){Ext.Direct=Ext.direct.Manager});Ext.define("Ext.data.proxy.Direct",{extend:Ext.data.proxy.Server,alternateClassName:"Ext.data.DirectProxy",alias:"proxy.direct",paramOrder:undefined,paramsAsHash:true,directFn:undefined,paramOrderRe:/[\s,|]/,constructor:function(b){var c=this,a;c.callParent(arguments);a=c.paramOrder;if(Ext.isString(a)){c.paramOrder=a.split(c.paramOrderRe)}},resolveMethods:function(){var d=this,c=d.directFn,b=d.api,a=Ext.direct.Manager,e;if(c){e=d.directFn=a.parseMethod(c);if(!Ext.isFunction(e)){Ext.Error.raise("Cannot resolve directFn "+c)}}else{if(b){for(c in b){if(b.hasOwnProperty(c)){e=b[c];b[c]=a.parseMethod(e);if(!Ext.isFunction(b[c])){Ext.Error.raise("Cannot resolve Direct api "+c+" method "+e)}}}}}d.methodsResolved=true},doRequest:function(d,k,l){var h=this,b=h.getWriter(),e=h.buildRequest(d),c=e.params,g=[],j,a;if(!h.methodsResolved){h.resolveMethods()}j=h.api[e.action]||h.directFn;if(d.allowWrite()){e=b.write(e)}if(d.action=="read"){a=j.directCfg.method;g=a.getArgs(c,h.paramOrder,h.paramsAsHash)}else{g.push(e.jsonData)}Ext.apply(e,{args:g,directFn:j});g.push(h.createRequestCallback(e,d,k,l),h);j.apply(window,g)},applyEncoding:Ext.identityFn,createRequestCallback:function(d,a,e,b){var c=this;return function(h,g){c.processResponse(g.status,a,d,g,e,b)}},extractResponseData:function(a){return Ext.isDefined(a.result)?a.result:a.data},setException:function(b,a){b.setException(a.message)},buildUrl:function(){return""}});Ext.define("Ext.data.DirectStore",{extend:Ext.data.Store,alias:"store.direct",constructor:function(a){a=Ext.apply({},a);if(!a.proxy){var b={type:"direct",reader:{type:"json"}};Ext.copyTo(b,a,"paramOrder,paramsAsHash,directFn,api,simpleSortMode");Ext.copyTo(b.reader,a,"totalProperty,root,idProperty");a.proxy=b}this.callParent([a])}});Ext.define("Ext.data.JsonP",{singleton:true,requestCount:0,requests:{},timeout:30000,disableCaching:true,disableCachingParam:"_dc",callbackKey:"callback",request:function(o){o=Ext.apply({},o);var k=this,d=Ext.isDefined(o.disableCaching)?o.disableCaching:k.disableCaching,h=o.disableCachingParam||k.disableCachingParam,c=++k.requestCount,m=o.callbackName||"callback"+c,j=o.callbackKey||k.callbackKey,n=Ext.isDefined(o.timeout)?o.timeout:k.timeout,e=o.params||{},b=o.url,a=Ext.name,g,l;if(d&&!e[h]){e[h]=(new Date).getTime()}else{e=o.params}e[j]=a+".data.JsonP."+m;l=k.createScript(b,e,o);k.requests[c]=g={url:b,params:e,script:l,id:c,scope:o.scope,success:o.success,failure:o.failure,callback:o.callback,callbackKey:j,callbackName:m};if(n>0){g.timeout=setTimeout(Ext.bind(k.handleTimeout,k,[g]),n)}k.setupErrorHandling(g);k[m]=Ext.bind(k.handleResponse,k,[g],true);k.loadScript(g);return g},abort:function(c){var b=this,d=b.requests,a;if(c){if(!c.id){c=d[c]}b.handleAbort(c)}else{for(a in d){if(d.hasOwnProperty(a)){b.abort(d[a])}}}},setupErrorHandling:function(a){a.script.onerror=Ext.bind(this.handleError,this,[a])},handleAbort:function(a){a.errorType="abort";this.handleResponse(null,a)},handleError:function(a){a.errorType="error";this.handleResponse(null,a)},cleanupErrorHandling:function(a){a.script.onerror=null},handleTimeout:function(a){a.errorType="timeout";this.handleResponse(null,a)},handleResponse:function(a,b){var c=true;if(b.timeout){clearTimeout(b.timeout)}delete this[b.callbackName];delete this.requests[b.id];this.cleanupErrorHandling(b);Ext.fly(b.script).remove();if(b.errorType){c=false;Ext.callback(b.failure,b.scope,[b.errorType])}else{Ext.callback(b.success,b.scope,[a])}Ext.callback(b.callback,b.scope,[c,a,b.errorType]);Ext.EventManager.idleEvent.fire()},createScript:function(c,d,b){var a=document.createElement("script");a.setAttribute("src",Ext.urlAppend(c,Ext.Object.toQueryString(d)));a.setAttribute("async",true);a.setAttribute("type","text/javascript");return a},loadScript:function(a){Ext.getHead().appendChild(a.script)}});Ext.define("Ext.data.proxy.JsonP",{extend:Ext.data.proxy.Server,alternateClassName:"Ext.data.ScriptTagProxy",alias:["proxy.jsonp","proxy.scripttag"],defaultWriterType:"base",callbackKey:"callback",recordParam:"records",autoAppendParams:true,constructor:function(){this.addEvents("exception");this.callParent(arguments)},doRequest:function(a,g,b){var d=this,c=d.buildRequest(a),e=c.params;Ext.apply(c,{callbackKey:d.callbackKey,timeout:d.timeout,scope:d,disableCaching:false,callback:d.createRequestCallback(c,a,g,b)});if(d.autoAppendParams){c.params={}}c.jsonp=Ext.data.JsonP.request(c);c.params=e;a.setStarted();d.lastRequest=c;return c},createRequestCallback:function(d,a,e,b){var c=this;return function(j,g,h){delete c.lastRequest;c.processResponse(j,a,d,g,e,b)}},setException:function(b,a){b.setException(b.request.jsonp.errorType)},buildUrl:function(h){var k=this,a=k.callParent(arguments),d=h.records,e=k.getWriter(),g,c,b,j;if(e&&h.operation.allowWrite()){h=e.write(h)}g=h.params;c=g.filters,delete g.filters;if(c&&c.length){for(j=0;j<c.length;j++){b=c[j];if(b.value){g[b.property]=b.value}}}if((!e||!e.encode)&&Ext.isArray(d)&&d.length>0){g[k.recordParam]=k.encodeRecords(d)}if(k.autoAppendParams){a=Ext.urlAppend(a,Ext.Object.toQueryString(g))}return a},abort:function(){var a=this.lastRequest;if(a){Ext.data.JsonP.abort(a.jsonp)}},encodeRecords:function(b){var d=[],c=0,a=b.length;for(;c<a;c++){d.push(Ext.encode(b[c].getData()))}return d}});Ext.define("Ext.data.JsonPStore",{extend:Ext.data.Store,alias:"store.jsonp",constructor:function(a){a=Ext.apply({proxy:{type:"jsonp",reader:"json"}},a);this.callParent([a])}});Ext.define("Ext.data.JsonStore",{extend:Ext.data.Store,alias:"store.json",constructor:function(a){a=Ext.apply({proxy:{type:"ajax",reader:"json",writer:"json"}},a);this.callParent([a])}});Ext.define("Ext.data.NodeInterface",{statics:{decorate:function(b){var a,c,d;if(typeof b=="string"){b=Ext.ModelManager.getModel(b)}else{if(b.isModel){b=Ext.ModelManager.getModel(b.modelName)}}if(b.prototype.isNode){return}a=b.prototype.idProperty;c=b.prototype.fields.get(a);d=b.prototype.fields.get(a).type.type;b.override(this.getPrototypeBody());this.applyFields(b,[{name:"parentId",type:d,defaultValue:null,useNull:c.useNull},{name:"index",type:"int",defaultValue:0,persist:false,convert:null},{name:"depth",type:"int",defaultValue:0,persist:false,convert:null},{name:"expanded",type:"bool",defaultValue:false,persist:false,convert:null},{name:"expandable",type:"bool",defaultValue:true,persist:false,convert:null},{name:"checked",type:"auto",defaultValue:null,persist:false,convert:null},{name:"leaf",type:"bool",defaultValue:false},{name:"cls",type:"string",defaultValue:"",persist:false,convert:null},{name:"iconCls",type:"string",defaultValue:"",persist:false,convert:null},{name:"icon",type:"string",defaultValue:"",persist:false,convert:null},{name:"root",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"isLast",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"isFirst",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"allowDrop",type:"boolean",defaultValue:true,persist:false,convert:null},{name:"allowDrag",type:"boolean",defaultValue:true,persist:false,convert:null},{name:"loaded",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"loading",type:"boolean",defaultValue:false,persist:false,convert:null},{name:"href",type:"string",defaultValue:"",persist:false,convert:null},{name:"hrefTarget",type:"string",defaultValue:"",persist:false,convert:null},{name:"qtip",type:"string",defaultValue:"",persist:false,convert:null},{name:"qtitle",type:"string",defaultValue:"",persist:false,convert:null},{name:"qshowDelay",type:"int",defaultValue:0,persist:false,convert:null},{name:"children",type:"auto",defaultValue:null,persist:false,convert:null}])},applyFields:function(c,b){var h=c.prototype,a=h.fields,g=a.keys,e=b.length,j,d;for(d=0;d<e;d++){j=b[d];if(!Ext.Array.contains(g,j.name)){a.add(new Ext.data.Field(j))}}},getPrototypeBody:function(){var a={idchanged:true,append:true,remove:true,move:true,insert:true,beforeappend:true,beforeremove:true,beforemove:true,beforeinsert:true,expand:true,collapse:true,beforeexpand:true,beforecollapse:true,sort:true,rootchange:true};return{isNode:true,constructor:function(){var b=this;b.callParent(arguments);b.firstChild=b.lastChild=b.parentNode=b.previousSibling=b.nextSibling=null;b.childNodes=[];return b},createNode:function(b){if(!b.isModel){b=Ext.ModelManager.create(b,this.modelName)}if(!b.childNodes){b.firstChild=b.lastChild=b.parentNode=b.previousSibling=b.nextSibling=null;b.childNodes=[]}return b},isLeaf:function(){return this.get("leaf")===true},setFirstChild:function(b){this.firstChild=b},setLastChild:function(b){this.lastChild=b},updateInfo:function(j,d){var n=this,m=n.data.depth,p={},c=n.childNodes,h=c.length,k,g=n.phantom,e=n[n.persistenceProperty],l,b,o;if(!d){Ext.Error.raise("NodeInterface expects update info to be passed")}for(l in d){o=n.fields.get(l);b=d[l];if(o&&o.persist){n.dirty=n.dirty||!n.isEqual(e[l],b)}e[l]=b}if(j){n.commit();n.phantom=g}if(n.data.depth!==m){p={depth:n.data.depth+1};for(k=0;k<h;k++){c[k].updateInfo(j,p)}}},isLast:function(){return this.get("isLast")},isFirst:function(){return this.get("isFirst")},hasChildNodes:function(){return !this.isLeaf()&&this.childNodes.length>0},isExpandable:function(){var b=this;if(b.get("expandable")){return !(b.isLeaf()||b.isLoaded()&&!b.hasChildNodes())}return false},triggerUIUpdate:function(){this.afterEdit([])},appendChild:function(c,l,d){var j=this,e,h,g,k,b,m={isLast:true,parentId:j.getId(),depth:(j.data.depth||0)+1};if(Ext.isArray(c)){j.callStore("suspendAutoSync");for(e=0,h=c.length-1;e<h;e++){j.appendChild(c[e],l,d)}j.callStore("resumeAutoSync");j.appendChild(c[h],l,d)}else{c=j.createNode(c);if(l!==true&&j.fireEventArgs("beforeappend",[j,c])===false){return false}g=j.childNodes.length;k=c.parentNode;if(k){if(l!==true&&c.fireEventArgs("beforemove",[c,k,j,g])===false){return false}k.removeChild(c,false,false,true)}Ext.suspendLayouts();g=j.childNodes.length;if(g===0){j.setFirstChild(c)}j.childNodes[g]=c;c.parentNode=j;c.nextSibling=null;j.setLastChild(c);b=j.childNodes[g-1];if(b){c.previousSibling=b;b.nextSibling=c;b.updateInfo(d,{isLast:false});b.triggerUIUpdate()}else{c.previousSibling=null}m.isFirst=g===0;m.index=g;c.updateInfo(d,m);if(!j.isLoaded()){j.set("loaded",true)}else{if(j.childNodes.length===1){j.triggerUIUpdate()}}if(g&&j.childNodes[g-1].isExpanded()){j.childNodes[g-1].cascadeBy(j.triggerUIUpdate)}if(!c.isLeaf()&&c.phantom){c.set("loaded",true)}Ext.resumeLayouts(true);if(l!==true){j.fireEventArgs("append",[j,c,g]);if(k){c.fireEventArgs("move",[c,k,j,g])}}return c}},getOwnerTree:function(){var c=this,b;while(c.parentNode){c=c.parentNode}b=c.store;if(b){if(b.treeStore){b=b.treeStore}if(b.tree){return b.ownerTree}}return undefined},removeChild:function(c,j,l,k){var h=this,g=h.indexOf(c),e,d,b;if(g===-1||l!==true&&h.fireEventArgs("beforeremove",[h,c,!!k])===false){return false}Ext.suspendLayouts();Ext.Array.erase(h.childNodes,g,1);if(h.firstChild===c){h.setFirstChild(c.nextSibling)}if(h.lastChild===c){h.setLastChild(c.previousSibling)}if(b=c.previousSibling){c.previousSibling.nextSibling=c.nextSibling}if(c.nextSibling){c.nextSibling.previousSibling=c.previousSibling;if(g===0){c.nextSibling.updateInfo(false,{isFirst:true})}for(e=g,d=h.childNodes.length;e<d;e++){h.childNodes[e].updateInfo(false,{index:e})}}else{if(b){b.updateInfo(false,{isLast:true});if(b.isExpanded()){b.cascadeBy(h.triggerUIUpdate)}else{b.triggerUIUpdate()}}}if(!h.childNodes.length){h.triggerUIUpdate()}Ext.resumeLayouts(true);if(l!==true){c.removeContext={parentNode:c.parentNode,previousSibling:c.previousSibling,nextSibling:c.nextSibling};c.previousSibling=c.nextSibling=c.parentNode=null;h.fireEventArgs("remove",[h,c,!!k]);c.removeContext=null}if(j){c.destroy(true)}else{c.clear()}return c},copy:function(e,d){var h=this,c=h.callParent(arguments),b=h.childNodes?h.childNodes.length:0,g;if(d){for(g=0;g<b;g++){c.appendChild(h.childNodes[g].copy(undefined,true))}}return c},clear:function(b){var c=this;c.parentNode=c.previousSibling=c.nextSibling=null;if(b){c.firstChild=c.lastChild=null}},destroy:function(c){var e=this,d=e.destroyOptions,b=e.childNodes,g=b.length,h;if(c===true){e.clear(true);for(h=0;h<g;h++){b[h].destroy(true)}e.childNodes=null;delete e.destroyOptions;e.callParent([d])}else{e.destroyOptions=c;e.remove(true)}},insertBefore:function(c,h,m){var j=this,g=j.indexOf(h),k=c.parentNode,l=g,d,b,e;if(!h){return j.appendChild(c)}if(c===h){return false}c=j.createNode(c);if(m!==true&&j.fireEventArgs("beforeinsert",[j,c,h])===false){return false}if(k===j&&j.indexOf(c)<g){l--}if(k){if(m!==true&&c.fireEventArgs("beforemove",[c,k,j,g,h])===false){return false}k.removeChild(c,false,false,true)}if(l===0){j.setFirstChild(c)}Ext.Array.splice(j.childNodes,l,0,c);c.parentNode=j;c.nextSibling=h;h.previousSibling=c;b=j.childNodes[l-1];if(b){c.previousSibling=b;b.nextSibling=c}else{c.previousSibling=null}c.updateInfo(false,{parentId:j.getId(),index:l,isFirst:l===0,isLast:false,depth:(j.data.depth||0)+1});for(e=l+1,d=j.childNodes.length;e<d;e++){j.childNodes[e].updateInfo(false,{index:e})}if(!j.isLoaded()){j.set("loaded",true)}else{if(j.childNodes.length===1){j.triggerUIUpdate()}}if(!c.isLeaf()&&c.phantom){c.set("loaded",true)}if(m!==true){j.fireEventArgs("insert",[j,c,h]);if(k){c.fireEventArgs("move",[c,k,j,l,h])}}return c},insertChild:function(b,d){var c=this.childNodes[b];if(c){return this.insertBefore(d,c)}else{return this.appendChild(d)}},remove:function(c,d){var e=this,b=e.parentNode;if(b){b.removeChild(e,c,d)}else{if(c){e.destroy(true)}}return e},removeAll:function(j,l,d){var h=this,k=this.childNodes,e=0,g=k.length,b,c;if(!g){return}d=d===true;if(!d){b=h.store&&h.store.treeStore;if(b){b.beginBulkRemove()}}for(;e<g;++e){c=k[e];c.removeContext={parentNode:c.parentNode,previousSibling:c.previousSibling,nextSibling:c.nextSibling};c.previousSibling=c.nextSibling=c.parentNode=null;h.fireEventArgs("remove",[h,c,false]);c.removeContext=null;if(j){c.destroy(true)}else{c.removeAll(false,l,true)}}h.firstChild=h.lastChild=null;if(d){h.childNodes=null}else{h.childNodes.length=0}if(!d){h.triggerUIUpdate();if(b){b.endBulkRemove()}}return h},getChildAt:function(b){return this.childNodes[b]},replaceChild:function(b,e,d){var c=e?e.nextSibling:null;this.removeChild(e,false,d);this.insertBefore(b,c,d);return e},indexOf:function(b){return Ext.Array.indexOf(this.childNodes,b)},indexOfId:function(e){var d=this.childNodes,b=d.length,c=0;for(;c<b;++c){if(d[c].getId()===e){return c}}return -1},getPath:function(e,d){e=e||this.idProperty;d=d||"/";var c=[this.get(e)],b=this.parentNode;while(b){c.unshift(b.get(e));b=b.parentNode}return d+c.join(d)},getDepth:function(){return this.get("depth")},bubble:function(d,c,b){var e=this;while(e){if(d.apply(c||e,b||[e])===false){break}e=e.parentNode}},cascade:function(){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.data.Node: cascade has been deprecated. Please use cascadeBy instead.")}return this.cascadeBy.apply(this,arguments)},cascadeBy:function(e,d,b){if(e.apply(d||this,b||[this])!==false){var h=this.childNodes,g=h.length,c;for(c=0;c<g;c++){h[c].cascadeBy(e,d,b)}}},eachChild:function(e,d,b){var h=this.childNodes,g=h.length,c;for(c=0;c<g;c++){if(e.apply(d||this,b||[h[c]])===false){break}}},findChild:function(c,d,b){return this.findChildBy(function(){return this.get(c)==d},null,b)},findChildBy:function(j,h,c){var g=this.childNodes,b=g.length,e=0,k,d;for(;e<b;e++){k=g[e];if(j.call(h||k,k)===true){return k}else{if(c){d=k.findChildBy(j,h,c);if(d!==null){return d}}}}return null},contains:function(b){return b.isAncestor(this)},isAncestor:function(b){var c=this.parentNode;while(c){if(c===b){return true}c=c.parentNode}return false},sort:function(h,c,b){var e=this.childNodes,g=e.length,d,k,j={isFirst:true};if(g>0){Ext.Array.sort(e,h);this.setFirstChild(e[0]);this.setLastChild(e[g-1]);for(d=0;d<g;d++){k=e[d];k.previousSibling=e[d-1];k.nextSibling=e[d+1];j.isLast=d===g-1;j.index=d;k.updateInfo(false,j);j.isFirst=false;if(c&&!k.isLeaf()){k.sort(h,true,true)}}if(b!==true){this.fireEventArgs("sort",[this,e])}}},isExpanded:function(){return this.get("expanded")},isLoaded:function(){return this.get("loaded")},isLoading:function(){return this.get("loading")},isRoot:function(){return !this.parentNode},isVisible:function(){var b=this.parentNode;while(b){if(!b.isExpanded()){return false}b=b.parentNode}return true},expand:function(b,e,c){var d=this;if(!d.isLeaf()){if(d.isLoading()){d.on("expand",function(){d.expand(b,e,c)},d,{single:true})}else{if(!d.isExpanded()){d.fireEventArgs("beforeexpand",[d,d.onChildNodesAvailable,d,[b,e,c]])}else{if(b){d.expandChildren(true,d.getOwnerTree().singleExpand,e,c)}else{Ext.callback(e,c||d,[d.childNodes])}}}}else{Ext.callback(e,c||d)}},onChildNodesAvailable:function(b,c,g,d){var e=this;Ext.suspendLayouts();e.set("expanded",true);e.fireEventArgs("expand",[e,e.childNodes,false]);if(c){e.expandChildren(true,e.getOwnerTree().singleExpand,g,d)}else{Ext.callback(g,d||e,[e.childNodes])}Ext.resumeLayouts(true)},expandChildren:function(g,h,m,n){var l=this,j,c=l.childNodes,b=[],k=h?Math.min(c.length,1):c.length,e,d=0;for(j=0;j<k;++j){e=c[j];if(!e.isLeaf()){b.push(e)}}k=b.length;for(j=0;j<k;++j){e=b[j];if(j===k-1){e.expand(g,m,n)}else{e.expand(g)}}if(!d&&m){Ext.callback(m,n||l,[l.childNodes])}},collapse:function(d,k,g){var h=this,c=h.isExpanded(),b=h.childNodes.length,e,j;if(!h.isLeaf()&&(!c&&d||h.fireEventArgs("beforecollapse",[h])!==false)){Ext.suspendLayouts();if(h.isExpanded()){if(d){j=function(){for(e=0;e<b;e++){h.childNodes[e].setCollapsed(true)}};if(k){k=Ext.Function.createSequence(j,k)}else{k=j}}h.set("expanded",false);h.fireEventArgs("collapse",[h,h.childNodes,false,k?Ext.Function.bind(k,g,[h.childNodes]):null,null]);k=null}else{if(d){for(e=0;e<b;e++){h.childNodes[e].setCollapsed(true)}}}Ext.resumeLayouts(true)}Ext.callback(k,g||h,[h.childNodes])},setCollapsed:function(c){var e=this,b=e.childNodes.length,d;if(!e.isLeaf()&&e.fireEventArgs("beforecollapse",[e,Ext.emptyFn])!==false){e.data.expanded=false;e.fireEventArgs("collapse",[e,e.childNodes,false,null,null]);if(c){for(d=0;d<b;d++){e.childNodes[d].setCollapsed(true)}}}},collapseChildren:function(d,k,l){var j=this,g,b=j.childNodes,h=b.length,e=[],c;for(g=0;g<h;++g){c=b[g];if(!c.isLeaf()&&c.isLoaded()&&c.isExpanded()){e.push(c)}}h=e.length;for(g=0;g<h;++g){c=e[g];if(g===h-1){c.collapse(d,k,l)}else{c.collapse(d)}}},fireEventArgs:function(d,e){var h=Ext.data.Model.prototype.fireEventArgs,b,g,c;if(a[d]){for(g=this;b!==false&&g;g=(c=g).parentNode){if(g.hasListeners[d]){b=h.call(g,d,e)}}g=c.rootOf;if(b!==false&&g){if(g.hasListeners[d]){b=g.fireEventArgs.call(g,d,e)}g=g.treeStore;if(b!==false&&g){if(g.hasListeners[d]){b=g.fireEventArgs.call(g,d,e)}}}return b}else{return h.apply(this,arguments)}},serialize:function(){var c=Ext.data.writer.Json.prototype.getRecordData(this),g=this.childNodes,b=g.length,e,d;if(b>0){for(d=0;d<b;d++){e.push(g[d].serialize())}}return c}}}}});Ext.define("Ext.data.NodeStore",{extend:Ext.data.Store,alias:"store.node",isNodeStore:true,node:null,recursive:false,rootVisible:false,isExpandingOrCollapsing:0,constructor:function(a){var c=this,b;a=a||{};Ext.apply(c,a);a.proxy={type:"proxy"};c.callParent([a]);b=c.node;if(b){c.node=null;c.setNode(b)}},getTotalCount:function(){return this.getCount()},setNode:function(b){var a=this;if(a.node&&a.node!=b){a.mun(a.node,{expand:a.onNodeExpand,collapse:a.onNodeCollapse,append:a.onNodeAppend,insert:a.onNodeInsert,remove:a.onNodeRemove,sort:a.onNodeSort,scope:a});a.node=null}if(b){Ext.data.NodeInterface.decorate(b.self);a.removeAll();if(a.rootVisible){a.add(b)}else{if(!b.isExpanded()&&a.treeStore.autoLoad!==false){b.expand()}}a.mon(b,{expand:a.onNodeExpand,collapse:a.onNodeCollapse,append:a.onNodeAppend,insert:a.onNodeInsert,remove:a.onNodeRemove,sort:a.onNodeSort,scope:a});a.node=b;if(b.isExpanded()&&b.isLoaded()){a.onNodeExpand(b,b.childNodes,true)}}},onNodeSort:function(b,c){var a=this;if(a.indexOf(b)!==-1||b===a.node&&!a.rootVisible&&b.isExpanded()){Ext.suspendLayouts();a.onNodeCollapse(b,c,true);a.onNodeExpand(b,c,true);Ext.resumeLayouts(true)}},onNodeExpand:function(e,c,b){var g=this,a=g.indexOf(e)+1,d=[];if(!b){g.fireEvent("beforeexpand",e,c,a)}g.handleNodeExpand(e,c,d);g.insert(a,d);if(!b){g.fireEvent("expand",e,c)}},handleNodeExpand:function(e,b,d){var h=this,g=b?b.length:0,c,a;if(!h.recursive&&e!==h.node){return}if(e!==this.node&&!h.isVisible(e)){return}if(g){for(c=0;c<g;c++){a=b[c];d.push(a);if(a.isExpanded()){if(a.isLoaded()){h.handleNodeExpand(a,a.childNodes,d)}else{a.set("expanded",false);a.expand()}}}}},onNodeCollapse:function(e,c,k,j,l){var d=this,h=d.indexOf(e)+1,b,a,g,m;if(!d.recursive&&e!==d.node){return}if(!k){d.fireEvent("beforecollapse",e,c,h,j,l)}if(c.length&&d.data.contains(c[0])){b=e;while(b.parentNode){g=b.nextSibling;if(g){m=true;a=d.indexOf(g);break}else{b=b.parentNode}}if(!m){a=d.getCount()}d.removeAt(h,a-h)}if(!k){d.fireEvent("collapse",e,c,h)}},onNodeAppend:function(d,g,b){var e=this,a,c;if(e.isVisible(g)){if(b===0){a=d}else{c=g.previousSibling;while(c.isExpanded()&&c.lastChild){c=c.lastChild}a=c}e.insert(e.indexOf(a)+1,g);if(!g.isLeaf()&&g.isExpanded()){if(g.isLoaded()){e.onNodeExpand(g,g.childNodes,true)}else{if(!e.treeStore.fillCount){g.set("expanded",false);g.expand()}}}}},onNodeInsert:function(c,e,a){var d=this,b=this.indexOf(a);if(b!=-1&&d.isVisible(e)){d.insert(b,e);if(!e.isLeaf()&&e.isExpanded()){if(e.isLoaded()){d.onNodeExpand(e,e.childNodes,true)}else{e.set("expanded",false);e.expand()}}}},onNodeRemove:function(b,d,a){var c=this;if(c.indexOf(d)!=-1){if(!d.isLeaf()&&d.isExpanded()){d.parentNode=d.removeContext.parentNode;d.nextSibling=d.removeContext.nextSibling;c.onNodeCollapse(d,d.childNodes,true);d.parentNode=d.nextSibling=null}c.remove(d)}},isVisible:function(b){var a=b.parentNode;while(a){if(a===this.node&&a.data.expanded){return true}if(!a.data.expanded){return false}a=a.parentNode}return false}});Ext.define("Ext.data.Request",{action:undefined,params:undefined,method:"GET",url:undefined,constructor:function(a){Ext.apply(this,a)}});Ext.define("Ext.data.SequentialIdGenerator",{extend:Ext.data.IdGenerator,alias:"idgen.sequential",constructor:function(){var a=this;a.callParent(arguments);a.parts=[a.prefix,""]},prefix:"",seed:1,generate:function(){var a=this,b=a.parts;b[1]=a.seed++;return b.join("")}});Ext.define("Ext.data.Tree",{alias:"data.tree",mixins:{observable:Ext.util.Observable},root:null,constructor:function(a){var b=this;b.mixins.observable.constructor.call(b);if(a){b.setRootNode(a)}b.on({scope:b,idchanged:b.onNodeIdChanged,insert:b.onNodeInsert,append:b.onNodeAppend,remove:b.onNodeRemove})},getRootNode:function(){return this.root},setRootNode:function(b){var a=this;a.root=b;if(b.rootOf){b.rootOf.removeRootNode()}else{if(b.parentNode){b.parentNode.removeChild(b)}}b.rootOf=a;if(b.fireEventArgs("beforeappend",[null,b])!==false){b.set("root",true);b.updateInfo(true,{isFirst:true,isLast:true,depth:0,index:0,parentId:null});a.nodeHash={};b.fireEvent("append",null,b);b.fireEvent("rootchange",b)}return b},removeRootNode:function(){var b=this,a=b.root;a.set("root",false);a.fireEvent("remove",null,a,false);a.fireEvent("rootchange",null);a.rootOf=b.root=null;return a},flatten:function(){return Ext.Object.getValues(this.nodeHash)},onNodeInsert:function(a,b){this.registerNode(b,true)},onNodeAppend:function(a,b){this.registerNode(b,true)},onNodeRemove:function(a,b){this.unregisterNode(b,true)},onNodeIdChanged:function(d,e,b,a){var c=this.nodeHash;c[d.internalId]=d;delete c[a]},getNodeById:function(a){return this.nodeHash[a]},registerNode:function(g,a){var e=this,c,d,b;e.nodeHash[g.internalId]=g;if(a===true){c=g.childNodes;d=c.length;for(b=0;b<d;b++){e.registerNode(c[b],true)}}},unregisterNode:function(g,a){var e=this,c,d,b;delete e.nodeHash[g.internalId];if(a===true){c=g.childNodes;d=c.length;for(b=0;b<d;b++){e.unregisterNode(c[b],true)}}},sort:function(b,a){this.getRootNode().sort(b,a)},filter:function(b,a){this.getRootNode().filter(b,a)}});Ext.define("Ext.data.TreeModel",{extend:Ext.data.Model},function(){Ext.data.NodeInterface.decorate(this)});Ext.define("Ext.data.TreeStore",{extend:Ext.data.AbstractStore,alias:"store.tree",clearOnLoad:true,clearRemovedOnLoad:true,nodeParam:"node",defaultRootId:"root",defaultRootText:"Root",defaultRootProperty:"children",rootProperty:"children",fillCount:0,folderSort:false,constructor:function(c){var e=this,b,a,d;c=Ext.apply({},c);a=c.fields||e.fields;if(!a){c.fields=[{name:"text",type:"string"}];d=c.defaultRootProperty||e.defaultRootProperty;if(d!==e.defaultRootProperty){c.fields.push({name:d,type:"auto",defaultValue:null,persist:false})}}e.callParent([c]);e.tree=new Ext.data.Tree;e.tree.treeStore=e;e.tree.on({scope:e,remove:e.onNodeRemove,beforeexpand:e.onBeforeNodeExpand,append:e.onNodeAdded,insert:e.onNodeAdded,sort:e.onNodeSort});e.onBeforeSort();b=e.root;if(b){delete e.root;e.setRootNode(b)}if(Ext.isDefined(e.nodeParameter)){if(Ext.isDefined(Ext.global.console)){Ext.global.console.warn("Ext.data.TreeStore: nodeParameter has been deprecated. Please use nodeParam instead.")}e.nodeParam=e.nodeParameter;delete e.nodeParameter}},setProxy:function(c){var a,b;if(c instanceof Ext.data.proxy.Proxy){b=Ext.isEmpty(c.getReader().root)}else{if(Ext.isString(c)){b=true}else{a=c.reader;b=!(a&&!Ext.isEmpty(a.root))}}c=this.callParent(arguments);c.idParam=this.nodeParam;if(b){a=c.getReader();a.root=this.defaultRootProperty;a.buildExtractors(true)}},onBeforeSort:function(){if(this.folderSort){this.sort({property:"leaf",direction:"ASC"},"prepend",false)}},onBeforeNodeExpand:function(a,j,k,e){var g=this,d,h,c,b;if(a.isLoaded()){b=[a.childNodes];if(e){b.push.apply(b,e)}Ext.callback(j,k||a,b)}else{if(h=c=(a.raw||a[a.persistenceProperty])[(d=g.getProxy().getReader()).root]){g.fillNode(a,d.extractData(h));delete c[d.root];b=[a.childNodes];if(e){b.push.apply(b,e)}Ext.callback(j,k||a,b)}else{if(a.isLoading()){g.on("load",function(){b=[a.childNodes];if(e){b.push.apply(b,e)}Ext.callback(j,k||a,b)},g,{single:true})}else{g.read({node:a,callback:function(){delete g.lastOptions.callback;b=[a.childNodes];if(e){b.push.apply(b,e)}Ext.callback(j,k||a,b)}})}}}},getNewRecords:function(){return Ext.Array.filter(this.tree.flatten(),this.filterNew)},getUpdatedRecords:function(){return Ext.Array.filter(this.tree.flatten(),this.filterUpdated)},onNodeRemove:function(b,d,a){var c=this;d.unjoin(c);if(!d.phantom&&!a){Ext.Array.include(c.removed,d)}if(c.autoSync&&!c.autoSyncSuspended&&!a){c.sync()}},onNodeAdded:function(c,e){var d=this,b=d.getProxy(),a=b.getReader(),g=e.raw||e[e.persistenceProperty],h;Ext.Array.remove(d.removed,e);e.join(d);if(!e.isLeaf()&&!d.lazyFill){h=a.getRoot(g);if(h){d.fillNode(e,a.extractData(h));delete g[a.root]}}if(d.autoSync&&!d.autoSyncSuspended&&(e.phantom||e.dirty)){d.sync()}},onNodeSort:function(){if(this.autoSync&&!this.autoSyncSuspended){this.sync()}},setRootNode:function(a,e){var d=this,c=d.model,b=c.prototype.idProperty;a=a||{};if(!a.isModel){a=Ext.apply({},a);Ext.applyIf(a,{id:d.defaultRootId,text:d.defaultRootText,allowDrag:false});if(a[b]===undefined){a[b]=d.defaultRootId}Ext.data.NodeInterface.decorate(c);a=Ext.ModelManager.create(a,c)}else{if(a.isModel&&!a.isNode){Ext.data.NodeInterface.decorate(c)}}d.getProxy().getReader().buildExtractors(true);d.tree.setRootNode(a);if(e!==true&&!a.isLoaded()&&(d.autoLoad===true||a.isExpanded())){a.data.expanded=false;a.expand()}return a},getRootNode:function(){return this.tree.getRootNode()},getNodeById:function(a){return this.tree.getNodeById(a)},getById:function(a){return this.getNodeById(a)},load:function(a){a=a||{};a.params=a.params||{};var c=this,b=a.node||c.tree.getRootNode();if(!b){b=c.setRootNode({expanded:true},true)}a.id=b.getId();if(c.clearOnLoad){if(c.clearRemovedOnLoad){c.clearRemoved(b)}c.tree.un("remove",c.onNodeRemove,c);b.removeAll(false);c.tree.on("remove",c.onNodeRemove,c)}Ext.applyIf(a,{node:b});c.callParent([a]);if(c.loading&&b){b.set("loading",true)}return c},clearRemoved:function(b){var k=this,e=k.removed,a=b.getId(),d=e.length,c=d,n={},h=[],m={},j,g,l;if(b===k.getRootNode()){k.removed=[];return}for(;c--;){j=e[c];m[j.getId()]=j}for(c=d;c--;){j=e[c];g=j;while(g&&g.getId()!==a){l=g.get("parentId");g=g.parentNode||k.getNodeById(l)||m[l]}if(g){n[j.getId()]=j}}for(c=0;c<d;c++){j=e[c];if(!n[j.getId()]){h.push(j)}}k.removed=h},fillNode:function(b,c){var h=this,e=c?c.length:0,g=h.sorters,d,k,j=false,a=e&&h.sortOnLoad&&!h.remoteSort&&g&&g.items&&g.items.length,n,m,l;for(d=1;d<e;d++){n=c[d];m=c[d-1];j=n[n.persistenceProperty].index!=m[m.persistenceProperty].index;if(j){break}}if(a){if(j){h.sorters.insert(0,h.indexSorter)}k=new Ext.util.MixedCollection;k.addAll(c);k.sort(h.sorters.items);c=k.items;h.sorters.remove(h.indexSorter)}else{if(j){Ext.Array.sort(c,h.sortByIndex)}}b.set("loaded",true);l=h.fillCount===0;if(l){h.fireEvent("beforefill",h,b,c)}++h.fillCount;if(c.length){b.appendChild(c,undefined,true)}if(l){h.fireEvent("fillcomplete",h,b,c)}--h.fillCount;return c},beginBulkRemove:function(){this.fireEvent("beforebulkremove",this)},endBulkRemove:function(){this.fireEvent("bulkremovecomplete",this)},sortByIndex:function(b,a){return b[b.persistenceProperty].index-a[a.persistenceProperty].index},onIdChanged:function(c,d,b,a){this.tree.onNodeIdChanged(c,d,b,a);this.callParent(arguments)},onProxyLoad:function(b){var d=this,e=b.wasSuccessful(),a=b.getRecords(),c=b.node;d.loading=false;c.set("loading",false);if(e){if(!d.clearOnLoad){a=d.cleanRecords(c,a)}a=d.fillNode(c,a)}d.fireEvent("read",d,b.node,a,e);d.fireEvent("load",d,b.node,a,e);Ext.callback(b.callback,b.scope||d,[a,b,e])},cleanRecords:function(g,b){var e={},j=g.childNodes,d=0,a=j.length,c=[],h;for(;d<a;++d){e[j[d].getId()]=true}for(d=0,a=b.length;d<a;++d){h=b[d];if(!e[h.getId()]){c.push(h)}}return c},removeAll:function(){var a=this.getRootNode();if(a){a.destroy(true)}this.fireEvent("clear",this)},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.tree.sort(a,true);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b,b.sorters.getRange())}},function(){var a=this.prototype;a.indexSorter=new Ext.util.Sorter({sorterFn:a.sortByIndex})});Ext.define("Ext.data.UuidGenerator",function(){var h=Math.pow(2,14),g=Math.pow(2,16),e=Math.pow(2,28),c=Math.pow(2,32);function a(l,k){var j=l.toString(16);if(j.length>k){j=j.substring(j.length-k)}else{if(j.length<k){j=Ext.String.leftPad(j,k,"0")}}return j}function d(l,k){var j=Math.random()*(k-l+1);return Math.floor(j)+l}function b(k){if(typeof k=="number"){var j=Math.floor(k/c);return{lo:Math.floor(k-j*c),hi:j}}return k}return{extend:Ext.data.IdGenerator,alias:"idgen.uuid",id:"uuid",version:4,constructor:function(){var j=this;j.callParent(arguments);j.parts=[];j.init()},generate:function(){var k=this,l=k.parts,j=k.timestamp;l[0]=a(j.lo,8);l[1]=a(j.hi&65535,4);l[2]=a(j.hi>>>16&4095|k.version<<12,4);l[3]=a(128|k.clockSeq>>>8&63,2)+a(k.clockSeq&255,2);l[4]=a(k.salt.hi,4)+a(k.salt.lo,8);if(k.version==4){k.init()}else{++j.lo;if(j.lo>=c){j.lo=0;++j.hi}}return l.join("-").toLowerCase()},getRecId:function(j){return j.getId()},init:function(){var k=this,j,l;if(k.version==4){k.clockSeq=d(0,h-1);j=k.salt||(k.salt={});l=k.timestamp||(k.timestamp={});j.lo=d(0,c-1);j.hi=d(0,g-1);l.lo=d(0,c-1);l.hi=d(0,e-1)}else{k.salt=b(k.salt);k.timestamp=b(k.timestamp);k.salt.hi|=256}},reconfigure:function(j){Ext.apply(this,j);this.init()}}}());Ext.define("Ext.data.reader.Xml",{extend:Ext.data.reader.Reader,alternateClassName:"Ext.data.XmlReader",alias:"reader.xml",createAccessor:function(b){var a=this;if(Ext.isEmpty(b)){return Ext.emptyFn}if(Ext.isFunction(b)){return b}return function(c){return a.getNodeValue(Ext.DomQuery.selectNode(b,c))}},getNodeValue:function(a){if(a){if(typeof a.normalize==="function"){a.normalize()}a=a.firstChild;if(a){return a.nodeValue}}return undefined},getResponseData:function(a){var c=a.responseXML,b,d;if(!c){d="XML data not found in the response";b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:d});this.fireEvent("exception",this,a,b);Ext.Logger.warn(d);return b}return this.readRecords(c)},getData:function(a){return a.documentElement||a},getRoot:function(b){var c=b.nodeName,a=this.root;if(!a||c&&c==a){return b}else{if(Ext.DomQuery.isXml(b)){return Ext.DomQuery.selectNode(a,b)}}},extractData:function(a){var b=this.record;if(b!=a.nodeName){a=Ext.DomQuery.select(b,a)}else{a=[a]}return this.callParent([a])},getAssociatedDataRoot:function(b,a){return Ext.DomQuery.select(a,b)[0]},readRecords:function(a){if(Ext.isArray(a)){a=a[0]}this.xmlData=a;return this.callParent([a])},createFieldAccessExpression:function(g,d,c){var e=this.namespace,b,a;b=g.mapping||(e?e+"|":"")+g.name;if(typeof b==="function"){a=d+".mapping("+c+", this)"}else{a='me.getNodeValue(Ext.DomQuery.selectNode("'+b+'", '+c+"))"}return a}});Ext.define("Ext.data.writer.Xml",{extend:Ext.data.writer.Writer,alternateClassName:"Ext.data.XmlWriter",alias:"writer.xml",documentRoot:"xmlData",defaultDocumentRoot:"xmlData",header:"",record:"record",writeRecords:function(a,b){var h=this,d=[],c=0,g=b.length,j=h.documentRoot,e=h.record,m=b.length!==1,l,k;d.push(h.header||"");if(!j&&m){j=h.defaultDocumentRoot}if(j){d.push("<",j,">")}for(;c<g;++c){l=b[c];d.push("<",e,">");for(k in l){if(l.hasOwnProperty(k)){d.push("<",k,">",l[k],"</",k,">")}}d.push("</",e,">")}if(j){d.push("</",j,">")}a.xmlData=d.join("");return a}});Ext.define("Ext.data.XmlStore",{extend:Ext.data.Store,alias:"store.xml",constructor:function(a){a=Ext.apply({proxy:{type:"ajax",reader:"xml",writer:"xml"}},a);this.callParent([a])}});Ext.define("Ext.data.association.BelongsTo",{extend:Ext.data.association.Association,alternateClassName:"Ext.data.BelongsToAssociation",alias:"association.belongsto",constructor:function(c){this.callParent(arguments);var e=this,a=e.ownerModel.prototype,g=e.associatedName,d=e.getterName||"get"+g,b=e.setterName||"set"+g;Ext.applyIf(e,{name:g,foreignKey:g.toLowerCase()+"_id",instanceName:g+"BelongsToInstance",associationKey:g.toLowerCase()});a[d]=e.createGetter();a[b]=e.createSetter()},createSetter:function(){var c=this,b=c.foreignKey,a=c.instanceName;return function(h,e,g){var j=h&&h.isModel,d=j?h.getId():h;if(j){this[a]=h}else{if(this[a] instanceof Ext.data.Model&&!this.isEqual(this.get(b),d)){delete this[a]}}this.set(b,d);if(Ext.isFunction(e)){e={callback:e,scope:g||this}}if(Ext.isObject(e)){return this.save(e)}}},createGetter:function(){var d=this,e=d.associatedName,g=d.associatedModel,c=d.foreignKey,b=d.primaryKey,a=d.instanceName;return function(l,m){l=l||{};var k=this,n=k.get(c),o,h,j;if(l.reload===true||k[a]===undefined){h=Ext.ModelManager.create({},e);h.set(b,n);if(typeof l=="function"){l={callback:l,scope:m||k}}o=l.success;l.success=function(p){k[a]=p;if(o){o.apply(this,arguments)}};g.load(n,l);k[a]=h;return h}else{h=k[a];j=[h];m=m||l.scope||k;Ext.callback(l,m,j);Ext.callback(l.success,m,j);Ext.callback(l.failure,m,j);Ext.callback(l.callback,m,j);return h}}},read:function(b,a,c){b[this.instanceName]=a.read([c]).records[0]}});Ext.define("Ext.util.Inflector",{singleton:true,plurals:[[/(quiz)$/i,"$1zes"],[/^(ox)$/i,"$1en"],[/([m|l])ouse$/i,"$1ice"],[/(matr|vert|ind)ix|ex$/i,"$1ices"],[/(x|ch|ss|sh)$/i,"$1es"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/(hive)$/i,"$1s"],[/(?:([^f])fe|([lr])f)$/i,"$1$2ves"],[/sis$/i,"ses"],[/([ti])um$/i,"$1a"],[/(buffal|tomat|potat)o$/i,"$1oes"],[/(bu)s$/i,"$1ses"],[/(alias|status|sex)$/i,"$1es"],[/(octop|vir)us$/i,"$1i"],[/(ax|test)is$/i,"$1es"],[/^person$/,"people"],[/^man$/,"men"],[/^(child)$/,"$1ren"],[/s$/i,"s"],[/$/,"s"]],singulars:[[/(quiz)zes$/i,"$1"],[/(matr)ices$/i,"$1ix"],[/(vert|ind)ices$/i,"$1ex"],[/^(ox)en/i,"$1"],[/(alias|status)es$/i,"$1"],[/(octop|vir)i$/i,"$1us"],[/(cris|ax|test)es$/i,"$1is"],[/(shoe)s$/i,"$1"],[/(o)es$/i,"$1"],[/(bus)es$/i,"$1"],[/([m|l])ice$/i,"$1ouse"],[/(x|ch|ss|sh)es$/i,"$1"],[/(m)ovies$/i,"$1ovie"],[/(s)eries$/i,"$1eries"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/([lr])ves$/i,"$1f"],[/(tive)s$/i,"$1"],[/(hive)s$/i,"$1"],[/([^f])ves$/i,"$1fe"],[/(^analy)ses$/i,"$1sis"],[/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i,"$1$2sis"],[/([ti])a$/i,"$1um"],[/(n)ews$/i,"$1ews"],[/people$/i,"person"],[/s$/i,""]],uncountable:["sheep","fish","series","species","money","rice","information","equipment","grass","mud","offspring","deer","means"],singular:function(b,a){this.singulars.unshift([b,a])},plural:function(b,a){this.plurals.unshift([b,a])},clearSingulars:function(){this.singulars=[]},clearPlurals:function(){this.plurals=[]},isTransnumeral:function(a){return Ext.Array.indexOf(this.uncountable,a)!=-1},pluralize:function(g){if(this.isTransnumeral(g)){return g}var e=this.plurals,d=e.length,a,c,b;for(b=0;b<d;b++){a=e[b];c=a[0];if(c==g||c.test&&c.test(g)){return g.replace(c,a[1])}}return g},singularize:function(g){if(this.isTransnumeral(g)){return g}var e=this.singulars,d=e.length,a,c,b;for(b=0;b<d;b++){a=e[b];c=a[0];if(c==g||c.test&&c.test(g)){return g.replace(c,a[1])}}return g},classify:function(a){return Ext.String.capitalize(this.singularize(a))},ordinalize:function(d){var b=parseInt(d,10),c=b%10,a=b%100;if(11<=a&&a<=13){return d+"th"}else{switch(c){case 1:return d+"st";case 2:return d+"nd";case 3:return d+"rd";default:return d+"th"}}}},function(){var b={alumnus:"alumni",cactus:"cacti",focus:"foci",nucleus:"nuclei",radius:"radii",stimulus:"stimuli",ellipsis:"ellipses",paralysis:"paralyses",oasis:"oases",appendix:"appendices",index:"indexes",beau:"beaux",bureau:"bureaux",tableau:"tableaux",woman:"women",child:"children",man:"men",corpus:"corpora",criterion:"criteria",curriculum:"curricula",genus:"genera",memorandum:"memoranda",phenomenon:"phenomena",foot:"feet",goose:"geese",tooth:"teeth",antenna:"antennae",formula:"formulae",nebula:"nebulae",vertebra:"vertebrae",vita:"vitae"},a;for(a in b){this.plural(a,b[a]);this.singular(b[a],a)}});Ext.define("Ext.data.association.HasMany",{extend:Ext.data.association.Association,alternateClassName:"Ext.data.HasManyAssociation",alias:"association.hasmany",constructor:function(c){var d=this,a,b;d.callParent(arguments);d.name=d.name||Ext.util.Inflector.pluralize(d.associatedName.toLowerCase());a=d.ownerModel.prototype;b=d.name;Ext.applyIf(d,{storeName:b+"Store",foreignKey:d.ownerName.toLowerCase()+"_id"});a[b]=d.createStore()},createStore:function(){var h=this,j=h.associatedModel,c=h.storeName,d=h.foreignKey,a=h.primaryKey,g=h.filterProperty,b=h.autoLoad,e=h.storeConfig||{};return function(){var n=this,l,m,k={};if(n[c]===undefined){if(g){m={property:g,value:n.get(g),exactMatch:true}}else{m={property:d,value:n.get(a),exactMatch:true}}k[d]=n.get(a);l=Ext.apply({},e,{model:j,filters:[m],remoteFilter:false,modelDefaults:k});n[c]=Ext.data.AbstractStore.create(l);if(b){n[c].load()}}return n[c]}},read:function(d,b,j){var g=d[this.name](),c,e,a,h;g.add(b.read(j).records);c=this.associatedModel.prototype.associations.findBy(function(k){return k.type==="belongsTo"&&k.associatedName===d.$className});if(c){e=g.data.items;a=e.length;for(h=0;h<a;h++){e[h][c.instanceName]=d}}}});Ext.define("Ext.data.association.HasOne",{extend:Ext.data.association.Association,alternateClassName:"Ext.data.HasOneAssociation",alias:"association.hasone",constructor:function(c){this.callParent(arguments);var e=this,a=e.ownerModel.prototype,g=e.associatedName,d=e.getterName||"get"+g,b=e.setterName||"set"+g;Ext.applyIf(e,{name:g,foreignKey:g.toLowerCase()+"_id",instanceName:g+"HasOneInstance",associationKey:g.toLowerCase()});a[d]=e.createGetter();a[b]=e.createSetter()},createSetter:function(){var c=this,b=c.foreignKey,a=c.instanceName;return function(h,e,g){var j=h&&h.isModel,d=j?h.getId():h;if(j){this[a]=h}else{if(this[a] instanceof Ext.data.Model&&!this.isEqual(this.get(b),d)){delete this[a]}}this.set(b,d);if(Ext.isFunction(e)){e={callback:e,scope:g||this}}if(Ext.isObject(e)){return this.save(e)}}},createGetter:function(){var d=this,g=d.ownerModel,e=d.associatedName,h=d.associatedModel,c=d.foreignKey,b=d.primaryKey,a=d.instanceName;return function(m,n){m=m||{};var l=this,o=l.get(c),p,j,k;if(m.reload===true||l[a]===undefined){j=Ext.ModelManager.create({},e);j.set(b,o);if(typeof m=="function"){m={callback:m,scope:n||l}}p=m.success;m.success=function(q){l[a]=q;if(p){p.apply(this,arguments)}};h.load(o,m);l[a]=j;return j}else{j=l[a];k=[j];n=n||m.scope||l;Ext.callback(m,n,k);Ext.callback(m.success,n,k);Ext.callback(m.failure,n,k);Ext.callback(m.callback,n,k);return j}}},read:function(c,a,e){var b=this.associatedModel.prototype.associations.findBy(function(g){return g.type==="belongsTo"&&g.associatedName===c.$className}),d=a.read([e]).records[0];c[this.instanceName]=d;if(b){d[b.instanceName]=c}}});Ext.define("Ext.data.proxy.WebStorage",{extend:Ext.data.proxy.Client,alternateClassName:"Ext.data.WebStorageProxy",id:undefined,constructor:function(a){this.callParent(arguments);this.cache={};this.id=this.id||(this.store?this.store.storeId:undefined);this.initialize()},create:function(e,k,l){var j=this,d=e.records,c=d.length,a=j.getIds(),b,h,g;e.setStarted();if(j.isHierarchical===undefined){j.isHierarchical=!!d[0].isNode;if(j.isHierarchical){j.getStorageObject().setItem(j.getTreeKey(),true)}}for(g=0;g<c;g++){h=d[g];if(h.phantom){h.phantom=false;b=j.getNextId()}else{b=h.getId()}j.setRecord(h,b);h.commit();a.push(b)}j.setIds(a);e.setCompleted();e.setSuccessful();if(typeof k=="function"){k.call(l||j,e)}},read:function(g,m,o){var l=this,e=[],j=0,n=true,d=l.model,a,c,k,h,b;g.setStarted();if(l.isHierarchical){e=l.getTreeData()}else{a=l.getIds();c=a.length;b=g.id;if(b){h=l.getRecord(b);if(h!==null){k=new d(h,b,h)}if(k){e.push(k)}else{n=false}}else{for(;j<c;j++){b=a[j];h=l.getRecord(b);e.push(new d(h,b,h))}}}if(n){g.setSuccessful()}g.setCompleted();g.resultSet=Ext.create("Ext.data.ResultSet",{records:e,total:e.length,loaded:true});if(typeof m=="function"){m.call(o||l,g)}},update:function(e,j,k){var d=e.records,c=d.length,a=this.getIds(),h,b,g;e.setStarted();for(g=0;g<c;g++){h=d[g];this.setRecord(h);h.commit();b=h.getId();if(b!==undefined&&Ext.Array.indexOf(a,b)==-1){a.push(b)}}this.setIds(a);e.setCompleted();e.setSuccessful();if(typeof j=="function"){j.call(k||this,e)}},destroy:function(d,k,l){var g=this,c=d.records,a=g.getIds(),h=a.length,m=[],j={},e=c.length,b;d.setStarted();for(;e--;){Ext.apply(j,g.removeRecord(c[e]))}for(e=0;e<h;e++){b=a[e];if(!j[b]){m.push(b)}}g.setIds(m);d.setCompleted();d.setSuccessful();if(typeof k=="function"){k.call(l||g,d)}},getRecord:function(d){var b=this,a=b.cache,c=!a[d]?Ext.decode(b.getStorageObject().getItem(b.getRecordKey(d))):a[d];if(!c){return null}a[d]=c;c[b.model.prototype.idProperty]=d;return c},setRecord:function(k,c){if(c){k.setId(c)}else{c=k.getId()}var m=this,a=k.data,h={},j=m.model,l=j.prototype.fields.items,d=l.length,g=0,n,b,e,o;for(;g<d;g++){n=l[g];b=n.name;if(n.persist){h[b]=a[b]}}delete h[m.model.prototype.idProperty];if(k.isNode&&k.get("depth")===1){delete h.parentId}e=m.getStorageObject();o=m.getRecordKey(c);m.cache[c]=h;e.removeItem(o);e.setItem(o,Ext.encode(h))},removeRecord:function(a){var d=this,g=a.getId(),b={},c,e;b[g]=a;d.getStorageObject().removeItem(d.getRecordKey(g));delete d.cache[g];if(a.childNodes){e=a.childNodes;for(c=e.length;c--;){Ext.apply(b,d.removeRecord(e[c]))}}return b},getRecordKey:function(a){if(a.isModel){a=a.getId()}return Ext.String.format("{0}-{1}",this.id,a)},getRecordCounterKey:function(){return Ext.String.format("{0}-counter",this.id)},getTreeKey:function(){return Ext.String.format("{0}-tree",this.id)},getIds:function(){var g=this,d=(g.getStorageObject().getItem(g.id)||"").split(","),b=g.model,e=d.length,a=b.prototype.fields.get(b.prototype.idProperty).type.type==="string",c;if(e==1&&d[0]===""){d=[]}else{for(c=0;c<e;c++){d[c]=a?d[c]:+d[c]}}return d},setIds:function(a){var b=this.getStorageObject(),c=a.join(",");b.removeItem(this.id);if(!Ext.isEmpty(c)){b.setItem(this.id,c)}},getNextId:function(){var d=this,e=d.getStorageObject(),c=d.getRecordCounterKey(),b=d.model,a=b.prototype.fields.get(b.prototype.idProperty).type.type==="string",g;g=d.idGenerator.generate();e.setItem(c,g);if(!a){g=+g}return g},getTreeData:function(){var n=this,a=n.getIds(),e=a.length,j=[],b={},o=[],k=0,h=n.model,q=h.prototype.idProperty,g,m,p,l,d,c;for(;k<e;k++){c=a[k];m=n.getRecord(c);j.push(m);b[c]=m;if(!m.parentId){o.push(m)}}g=o.length;Ext.Array.sort(j,n.sortByParentId);for(k=g;k<e;k++){m=j[k];l=m.parentId;if(!p||p[q]!==l){p=b[l];p.children=d=[]}d.push(m)}for(k=e;k--;){m=j[k];if(!m.children&&!m.leaf){m.loaded=true}}for(k=g;k--;){m=o[k];o[k]=new h(m,m[q],m)}return o},sortByParentId:function(b,a){return(b.parentId||0)-(a.parentId||0)},initialize:function(){var b=this,a=b.getStorageObject(),c=+a.getItem(b.getRecordCounterKey());a.setItem(b.id,a.getItem(b.id)||"");if(a.getItem(b.getTreeKey())){b.isHierarchical=true}b.idGenerator=new Ext.data.SequentialIdGenerator({seed:c?c+1:1})},clear:function(){var d=this,e=d.getStorageObject(),c=d.getIds(),a=c.length,b;for(b=0;b<a;b++){e.removeItem(d.getRecordKey(c[b]))}e.removeItem(d.getRecordCounterKey());e.removeItem(d.getTreeKey());e.removeItem(d.id);d.cache={}},getStorageObject:function(){}});Ext.define("Ext.data.proxy.LocalStorage",{extend:Ext.data.proxy.WebStorage,alias:"proxy.localstorage",alternateClassName:"Ext.data.LocalStorageProxy",getStorageObject:function(){return window.localStorage}});Ext.define("Ext.data.proxy.Rest",{extend:Ext.data.proxy.Ajax,alternateClassName:"Ext.data.RestProxy",alias:"proxy.rest",actionMethods:{create:"POST",read:"GET",update:"PUT",destroy:"DELETE"},appendId:true,batchActions:false,buildUrl:function(g){var e=this,c=g.operation,b=c.records||[],a=b[0],h=e.format,d=e.getUrl(g),j=a?a.getId():c.id;if(e.appendId&&j!=null){if(!d.match(/\/$/)){d+="/"}d+=j}if(h){if(!d.match(/\.$/)){d+="."}d+=h}g.url=d;return e.callParent(arguments)}});Ext.define("Ext.data.proxy.SessionStorage",{extend:Ext.data.proxy.WebStorage,alias:"proxy.sessionstorage",alternateClassName:"Ext.data.SessionStorageProxy",getStorageObject:function(){return window.sessionStorage}});Ext.define("Ext.dd.DDTarget",{extend:Ext.dd.DragDrop,constructor:function(c,a,b){if(c){this.initTarget(c,a,b)}},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.define("Ext.dd.DragTracker",{mixins:{observable:Ext.util.Observable},active:false,trackOver:false,tolerance:5,autoStart:false,constructor:function(a){var b=this;Ext.apply(b,a);b.addEvents("mouseover","mouseout","mousedown","mouseup","mousemove","beforedragstart","dragstart","dragend","drag");b.dragRegion=new Ext.util.Region(0,0,0,0);if(b.el){b.initEl(b.el)}b.mixins.observable.constructor.call(b);if(b.disabled){b.disable()}},initEl:function(a){var b=this;b.el=Ext.get(a);b.handle=Ext.get(b.delegate);b.delegate=b.handle?undefined:b.delegate;if(!b.handle){b.handle=b.el}b.handleListeners={scope:b,delegate:b.delegate,mousedown:b.onMouseDown};if(b.trackOver||b.overCls){Ext.apply(b.handleListeners,{mouseover:b.onMouseOver,mouseout:b.onMouseOut})}b.mon(b.handle,b.handleListeners)},disable:function(){this.disabled=true},enable:function(){this.disabled=false},destroy:function(){var a=this;if(a.active){a.endDrag({})}a.clearListeners();a.mun(a.handle,a.handleListeners);a.el=a.handle=null},onMouseOver:function(c,b){var a=this;if(!a.disabled){if(Ext.EventManager.contains(c)||a.delegate){a.mouseIsOut=false;if(a.overCls){a.el.addCls(a.overCls)}a.fireEvent("mouseover",a,c,a.delegate?c.getTarget(a.delegate,b):a.handle)}}},onMouseOut:function(b){var a=this;if(a.mouseIsDown){a.mouseIsOut=true}else{if(a.overCls){a.el.removeCls(a.overCls)}a.fireEvent("mouseout",a,b)}},onMouseDown:function(d,c){var b=this,a;if(b.disabled||d.dragTracked){return}b.dragTarget=b.delegate?c:b.handle.dom;b.startXY=b.lastXY=d.getXY();b.startRegion=Ext.fly(b.dragTarget).getRegion();if(b.fireEvent("mousedown",b,d)===false||b.fireEvent("beforedragstart",b,d)===false||b.onBeforeStart(d)===false){return}b.mouseIsDown=true;d.dragTracked=true;a=b.el.dom;if(Ext.isIE&&a.setCapture){a.setCapture()}if(b.preventDefault!==false){d.preventDefault()}Ext.getDoc().on({scope:b,mouseup:b.onMouseUp,mousemove:b.onMouseMove,selectstart:b.stopSelect});if(b.autoStart){b.timer=Ext.defer(b.triggerStart,b.autoStart===true?1000:b.autoStart,b,[d])}},onMouseMove:function(g,d){var b=this,c=g.getXY(),a=b.startXY;g.preventDefault();b.lastXY=c;if(!b.active){if(Math.max(Math.abs(a[0]-c[0]),Math.abs(a[1]-c[1]))>b.tolerance){b.triggerStart(g)}else{return}}if(b.fireEvent("mousemove",b,g)===false){b.onMouseUp(g)}else{b.onDrag(g);b.fireEvent("drag",b,g)}},onMouseUp:function(b){var a=this;a.mouseIsDown=false;if(a.mouseIsOut){a.mouseIsOut=false;a.onMouseOut(b)}b.preventDefault();if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}a.fireEvent("mouseup",a,b);a.endDrag(b)},endDrag:function(d){var b=this,c=Ext.getDoc(),a=b.active;c.un("mousemove",b.onMouseMove,b);c.un("mouseup",b.onMouseUp,b);c.un("selectstart",b.stopSelect,b);b.clearStart();b.active=false;if(a){b.onEnd(d);b.fireEvent("dragend",b,d)}delete b._constrainRegion;delete Ext.EventObject.dragTracked},triggerStart:function(b){var a=this;a.clearStart();a.active=true;a.onStart(b);a.fireEvent("dragstart",a,b)},clearStart:function(){var a=this.timer;if(a){clearTimeout(a);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},getConstrainRegion:function(){var a=this;if(a.constrainTo){if(a.constrainTo instanceof Ext.util.Region){return a.constrainTo}if(!a._constrainRegion){a._constrainRegion=Ext.fly(a.constrainTo).getViewRegion()}}else{if(!a._constrainRegion){a._constrainRegion=a.getDragCt().getViewRegion()}}return a._constrainRegion},getXY:function(a){return a?this.constrainModes[a](this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[b[0]-a[0],b[1]-a[1]]},constrainModes:{point:function(b,d){var c=b.dragRegion,a=b.getConstrainRegion();if(!a){return d}c.x=c.left=c[0]=c.right=d[0];c.y=c.top=c[1]=c.bottom=d[1];c.constrainTo(a);return[c.left,c.top]},dragTarget:function(c,g){var b=c.startXY,e=c.startRegion.copy(),a=c.getConstrainRegion(),d;if(!a){return g}e.translateBy(g[0]-b[0],g[1]-b[1]);if(e.right>a.right){g[0]+=d=a.right-e.right;e.left+=d}if(e.left<a.left){g[0]+=a.left-e.left}if(e.bottom>a.bottom){g[1]+=d=a.bottom-e.bottom;e.top+=d}if(e.top<a.top){g[1]+=a.top-e.top}return g}}});Ext.define("Ext.dd.DragZone",{extend:Ext.dd.DragSource,constructor:function(c,b){var d=this,a=d.containerScroll;d.callParent([c,b]);if(a){c=d.scrollEl||c;c=Ext.get(c);if(Ext.isObject(a)){c.ddScrollConfig=a}Ext.dd.ScrollManager.register(c)}},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},getRepairXY:function(a){return Ext.fly(this.dragData.ddel).getXY()},destroy:function(){this.callParent();if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.scrollEl||this.el)}}});Ext.define("Ext.dd.ScrollManager",{singleton:true,constructor:function(){var a=Ext.dd.DragDropManager;a.fireEvents=Ext.Function.createSequence(a.fireEvents,this.onFire,this);a.stopDrag=Ext.Function.createSequence(a.stopDrag,this.onStop,this);this.doScroll=Ext.Function.bind(this.doScroll,this);this.ddmInstance=a;this.els={};this.dragEl=null;this.proc={}},onStop:function(a){var b=Ext.dd.ScrollManager;b.dragEl=null;b.clearProc()},triggerRefresh:function(){if(this.ddmInstance.dragCurrent){this.ddmInstance.refreshCache(this.ddmInstance.dragCurrent.groups)}},doScroll:function(){if(this.ddmInstance.dragCurrent){var a=this.proc,b=a.el,c=a.el.ddScrollConfig,d=c?c.increment:this.increment;if(!this.animate){if(b.scroll(a.dir,d)){this.triggerRefresh()}}else{b.scroll(a.dir,d,true,this.animDuration,this.triggerRefresh)}}},clearProc:function(){var a=this.proc;if(a.id){clearInterval(a.id)}a.id=0;a.el=null;a.dir=""},startProc:function(b,a){this.clearProc();this.proc.el=b;this.proc.dir=a;var d=b.ddScrollConfig?b.ddScrollConfig.ddGroup:undefined,c=b.ddScrollConfig&&b.ddScrollConfig.frequency?b.ddScrollConfig.frequency:this.frequency;if(d===undefined||this.ddmInstance.dragCurrent.ddGroup==d){this.proc.id=setInterval(this.doScroll,c)}},onFire:function(h,l){if(l||!this.ddmInstance.dragCurrent){return}if(!this.dragEl||this.dragEl!=this.ddmInstance.dragCurrent){this.dragEl=this.ddmInstance.dragCurrent;this.refreshCache()}var m=h.getXY(),n=h.getPoint(),j=this.proc,g=this.els,b,d,a,k;for(b in g){d=g[b];a=d._region;k=d.ddScrollConfig?d.ddScrollConfig:this;if(a&&a.contains(n)&&d.isScrollable()){if(a.bottom-n.y<=k.vthresh){if(j.el!=d){this.startProc(d,"down")}return}else{if(a.right-n.x<=k.hthresh){if(j.el!=d){this.startProc(d,"left")}return}else{if(n.y-a.top<=k.vthresh){if(j.el!=d){this.startProc(d,"up")}return}else{if(n.x-a.left<=k.hthresh){if(j.el!=d){this.startProc(d,"right")}return}}}}}}this.clearProc()},register:function(c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.register(c[b])}}else{c=Ext.get(c);this.els[c.id]=c}},unregister:function(c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.unregister(c[b])}}else{c=Ext.get(c);delete this.els[c.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,ddGroup:undefined,refreshCache:function(){var a=this.els,b;for(b in a){if(typeof a[b]=="object"){a[b]._region=a[b].getRegion()}}}});Ext.define("Ext.dd.DropTarget",{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)}this.callParent([this.el.dom,this.ddGroup||this.group,{isTarget:true}])},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(a,c,b){if(this.overClass){this.el.addCls(this.overClass)}return this.dropAllowed},notifyOver:function(a,c,b){return this.dropAllowed},notifyOut:function(a,c,b){if(this.overClass){this.el.removeCls(this.overClass)}},notifyDrop:function(a,c,b){return false},destroy:function(){this.callParent();if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});Ext.define("Ext.dd.Registry",{singleton:true,constructor:function(){this.elements={};this.handles={};this.autoIdSeed=0},getId:function(b,a){if(typeof b=="string"){return b}var c=b.id;if(!c&&a!==false){c="extdd-"+ ++this.autoIdSeed;b.id=c}return c},register:function(d,e){e=e||{};if(typeof d=="string"){d=document.getElementById(d)}e.ddel=d;this.elements[this.getId(d)]=e;if(e.isHandle!==false){this.handles[e.ddel.id]=e}if(e.handles){var c=e.handles,b,a;for(b=0,a=c.length;b<a;b++){this.handles[this.getId(c[b])]=e}}},unregister:function(d){var g=this.getId(d,false),e=this.elements[g],c,b,a;if(e){delete this.elements[g];if(e.handles){c=e.handles;for(b=0,a=c.length;b<a;b++){delete this.handles[this.getId(c[b],false)]}}}},getHandle:function(a){if(typeof a!="string"){a=a.id}return this.handles[a]},getHandleFromEvent:function(b){var a=b.getTarget();return a?this.handles[a.id]:null},getTarget:function(a){if(typeof a!="string"){a=a.id}return this.elements[a]},getTargetFromEvent:function(b){var a=b.getTarget();return a?this.elements[a.id]||this.handles[a.id]:null}});Ext.define("Ext.dd.DropZone",{extend: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(b,g,d){var c=this,h=c.getTargetFromEvent(g),a=h?c.onNodeDrop(h,b,g,d):c.onContainerDrop(b,g,d);if(c.lastOverNode){c.onNodeOut(c.lastOverNode,b,g,d);c.lastOverNode=null}return a},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)}});Ext.define("Ext.direct.Event",{alias:"direct.event",status:true,constructor:function(a){Ext.apply(this,a)},getName:function(){return this.name},getData:function(){return this.data}});Ext.define("Ext.direct.RemotingEvent",{extend:Ext.direct.Event,alias:"direct.rpc",getTransaction:function(){var a=this;return a.transaction||Ext.direct.Manager.getTransaction(a.tid)}});Ext.define("Ext.direct.ExceptionEvent",{extend:Ext.direct.RemotingEvent,alias:"direct.exception",status:false});Ext.define("Ext.direct.JsonProvider",{extend:Ext.direct.Provider,alias:"direct.jsonprovider",parseResponse:function(a){if(!Ext.isEmpty(a.responseText)){if(Ext.isObject(a.responseText)){return a.responseText}return Ext.decode(a.responseText)}return null},createEvents:function(b){var h=this,j=null,d=[],g,c,a;try{j=h.parseResponse(b)}catch(k){g=new Ext.direct.ExceptionEvent({data:k,xhr:b,code:Ext.direct.Manager.exceptions.PARSE,message:"Error parsing json response: \n\n "+k});return[g]}if(Ext.isArray(j)){for(c=0,a=j.length;c<a;++c){d.push(h.createEvent(j[c]))}}else{if(Ext.isObject(j)){d.push(h.createEvent(j))}}return d},createEvent:function(a){return Ext.create("direct."+a.type,a)}});Ext.define("Ext.direct.PollingProvider",{extend:Ext.direct.JsonProvider,alias:"direct.pollingprovider",interval:3000,constructor:function(a){var b=this;b.callParent(arguments);b.addEvents("beforepoll","poll")},isConnected:function(){return !!this.pollTask},connect:function(){var b=this,a=b.url;if(a&&!b.pollTask){b.pollTask=Ext.TaskManager.start({run:b.runPoll,interval:b.interval,scope:b});b.fireEvent("connect",b)}},disconnect:function(){var a=this;if(a.pollTask){Ext.TaskManager.stop(a.pollTask);delete a.pollTask;a.fireEvent("disconnect",a)}},runPoll:function(){var b=this,a=b.url;if(b.fireEvent("beforepoll",b)!==false){if(Ext.isFunction(a)){a(b.baseParams)}else{Ext.Ajax.request({url:a,callback:b.onData,scope:b,params:b.baseParams})}b.fireEvent("poll",b)}},onData:function(e,h,b){var g=this,d,a,c;if(h){c=g.createEvents(b);for(d=0,a=c.length;d<a;++d){g.fireEvent("data",g,c[d])}}else{c=new Ext.direct.ExceptionEvent({data:null,code:Ext.direct.Manager.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:b});g.fireEvent("data",g,c)}}});Ext.define("Ext.direct.RemotingMethod",{constructor:function(c){var d=this,h=Ext.isDefined(c.params)?c.params:c.len,b,a,e,g;d.name=c.name;d.formHandler=c.formHandler;if(Ext.isNumeric(h)){d.len=h;d.ordered=true}else{d.params={};a=h.length;for(e=0;e<a;e++){g=h[e];b=Ext.isObject(g)?g.name:g;d.params[b]=true}}},getArgs:function(g,b,h){var e=this,c=[],d,a;if(e.ordered){if(e.len>0){if(b){for(d=0,a=b.length;d<a;d++){c.push(g[b[d]])}}else{if(h){c.push(g)}}}}else{c.push(g)}return c},getCallData:function(e){var g=this,c=null,d=g.len,b=g.params,h,j,a,k;if(g.ordered){h=e[d];j=e[d+1];k=e[d+2];if(d!==0){c=e.slice(0,d)}}else{c=Ext.apply({},e[0]);h=e[1];j=e[2];k=e[3];for(a in c){if(c.hasOwnProperty(a)&&!b[a]){delete c[a]}}}return{data:c,callback:h,scope:j,options:k}}});Ext.define("Ext.direct.Transaction",{alias:"direct.transaction",alternateClassName:"Ext.Direct.Transaction",statics:{TRANSACTION_ID:0},constructor:function(a){var b=this;Ext.apply(b,a);b.id=b.tid=++b.self.TRANSACTION_ID;b.retryCount=0},send:function(){var a=this;a.provider.queueTransaction(a)},retry:function(){var a=this;a.retryCount++;a.send()},getProvider:function(){return this.provider}});Ext.define("Ext.direct.RemotingProvider",{extend:Ext.direct.JsonProvider,alias:"direct.remotingprovider",enableBuffer:10,maxRetries:1,constructor:function(a){var b=this;b.callParent(arguments);b.addEvents("beforecall","call","beforecallback");b.namespace=Ext.isString(b.namespace)?Ext.ns(b.namespace):b.namespace||Ext.global;b.transactions=new Ext.util.MixedCollection;b.callBuffer=[]},getNamespace:function(b,e){var g,d,c,a;b=b||Ext.global;g=e.toString().split(".");for(c=0,a=g.length;c<a;c++){d=g[c];b=b[d];if(typeof b==="undefined"){return b}}return b},createNamespaces:function(b,e){var g,d;b=b||Ext.global;g=e.toString().split(".");for(var c=0,a=g.length;c<a;c++){d=g[c];b[d]=b[d]||{};b=b[d]}return b},initAPI:function(){var j=this,e=j.actions,c=j.namespace,d,k,b,g,h,a;for(d in e){if(e.hasOwnProperty(d)){if(j.disableNestedActions){k=c[d];if(!k){k=c[d]={}}}else{k=j.getNamespace(c,d);if(!k){k=j.createNamespaces(c,d)}}b=e[d];for(g=0,h=b.length;g<h;++g){a=new Ext.direct.RemotingMethod(b[g]);k[a.name]=j.createHandler(d,a)}}}},createHandler:function(c,e){var b=this,d=Array.prototype.slice,a;if(!e.formHandler){a=function(){b.configureRequest(c,e,d.call(arguments,0))}}else{a=function(h,j,g){b.configureFormRequest(c,e,h,j,g)}}a.directCfg={action:c,method:e};return a},isConnected:function(){return !!this.connected},connect:function(){var a=this;if(a.url){a.initAPI();a.connected=true;a.fireEvent("connect",a)}},disconnect:function(){var a=this;if(a.connected){a.connected=false;a.fireEvent("disconnect",a)}},runCallback:function(g,c){var e=!!c.status,d=e?"success":"failure",h,b,a;if(g&&g.callback){h=g.callback;b=g.callbackOptions;a=typeof c.result!=="undefined"?c.result:c.data;if(Ext.isFunction(h)){h(a,c,e,b)}else{Ext.callback(h[d],h.scope,[a,c,e,b]);Ext.callback(h.callback,h.scope,[a,c,e,b])}}},onData:function(l,j,c){var g=this,d,e,k,a,b,h;if(j){k=g.createEvents(c);for(d=0,e=k.length;d<e;++d){a=k[d];b=g.getTransaction(a);g.fireEvent("data",g,a);if(b&&g.fireEvent("beforecallback",g,a,b)!==false){g.runCallback(b,a,true);Ext.direct.Manager.removeTransaction(b)}}}else{h=[].concat(l.transaction);for(d=0,e=h.length;d<e;++d){b=g.getTransaction(h[d]);if(b&&b.retryCount<g.maxRetries){b.retry()}else{a=new Ext.direct.ExceptionEvent({data:null,transaction:b,code:Ext.direct.Manager.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:c});g.fireEvent("data",g,a);if(b&&g.fireEvent("beforecallback",g,b)!==false){g.runCallback(b,a,false);Ext.direct.Manager.removeTransaction(b)}}}}},getTransaction:function(a){return a&&a.tid?Ext.direct.Manager.getTransaction(a.tid):null},configureRequest:function(g,b,j){var k=this,d,h,l,m,a,c,e;d=b.getCallData(j);h=d.data;l=d.callback;m=d.scope;a=d.options||{};e=Ext.apply({},{provider:k,args:j,action:g,method:b.name,data:h,callbackOptions:a,callback:m&&Ext.isFunction(l)?Ext.Function.bind(l,m):l});if(a.timeout){Ext.applyIf(e,{timeout:a.timeout})}c=new Ext.direct.Transaction(e);if(k.fireEvent("beforecall",k,c,b)!==false){Ext.direct.Manager.addTransaction(c);k.queueTransaction(c);k.fireEvent("call",k,c,b)}},getCallData:function(a){return{action:a.action,method:a.method,data:a.data,type:"rpc",tid:a.id}},sendRequest:function(h){var g=this,e,b,j,d=g.enableUrlEncode,c,a;e={url:g.url,callback:g.onData,scope:g,transaction:h,timeout:g.timeout};if(h.timeout){e.timeout=h.timeout}if(Ext.isArray(h)){b=[];for(c=0,a=h.length;c<a;++c){b.push(g.getCallData(h[c]))}}else{b=g.getCallData(h)}if(d){j={};j[Ext.isString(d)?d:"data"]=Ext.encode(b);e.params=j}else{e.jsonData=b}Ext.Ajax.request(e)},queueTransaction:function(c){var b=this,a=b.enableBuffer;if(c.form){b.sendFormRequest(c);return}if(typeof c.timeout!=="undefined"){b.sendRequest(c);return}if(a){b.callBuffer.push(c);if(!b.callTask){b.callTask=new Ext.util.DelayedTask(b.combineAndSend,b)}b.callTask.delay(Ext.isNumber(a)?a:10)}else{b.combineAndSend()}},combineAndSend:function(){var c=this,b=c.callBuffer,a=b.length;if(a>0){c.sendRequest(a==1?b[0]:b);c.callBuffer=[]}},configureFormRequest:function(e,a,b,j,k){var h=this,c,g,d;c=new Ext.direct.Transaction({provider:h,action:e,method:a.name,args:[b,j,k],callback:k&&Ext.isFunction(j)?Ext.Function.bind(j,k):j,isForm:true});if(h.fireEvent("beforecall",h,c,a)!==false){Ext.direct.Manager.addTransaction(c);g=String(b.getAttribute("enctype")).toLowerCase()=="multipart/form-data";d={extTID:c.id,extAction:e,extMethod:a.name,extType:"rpc",extUpload:String(g)};Ext.apply(c,{form:Ext.getDom(b),isUpload:g,params:j&&Ext.isObject(j.params)?Ext.apply(d,j.params):d});h.fireEvent("call",h,c,a);h.sendFormRequest(c)}},sendFormRequest:function(b){var a=this;Ext.Ajax.request({url:a.url,params:b.params,callback:a.onData,scope:a,form:b.form,isUpload:b.isUpload,transaction:b})}});Ext.define("Ext.dom.Layer",{extend:Ext.Element,alternateClassName:"Ext.Layer",statics:{shims:[]},isLayer:true,localXYNames:{get:"getLocalXY",set:"setLocalXY"},constructor:function(c,b){c=c||{};var d=this,e=Ext.DomHelper,h=c.parentEl,g=h?Ext.getDom(h):document.body,j=c.hideMode,a=Ext.baseCSSPrefix+(c.fixed&&!(Ext.isIE6||Ext.isIEQuirks)?"fixed-layer":"layer");d.el=d;if(b){d.dom=Ext.getDom(b)}if(!d.dom){d.dom=e.append(g,c.dh||{tag:"div",cls:a})}else{d.addCls(a);if(!d.dom.parentNode){g.appendChild(d.dom)}}if(c.id){d.id=d.dom.id=c.id}else{d.id=Ext.id(d.dom)}Ext.Element.addToCache(d);if(c.cls){d.addCls(c.cls)}d.constrain=c.constrain!==false;if(j){d.setVisibilityMode(Ext.Element[j.toUpperCase()]);if(d.visibilityMode==Ext.Element.ASCLASS){d.visibilityCls=c.visibilityCls}}else{if(c.useDisplay){d.setVisibilityMode(Ext.Element.DISPLAY)}else{d.setVisibilityMode(Ext.Element.VISIBILITY)}}if(c.shadow){d.shadowOffset=c.shadowOffset||4;d.shadow=new Ext.Shadow({offset:d.shadowOffset,mode:c.shadow,fixed:c.fixed});d.disableShadow()}else{d.shadowOffset=0}d.useShim=c.shim!==false&&Ext.useShims;if(c.hidden===true){d.hide()}else{d.show()}},getZIndex:function(){return parseInt((this.getShim()||this).getStyle("z-index"),10)},getShim:function(){var b=this,c,a;if(!b.useShim){return null}if(!b.shim){c=b.self.shims.shift();if(!c){c=b.createShim();c.enableDisplayMode("block");c.hide()}a=b.dom.parentNode;if(c.dom.parentNode!=a){a.insertBefore(c.dom,b.dom)}b.shim=c}return b.shim},hideShim:function(){var a=this;if(a.shim){a.shim.setDisplayed(false);a.self.shims.push(a.shim);delete a.shim}},disableShadow:function(){var a=this;if(a.shadow&&!a.shadowDisabled){a.shadowDisabled=true;a.shadow.hide();a.lastShadowOffset=a.shadowOffset;a.shadowOffset=0}},enableShadow:function(a){var b=this;if(b.shadow&&b.shadowDisabled){b.shadowDisabled=false;b.shadowOffset=b.lastShadowOffset;delete b.lastShadowOffset;if(a){b.sync(true)}}},sync:function(b){var j=this,o=j.shadow,g,d,a,c,p,l,k,n,e,m;if(!j.updating&&j.isVisible()&&(o||j.useShim)){c=j.getShim();p=j[j.localXYNames.get]();l=p[0];k=p[1];n=j.dom.offsetWidth;e=j.dom.offsetHeight;if(o&&!j.shadowDisabled){if(b&&!o.isVisible()){o.show(j)}else{o.realign(l,k,n,e)}if(c){m=c.getStyle("z-index");if(m>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}c.show();if(o.isVisible()){g=o.el.getXY();d=c.dom.style;a=o.el.getSize();if(Ext.supports.CSS3BoxShadow){a.height+=6;a.width+=4;g[0]-=2;g[1]-=4}d.left=g[0]+"px";d.top=g[1]+"px";d.width=a.width+"px";d.height=a.height+"px"}else{c.setSize(n,e);c[j.localXYNames.set](l,k)}}}else{if(c){m=c.getStyle("z-index");if(m>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}c.show();c.setSize(n,e);c[j.localXYNames.set](l,k)}}}return j},remove:function(){this.hideUnders();this.callParent()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var g=Ext.Element.getViewWidth(),b=Ext.Element.getViewHeight(),m=Ext.getDoc().getScroll(),l=this.getXY(),j=l[0],e=l[1],a=this.shadowOffset,k=this.dom.offsetWidth+a,c=this.dom.offsetHeight+a,d=false;if(j+k>g+m.left){j=g-k-a;d=true}if(e+c>b+m.top){e=b-c-a;d=true}if(j<m.left){j=m.left;d=true}if(e<m.top){e=m.top;d=true}if(d){Ext.Layer.superclass.setXY.call(this,[j,e]);this.sync()}}return this},getConstrainOffset:function(){return this.shadowOffset},setVisible:function(e,b,d,h,g){var c=this,a;a=function(){if(e){c.sync(true)}if(h){h()}};if(!e){c.hideUnders(true)}c.callParent([e,b,d,h,g]);if(!b){a()}return c},beforeFx:function(){this.beforeAction();return this.callParent(arguments)},afterFx:function(){this.callParent(arguments);this.sync(this.isVisible())},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide()}},setLeft:function(a){this.callParent(arguments);return this.sync()},setTop:function(a){this.callParent(arguments);return this.sync()},setLeftTop:function(b,a){this.callParent(arguments);return this.sync()},setLocalX:function(){this.callParent(arguments);return this.sync()},setLocalXY:function(){this.callParent(arguments);return this.sync()},setLocalY:function(){this.callParent(arguments);return this.sync()},setXY:function(d,a,c,g,e){var b=this;g=b.createCB(g);b.fixDisplay();b.beforeAction();b.callParent([d,a,c,g,e]);if(!a){g()}return b},createCB:function(c){var a=this,b=a.shadow&&a.shadow.isVisible();return function(){a.constrainXY();a.sync(b);if(c){c()}}},setX:function(a,b,c,e,d){this.setXY([a,this.getY()],b,c,e,d);return this},setY:function(e,a,b,d,c){this.setXY([this.getX(),e],a,b,d,c);return this},setSize:function(a,c,b,e,j,g){var d=this;j=d.createCB(j);d.beforeAction();d.callParent([a,c,b,e,j,g]);if(!b){j()}return d},setWidth:function(a,b,d,g,e){var c=this;g=c.createCB(g);c.beforeAction();c.callParent([a,b,d,g,e]);if(!b){g()}return c},setHeight:function(b,a,d,g,e){var c=this;g=c.createCB(g);c.beforeAction();c.callParent([b,a,d,g,e]);if(!a){g()}return c},setBounds:function(h,g,a,k,b,c,j,d){var e=this;j=e.createCB(j);e.beforeAction();if(!b){Ext.Layer.superclass.setXY.call(e,[h,g]);Ext.Layer.superclass.setSize.call(e,a,k);j()}else{e.callParent([h,g,a,k,b,c,j,d])}return e},setZIndex:function(a){var b=this;b.zindex=a;if(b.getShim()){b.shim.setStyle("z-index",a++)}if(b.shadow){b.shadow.setZIndex(a++)}return b.setStyle("z-index",a)},onOpacitySet:function(a){var b=this.shadow;if(b){b.setOpacity(a)}}});Ext.define("Ext.draw.Matrix",{constructor:function(h,g,m,l,k,j){if(h!=null){this.matrix=[[h,m,k],[g,l,j],[0,0,1]]}else{this.matrix=[[1,0,0],[0,1,0],[0,0,1]]}},add:function(u,q,n,l,j,h){var o=this,g=[[],[],[]],t=[[u,n,j],[q,l,h],[0,0,1]],s,p,m,k;for(s=0;s<3;s++){for(p=0;p<3;p++){k=0;for(m=0;m<3;m++){k+=o.matrix[s][m]*t[m][p]}g[s][p]=k}}o.matrix=g},prepend:function(u,q,n,l,j,h){var o=this,g=[[],[],[]],t=[[u,n,j],[q,l,h],[0,0,1]],s,p,m,k;for(s=0;s<3;s++){for(p=0;p<3;p++){k=0;for(m=0;m<3;m++){k+=t[s][m]*o.matrix[m][p]}g[s][p]=k}}o.matrix=g},invert:function(){var k=this.matrix,j=k[0][0],h=k[1][0],o=k[0][1],n=k[1][1],m=k[0][2],l=k[1][2],g=j*n-h*o;return new Ext.draw.Matrix(n/g,-h/g,-o/g,j/g,(o*l-n*m)/g,(h*m-j*l)/g)},clone:function(){var j=this.matrix,h=j[0][0],g=j[1][0],n=j[0][1],m=j[1][1],l=j[0][2],k=j[1][2];return new Ext.draw.Matrix(h,g,n,m,l,k)},translate:function(a,b){this.prepend(1,0,0,1,a,b)},scale:function(b,e,a,d){var c=this;if(e==null){e=b}c.add(b,0,0,e,a*(1-b),d*(1-e))},rotate:function(c,b,h){c=Ext.draw.Draw.rad(c);var e=this,g=+Math.cos(c).toFixed(9),d=+Math.sin(c).toFixed(9);e.add(g,d,-d,g,b-g*b+d*h,-(d*b)+h-g*h)},x:function(a,c){var b=this.matrix;return a*b[0][0]+c*b[0][1]+b[0][2]},y:function(a,c){var b=this.matrix;return a*b[1][0]+c*b[1][1]+b[1][2]},get:function(b,a){return +this.matrix[b][a].toFixed(4)},toString:function(){var a=this;return[a.get(0,0),a.get(0,1),a.get(1,0),a.get(1,1),0,0].join()},toSvg:function(){var a=this;return"matrix("+[a.get(0,0),a.get(1,0),a.get(0,1),a.get(1,1),a.get(0,2),a.get(1,2)].join()+")"},toFilter:function(b,a){var c=this;b=b||0;a=a||0;return"progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', filterType='bilinear', M11="+c.get(0,0)+", M12="+c.get(0,1)+", M21="+c.get(1,0)+", M22="+c.get(1,1)+", Dx="+(c.get(0,2)+b)+", Dy="+(c.get(1,2)+a)+")"},offset:function(){var a=this.matrix;return[(a[0][2]||0).toFixed(4),(a[1][2]||0).toFixed(4)]},split:function(){function d(g){return g[0]*g[0]+g[1]*g[1]}function b(g){var h=Math.sqrt(d(g));g[0]/=h;g[1]/=h}var a=this.matrix,c={translateX:a[0][2],translateY:a[1][2]},e;e=[[a[0][0],a[0][1]],[a[1][1],a[1][1]]];c.scaleX=Math.sqrt(d(e[0]));b(e[0]);c.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1];e[1]=[e[1][0]-e[0][0]*c.shear,e[1][1]-e[0][1]*c.shear];c.scaleY=Math.sqrt(d(e[1]));b(e[1]);c.shear/=c.scaleY;c.rotate=Math.asin(-e[0][1]);c.isSimple=!+c.shear.toFixed(9)&&(c.scaleX.toFixed(9)==c.scaleY.toFixed(9)||!c.rotate);return c}});Ext.define("Ext.draw.SpriteDD",{extend:Ext.dd.DragSource,constructor:function(b,a){var d=this,c=b.el;d.sprite=b;d.el=c;d.dragData={el:c,sprite:b};d.callParent([c,a]);d.sprite.setStyle("cursor","move")},showFrame:Ext.emptyFn,createFrame:Ext.emptyFn,getDragEl:function(a){return this.el},getRegion:function(){var k=this,g=k.el,n,d,c,p,o,u,a,m,h,s,q;q=k.sprite;s=q.getBBox();try{n=Ext.Element.getXY(g)}catch(j){}if(!n){return null}d=n[0];c=d+s.width;p=n[1];o=p+s.height;return new Ext.util.Region(p,c,o,d)},startDrag:function(b,d){var c=this,a=c.sprite.attr;c.prev=c.sprite.surface.transformToViewBox(b,d)},onDrag:function(j){var h=j.getXY(),g=this,d=g.sprite,a=d.attr,c,b;h=g.sprite.surface.transformToViewBox(h[0],h[1]);c=h[0]-g.prev[0];b=h[1]-g.prev[1];d.setAttributes({translate:{x:a.translation.x+c,y:a.translation.y+b}},true);g.prev=h},setDragElPos:function(){return false}});Ext.define("Ext.draw.Sprite",{mixins:{observable:Ext.util.Observable,animate:Ext.util.Animate},dirty:false,dirtyHidden:false,dirtyTransform:false,dirtyPath:true,dirtyFont:true,zIndexDirty:true,isSprite:true,zIndex:0,fontProperties:["font","font-size","font-weight","font-style","font-family","text-anchor","text"],pathProperties:["x","y","d","path","height","width","radius","r","rx","ry","cx","cy"],constructor:function(a){var b=this;a=Ext.merge({},a||{});b.id=Ext.id(null,"ext-sprite-");b.transformations=[];Ext.copyTo(this,a,"surface,group,type,draggable");b.bbox={};b.attr={zIndex:0,translation:{x:null,y:null},rotation:{degrees:null,x:null,y:null},scaling:{x:null,y:null,cx:null,cy:null}};delete a.surface;delete a.group;delete a.type;delete a.draggable;b.setAttributes(a);b.addEvents("beforedestroy","destroy","render","mousedown","mouseup","mouseover","mouseout","mousemove","click");b.mixins.observable.constructor.apply(this,arguments)},initDraggable:function(){var a=this;if(!a.el){a.surface.createSpriteElement(a)}a.dd=new Ext.draw.SpriteDD(a,Ext.isBoolean(a.draggable)?null:a.draggable);a.on("beforedestroy",a.dd.destroy,a.dd)},setAttributes:function(l,o){var u=this,j=u.fontProperties,q=j.length,h=u.pathProperties,g=h.length,s=!!u.surface,a=s&&u.surface.customAttributes||{},c=u.attr,b=false,m,p,k,d,t,n,w,e;l=Ext.apply({},l);for(m in a){if(l.hasOwnProperty(m)&&typeof a[m]=="function"){Ext.apply(l,a[m].apply(u,[].concat(l[m])))}}if(!!l.hidden!==!!c.hidden){u.dirtyHidden=true}for(p=0;p<g;p++){m=h[p];if(m in l&&l[m]!==c[m]){u.dirtyPath=true;b=true;break}}if("zIndex" in l){u.zIndexDirty=true}if("text" in l){u.dirtyFont=true;b=true}for(p=0;p<q;p++){m=j[p];if(m in l&&l[m]!==c[m]){u.dirtyFont=true;b=true;break}}k=l.translation||l.translate;delete l.translate;delete l.translation;d=c.translation;if(k){if("x" in k&&k.x!==d.x||"y" in k&&k.y!==d.y){u.dirtyTransform=true;d.x=k.x;d.y=k.y}}t=l.rotation||l.rotate;n=c.rotation;delete l.rotate;delete l.rotation;if(t){if("x" in t&&t.x!==n.x||"y" in t&&t.y!==n.y||"degrees" in t&&t.degrees!==n.degrees){u.dirtyTransform=true;n.x=t.x;n.y=t.y;n.degrees=t.degrees}}w=l.scaling||l.scale;e=c.scaling;delete l.scale;delete l.scaling;if(w){if("x" in w&&w.x!==e.x||"y" in w&&w.y!==e.y||"cx" in w&&w.cx!==e.cx||"cy" in w&&w.cy!==e.cy){u.dirtyTransform=true;e.x=w.x;e.y=w.y;e.cx=w.cx;e.cy=w.cy}}if(!u.dirtyTransform&&b){if(c.scaling.x===null||c.scaling.y===null||c.rotation.y===null||c.rotation.y===null){u.dirtyTransform=true}}Ext.apply(c,l);u.dirty=true;if(o===true&&s){u.redraw()}return this},getBBox:function(){return this.surface.getBBox(this)},setText:function(a){return this.surface.setText(this,a)},hide:function(a){this.setAttributes({hidden:true},a);return this},show:function(a){this.setAttributes({hidden:false},a);return this},remove:function(){if(this.surface){this.surface.remove(this);return true}return false},onRemove:function(){this.surface.onRemove(this)},destroy:function(){var a=this;if(a.fireEvent("beforedestroy",a)!==false){a.remove();a.surface.onDestroy(a);a.clearListeners();a.fireEvent("destroy")}},redraw:function(){this.surface.renderItem(this);return this},setStyle:function(){this.el.setStyle.apply(this.el,arguments);return this},addCls:function(a){this.surface.addCls(this,a);return this},removeCls:function(a){this.surface.removeCls(this,a);return this}});Ext.define("Ext.draw.Text",{extend:Ext.draw.Component,alias:"widget.text",text:"",focusable:false,viewBox:false,autoSize:true,baseCls:Ext.baseCSSPrefix+"surface "+Ext.baseCSSPrefix+"draw-text",initComponent:function(){var a=this;a.textConfig=Ext.apply({type:"text",text:a.text,rotate:{degrees:a.degrees||0}},a.textStyle);Ext.apply(a.textConfig,a.getStyles(a.styleSelectors||a.styleSelector));a.initialConfig.items=[a.textConfig];a.callParent(arguments)},getStyles:function(d){d=Ext.Array.from(d);var c=0,b=d.length,g,e,h,a={};for(;c<b;c++){g=Ext.util.CSS.getRule(d[c]);if(g){e=g.style;if(e){Ext.apply(a,{"font-family":e.fontFamily,"font-weight":e.fontWeight,"line-height":e.lineHeight,"font-size":e.fontSize,fill:e.color})}}}return a},setAngle:function(d){var c=this,a,b;if(c.rendered){a=c.surface;b=a.items.items[0];c.degrees=d;b.setAttributes({rotate:{degrees:d}},true);if(c.autoSize||c.viewBox){c.updateLayout()}}else{c.degrees=d}},setText:function(d){var c=this,a,b;if(c.rendered){a=c.surface;b=a.items.items[0];c.text=d||"";a.remove(b);c.textConfig.type="text";c.textConfig.text=c.text;b=a.add(c.textConfig);b.setAttributes({rotate:{degrees:c.degrees}},true);if(c.autoSize||c.viewBox){c.updateLayout()}}else{c.on({render:function(){c.setText(d)},single:true})}}});Ext.define("Ext.draw.engine.ImageExporter",{singleton:true,defaultUrl:"http://svg.sencha.io",supportedTypes:["image/png","image/jpeg"],widthParam:"width",heightParam:"height",typeParam:"type",svgParam:"svg",formCls:Ext.baseCSSPrefix+"hide-display",generate:function(a,b){b=b||{};var e=this,c=b.type,d;if(Ext.Array.indexOf(e.supportedTypes,c)===-1){return false}d=Ext.getBody().createChild({tag:"form",method:"POST",action:b.url||e.defaultUrl,cls:e.formCls,children:[{tag:"input",type:"hidden",name:b.widthParam||e.widthParam,value:b.width||a.width},{tag:"input",type:"hidden",name:b.heightParam||e.heightParam,value:b.height||a.height},{tag:"input",type:"hidden",name:b.typeParam||e.typeParam,value:c},{tag:"input",type:"hidden",name:b.svgParam||e.svgParam}]});d.last(null,true).value=Ext.draw.engine.SvgExporter.generate(a);d.dom.submit();d.remove();return true}});Ext.define("Ext.draw.engine.Svg",{extend:Ext.draw.Surface,engine:"Svg",trimRe:/^\s+|\s+$/g,spacesRe:/\s+/,xlink:"http://www.w3.org/1999/xlink",translateAttrs:{radius:"r",radiusX:"rx",radiusY:"ry",path:"d",lineWidth:"stroke-width",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",strokeLinejoin:"stroke-linejoin"},parsers:{},minDefaults:{circle:{cx:0,cy:0,r:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},ellipse:{cx:0,cy:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},rect:{x:0,y:0,width:0,height:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},text:{x:0,y:0,"text-anchor":"start","font-family":null,"font-size":null,"font-weight":null,"font-style":null,fill:"#000",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},path:{d:"M0,0",fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},image:{x:0,y:0,width:0,height:0,preserveAspectRatio:"none",opacity:null}},createSvgElement:function(d,a){var c=this.domRef.createElementNS("http://www.w3.org/2000/svg",d),b;if(a){for(b in a){c.setAttribute(b,String(a[b]))}}return c},createSpriteElement:function(a){var b=this.createSvgElement(a.type);b.id=a.id;if(b.style){b.style.webkitTapHighlightColor="rgba(0,0,0,0)"}a.el=Ext.get(b);this.applyZIndex(a);a.matrix=new Ext.draw.Matrix;a.bbox={plain:0,transform:0};this.applyAttrs(a);this.applyTransformations(a);a.fireEvent("render",a);return b},getBBoxText:function(j){var k={},g,l,a,c,h,b;if(j&&j.el){b=j.el.dom;try{k=b.getBBox();return k}catch(d){}k={x:k.x,y:Infinity,width:0,height:0};h=b.getNumberOfChars();for(c=0;c<h;c++){g=b.getExtentOfChar(c);k.y=Math.min(g.y,k.y);l=g.y+g.height-k.y;k.height=Math.max(k.height,l);a=g.x+g.width-k.x;k.width=Math.max(k.width,a)}return k}},hide:function(){Ext.get(this.el).hide()},show:function(){Ext.get(this.el).show()},hidePrim:function(a){this.addCls(a,Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){this.removeCls(a,Ext.baseCSSPrefix+"hide-visibility")},getDefs:function(){return this._defs||(this._defs=this.createSvgElement("defs"))},transform:function(k,a){var h=this,j=new Ext.draw.Matrix,e=k.transformations,d=e.length,c=0,b,g;for(;c<d;c++){b=e[c];g=b.type;if(g=="translate"){j.translate(b.x,b.y)}else{if(g=="rotate"){j.rotate(b.degrees,b.x,b.y)}else{if(g=="scale"){j.scale(b.x,b.y,b.centerX,b.centerY)}}}}k.matrix=j;if(!a){k.el.set({transform:j.toSvg()})}},setSize:function(c,a){var d=this,b=d.el;c=+c||d.width;a=+a||d.height;d.width=c;d.height=a;b.setSize(c,a);b.set({width:c,height:a});d.callParent([c,a])},getRegion:function(){var e=this.el.getXY(),c=this.bgRect.getXY(),b=Math.max,a=b(e[0],c[0]),d=b(e[1],c[1]);return{left:a,top:d,right:a+this.width,bottom:d+this.height}},onRemove:function(a){if(a.el){a.el.destroy();delete a.el}this.callParent(arguments)},setViewBox:function(b,d,c,a){if(isFinite(b)&&isFinite(d)&&isFinite(c)&&isFinite(a)){this.callParent(arguments);this.el.dom.setAttribute("viewBox",[b,d,c,a].join(" "))}},render:function(c){var g=this,e,b,d,a,h,j;if(!g.el){e=g.width||0;b=g.height||0;d=g.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg",version:1.1,width:e,height:b});a=g.getDefs();h=g.createSvgElement("rect",{width:"100%",height:"100%",fill:"#000",stroke:"none",opacity:0});if(Ext.isSafari3){j=g.createSvgElement("rect",{x:-10,y:-10,width:"110%",height:"110%",fill:"none",stroke:"#000"})}d.appendChild(a);if(Ext.isSafari3){d.appendChild(j)}d.appendChild(h);c.appendChild(d);g.el=Ext.get(d);g.bgRect=Ext.get(h);if(Ext.isSafari3){g.webkitRect=Ext.get(j);g.webkitRect.hide()}g.el.on({scope:g,mouseup:g.onMouseUp,mousedown:g.onMouseDown,mouseover:g.onMouseOver,mouseout:g.onMouseOut,mousemove:g.onMouseMove,mouseenter:g.onMouseEnter,mouseleave:g.onMouseLeave,click:g.onClick,dblclick:g.onDblClick})}g.renderAll()},onMouseEnter:function(a){if(this.el.parent().getRegion().contains(a.getPoint())){this.fireEvent("mouseenter",a)}},onMouseLeave:function(a){if(!this.el.parent().getRegion().contains(a.getPoint())){this.fireEvent("mouseleave",a)}},processEvent:function(b,g){var d=g.getTarget(),a=this.surface,c;this.fireEvent(b,g);if(d.nodeName=="tspan"&&d.parentNode){d=d.parentNode}c=this.items.get(d.id);if(c){c.fireEvent(b,c,g)}},tuneText:function(k,l){var a=k.el.dom,b=[],n,h,m,d,e,c,g,j;if(l.hasOwnProperty("text")){m=k.tspans&&Ext.Array.map(k.tspans,function(o){return o.textContent}).join("");if(!k.tspans||l.text!=m){b=this.setText(k,l.text);k.tspans=b}else{b=k.tspans||[]}}if(b.length){n=this.getBBoxText(k).height;j=k.el.dom.getAttribute("x");for(d=0,e=b.length;d<e;d++){g=Ext.isFF3_0||Ext.isFF3_5?2:4;b[d].setAttribute("x",j);b[d].setAttribute("dy",d?n*1.2:n/g)}k.dirty=true}},setText:function(k,d){var h=this,a=k.el.dom,b=[],m,j,l,e,g,c;while(a.firstChild){a.removeChild(a.firstChild)}c=String(d).split("\n");for(e=0,g=c.length;e<g;e++){l=c[e];if(l){j=h.createSvgElement("tspan");j.appendChild(document.createTextNode(Ext.htmlDecode(l)));a.appendChild(j);b[e]=j}}return b},renderAll:function(){this.items.each(this.renderItem,this)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.zIndexDirty){this.applyZIndex(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},redraw:function(a){a.dirty=a.zIndexDirty=true;this.renderItem(a)},applyAttrs:function(s){var m=this,c=s.el,q=s.group,j=s.attr,t=m.parsers,g=m.gradientsMap||{},k=Ext.isSafari&&!Ext.isStrict,e,h,l,p,d,o,b,a,n;if(q){e=[].concat(q);l=e.length;for(h=0;h<l;h++){q=e[h];m.getGroup(q).add(s)}delete s.group}p=m.scrubAttrs(s)||{};s.bbox.plain=0;s.bbox.transform=0;if(s.type=="circle"||s.type=="ellipse"){p.cx=p.cx||p.x;p.cy=p.cy||p.y}else{if(s.type=="rect"){p.rx=p.ry=p.r}else{if(s.type=="path"&&p.d){p.d=Ext.draw.Draw.pathToString(Ext.draw.Draw.pathToAbsolute(p.d))}}}s.dirtyPath=false;if(p["clip-rect"]){m.setClip(s,p);delete p["clip-rect"]}if(s.type=="text"&&p.font&&s.dirtyFont){c.set({style:"font: "+p.font})}if(s.type=="image"){c.dom.setAttributeNS(m.xlink,"href",p.src)}Ext.applyIf(p,m.minDefaults[s.type]);if(s.dirtyHidden){j.hidden?m.hidePrim(s):m.showPrim(s);s.dirtyHidden=false}for(o in p){if(p.hasOwnProperty(o)&&p[o]!=null){if(k&&"color|stroke|fill".indexOf(o)>-1&&p[o] in g){p[o]=g[p[o]]}if(o=="hidden"&&s.type=="text"){continue}if(o in t){c.dom.setAttribute(o,t[o](p[o],s,m))}else{c.dom.setAttribute(o,p[o])}}}if(s.type=="text"){m.tuneText(s,p)}s.dirtyFont=false;b=j.style;if(b){c.setStyle(b)}s.dirty=false;if(Ext.isSafari3){m.webkitRect.show();setTimeout(function(){m.webkitRect.hide()})}},setClip:function(b,g){var e=this,d=g["clip-rect"],a,c;if(d){if(b.clip){b.clip.parentNode.parentNode.removeChild(b.clip.parentNode)}a=e.createSvgElement("clipPath");c=e.createSvgElement("rect");a.id=Ext.id(null,"ext-clip-");c.setAttribute("x",d.x);c.setAttribute("y",d.y);c.setAttribute("width",d.width);c.setAttribute("height",d.height);a.appendChild(c);e.getDefs().appendChild(a);b.el.dom.setAttribute("clip-path","url(#"+a.id+")");b.clip=c}},applyZIndex:function(d){var g=this,b=g.items,a=b.indexOf(d),e=d.el,c;if(g.el.dom.childNodes[a+2]!==e.dom){if(a>0){do{c=b.getAt(--a).el}while(!c&&a>0)}e.insertAfter(c||g.bgRect)}d.zIndexDirty=false},createItem:function(a){var b=new Ext.draw.Sprite(a);b.surface=this;return b},addGradient:function(h){h=Ext.draw.Draw.parseGradient(h);var e=this,d=h.stops.length,a=h.vector,l=Ext.isSafari&&!Ext.isStrict,j,g,k,c,b;b=e.gradientsMap||{};if(!l){if(h.type=="linear"){j=e.createSvgElement("linearGradient");j.setAttribute("x1",a[0]);j.setAttribute("y1",a[1]);j.setAttribute("x2",a[2]);j.setAttribute("y2",a[3])}else{j=e.createSvgElement("radialGradient");j.setAttribute("cx",h.centerX);j.setAttribute("cy",h.centerY);j.setAttribute("r",h.radius);if(Ext.isNumber(h.focalX)&&Ext.isNumber(h.focalY)){j.setAttribute("fx",h.focalX);j.setAttribute("fy",h.focalY)}}j.id=h.id;e.getDefs().appendChild(j);for(c=0;c<d;c++){g=h.stops[c];k=e.createSvgElement("stop");k.setAttribute("offset",g.offset+"%");k.setAttribute("stop-color",g.color);k.setAttribute("stop-opacity",g.opacity);j.appendChild(k)}}else{b["url(#"+h.id+")"]=h.stops[0].color}e.gradientsMap=b},hasCls:function(a,b){return b&&(" "+(a.el.dom.getAttribute("class")||"")+" ").indexOf(" "+b+" ")!=-1},addCls:function(e,h){var g=e.el,d,a,c,b=[],j=g.getAttribute("class")||"";if(!Ext.isArray(h)){if(typeof h=="string"&&!this.hasCls(e,h)){g.set({"class":j+" "+h})}}else{for(d=0,a=h.length;d<a;d++){c=h[d];if(typeof c=="string"&&(" "+j+" ").indexOf(" "+c+" ")==-1){b.push(c)}}if(b.length){g.set({"class":" "+b.join(" ")})}}},removeCls:function(k,g){var h=this,b=k.el,d=b.getAttribute("class")||"",c,j,e,l,a;if(!Ext.isArray(g)){g=[g]}if(d){a=d.replace(h.trimRe," ").split(h.spacesRe);for(c=0,e=g.length;c<e;c++){l=g[c];if(typeof l=="string"){l=l.replace(h.trimRe,"");j=Ext.Array.indexOf(a,l);if(j!=-1){Ext.Array.erase(a,j,1)}}}b.set({"class":a.join(" ")})}},destroy:function(){var a=this;a.callParent();if(a.el){a.el.remove()}if(a._defs){Ext.get(a._defs).destroy()}if(a.bgRect){Ext.get(a.bgRect).destroy()}if(a.webkitRect){Ext.get(a.webkitRect).destroy()}delete a.el}});Ext.define("Ext.draw.engine.SvgExporter",function(){var b=/,/g,c=/(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)\s('*.*'*)/,k=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,h=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,([\d\.]+)\)/g,g,j,e,n,o=function(p){g=p;j=g.length;e=g.width;n=g.height},l={path:function(u){var q=u.attr,y=q.path,t="",w,x,s;if(Ext.isArray(y[0])){s=y.length;for(x=0;x<s;x++){t+=y[x].join(" ")}}else{if(Ext.isArray(y)){t=y.join(" ")}else{t=y.replace(b," ")}}w=d({d:t,fill:q.fill||"none",stroke:q.stroke,"fill-opacity":q.opacity,"stroke-width":q["stroke-width"],"stroke-opacity":q["stroke-opacity"],"z-index":q.zIndex,transform:u.matrix.toSvg()});return"<path "+w+"/>"},text:function(x){var t=x.attr,s=c.exec(t.font),z=s&&s[1]||"12",q=s&&s[3]||"Arial",y=t.text,w=Ext.isFF3_0||Ext.isFF3_5?2:4,p="",u;x.getBBox();p+='<tspan x="'+(t.x||"")+'" dy="';p+=z/w+'">';p+=Ext.htmlEncode(y)+"</tspan>";u=d({x:t.x,y:t.y,"font-size":z,"font-family":q,"font-weight":t["font-weight"],"text-anchor":t["text-anchor"],fill:t.fill||"#000","fill-opacity":t.opacity,transform:x.matrix.toSvg()});return"<text "+u+">"+p+"</text>"},rect:function(q){var p=q.attr,s=d({x:p.x,y:p.y,rx:p.rx,ry:p.ry,width:p.width,height:p.height,fill:p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix&&q.matrix.toSvg()});return"<rect "+s+"/>"},circle:function(q){var p=q.attr,s=d({cx:p.x,cy:p.y,r:p.radius,fill:p.translation.fill||p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix.toSvg()});return"<circle "+s+" />"},image:function(q){var p=q.attr,s=d({x:p.x-(p.width/2>>0),y:p.y-(p.height/2>>0),width:p.width,height:p.height,"xlink:href":p.src,transform:q.matrix.toSvg()});return"<image "+s+" />"}},a=function(){var p='<?xml version="1.0" standalone="yes"?>';p+='<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';return p},m=function(){var z='<svg width="'+e+'px" height="'+n+'px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">',q="",K,I,y,s,J,M,C,A,w,B,E,p,N,x,H,F,L,G,u,t;y=g.items.items;I=y.length;J=function(R){var Y=R.childNodes,V=Y.length,U=0,S,T,O="",P,X,Q,W;for(;U<V;U++){P=Y[U];X=P.attributes;Q=P.tagName;O+="<"+Q;for(T=0,S=X.length;T<S;T++){W=X.item(T);O+=" "+W.name+'="'+W.value+'"'}O+=">";if(P.childNodes.length>0){O+=J(P)}O+="</"+Q+">"}return O};if(g.getDefs){q=J(g.getDefs())}else{A=g.gradientsColl;if(A){w=A.keys;B=A.items;E=0;p=w.length}for(;E<p;E++){N=w[E];x=B[E];s=g.gradientsColl.getByKey(N);q+='<linearGradient id="'+N+'" x1="0" y1="0" x2="1" y2="1">';var D=s.colors.replace(k,"rgb($1|$2|$3)");D=D.replace(h,"rgba($1|$2|$3|$4)");M=D.split(",");for(H=0,L=M.length;H<L;H++){C=M[H].split(" ");D=Ext.draw.Color.fromString(C[1].replace(/\|/g,","));q+='<stop offset="'+C[0]+'" stop-color="'+D.toString()+'" stop-opacity="1"></stop>'}q+="</linearGradient>"}}z+="<defs>"+q+"</defs>";z+=l.rect({attr:{width:"100%",height:"100%",fill:"#fff",stroke:"none",opacity:"0"}});G=new Array(I);for(H=0;H<I;H++){G[H]=H}G.sort(function(P,O){u=y[P].attr.zIndex||0;t=y[O].attr.zIndex||0;if(u==t){return P-O}return u-t});for(H=0;H<I;H++){K=y[G[H]];if(!K.attr.hidden){z+=l[K.type](K)}}z+="</svg>";return z},d=function(s){var q="",p;for(p in s){if(s.hasOwnProperty(p)&&s[p]!=null){q+=p+'="'+s[p]+'" '}}return q};return{singleton:true,generate:function(p,q){q=q||{};o(p);return a()+m()}}});Ext.define("Ext.draw.engine.Vml",{extend:Ext.draw.Surface,engine:"Vml",map:{M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bitesRe:/([clmz]),?([^clmz]*)/gi,valRe:/-?[^,\s\-]+/g,fillUrlRe:/^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i,pathlike:/^(path|rect)$/,NonVmlPathRe:/[ahqstv]/ig,partialPathRe:/[clmz]/g,fontFamilyRe:/^['"]+|['"]+$/g,baseVmlCls:Ext.baseCSSPrefix+"vml-base",vmlGroupCls:Ext.baseCSSPrefix+"vml-group",spriteCls:Ext.baseCSSPrefix+"vml-sprite",measureSpanCls:Ext.baseCSSPrefix+"vml-measure-span",zoom:21600,coordsize:1000,coordorigin:"0 0",zIndexShift:0,orderSpritesByZIndex:false,path2vml:function(t){var n=this,u=n.NonVmlPathRe,b=n.map,e=n.valRe,s=n.zoom,d=n.bitesRe,g=Ext.Function.bind(Ext.draw.Draw.pathToAbsolute,Ext.draw.Draw),m,o,c,a,k,q,h,l;if(String(t).match(u)){g=Ext.Function.bind(Ext.draw.Draw.path2curve,Ext.draw.Draw)}else{if(!String(t).match(n.partialPathRe)){m=String(t).replace(d,function(x,z,p){var y=[],j=z.toLowerCase()=="m",w=b[z];p.replace(e,function(A){if(j&&y.length===2){w+=y+b[z=="m"?"l":"L"];y=[]}y.push(Math.round(A*s))});return w+y});return m}}o=g(t);m=[];for(k=0,q=o.length;k<q;k++){c=o[k];a=o[k][0].toLowerCase();if(a=="z"){a="x"}for(h=1,l=c.length;h<l;h++){a+=Math.round(c[h]*n.zoom)+(h!=l-1?",":"")}m.push(a)}return m.join(" ")},translateAttrs:{radius:"r",radiusX:"rx",radiusY:"ry",lineWidth:"stroke-width",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",strokeLinejoin:"stroke-linejoin"},minDefaults:{circle:{fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},ellipse:{cx:0,cy:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},rect:{x:0,y:0,width:0,height:0,rx:0,ry:0,fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},text:{x:0,y:0,"text-anchor":"start",font:'10px "Arial"',fill:"#000",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},path:{d:"M0,0",fill:"none",stroke:null,"stroke-width":null,opacity:null,"fill-opacity":null,"stroke-opacity":null},image:{x:0,y:0,width:0,height:0,preserveAspectRatio:"none",opacity:null}},onMouseEnter:function(a){this.fireEvent("mouseenter",a)},onMouseLeave:function(a){this.fireEvent("mouseleave",a)},processEvent:function(b,g){var d=g.getTarget(),a=this.surface,c;this.fireEvent(b,g);c=this.items.get(d.id);if(c){c.fireEvent(b,c,g)}},createSpriteElement:function(h){var e=this,d=h.attr,g=h.type,k=e.zoom,b=h.vml||(h.vml={}),l=Math.round,c=g==="image"?e.createNode("image"):e.createNode("shape"),m,j,a;c.coordsize=k+" "+k;c.coordorigin=d.coordorigin||"0 0";Ext.get(c).addCls(e.spriteCls);if(g=="text"){b.path=m=e.createNode("path");m.textpathok=true;b.textpath=a=e.createNode("textpath");a.on=true;c.appendChild(a);c.appendChild(m)}c.id=h.id;h.el=Ext.get(c);h.el.setStyle("zIndex",-e.zIndexShift);e.el.appendChild(c);if(g!=="image"){j=e.createNode("skew");j.on=true;c.appendChild(j);h.skew=j}h.matrix=new Ext.draw.Matrix;h.bbox={plain:null,transform:null};this.applyAttrs(h);this.applyTransformations(h);h.fireEvent("render",h);return h.el},getBBoxText:function(b){var a=b.vml;return{x:a.X+(a.bbx||0)-a.W/2,y:a.Y-a.H/2,width:a.W,height:a.H}},applyAttrs:function(m){var t=this,c=m.vml,j=m.group,a=m.attr,b=m.el,o=b.dom,p,w,s,n,k,q,l,u,e,d,h,g;if(j){s=[].concat(j);k=s.length;for(n=0;n<k;n++){j=s[n];t.getGroup(j).add(m)}delete m.group}q=t.scrubAttrs(m)||{};if(m.zIndexDirty){t.setZIndex(m)}Ext.applyIf(q,t.minDefaults[m.type]);if(m.type=="image"){Ext.apply(m.attr,{x:q.x,y:q.y,width:q.width,height:q.height});b.setStyle({width:q.width+"px",height:q.height+"px"});o.src=q.src}if(o.href){o.href=q.href}if(o.title){o.title=q.title}if(o.target){o.target=q.target}if(o.cursor){o.cursor=q.cursor}if(m.dirtyHidden){q.hidden?t.hidePrim(m):t.showPrim(m);m.dirtyHidden=false}if(m.dirtyPath){if(m.type=="circle"||m.type=="ellipse"){e=q.x;d=q.y;h=q.rx||q.r||0;g=q.ry||q.r||0;o.path=Ext.String.format("ar{0},{1},{2},{3},{4},{1},{4},{1}",Math.round((e-h)*t.zoom),Math.round((d-g)*t.zoom),Math.round((e+h)*t.zoom),Math.round((d+g)*t.zoom),Math.round(e*t.zoom));m.dirtyPath=false}else{if(m.type!=="text"&&m.type!=="image"){m.attr.path=q.path=t.setPaths(m,q)||q.path;o.path=t.path2vml(q.path);m.dirtyPath=false}}}if("clip-rect" in q){t.setClip(m,q)}if(m.type=="text"){t.setTextAttributes(m,q)}if(q.opacity||q["stroke-opacity"]||q.fill){t.setFill(m,q)}if(q.stroke||q["stroke-opacity"]||q.fill){t.setStroke(m,q)}p=a.style;if(p){b.setStyle(p)}m.dirty=false},setZIndex:function(e){var h=this,j=e.attr.zIndex,b=h.zIndexShift,c,a,g,d;if(j<b){c=h.items.items;a=c.length;for(d=0;d<a;d++){if((j=c[d].attr.zIndex)&&j<b){b=j}}h.zIndexShift=b;for(d=0;d<a;d++){g=c[d];if(g.el){g.el.setStyle("zIndex",g.attr.zIndex-b)}g.zIndexDirty=false}}else{if(e.el){e.el.setStyle("zIndex",j-b);e.zIndexDirty=false}}},setPaths:function(c,d){var a=c.attr,b=c.attr["stroke-width"]||1;c.bbox.plain=null;c.bbox.transform=null;if(c.type=="circle"){a.rx=a.ry=d.r;return Ext.draw.Draw.ellipsePath(c)}else{if(c.type=="ellipse"){a.rx=d.rx;a.ry=d.ry;return Ext.draw.Draw.ellipsePath(c)}else{if(c.type=="rect"){a.rx=a.ry=d.r;return Ext.draw.Draw.rectPath(c)}else{if(c.type=="path"&&a.path){return Ext.draw.Draw.pathToAbsolute(a.path)}}}}return false},setFill:function(l,e){var h=this,c=l.el.dom,k=c.fill,b=false,g,j,a,m,d;if(!k){k=c.fill=h.createNode("fill");b=true}if(Ext.isArray(e.fill)){e.fill=e.fill[0]}if(e.fill=="none"){k.on=false}else{if(typeof e.opacity=="number"){k.opacity=e.opacity}if(typeof e["fill-opacity"]=="number"){k.opacity=e["fill-opacity"]}k.on=true;if(typeof e.fill=="string"){a=e.fill.match(h.fillUrlRe);if(a){a=a[1];if(a.charAt(0)=="#"){j=h.gradientsColl.getByKey(a.substring(1))}if(j){m=e.rotation;d=-(j.angle+270+(m?m.degrees:0))%360;if(d===0){d=180}k.angle=d;k.type="gradient";k.method="sigma";if(k.colors){k.colors.value=j.colors}else{k.colors=j.colors}}else{k.src=a;k.type="tile"}}else{k.color=Ext.draw.Color.toHex(e.fill);k.src="";k.type="solid"}}}if(b){c.appendChild(k)}},setStroke:function(b,h){var e=this,d=b.el.dom,j=b.strokeEl,g=false,c,a;if(!j){j=b.strokeEl=e.createNode("stroke");g=true}if(Ext.isArray(h.stroke)){h.stroke=h.stroke[0]}if(!h.stroke||h.stroke=="none"||h.stroke==0||h["stroke-width"]==0){j.on=false}else{j.on=true;if(h.stroke&&!h.stroke.match(e.fillUrlRe)){j.color=Ext.draw.Color.toHex(h.stroke)}j.dashstyle=h["stroke-dasharray"]?"dash":"solid";j.joinstyle=h["stroke-linejoin"];j.endcap=h["stroke-linecap"]||"round";j.miterlimit=h["stroke-miterlimit"]||8;c=parseFloat(h["stroke-width"]||1)*0.75;a=h["stroke-opacity"]||1;if(Ext.isNumber(c)&&c<1){j.weight=1;j.opacity=a*c}else{j.weight=c;j.opacity=a}}if(g){d.appendChild(j)}},setClip:function(b,g){var e=this,c=b.el,a=b.clipEl,d=String(g["clip-rect"]).split(e.separatorRe);if(!a){a=b.clipEl=e.el.insertFirst(Ext.getDoc().dom.createElement("div"));a.addCls(Ext.baseCSSPrefix+"vml-sprite")}if(d.length==4){d[2]=+d[2]+ +d[0];d[3]=+d[3]+ +d[1];a.setStyle("clip",Ext.String.format("rect({1}px {2}px {3}px {0}px)",d[0],d[1],d[2],d[3]));a.setSize(e.el.width,e.el.height)}else{a.setStyle("clip","")}},setTextAttributes:function(j,c){var h=this,a=j.vml,e=a.textpath.style,g=h.span.style,k=h.zoom,l=Math.round,m={fontSize:"font-size",fontWeight:"font-weight",fontStyle:"font-style"},b,d;if(j.dirtyFont){if(c.font){e.font=g.font=c.font}if(c["font-family"]){e.fontFamily='"'+c["font-family"].split(",")[0].replace(h.fontFamilyRe,"")+'"';g.fontFamily=c["font-family"]}for(b in m){d=c[m[b]];if(d){e[b]=g[b]=d}}h.setText(j,c.text);if(a.textpath.string){h.span.innerHTML=String(a.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br/>")}a.W=h.span.offsetWidth;a.H=h.span.offsetHeight+2;if(c["text-anchor"]=="middle"){e["v-text-align"]="center"}else{if(c["text-anchor"]=="end"){e["v-text-align"]="right";a.bbx=-Math.round(a.W/2)}else{e["v-text-align"]="left";a.bbx=Math.round(a.W/2)}}}a.X=c.x;a.Y=c.y;a.path.v=Ext.String.format("m{0},{1}l{2},{1}",Math.round(a.X*k),Math.round(a.Y*k),Math.round(a.X*k)+1);j.bbox.plain=null;j.bbox.transform=null;j.dirtyFont=false},setText:function(a,b){a.vml.textpath.string=Ext.htmlDecode(b)},hide:function(){this.el.hide()},show:function(){this.el.show()},hidePrim:function(a){a.el.addCls(Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){a.el.removeCls(Ext.baseCSSPrefix+"hide-visibility")},setSize:function(b,a){var c=this;b=b||c.width;a=a||c.height;c.width=b;c.height=a;if(c.el){if(b!=undefined){c.el.setWidth(b)}if(a!=undefined){c.el.setHeight(a)}}c.callParent(arguments)},applyViewBox:function(){var g=this,h=g.viewBox,e=g.width,b=g.height,c,a,d;g.callParent();if(h&&(e||b)){c=g.items.items;a=c.length;for(d=0;d<a;d++){g.applyTransformations(c[d])}}},onAdd:function(a){this.callParent(arguments);if(this.el){this.renderItem(a)}},onRemove:function(a){if(a.el){a.el.remove();delete a.el}this.callParent(arguments)},render:function(a){var c=this,g=Ext.getDoc().dom,b;if(!c.createNode){try{if(!g.namespaces.rvml){g.namespaces.add("rvml","urn:schemas-microsoft-com:vml")}c.createNode=function(e){return g.createElement("<rvml:"+e+' class="rvml">')}}catch(d){c.createNode=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}}if(!c.el){b=g.createElement("div");c.el=Ext.get(b);c.el.addCls(c.baseVmlCls);c.span=g.createElement("span");Ext.get(c.span).addCls(c.measureSpanCls);b.appendChild(c.span);c.el.setSize(c.width||0,c.height||0);a.appendChild(b);c.el.on({scope:c,mouseup:c.onMouseUp,mousedown:c.onMouseDown,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousemove:c.onMouseMove,mouseenter:c.onMouseEnter,mouseleave:c.onMouseLeave,click:c.onClick,dblclick:c.onDblClick})}c.renderAll()},renderAll:function(){this.items.each(this.renderItem,this)},redraw:function(a){a.dirty=true;this.renderItem(a)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},rotationCompensation:function(d,c,a){var b=new Ext.draw.Matrix;b.rotate(-d,0.5,0.5);return{x:b.x(c,a),y:b.y(c,a)}},transform:function(A,K){var J=this,b=J.getBBox(A,true),j=b.x+b.width*0.5,h=b.y+b.height*0.5,D=new Ext.draw.Matrix,q=A.transformations,x=q.length,E=0,o=0,d=1,c=1,n="",g=A.el,G=g.dom,B=G.style,a=J.zoom,k=A.skew,F=J.viewBoxShift,I,H,t,l,s,p,C,z,w,u,e,m;for(;E<x;E++){t=q[E];l=t.type;if(l=="translate"){D.translate(t.x,t.y)}else{if(l=="rotate"){D.rotate(t.degrees,t.x,t.y);o+=t.degrees}else{if(l=="scale"){D.scale(t.x,t.y,t.centerX,t.centerY);d*=t.x;c*=t.y}}}}A.matrix=D.clone();if(K){return}if(F){D.prepend(F.scale,0,0,F.scale,F.dx*F.scale,F.dy*F.scale)}if(A.type!="image"&&k){k.origin="0,0";k.matrix=D.toString();m=D.offset();if(m[0]>32767){m[0]=32767}else{if(m[0]<-32768){m[0]=-32768}}if(m[1]>32767){m[1]=32767}else{if(m[1]<-32768){m[1]=-32768}}k.offset=m}else{B.filter=D.toFilter();B.left=Math.min(D.x(b.x,b.y),D.x(b.x+b.width,b.y),D.x(b.x,b.y+b.height),D.x(b.x+b.width,b.y+b.height))+"px";B.top=Math.min(D.y(b.x,b.y),D.y(b.x+b.width,b.y),D.y(b.x,b.y+b.height),D.y(b.x+b.width,b.y+b.height))+"px"}},createItem:function(a){return Ext.create("Ext.draw.Sprite",a)},getRegion:function(){return this.el.getRegion()},addCls:function(a,b){if(a&&a.el){a.el.addCls(b)}},removeCls:function(a,b){if(a&&a.el){a.el.removeCls(b)}},addGradient:function(g){var d=this.gradientsColl||(this.gradientsColl=Ext.create("Ext.util.MixedCollection")),a=[],j=Ext.create("Ext.util.MixedCollection"),l,e,b,h,k,c;j.addAll(g.stops);j.sortByKey("ASC",function(n,m){n=parseInt(n,10);m=parseInt(m,10);return n>m?1:n<m?-1:0});l=j.keys;e=j.items;b=l.length;for(c=0;c<b;c++){h=l[c];k=e[c];a.push(h+"% "+k.color)}d.add(g.id,{colors:a.join(","),angle:g.angle})},destroy:function(){var a=this;a.callParent(arguments);if(a.el){a.el.remove()}delete a.el}});Ext.define("Ext.flash.Component",{extend:Ext.Component,alternateClassName:"Ext.FlashComponent",alias:"widget.flash",flashVersion:"9.0.115",backgroundColor:"#ffffff",wmode:"opaque",swfWidth:"100%",swfHeight:"100%",expressInstall:false,renderTpl:['<div id="{swfId}"></div>'],initComponent:function(){this.callParent();this.addEvents("success","failure")},beforeRender:function(){this.callParent();Ext.applyIf(this.renderData,{swfId:this.getSwfId()})},afterRender:function(){var b=this,a=Ext.apply({},b.flashParams),c=Ext.apply({},b.flashVars);b.callParent();a=Ext.apply({allowScriptAccess:"always",bgcolor:b.backgroundColor,wmode:b.wmode},a);c=Ext.apply({allowedDomain:document.location.hostname},c);new swfobject.embedSWF(b.url,b.getSwfId(),b.swfWidth,b.swfHeight,b.flashVersion,b.expressInstall?b.statics.EXPRESS_INSTALL_URL:undefined,c,a,b.flashAttributes,Ext.bind(b.swfCallback,b))},swfCallback:function(b){var a=this;if(b.success){a.swf=Ext.get(b.ref);a.onSuccess();a.fireEvent("success",a)}else{a.onFailure();a.fireEvent("failure",a)}},getSwfId:function(){return this.swfId||(this.swfId="extswf"+this.getAutoId())},onSuccess:function(){this.swf.setStyle("visibility","inherit")},onFailure:Ext.emptyFn,beforeDestroy:function(){var b=this,a=b.swf;if(a){swfobject.removeSWF(b.getSwfId());Ext.destroy(a);delete b.swf}b.callParent()},statics:{EXPRESS_INSTALL_URL:"http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf"}});Ext.define("Ext.form.action.Action",{alternateClassName:"Ext.form.Action",submitEmptyText:true,constructor:function(a){if(a){Ext.apply(this,a)}var b=a.params;if(Ext.isString(b)){this.params=Ext.Object.fromQueryString(b)}},run:Ext.emptyFn,onFailure:function(a){this.response=a;this.failureType=Ext.form.action.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(a){this.response=a;if(!a.responseText&&!a.responseXML){return true}return this.result=this.handleResponse(a)},getUrl:function(){return this.url||this.form.url},getMethod:function(){return(this.method||this.form.method||"POST").toUpperCase()},getParams:function(){return Ext.apply({},this.params,this.form.baseParams)},createCallback:function(){var c=this,a,b=c.form;return{success:c.onSuccess,failure:c.onFailure,scope:c,timeout:this.timeout*1000||b.timeout*1000,upload:b.fileUpload?c.onSuccess:a}},statics:{CLIENT_INVALID:"client",SERVER_INVALID:"server",CONNECT_FAILURE:"connect",LOAD_FAILURE:"load"}});Ext.define("Ext.form.action.Load",{extend:Ext.form.action.Action,alternateClassName:"Ext.form.Action.Load",alias:"formaction.load",type:"load",run:function(){Ext.Ajax.request(Ext.apply(this.createCallback(),{method:this.getMethod(),url:this.getUrl(),headers:this.headers,params:this.getParams()}))},onSuccess:function(b){var a=this.processResponse(b),c=this.form;if(a===true||!a.success||!a.data){this.failureType=Ext.form.action.Action.LOAD_FAILURE;c.afterAction(this,false);return}c.clearInvalid();c.setValues(a.data);c.afterAction(this,true)},handleResponse:function(c){var a=this.form.reader,b,d;if(a){b=a.read(c);d=b.records&&b.records[0]?b.records[0].data:null;return{success:b.success,data:d}}return Ext.decode(c.responseText)}});Ext.define("Ext.form.action.Submit",{extend:Ext.form.action.Action,alternateClassName:"Ext.form.Action.Submit",alias:"formaction.submit",type:"submit",run:function(){var b=this,a=b.form;if(b.clientValidation===false||a.isValid()){b.doSubmit()}else{b.failureType=Ext.form.action.Action.CLIENT_INVALID;a.afterAction(b,false)}},doSubmit:function(){var e=this,b=Ext.apply(e.createCallback(),{url:e.getUrl(),method:e.getMethod(),headers:e.headers}),d=e.form,g=e.jsonSubmit||d.jsonSubmit,a=g?"jsonData":"params",c,h;if(d.hasUpload()){h=e.buildForm();b.form=h.formEl;b.isUpload=true}else{b[a]=e.getParams(g)}Ext.Ajax.request(b);if(h){e.cleanup(h)}},cleanup:function(h){var e=h.formEl,d=h.uploadEls,b=h.uploadFields,a=b.length,c,g;for(c=0;c<a;++c){g=b[c];if(!g.clearOnSubmit){g.restoreInput(d[c])}}if(e){Ext.removeNode(e)}},getParams:function(d){var c=false,b=this.callParent(),a=this.form.getValues(c,c,this.submitEmptyText!==c,d);return Ext.apply({},a,b)},buildForm:function(){var k=this,n=[],l,t,h=k.form,d=k.getParams(),c=[],a=[],g=h.getFields().items,e,j=g.length,m,s,p,q,o,b;for(e=0;e<j;++e){m=g[e];if(m.rendered&&m.isFileUpload()){c.push(m)}}for(s in d){if(d.hasOwnProperty(s)){p=d[s];if(Ext.isArray(p)){o=p.length;for(q=0;q<o;q++){n.push(k.getFieldConfig(s,p[q]))}}else{n.push(k.getFieldConfig(s,p))}}}l={tag:"form",action:k.getUrl(),method:k.getMethod(),target:k.target||"_self",style:"display:none",cn:n};if(c.length){l.encoding=l.enctype="multipart/form-data"}t=Ext.DomHelper.append(Ext.getBody(),l);j=c.length;for(e=0;e<j;++e){b=c[e].extractFileInput();t.appendChild(b);a.push(b)}return{formEl:t,uploadFields:c,uploadEls:a}},getFieldConfig:function(a,b){return{tag:"input",type:"hidden",name:a,value:Ext.String.htmlEncode(b)}},onSuccess:function(b){var c=this.form,d=true,a=this.processResponse(b);if(a!==true&&!a.success){if(a.errors){c.markInvalid(a.errors)}this.failureType=Ext.form.action.Action.SERVER_INVALID;d=false}c.afterAction(this,d)},handleResponse:function(d){var h=this.form,e=h.errorReader,c,j,g,a,b;if(e){c=e.read(d);b=c.records;j=[];if(b){for(g=0,a=b.length;g<a;g++){j[g]=b[g].data}}if(j.length<1){j=null}return{success:c.success,errors:j}}return Ext.decode(d.responseText)}});Ext.define("Ext.util.ComponentDragger",{extend:Ext.dd.DragTracker,autoStart:500,constructor:function(a,b){this.comp=a;this.initialConstrainTo=b.constrainTo;this.callParent([b])},onStart:function(c){var b=this,a=b.comp;this.startPosition=a.getXY();if(a.ghost&&!a.liveDrag){b.proxy=a.ghost();b.dragTarget=b.proxy.header.el}if(b.constrain||b.constrainDelegate){b.constrainTo=b.calculateConstrainRegion()}if(a.beginDrag){a.beginDrag()}},calculateConstrainRegion:function(){var g=this,d=g.comp,k=g.initialConstrainTo,b,h,j,a=g.proxy?g.proxy.el:d.el,e=!g.constrainDelegate&&a.shadow&&!a.shadowDisabled?a.shadow.getShadowSize():0;if(!(k instanceof Ext.util.Region)){b=Ext.fly(k);k=b.getViewRegion();k.right=k.left+b.dom.clientWidth}if(e){k.adjust(e[0],-e[1],-e[2],e[3])}if(!g.constrainDelegate){h=Ext.fly(g.dragTarget).getRegion();j=a.getRegion();k.adjust(h.top-j.top,h.right-j.right,h.bottom-j.bottom,h.left-j.left)}return k},onDrag:function(c){var b=this,a=b.proxy&&!b.comp.liveDrag?b.proxy:b.comp,d=b.getOffset(b.constrain||b.constrainDelegate?"dragTarget":null);a.setPagePosition(b.startPosition[0]+d[0],b.startPosition[1]+d[1])},onEnd:function(b){var a=this.comp;if(a.isDestroyed||a.destroying){return}if(this.proxy&&!a.liveDrag){a.unghost()}if(a.endDrag){a.endDrag()}}});Ext.define("Ext.window.Window",{extend:Ext.panel.Panel,alternateClassName:"Ext.Window",alias:"widget.window",baseCls:Ext.baseCSSPrefix+"window",resizable:true,draggable:true,constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:50,minWidth:50,expandOnShow:true,collapsible:false,closable:true,hidden:true,autoRender:true,hideMode:"offsets",floating:true,ariaRole:"alertdialog",itemCls:Ext.baseCSSPrefix+"window-item",initialAlphaNum:/^[a-z0-9]/,overlapHeader:true,ignoreHeaderBorderManagement:true,alwaysFramed:true,isRootCfg:{isRoot:true},isWindow:true,initComponent:function(){var a=this;a.frame=false;a.callParent();a.addEvents("resize","maximize","minimize","restore");if(a.plain){a.addClsWithUI("plain")}if(a.modal){a.ariaRole="dialog"}a.addStateEvents(["maximize","restore","resize","dragend"])},getElConfig:function(){var b=this,a;a=b.callParent();a.tabIndex=-1;return a},getState:function(){var b=this,d=b.callParent()||{},a=!!b.maximized,c=b.ghostBox,e;d.maximized=a;if(a){e=b.restorePos}else{if(c){e=[c.x,c.y]}else{e=b.getPosition()}}Ext.apply(d,{size:a?b.restoreSize:b.getSize(),pos:e});return d},applyState:function(b){var a=this;if(b){a.maximized=b.maximized;if(a.maximized){a.hasSavedRestore=true;a.restoreSize=b.size;a.restorePos=b.pos}else{Ext.apply(a,{width:b.size.width,height:b.size.height,x:b.pos[0],y:b.pos[1]})}}},onRender:function(b,a){var c=this;c.callParent(arguments);c.focusEl=c.el;if(c.maximizable){c.header.on({scope:c,dblclick:c.toggleMaximize})}},afterRender:function(){var a=this,c=a.header,b;a.callParent();if(a.maximized){a.maximized=false;a.maximize();if(c){c.removeCls(c.indicateDragCls)}}if(a.closable){b=a.getKeyMap();b.on(27,a.onEsc,a)}else{b=a.keyMap}if(b&&a.hidden){b.disable()}},initDraggable:function(){this.initSimpleDraggable()},initResizable:function(){this.callParent(arguments);if(this.maximized){this.resizer.disable()}},onEsc:function(a,b){if(!Ext.FocusManager||!Ext.FocusManager.enabled||Ext.FocusManager.focusedCmp===this){b.stopEvent();this.close()}},beforeDestroy:function(){var a=this;if(a.rendered){delete this.animateTarget;a.hide();Ext.destroy(a.keyMap)}a.callParent()},addTools:function(){var a=this;a.callParent();if(a.minimizable){a.addTool({type:"minimize",handler:Ext.Function.bind(a.minimize,a,[])})}if(a.maximizable){a.addTool({type:"maximize",handler:Ext.Function.bind(a.maximize,a,[])});a.addTool({type:"restore",handler:Ext.Function.bind(a.restore,a,[]),hidden:true})}},getFocusEl:function(){return this.getDefaultFocus()},getDefaultFocus:function(){var c=this,b,d=c.defaultButton||c.defaultFocus,a;if(d!==undefined){if(Ext.isNumber(d)){b=c.query("button")[d]}else{if(Ext.isString(d)){a=d;if(a.match(c.initialAlphaNum)){b=c.down("#"+a)}if(!b){b=c.down(a)}}else{if(d.focus){b=d}}}}return b||c.el},onFocus:function(){var b=this,a;if(Ext.FocusManager&&Ext.FocusManager.enabled||(a=b.getDefaultFocus())===b){b.callParent(arguments)}else{a.focus()}},beforeLayout:function(){var a=this.el.shadow;this.callParent();if(a){a.hide()}},onShow:function(){var a=this;a.callParent(arguments);if(a.expandOnShow){a.expand(false)}a.syncMonitorWindowResize();if(a.keyMap){a.keyMap.enable()}},doClose:function(){var a=this;if(a.hidden){a.fireEvent("close",a);if(a.closeAction=="destroy"){this.destroy()}}else{a.hide(a.animateTarget,a.doClose,a)}},afterHide:function(){var a=this;a.syncMonitorWindowResize();if(a.keyMap){a.keyMap.disable()}a.callParent(arguments)},onWindowResize:function(){var b=this,a;if(b.maximized){b.fitContainer()}else{a=b.getSizeModel();if(a.width.natural||a.height.natural){b.updateLayout()}b.doConstrain()}},minimize:function(){this.fireEvent("minimize",this);return this},resumeHeaderLayout:function(a){this.header.resumeLayouts(a?this.isRootCfg:null)},afterCollapse:function(){var a=this,c=a.header,b=a.tools;if(c&&a.maximizable){c.suspendLayouts();b.maximize.hide();b.restore.hide();this.resumeHeaderLayout(true)}if(a.resizer){a.resizer.disable()}a.callParent(arguments)},afterExpand:function(){var a=this,d=a.header,b=a.tools,c;if(d){d.suspendLayouts();if(a.maximized){b.restore.show();c=true}else{if(a.maximizable){b.maximize.show();c=true}}this.resumeHeaderLayout(c)}if(a.resizer){a.resizer.enable()}a.callParent(arguments)},maximize:function(a){var b=this,e=b.header,c=b.tools,d;if(!b.maximized){b.expand(false);if(!b.hasSavedRestore){b.restoreSize=b.getSize();b.restorePos=b.getPosition(true)}if(e){e.suspendLayouts();if(c.maximize){c.maximize.hide();d=true}if(c.restore){c.restore.show();d=true}if(b.collapseTool){b.collapseTool.hide();d=true}b.resumeHeaderLayout(d)}b.maximized=true;b.el.disableShadow();if(b.dd){b.dd.disable();if(e){e.removeCls(e.indicateDragCls)}}if(b.resizer){b.resizer.disable()}b.el.addCls(Ext.baseCSSPrefix+"window-maximized");b.container.addCls(Ext.baseCSSPrefix+"window-maximized-ct");b.syncMonitorWindowResize();b.fitContainer(a=a||!!b.animateTarget?{callback:function(){b.fireEvent("maximize",b)}}:null);if(!a){b.fireEvent("maximize",b)}}return b},restore:function(b){var c=this,d=c.tools,g=c.header,a=c.restoreSize,e;if(c.maximized){c.hasSavedRestore=null;c.removeCls(Ext.baseCSSPrefix+"window-maximized");if(g){g.suspendLayouts();if(d.restore){d.restore.hide();e=true}if(d.maximize){d.maximize.show();e=true}if(c.collapseTool){c.collapseTool.show();e=true}c.resumeHeaderLayout(e)}c.maximized=false;a.x=c.restorePos[0];a.y=c.restorePos[1];c.setBox(a,b=b||!!c.animateTarget?{callback:function(){c.el.enableShadow(true);c.fireEvent("restore",c)}}:null);c.restorePos=c.restoreSize=null;if(c.dd){c.dd.enable();if(g){g.addCls(g.indicateDragCls)}}if(c.resizer){c.resizer.enable()}c.container.removeCls(Ext.baseCSSPrefix+"window-maximized-ct");c.syncMonitorWindowResize();if(!b){c.el.enableShadow(true);c.fireEvent("restore",c)}}return c},syncMonitorWindowResize:function(){var b=this,c=b._monitoringResize,d=b.monitorResize||b.constrain||b.constrainHeader||b.maximized,a=b.hidden||b.destroying||b.isDestroyed;if(d&&!a){if(!c){Ext.EventManager.onWindowResize(b.onWindowResize,b,{delay:1});b._monitoringResize=true}}else{if(c){Ext.EventManager.removeResizeListener(b.onWindowResize,b);b._monitoringResize=false}}},toggleMaximize:function(){return this[this.maximized?"restore":"maximize"]()}});Ext.define("Ext.form.Labelable",{autoEl:{tag:"table",cellpadding:0},childEls:["labelCell","labelEl","bodyEl","sideErrorCell","errorEl","inputRow"],labelableRenderTpl:['<tr id="{id}-inputRow" <tpl if="inFormLayout">id="{id}"</tpl>>','<tpl if="labelOnLeft">','<td id="{id}-labelCell" style="{labelCellStyle}" {labelCellAttrs}>',"{beforeLabelTpl}",'<label id="{id}-labelEl" {labelAttrTpl}<tpl if="inputId"> for="{inputId}"</tpl> class="{labelCls}"','<tpl if="labelStyle"> style="{labelStyle}"</tpl>',' unselectable="on"',">","{beforeLabelTextTpl}",'<tpl if="fieldLabel">{fieldLabel}{labelSeparator}</tpl>',"{afterLabelTextTpl}","</label>","{afterLabelTpl}","</td>","</tpl>",'<td class="{baseBodyCls} {fieldBodyCls}" id="{id}-bodyEl" colspan="{bodyColspan}" role="presentation">',"{beforeBodyEl}","<tpl if=\"labelAlign=='top'\">","{beforeLabelTpl}",'<div id="{id}-labelCell" style="{labelCellStyle}">','<label id="{id}-labelEl" {labelAttrTpl}<tpl if="inputId"> for="{inputId}"</tpl> class="{labelCls}"','<tpl if="labelStyle"> style="{labelStyle}"</tpl>',' unselectable="on"',">","{beforeLabelTextTpl}",'<tpl if="fieldLabel">{fieldLabel}{labelSeparator}</tpl>',"{afterLabelTextTpl}","</label>","</div>","{afterLabelTpl}","</tpl>","{beforeSubTpl}","{[values.$comp.getSubTplMarkup(values)]}","{afterSubTpl}","<tpl if=\"msgTarget==='side'\">","{afterBodyEl}","</td>","<td id=\"{id}-sideErrorCell\" vAlign=\"{[values.labelAlign==='top' && !values.hideLabel ? 'bottom' : 'middle']}\" style=\"{[values.autoFitErrors ? 'display:none' : '']}\" width=\"{errorIconWidth}\">",'<div id="{id}-errorEl" class="{errorMsgCls}" style="display:none"></div>',"</td>","<tpl elseif=\"msgTarget=='under'\">",'<div id="{id}-errorEl" class="{errorMsgClass}" colspan="2" style="display:none"></div>',"{afterBodyEl}","</td>","</tpl>","</tr>",{disableFormats:true}],activeErrorsTpl:undefined,htmlActiveErrorsTpl:['<tpl if="errors && errors.length">','<ul class="{listCls}"><tpl for="errors"><li>{.}</li></tpl></ul>',"</tpl>"],plaintextActiveErrorsTpl:['<tpl if="errors && errors.length">','<tpl for="errors"><tpl if="xindex &gt; 1">\n</tpl>{.}</tpl>',"</tpl>"],isFieldLabelable:true,formItemCls:Ext.baseCSSPrefix+"form-item",labelCls:Ext.baseCSSPrefix+"form-item-label",errorMsgCls:Ext.baseCSSPrefix+"form-error-msg",baseBodyCls:Ext.baseCSSPrefix+"form-item-body",fieldBodyCls:"",clearCls:Ext.baseCSSPrefix+"clear",invalidCls:Ext.baseCSSPrefix+"form-invalid",fieldLabel:undefined,labelAlign:"left",labelWidth:100,labelPad:5,labelSeparator:":",hideLabel:false,hideEmptyLabel:true,preventMark:false,autoFitErrors:true,msgTarget:"qtip",noWrap:true,labelableInsertions:["beforeBodyEl","afterBodyEl","beforeLabelTpl","afterLabelTpl","beforeSubTpl","afterSubTpl","beforeLabelTextTpl","afterLabelTextTpl","labelAttrTpl"],labelableRenderProps:["allowBlank","id","labelAlign","fieldBodyCls","baseBodyCls","clearCls","labelSeparator","msgTarget"],initLabelable:function(){var a=this,b=a.padding;if(b){a.padding=undefined;a.extraMargins=Ext.Element.parseBox(b)}if(!a.activeErrorsTpl){if(a.msgTarget=="title"){a.activeErrorsTpl=a.plaintextActiveErrorsTpl}else{a.activeErrorsTpl=a.htmlActiveErrorsTpl}}a.addCls(Ext.plainTableCls);a.addCls(a.formItemCls);a.lastActiveError="";a.addEvents("errorchange");a.enableBubble("errorchange")},trimLabelSeparator:function(){var c=this,d=c.labelSeparator,a=c.fieldLabel||"",b=a.substr(a.length-1);return b===d?a.slice(0,-1):a},getFieldLabel:function(){return this.trimLabelSeparator()},setFieldLabel:function(b){b=b||"";var c=this,d=c.labelSeparator,a=c.labelEl;c.fieldLabel=b;if(c.rendered){if(Ext.isEmpty(b)&&c.hideEmptyLabel){a.parent().setDisplayed("none")}else{if(d){b=c.trimLabelSeparator()+d}a.update(b);a.parent().setDisplayed("")}c.updateLayout()}},getInsertionRenderData:function(d,e){var b=e.length,a,c;while(b--){a=e[b];c=this[a];if(c){if(typeof c!="string"){if(!c.isTemplate){c=Ext.XTemplate.getTpl(this,a)}c=c.apply(d)}}d[a]=c||""}return d},getLabelableRenderData:function(){var b=this,c,d,a=b.labelAlign==="top";if(!Ext.form.Labelable.errorIconWidth){d=Ext.getBody().createChild({style:"position:absolute",cls:Ext.baseCSSPrefix+"form-invalid-icon"});Ext.form.Labelable.errorIconWidth=d.getWidth()+d.getMargin("l");d.remove()}c=Ext.copyTo({inFormLayout:b.ownerLayout&&b.ownerLayout.type==="form",inputId:b.getInputId(),labelOnLeft:!a,hideLabel:!b.hasVisibleLabel(),fieldLabel:b.getFieldLabel(),labelCellStyle:b.getLabelCellStyle(),labelCellAttrs:b.getLabelCellAttrs(),labelCls:b.getLabelCls(),labelStyle:b.getLabelStyle(),bodyColspan:b.getBodyColspan(),externalError:!b.autoFitErrors,errorMsgCls:b.getErrorMsgCls(),errorIconWidth:Ext.form.Labelable.errorIconWidth},b,b.labelableRenderProps,true);b.getInsertionRenderData(c,b.labelableInsertions);return c},xhooks:{beforeRender:function(){var a=this;a.setFieldDefaults(a.getHierarchyState().fieldDefaults);if(a.ownerLayout){a.addCls(Ext.baseCSSPrefix+a.ownerLayout.type+"-form-item")}},onRender:function(){var c=this,d,a,b={};if(c.extraMargins){d=c.el.getMargin();for(a in d){if(d.hasOwnProperty(a)){b["margin-"+a]=d[a]+c.extraMargins[a]+"px"}}c.el.setStyle(b)}}},hasVisibleLabel:function(){if(this.hideLabel){return false}return !(this.hideEmptyLabel&&!this.getFieldLabel())},getLabelWidth:function(){var a=this;if(!a.hasVisibleLabel()){return 0}return a.labelWidth+a.labelPad},getBodyColspan:function(){var b=this,a;if(b.msgTarget==="side"&&(!b.autoFitErrors||b.hasActiveError())){a=1}else{a=2}if(b.labelAlign!=="top"&&!b.hasVisibleLabel()){a++}return a},getLabelCls:function(){var b=this.labelCls+" "+Ext.dom.Element.unselectableCls,a=this.labelClsExtra;return a?b+" "+a:b},getLabelCellStyle:function(){var b=this,a=b.hideLabel||!b.fieldLabel&&b.hideEmptyLabel;return a?"display:none;":""},getErrorMsgCls:function(){var b=this,a=b.hideLabel||!b.fieldLabel&&b.hideEmptyLabel;return b.errorMsgCls+(!a&&b.labelAlign==="top"?" "+Ext.baseCSSPrefix+"lbl-top-err-icon":"")},getLabelCellAttrs:function(){var c=this,b=c.labelAlign,a="";if(b!=="top"){a='valign="top" halign="'+b+'" width="'+(c.labelWidth+c.labelPad)+'"'}return a+' class="'+Ext.baseCSSPrefix+'field-label-cell"'},getLabelStyle:function(){var c=this,b=c.labelPad,a="";if(c.labelAlign!=="top"){if(c.labelWidth){a="width:"+c.labelWidth+"px;"}if(b){a+="margin-right:"+b+"px;"}}return a+(c.labelStyle||"")},getSubTplMarkup:function(){return""},getInputId:function(){return""},getActiveError:function(){return this.activeError||""},hasActiveError:function(){return !!this.getActiveError()},setActiveError:function(a){this.setActiveErrors(a)},getActiveErrors:function(){return this.activeErrors||[]},setActiveErrors:function(a){a=Ext.Array.from(a);this.activeError=a[0];this.activeErrors=a;this.activeError=this.getTpl("activeErrorsTpl").apply({errors:a,listCls:Ext.plainListCls});this.renderActiveError()},unsetActiveError:function(){delete this.activeError;delete this.activeErrors;this.renderActiveError()},renderActiveError:function(){var c=this,b=c.getActiveError(),a=!!b;if(b!==c.lastActiveError){c.fireEvent("errorchange",c,b);c.lastActiveError=b}if(c.rendered&&!c.isDestroyed&&!c.preventMark){c.el[a?"addCls":"removeCls"](c.invalidCls);c.getActionEl().dom.setAttribute("aria-invalid",a);if(c.errorEl){c.errorEl.dom.innerHTML=b}}},setFieldDefaults:function(b){var a;for(a in b){if(!this.hasOwnProperty(a)){this[a]=b[a]}}}});Ext.define("Ext.form.field.Field",{isFormField:true,disabled:false,submitValue:true,validateOnChange:true,suspendCheckChange:0,initField:function(){this.addEvents("change","validitychange","dirtychange");this.initValue()},initValue:function(){var a=this;a.value=a.transformOriginalValue(a.value);a.originalValue=a.lastValue=a.value;a.suspendCheckChange++;a.setValue(a.value);a.suspendCheckChange--},transformOriginalValue:Ext.identityFn,getName:function(){return this.name},getValue:function(){return this.value},setValue:function(b){var a=this;a.value=b;a.checkChange();return a},isEqual:function(b,a){return String(b)===String(a)},isEqualAsString:function(b,a){return String(Ext.value(b,""))===String(Ext.value(a,""))},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={};b[a.getName()]=""+a.getValue()}return b},getModelData:function(){var a=this,b=null;if(!a.disabled&&!a.isFileUpload()){b={};b[a.getName()]=a.getValue()}return b},reset:function(){var a=this;a.beforeReset();a.setValue(a.originalValue);a.clearInvalid();delete a.wasValid},beforeReset:Ext.emptyFn,resetOriginalValue:function(){this.originalValue=this.getValue();this.checkDirty()},checkChange:function(){if(!this.suspendCheckChange){var c=this,b=c.getValue(),a=c.lastValue;if(!c.isEqual(b,a)&&!c.isDestroyed){c.lastValue=b;c.fireEvent("change",c,b,a);c.onChange(b,a)}}},onChange:function(b,a){if(this.validateOnChange){this.validate()}this.checkDirty()},isDirty:function(){var a=this;return !a.disabled&&!a.isEqual(a.getValue(),a.originalValue)},checkDirty:function(){var a=this,b=a.isDirty();if(b!==a.wasDirty){a.fireEvent("dirtychange",a,b);a.onDirtyChange(b);a.wasDirty=b}},onDirtyChange:Ext.emptyFn,getErrors:function(a){return[]},isValid:function(){var a=this;return a.disabled||Ext.isEmpty(a.getErrors())},validate:function(){var a=this,b=a.isValid();if(b!==a.wasValid){a.wasValid=b;a.fireEvent("validitychange",a,b)}return b},batchChanges:function(a){try{this.suspendCheckChange++;a()}catch(b){throw b}finally{this.suspendCheckChange--}this.checkChange()},isFileUpload:function(){return false},extractFileInput:function(){return null},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.define("Ext.layout.component.field.Field",{extend:Ext.layout.component.Auto,alias:"layout.field",type:"field",naturalSizingProp:"size",beginLayout:function(c){var b=this,a=b.owner;b.callParent(arguments);c.labelStrategy=b.getLabelStrategy();c.errorStrategy=b.getErrorStrategy();c.labelContext=c.getEl("labelEl");c.bodyCellContext=c.getEl("bodyEl");c.inputContext=c.getEl("inputEl");c.errorContext=c.getEl("errorEl");if(Ext.isIE7m&&Ext.isStrict&&c.inputContext){b.ieInputWidthAdjustment=c.inputContext.getPaddingInfo().width+c.inputContext.getBorderInfo().width}c.labelStrategy.prepare(c,a);c.errorStrategy.prepare(c,a)},beginLayoutCycle:function(g){var e=this,a=e.owner,c=g.widthModel,b=a[e.naturalSizingProp],d;e.callParent(arguments);if(c.shrinkWrap){e.beginLayoutShrinkWrap(g)}else{if(c.natural){if(typeof b=="number"&&!a.inputWidth){e.beginLayoutFixed(g,d=b*6.5+20,"px")}else{e.beginLayoutShrinkWrap(g)}g.setWidth(d,false)}else{e.beginLayoutFixed(g,"100","%")}}},beginLayoutFixed:function(c,b,e){var a=c.target,d=a.inputEl,g=a.inputWidth;a.el.setStyle("table-layout","fixed");a.bodyEl.setStyle("width",b+e);if(d){if(g){d.setStyle("width",g+"px")}else{d.setStyle("width",a.stretchInputElFixed?"100%":"")}}c.isFixed=true},beginLayoutShrinkWrap:function(b){var a=b.target,c=a.inputEl,d=a.inputWidth;if(c&&c.dom){c.dom.removeAttribute("size");if(d){c.setStyle("width",d+"px")}else{c.setStyle("width","")}}a.el.setStyle("table-layout","auto");a.bodyEl.setStyle("width","")},finishedLayout:function(b){var a=this.owner;this.callParent(arguments);b.labelStrategy.finishedLayout(b,a);b.errorStrategy.finishedLayout(b,a)},calculateOwnerHeightFromContentHeight:function(b,a){return a},measureContentHeight:function(a){return a.el.getHeight()},measureContentWidth:function(a){return a.el.getWidth()},measureLabelErrorHeight:function(a){return a.labelStrategy.getHeight(a)+a.errorStrategy.getHeight(a)},onFocus:function(){this.getErrorStrategy().onFocus(this.owner)},getLabelStrategy:function(){var b=this,c=b.labelStrategies,a=b.owner.labelAlign;return c[a]||c.base},getErrorStrategy:function(){var c=this,a=c.owner,d=c.errorStrategies,b=a.msgTarget;return !a.preventMark&&Ext.isString(b)?d[b]||d.elementId:d.none},labelStrategies:function(){var a={prepare:function(e,b){var c=b.labelCls+"-"+b.labelAlign,d=b.labelEl;if(d){d.addCls(c)}},getHeight:function(){return 0},finishedLayout:Ext.emptyFn};return{base:a,top:Ext.applyIf({getHeight:function(e){var c=e.labelContext,d=c.props,b=d.height;if(b===undefined){d.height=b=c.el.getHeight()}return b}},a),left:a,right:a}}(),errorStrategies:function(){function d(h){var j=Ext.layout.component.field.Field.tip,k;if(j&&j.isVisible()){k=j.activeTarget;if(k&&k.el===h.getActionEl().dom){j.toFront(true)}}}var c=Ext.applyIf,b=Ext.emptyFn,a=Ext.baseCSSPrefix+"form-invalid-icon",g,e={prepare:function(k,h){var j=h.errorEl;if(j){j.setDisplayed(false)}},getHeight:function(){return 0},onFocus:b,finishedLayout:b};return{none:e,side:c({prepare:function(l,j){var n=j.errorEl,k=j.sideErrorCell,h=j.hasActiveError(),m;if(!g){g=(m=Ext.getBody().createChild({style:"position:absolute",cls:a})).getWidth();m.remove()}n.addCls(a);n.set({"data-errorqtip":j.getActiveError()||""});if(j.autoFitErrors){n.setDisplayed(h)}else{n.setVisible(h)}if(k&&j.autoFitErrors){k.setDisplayed(h)}j.bodyEl.dom.colSpan=j.getBodyColspan();Ext.layout.component.field.Field.initTip()},onFocus:d},e),under:c({prepare:function(k,h){var l=h.errorEl,j=Ext.baseCSSPrefix+"form-invalid-under";l.addCls(j);l.setDisplayed(h.hasActiveError())},getHeight:function(l){var h=0,j,k;if(l.target.hasActiveError()){j=l.errorContext;k=j.props;h=k.height;if(h===undefined){k.height=h=j.el.getHeight()}}return h}},e),qtip:c({prepare:function(j,h){Ext.layout.component.field.Field.initTip();h.getActionEl().dom.setAttribute("data-errorqtip",h.getActiveError()||"")},onFocus:d},e),title:c({prepare:function(j,h){h.getActionEl().dom.setAttribute("title",h.getActiveError()||"")}},e),elementId:c({prepare:function(j,h){var k=Ext.fly(h.msgTarget);if(k){k.dom.innerHTML=h.getActiveError()||"";k.setDisplayed(h.hasActiveError())}}},e)}}(),statics:{initTip:function(){var a=this.tip;if(!a){a=this.tip=Ext.create("Ext.tip.QuickTip",{ui:"form-invalid"});a.tagConfig=Ext.apply({},{attribute:"errorqtip"},a.tagConfig)}},destroyTip:function(){var a=this.tip;if(a){a.destroy();delete this.tip}}}});Ext.define("Ext.form.field.Base",{extend:Ext.Component,mixins:{labelable:Ext.form.Labelable,field:Ext.form.field.Field},alias:"widget.field",alternateClassName:["Ext.form.Field","Ext.form.BaseField"],fieldSubTpl:['<input id="{id}" type="{type}" {inputAttrTpl}',' size="1"','<tpl if="name"> name="{name}"</tpl>','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls} {typeCls} {editableCls} {inputCls}" autocomplete="off"/>',{disableFormats:true}],subTplInsertions:["inputAttrTpl"],inputType:"text",invalidText:"The value in this field is invalid",fieldCls:Ext.baseCSSPrefix+"form-field",focusCls:"form-focus",dirtyCls:Ext.baseCSSPrefix+"form-dirty",checkChangeEvents:Ext.isIE&&(!document.documentMode||document.documentMode<9)?["change","propertychange","keyup"]:["change","input","textInput","keyup","dragdrop"],checkChangeBuffer:50,componentLayout:"field",readOnly:false,readOnlyCls:Ext.baseCSSPrefix+"form-readonly",validateOnBlur:true,hasFocus:false,baseCls:Ext.baseCSSPrefix+"field",maskOnDisable:false,stretchInputElFixed:true,initComponent:function(){var a=this;a.callParent();a.subTplData=a.subTplData||{};a.addEvents("specialkey","writeablechange");a.initLabelable();a.initField();if(!a.name){a.name=a.getInputId()}if(a.readOnly){a.addCls(a.readOnlyCls)}},getInputId:function(){return this.inputId||(this.inputId=this.id+"-inputEl")},getSubTplData:function(){var c=this,b=c.inputType,a=c.getInputId(),d;d=Ext.apply({id:a,cmpId:c.id,name:c.name||a,disabled:c.disabled,readOnly:c.readOnly,value:c.getRawValue(),type:b,fieldCls:c.fieldCls,fieldStyle:c.getFieldStyle(),tabIdx:c.tabIndex,inputCls:c.inputCls,typeCls:Ext.baseCSSPrefix+"form-"+(b==="password"?"text":b)},c.subTplData);c.getInsertionRenderData(d,c.subTplInsertions);return d},applyRenderSelectors:function(){var a=this;a.callParent();a.addChildEls("inputEl");a.inputEl=a.el.getById(a.getInputId())},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},setFieldStyle:function(a){var b=this,c=b.inputEl;if(c){c.applyStyles(a)}b.fieldStyle=a},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},onRender:function(){this.callParent(arguments);this.renderActiveError()},getFocusEl:function(){return this.inputEl},isFileUpload:function(){return this.inputType==="file"},getSubmitData:function(){var a=this,b=null,c;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){c=a.getSubmitValue();if(c!==null){b={};b[a.getName()]=c}}return b},getSubmitValue:function(){return this.processRawValue(this.getRawValue())},getRawValue:function(){var b=this,a=b.inputEl?b.inputEl.getValue():Ext.value(b.rawValue,"");b.rawValue=a;return a},setRawValue:function(b){var a=this;b=Ext.value(a.transformRawValue(b),"");a.rawValue=b;if(a.inputEl){a.inputEl.dom.value=b}return b},transformRawValue:Ext.identityFn,valueToRaw:function(a){return""+Ext.value(a,"")},rawToValue:Ext.identityFn,processRawValue:Ext.identityFn,getValue:function(){var a=this,b=a.rawToValue(a.processRawValue(a.getRawValue()));a.value=b;return b},setValue:function(b){var a=this;a.setRawValue(a.valueToRaw(b));return a.mixins.field.setValue.call(a,b)},onBoxReady:function(){var a=this;a.callParent();if(a.setReadOnlyOnBoxReady){a.setReadOnly(a.readOnly)}},onDisable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=true;if(a.hasActiveError()){a.clearInvalid();a.needsValidateOnEnable=true}}},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=false;if(a.needsValidateOnEnable){delete a.needsValidateOnEnable;a.forceValidation=true;a.isValid();delete a.forceValidation}}},setReadOnly:function(c){var a=this,b=a.inputEl;c=!!c;a[c?"addCls":"removeCls"](a.readOnlyCls);a.readOnly=c;if(b){b.dom.readOnly=c}else{if(a.rendering){a.setReadOnlyOnBoxReady=true}}a.fireEvent("writeablechange",a,c)},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,new Ext.EventObjectImpl(a))}},initEvents:function(){var g=this,j=g.inputEl,b,k,c=g.checkChangeEvents,h,a=c.length,d;if(g.inEditor){g.onBlur=Ext.Function.createBuffered(g.onBlur,10)}if(j){g.mon(j,Ext.EventManager.getKeyEvent(),g.fireKey,g);b=new Ext.util.DelayedTask(g.checkChange,g);g.onChangeEvent=k=function(){b.delay(g.checkChangeBuffer)};for(h=0;h<a;h++){d=c[h];if(d==="propertychange"){g.usesPropertychange=true}g.mon(j,d,k)}}g.callParent()},doComponentLayout:function(){var c=this,d=c.inputEl,a=c.usesPropertychange,b="propertychange",e=c.onChangeEvent;if(a){c.mun(d,b,e)}c.callParent(arguments);if(a){c.mon(d,b,e)}},onDirtyChange:function(a){this[a?"addCls":"removeCls"](this.dirtyCls)},isValid:function(){var b=this,a=b.disabled,c=b.forceValidation||!a;return c?b.validateValue(b.processRawValue(b.getRawValue())):a},validateValue:function(b){var a=this,d=a.getErrors(b),c=Ext.isEmpty(d);if(!a.preventMark){if(c){a.clearInvalid()}else{a.markInvalid(d)}}return c},markInvalid:function(d){var b=this,a=b.getActiveError(),c;b.setActiveErrors(Ext.Array.from(d));c=b.getActiveError();if(a!==c){b.setError(c)}},clearInvalid:function(){var b=this,a=b.hasActiveError();delete b.needsValidateOnEnable;b.unsetActiveError();if(a){b.setError("")}},setError:function(c){var b=this,a=b.msgTarget,d;if(b.rendered){if(a=="title"||a=="qtip"){if(b.rendered){d=a=="qtip"?"data-errorqtip":"title"}b.getActionEl().dom.setAttribute(d,c||"")}else{b.updateLayout()}}},renderActiveError:function(){var b=this,a=b.hasActiveError();if(b.inputEl){b.inputEl[a?"addCls":"removeCls"](b.invalidCls+"-field")}b.mixins.labelable.renderActiveError.call(b)},getActionEl:function(){return this.inputEl||this.el}});Ext.define("Ext.form.field.VTypes",function(){var c=/^[a-zA-Z_]+$/,d=/^[a-zA-Z0-9_]+$/,b=/^(")?(?:[^\."])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,a=/(((^https?)|(^ftp)):\/\/((([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)|(localhost|LOCALHOST))\/?)/i;return{singleton:true,alternateClassName:"Ext.form.VTypes",email:function(e){return b.test(e)},emailText:'This field should be an e-mail address in the format "user@example.com"',emailMask:/[\w.\-@'"!#$%&'*+/=?^_`{|}~]/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.define("Ext.layout.component.field.Text",{extend:Ext.layout.component.field.Field,alias:"layout.textfield",type:"textfield",canGrowWidth:true,beginLayoutCycle:function(a){this.callParent(arguments);if(a.heightModel.shrinkWrap){a.inputContext.el.setStyle("height","")}},measureContentWidth:function(c){var h=this,b=h.owner,a=h.callParent(arguments),g=c.inputContext,l,k,d,j,e;if(b.grow&&h.canGrowWidth&&!c.state.growHandled){l=b.inputEl;k=Ext.util.Format.htmlEncode(l.dom.value||(b.hasFocus?"":b.emptyText)||"");k+=b.growAppend;d=l.getTextWidth(k)+g.getFrameInfo().width;j=b.growMax;e=Math.min(j,a);j=Math.max(b.growMin,j,e);d=Ext.Number.constrain(d,b.growMin,j);g.setWidth(d);c.state.growHandled=true;g.domBlock(h,"width");a=NaN}return a},publishInnerHeight:function(b,a){b.inputContext.setHeight(a-this.measureLabelErrorHeight(b))},beginLayoutFixed:function(d,a,e){var b=this,c=b.ieInputWidthAdjustment;if(c){b.adjustIEInputPadding(d);if(e==="px"){a-=c}}b.callParent(arguments)},adjustIEInputPadding:function(a){this.owner.bodyEl.setStyle("padding-right",this.ieInputWidthAdjustment+"px")}});Ext.define("Ext.form.field.Text",{extend:Ext.form.field.Base,alias:"widget.textfield",alternateClassName:["Ext.form.TextField","Ext.form.Text"],size:20,growMin:30,growMax:800,growAppend:"W",allowBlank:true,validateBlank:false,allowOnlyWhitespace: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}",blankText:"This field is required",regexText:"",emptyCls:Ext.baseCSSPrefix+"form-empty-field",requiredCls:Ext.baseCSSPrefix+"form-required-field",componentLayout:"textfield",valueContainsPlaceholder:false,initComponent:function(){var a=this;if(a.allowOnlyWhitespace===false){a.allowBlank=false}a.callParent();a.addEvents("autosize","keydown","keyup","keypress");a.addStateEvents("change");a.setGrowSizePolicy()},setGrowSizePolicy:function(){if(this.grow){this.shrinkWrap|=1}},initEvents:function(){var b=this,a=b.inputEl;b.callParent();if(b.selectOnFocus||b.emptyText){b.mon(a,"mousedown",b.onMouseDown,b)}if(b.maskRe||b.vtype&&b.disableKeyFilter!==true&&(b.maskRe=Ext.form.field.VTypes[b.vtype+"Mask"])){b.mon(a,"keypress",b.filterKeys,b)}if(b.enableKeyEvents){b.mon(a,{scope:b,keyup:b.onKeyUp,keydown:b.onKeyDown,keypress:b.onKeyPress})}},isEqual:function(b,a){return this.isEqualAsString(b,a)},onChange:function(){this.callParent();this.autoSize()},getSubTplData:function(){var b=this,c=b.getRawValue(),e=b.emptyText&&c.length<1,a=b.maxLength,d;if(b.enforceMaxLength){if(a===Number.MAX_VALUE){a=undefined}}else{a=undefined}if(e){if(Ext.supports.Placeholder){d=b.emptyText}else{c=b.emptyText;b.valueContainsPlaceholder=true}}return Ext.apply(b.callParent(),{maxLength:a,readOnly:b.readOnly,placeholder:d,value:c,fieldCls:b.fieldCls+(e&&(d||c)?" "+b.emptyCls:"")+(b.allowBlank?"":" "+b.requiredCls)})},afterRender:function(){this.autoSize();this.callParent()},onMouseDown:function(b){var a=this;if(!a.hasFocus){a.mon(a.inputEl,"mouseup",Ext.emptyFn,a,{single:true,preventDefault:true})}},processRawValue:function(b){var a=this,d=a.stripCharsRe,c;if(d){c=b.replace(d,"");if(c!==b){a.setRawValue(c);b=c}}return b},onDisable:function(){this.callParent();if(Ext.isIE){this.inputEl.dom.unselectable="on"}},onEnable:function(){this.callParent();if(Ext.isIE){this.inputEl.dom.unselectable=""}},onKeyDown:function(a){this.fireEvent("keydown",this,a)},onKeyUp:function(a){this.fireEvent("keyup",this,a)},onKeyPress:function(a){this.fireEvent("keypress",this,a)},reset:function(){this.callParent();this.applyEmptyText()},applyEmptyText:function(){var b=this,a=b.emptyText,c;if(b.rendered&&a){c=b.getRawValue().length<1&&!b.hasFocus;if(Ext.supports.Placeholder){b.inputEl.dom.placeholder=a}else{if(c){b.setRawValue(a);b.valueContainsPlaceholder=true}}if(c){b.inputEl.addCls(b.emptyCls)}b.autoSize()}},afterFirstLayout:function(){this.callParent();if(Ext.isIE&&this.disabled){var a=this.inputEl;if(a){a.dom.unselectable="on"}}},beforeFocus:function(){var b=this,c=b.inputEl,a=b.emptyText,d;b.callParent(arguments);if(a&&!Ext.supports.Placeholder&&c.dom.value===b.emptyText&&b.valueContainsPlaceholder){b.setRawValue("");d=true;c.removeCls(b.emptyCls);b.valueContainsPlaceholder=false}else{if(Ext.supports.Placeholder){b.inputEl.removeCls(b.emptyCls)}}if(b.selectOnFocus||d){if(Ext.isWebKit){if(!b.inputFocusTask){b.inputFocusTask=new Ext.util.DelayedTask(b.focusInput,b)}b.inputFocusTask.delay(1)}else{c.dom.select()}}},focusInput:function(){var a=this.inputEl;if(a){a=a.dom;if(a){a.select()}}},onFocus:function(){var a=this;a.callParent(arguments);if(a.emptyText){a.autoSize()}},postBlur:function(){this.callParent(arguments);this.applyEmptyText()},filterKeys:function(c){if(c.ctrlKey&&!c.altKey){return}var b=c.getKey(),a=String.fromCharCode(c.getCharCode());if((Ext.isGecko||Ext.isOpera)&&(c.isNavKeyPress()||b===c.BACKSPACE||b===c.DELETE&&c.button===-1)){return}if(!Ext.isGecko&&!Ext.isOpera&&c.isSpecialKey()&&!a){return}if(!this.maskRe.test(a)){c.stopEvent()}},getState:function(){return this.addPropertyToState(this.callParent(),"value")},applyState:function(a){this.callParent(arguments);if(a.hasOwnProperty("value")){this.setValue(a.value)}},getRawValue:function(){var b=this,a=b.callParent();if(a===b.emptyText&&b.valueContainsPlaceholder){a=""}return a},setValue:function(b){var a=this,c=a.inputEl;if(c&&a.emptyText&&!Ext.isEmpty(b)){c.removeCls(a.emptyCls);a.valueContainsPlaceholder=false}a.callParent(arguments);a.applyEmptyText();return a},getErrors:function(m){var g=this,k=g.callParent(arguments),a=g.validator,d=g.vtype,h=Ext.form.field.VTypes,j=g.regex,l=Ext.String.format,b,e,c;m=m||g.processRawValue(g.getRawValue());if(Ext.isFunction(a)){b=a.call(g,m);if(b!==true){k.push(b)}}e=g.allowOnlyWhitespace?m:Ext.String.trim(m);if(e.length<1||m===g.emptyText&&g.valueContainsPlaceholder){if(!g.allowBlank){k.push(g.blankText)}if(!g.validateBlank){return k}c=true}if(!c&&m.length<g.minLength){k.push(l(g.minLengthText,g.minLength))}if(m.length>g.maxLength){k.push(l(g.maxLengthText,g.maxLength))}if(d){if(!h[d](m,g)){k.push(g.vtypeText||h[d+"Text"])}}if(j&&!j.test(m)){k.push(g.regexText||g.invalidText)}return k},selectText:function(j,a){var h=this,c=h.getRawValue(),d=true,g=h.inputEl.dom,e,b;if(c.length>0){j=j===e?0:j;a=a===e?c.length:a;if(g.setSelectionRange){g.setSelectionRange(j,a)}else{if(g.createTextRange){b=g.createTextRange();b.moveStart("character",j);b.moveEnd("character",a-c.length);b.select()}}d=Ext.isGecko||Ext.isOpera}if(d){h.focus()}},autoSize:function(){var a=this;if(a.grow&&a.rendered){a.autoSizing=true;a.updateLayout()}},afterComponentLayout:function(){var b=this,a;b.callParent(arguments);if(b.autoSizing){a=b.inputEl.getWidth();if(a!==b.lastInputWidth){b.fireEvent("autosize",b,a);b.lastInputWidth=a;delete b.autoSizing}}},onDestroy:function(){var a=this;a.callParent();if(a.inputFocusTask){a.inputFocusTask.cancel();a.inputFocusTask=null}}});Ext.define("Ext.layout.component.field.TextArea",{extend:Ext.layout.component.field.Text,alias:"layout.textareafield",type:"textareafield",canGrowWidth:false,naturalSizingProp:"cols",beginLayout:function(a){this.callParent(arguments);a.target.inputEl.setStyle("height","")},measureContentHeight:function(b){var e=this,a=e.owner,l=e.callParent(arguments),c,j,h,g,d,k;if(a.grow&&!b.state.growHandled){c=b.inputContext;j=a.inputEl;d=j.getWidth(true);h=Ext.util.Format.htmlEncode(j.dom.value)||"&#160;";h+=a.growAppend;h=h.replace(/\n/g,"<br/>");k=Ext.util.TextMetrics.measure(j,h,d).height+c.getBorderInfo().height+c.getPaddingInfo().height;k=Ext.Number.constrain(k,a.growMin,a.growMax);c.setHeight(k);b.state.growHandled=true;c.domBlock(e,"height");l=NaN}return l}});Ext.define("Ext.form.field.TextArea",{extend:Ext.form.field.Text,alias:["widget.textareafield","widget.textarea"],alternateClassName:"Ext.form.TextArea",fieldSubTpl:['<textarea id="{id}" {inputAttrTpl}','<tpl if="name"> name="{name}"</tpl>','<tpl if="rows"> rows="{rows}" </tpl>','<tpl if="cols"> cols="{cols}" </tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','<tpl if="size"> size="{size}"</tpl>','<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>',' class="{fieldCls} {typeCls} {inputCls}" ','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' autocomplete="off">\n','<tpl if="value">{[Ext.util.Format.htmlEncode(values.value)]}</tpl>',"</textarea>",{disableFormats:true}],growMin:60,growMax:1000,growAppend:"\n-",cols:20,rows:4,enterIsSpecial:false,preventScrollbars:false,componentLayout:"textareafield",setGrowSizePolicy:Ext.emptyFn,returnRe:/\r/g,inputCls:Ext.baseCSSPrefix+"form-textarea",getSubTplData:function(){var c=this,b=c.getFieldStyle(),a=c.callParent();if(c.grow){if(c.preventScrollbars){a.fieldStyle=(b||"")+";overflow:hidden;height:"+c.growMin+"px"}}Ext.applyIf(a,{cols:c.cols,rows:c.rows});return a},afterRender:function(){var a=this;a.callParent(arguments);a.needsMaxCheck=a.enforceMaxLength&&a.maxLength!==Number.MAX_VALUE&&!Ext.supports.TextAreaMaxLength;if(a.needsMaxCheck){a.inputEl.on("paste",a.onPaste,a)}},transformRawValue:function(a){return this.stripReturns(a)},transformOriginalValue:function(a){return this.stripReturns(a)},getValue:function(){return this.stripReturns(this.callParent())},valueToRaw:function(a){a=this.stripReturns(a);return this.callParent([a])},stripReturns:function(a){if(a){a=a.replace(this.returnRe,"")}return a},onPaste:function(b){var a=this;if(!a.pasteTask){a.pasteTask=new Ext.util.DelayedTask(a.pasteCheck,a)}a.pasteTask.delay(1)},pasteCheck:function(){var b=this,c=b.getValue(),a=b.maxLength;if(c.length>a){c=c.substr(0,a);b.setValue(c)}},fireKey:function(d){var b=this,a=d.getKey(),c;if(d.isSpecialKey()&&(b.enterIsSpecial||a!==d.ENTER||d.hasModifier())){b.fireEvent("specialkey",b,d)}if(b.needsMaxCheck&&a!==d.BACKSPACE&&a!==d.DELETE&&!d.isNavKeyPress()&&!b.isCutCopyPasteSelectAll(d,a)){c=b.getValue();if(c.length>=b.maxLength){d.stopEvent()}}},isCutCopyPasteSelectAll:function(b,a){if(b.ctrlKey){return a===b.A||a===b.C||a===b.V||a===b.X}return false},autoSize:function(){var b=this,a;if(b.grow&&b.rendered){b.updateLayout();a=b.inputEl.getHeight();if(a!==b.lastInputHeight){b.fireEvent("autosize",b,a);b.lastInputHeight=a}}},initAria:function(){this.callParent(arguments);this.getActionEl().dom.setAttribute("aria-multiline",true)},beforeDestroy:function(){var a=this.pasteTask;if(a){a.cancel();this.pasteTask=null}this.callParent()}});Ext.define("Ext.form.field.Display",{extend:Ext.form.field.Base,alias:"widget.displayfield",alternateClassName:["Ext.form.DisplayField","Ext.form.Display"],fieldSubTpl:['<div id="{id}"','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls}">{value}</div>',{compiled:true,disableFormats:true}],fieldCls:Ext.baseCSSPrefix+"form-display-field",htmlEncode:false,validateOnChange:false,initEvents:Ext.emptyFn,submitValue:false,isDirty:function(){return false},isValid:function(){return true},validate:function(){return true},getRawValue:function(){return this.rawValue},setRawValue:function(b){var a=this,c;b=Ext.value(b,"");a.rawValue=b;if(a.rendered){a.inputEl.dom.innerHTML=a.getDisplayValue();a.updateLayout()}return b},getDisplayValue:function(){var a=this,b=this.getRawValue(),c;if(a.renderer){c=a.renderer.call(a.scope||a,b,a)}else{c=a.htmlEncode?Ext.util.Format.htmlEncode(b):b}return c},getSubTplData:function(){var a=this.callParent(arguments);a.value=this.getDisplayValue();return a}});Ext.define("Ext.layout.container.Anchor",{alias:"layout.anchor",extend:Ext.layout.container.Auto,alternateClassName:"Ext.layout.AnchorLayout",type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,manageOverflow:true,beginLayoutCycle:function(c){var j=this,a=0,g,k,e,d,b,h;j.callParent(arguments);e=c.childItems;b=e.length;for(d=0;d<b;++d){k=e[d];g=k.target.anchorSpec;if(g){if(k.widthModel.calculated&&g.right){a|=1}if(k.heightModel.calculated&&g.bottom){a|=2}if(a==3){break}}}c.anchorDimensions=a},calculateItems:function(h,a){var q=this,l=h.childItems,g=l.length,o=a.gotHeight,j=a.gotWidth,e=a.height,c=a.width,b=(j?1:0)|(o?2:0),p=h.anchorDimensions,m,t,n,s,k,d;if(!p){return true}for(k=0;k<g;k++){t=l[k];n=t.getMarginInfo();m=t.target.anchorSpec;if(j&&t.widthModel.calculated){d=m.right(c)-n.width;d=q.adjustWidthAnchor(d,t);t.setWidth(d)}if(o&&t.heightModel.calculated){s=m.bottom(e)-n.height;s=q.adjustHeightAnchor(s,t);t.setHeight(s)}}return(b&p)===p},anchorFactory:{offset:function(a){return function(b){return b+a}},ratio:function(a){return function(b){return Math.floor(b*a)}},standard:function(a){return function(b){return b-a}}},parseAnchor:function(c,g,b){if(c&&c!="none"){var d=this.anchorFactory,e;if(this.parseAnchorRE.test(c)){return d.standard(b-g)}if(c.indexOf("%")!=-1){return d.ratio(parseFloat(c.replace("%",""))*0.01)}e=parseInt(c,10);if(!isNaN(e)){return d.offset(e)}}return null},adjustWidthAnchor:function(b,a){return b},adjustHeightAnchor:function(b,a){return b},configureItem:function(g){var e=this,a=e.owner,d=g.anchor,b,c,h;e.callParent(arguments);if(!g.anchor&&g.items&&!Ext.isNumber(g.width)&&!(Ext.isIE6&&Ext.isStrict)){g.anchor=d=e.defaultAnchor}if(a.anchorSize){if(typeof a.anchorSize=="number"){c=a.anchorSize}else{c=a.anchorSize.width;h=a.anchorSize.height}}else{c=a.initialConfig.width;h=a.initialConfig.height}if(d){b=d.split(" ");g.anchorSpec={right:e.parseAnchor(b[0],g.initialConfig.width,c),bottom:e.parseAnchor(b[1],g.initialConfig.height,h)}}},sizePolicy:{$:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},b:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},r:{$:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},b:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}}},getItemSizePolicy:function(c){var e=c.anchorSpec,a="$",d=this.sizePolicy,b;if(e){b=this.owner.getSizeModel();if(e.right&&!b.width.shrinkWrap){d=d.r}if(e.bottom&&!b.height.shrinkWrap){a="b"}}return d[a]}});Ext.define("Ext.window.MessageBox",{extend:Ext.window.Window,alias:"widget.messagebox",OK:1,YES:2,NO:4,CANCEL:8,OKCANCEL:9,YESNO:6,YESNOCANCEL:14,INFO:Ext.baseCSSPrefix+"message-box-info",WARNING:Ext.baseCSSPrefix+"message-box-warning",QUESTION:Ext.baseCSSPrefix+"message-box-question",ERROR:Ext.baseCSSPrefix+"message-box-error",hideMode:"offsets",closeAction:"hide",resizable:false,title:"&#160;",defaultMinWidth:250,defaultMaxWidth:600,defaultMinHeight:110,defaultMaxHeight:500,constrain:true,cls:[Ext.baseCSSPrefix+"message-box",Ext.baseCSSPrefix+"hide-offsets"],layout:{type:"vbox",align:"stretch"},shrinkWrapDock:true,defaultTextHeight:75,minProgressWidth:250,minPromptWidth:250,buttonText:{ok:"OK",yes:"Yes",no:"No",cancel:"Cancel"},buttonIds:["ok","yes","no","cancel"],titleText:{confirm:"Confirm",prompt:"Prompt",wait:"Loading...",alert:"Attention"},iconHeight:35,iconWidth:50,makeButton:function(a){var b=this.buttonIds[a];return new Ext.button.Button({handler:this.btnCallback,itemId:b,scope:this,text:this.buttonText[b],minWidth:75})},btnCallback:function(a){var b=this,c,d;if(b.cfg.prompt||b.cfg.multiline){if(b.cfg.multiline){d=b.textArea}else{d=b.textField}c=d.getValue();d.reset()}a.blur();b.hide();b.userCallback(a.itemId,c,b.cfg)},hide:function(){var b=this,a=b.cfg.cls;b.dd.endDrag();b.progressBar.reset();if(a){b.removeCls(a)}b.callParent(arguments)},initComponent:function(){var d=this,a=d.id,c,b;d.title="&#160;";d.minWidth=d.defaultMinWidth;d.maxWidth=d.defaultMaxWidth;d.minHeight=d.defaultMinHeight;d.maxHeight=d.defaultMaxHeight;d.topContainer=new Ext.container.Container({layout:"hbox",padding:10,style:{overflow:"hidden"},items:[d.iconComponent=new Ext.Component({width:d.iconWidth,height:d.iconHeight}),d.promptContainer=new Ext.container.Container({flex:1,layout:"anchor",items:[d.msg=new Ext.form.field.Display({id:a+"-displayfield",cls:d.baseCls+"-text"}),d.textField=new Ext.form.field.Text({id:a+"-textfield",anchor:"100%",enableKeyEvents:true,listeners:{keydown:d.onPromptKey,scope:d}}),d.textArea=new Ext.form.field.TextArea({id:a+"-textarea",anchor:"100%",height:75})]})]});d.progressBar=new Ext.ProgressBar({id:a+"-progressbar",margins:"0 10 10 10"});d.items=[d.topContainer,d.progressBar];d.msgButtons=[];for(c=0;c<4;c++){b=d.makeButton(c);d.msgButtons[b.itemId]=b;d.msgButtons.push(b)}d.bottomTb=new Ext.toolbar.Toolbar({id:a+"-toolbar",ui:"footer",dock:"bottom",layout:{pack:"center"},items:[d.msgButtons[0],d.msgButtons[1],d.msgButtons[2],d.msgButtons[3]]});d.dockedItems=[d.bottomTb];d.on("close",d.onClose,d);d.callParent()},onClose:function(){var a=this.header.child("[type=close]");a.itemId="cancel";this.btnCallback(a);delete a.itemId},onPromptKey:function(a,c){var b=this,d;if(c.keyCode===Ext.EventObject.RETURN||c.keyCode===10){if(b.msgButtons.ok.isVisible()){d=true;b.msgButtons.ok.handler.call(b,b.msgButtons.ok)}else{if(b.msgButtons.yes.isVisible()){b.msgButtons.yes.handler.call(b,b.msgButtons.yes);d=true}}if(d){b.textField.blur()}}},reconfigure:function(l){var m=this,n=0,j=true,a=m.buttonText,b,o,h,c,g,e,k,d;m.updateButtonText();l=l||{};m.cfg=l;if(l.width){b=l.width}if(l.height){o=l.height}m.minWidth=l.minWidth||m.defaultMinWidth;m.maxWidth=l.maxWidth||m.defaultMaxWidth;m.minHeight=l.minHeight||m.defaultMinHeight;m.maxHeight=l.maxHeight||m.defaultMaxHeight;delete m.defaultFocus;if(l.defaultFocus){m.defaultFocus=l.defaultFocus}m.animateTarget=l.animateTarget||undefined;m.modal=l.modal!==false;m.setTitle(l.title||"");m.setIconCls(l.iconCls||"");if(Ext.isObject(l.buttons)){m.buttonText=l.buttons;n=0}else{m.buttonText=l.buttonText||m.buttonText;n=Ext.isNumber(l.buttons)?l.buttons:0}n=n|m.updateButtonText();m.buttonText=a;Ext.suspendLayouts();delete m.width;delete m.height;if(b||o){if(b){m.setWidth(b)}if(o){m.setHeight(o)}}m.hidden=false;if(!m.rendered){m.render(Ext.getBody())}m.closable=l.closable!==false&&!l.wait;m.header.child("[type=close]").setVisible(m.closable);if(!l.title&&!m.closable&&!l.iconCls){m.header.hide()}else{m.header.show()}m.liveDrag=!l.proxyDrag;m.userCallback=Ext.Function.bind(l.callback||l.fn||Ext.emptyFn,l.scope||Ext.global);m.setIcon(l.icon,l.iconWidth,l.iconHeight);e=m.msg;if(l.msg){e.setValue(l.msg);e.show()}else{e.hide()}c=m.textArea;g=m.textField;if(l.prompt||l.multiline){m.multiline=l.multiline;if(l.multiline){c.setValue(l.value);c.setHeight(l.defaultTextHeight||m.defaultTextHeight);c.show();g.hide();m.defaultFocus=c}else{g.setValue(l.value);c.hide();g.show();m.defaultFocus=g}}else{c.hide();g.hide()}k=m.progressBar;if(l.progress||l.wait){k.show();m.updateProgress(0,l.progressText);if(l.wait===true){k.wait(l.waitConfig)}}else{k.hide()}d=m.msgButtons;for(h=0;h<4;h++){if(n&Math.pow(2,h)){if(!m.defaultFocus){m.defaultFocus=d[h]}d[h].show();j=false}else{d[h].hide()}}if(j){m.bottomTb.hide()}else{m.bottomTb.show()}Ext.resumeLayouts(true)},updateButtonText:function(){var d=this,c=d.buttonText,b=0,e,a;for(e in c){if(c.hasOwnProperty(e)){a=d.msgButtons[e];if(a){if(d.cfg&&d.cfg.buttonText){b=b|Math.pow(2,Ext.Array.indexOf(d.buttonIds,e))}if(a.text!=c[e]){a.setText(c[e])}}}}return b},show:function(a){var c=this,b;if(Ext.AbstractComponent.layoutSuspendCount){Ext.on({resumelayouts:function(){c.show(a)},single:true});return c}c.reconfigure(a);if(a.cls){c.addCls(a.cls)}b=c.query("textfield:not([hidden]),textarea:not([hidden]),button:not([hidden])");c.preventFocusOnActivate=!b.length;c.hidden=true;c.callParent();return c},onShow:function(){this.callParent(arguments);this.center()},updateText:function(a){this.msg.setValue(a)},setIcon:function(d,c,a){var e=this,g=e.iconComponent,b=e.messageIconCls;if(b){g.removeCls(b)}if(d){g.show();g.setSize(c||e.iconWidth,a||e.iconHeight);g.addCls(Ext.baseCSSPrefix+"dlg-icon");g.addCls(e.messageIconCls=d)}else{g.removeCls(Ext.baseCSSPrefix+"dlg-icon");g.hide()}return e},updateProgress:function(b,a,c){this.progressBar.updateProgress(b,a);if(c){this.updateText(c)}return this},onEsc:function(){if(this.closable!==false){this.callParent(arguments)}},confirm:function(a,d,c,b){if(Ext.isString(a)){a={title:a,icon:this.QUESTION,msg:d,buttons:this.YESNO,callback:c,scope:b}}return this.show(a)},prompt:function(b,g,d,c,a,e){if(Ext.isString(b)){b={prompt:true,title:b,minWidth:this.minPromptWidth,msg:g,buttons:this.OKCANCEL,callback:d,scope:c,multiline:a,value:e}}return this.show(b)},wait:function(a,c,b){if(Ext.isString(a)){a={title:c,msg:a,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:b}}return this.show(a)},alert:function(a,d,c,b){if(Ext.isString(a)){a={title:a,msg:d,buttons:this.OK,fn:c,scope:b,minWidth:this.minWidth}}return this.show(a)},progress:function(a,c,b){if(Ext.isString(a)){a={title:a,msg:c,progress:true,progressText:b}}return this.show(a)}},function(){Ext.MessageBox=Ext.Msg=new this});Ext.define("Ext.form.Basic",{extend:Ext.util.Observable,alternateClassName:"Ext.form.BasicForm",constructor:function(b,c){var g=this,a,e,d;g.owner=b;g.checkValidityTask=new Ext.util.DelayedTask(g.checkValidity,g);g.checkDirtyTask=new Ext.util.DelayedTask(g.checkDirty,g);g.monitor=new Ext.container.Monitor({selector:"[isFormField]",scope:g,addHandler:g.onFieldAdd,removeHandler:g.onFieldRemove});g.monitor.bind(b);Ext.apply(g,c);if(Ext.isString(g.paramOrder)){g.paramOrder=g.paramOrder.split(/[\s,|]/)}if(g.api){e=g.api=Ext.apply({},g.api);for(d in e){if(e.hasOwnProperty(d)){e[d]=Ext.direct.Manager.parseMethod(e[d])}}}a=g.reader;if(a&&!a.isReader){if(typeof a==="string"){a={type:a}}g.reader=Ext.createByAlias("reader."+a.type,a)}a=g.errorReader;if(a&&!a.isReader){if(typeof a==="string"){a={type:a}}g.errorReader=Ext.createByAlias("reader."+a.type,a)}g.addEvents("beforeaction","actionfailed","actioncomplete","validitychange","dirtychange");g.callParent()},initialize:function(){this.initialized=true;this.onValidityChange(!this.hasInvalidField())},timeout:30,paramsAsHash:false,waitTitle:"Please Wait...",trackResetOnLoad:false,wasDirty:false,destroy:function(){var b=this,a=b.monitor;if(a){a.unbind();b.monitor=null}b.clearListeners();b.checkValidityTask.cancel();b.checkDirtyTask.cancel()},onFieldAdd:function(b){var a=this;a.mon(b,"validitychange",a.checkValidityDelay,a);a.mon(b,"dirtychange",a.checkDirtyDelay,a);if(a.initialized){a.checkValidityDelay()}},onFieldRemove:function(b){var a=this;a.mun(b,"validitychange",a.checkValidityDelay,a);a.mun(b,"dirtychange",a.checkDirtyDelay,a);if(a.initialized){a.checkValidityDelay()}},getFields:function(){return this.monitor.getItems()},getBoundItems:function(){var a=this._boundItems;if(!a||a.getCount()===0){a=this._boundItems=new Ext.util.MixedCollection;a.addAll(this.owner.query("[formBind]"))}return a},hasInvalidField:function(){return !!this.getFields().findBy(function(c){var a=c.preventMark,b;c.preventMark=true;b=c.isValid();c.preventMark=a;return !b})},isValid:function(){var a=this,b;Ext.suspendLayouts();b=a.getFields().filterBy(function(c){return !c.validate()});Ext.resumeLayouts(true);return b.length<1},checkValidity:function(){var b=this,a=!b.hasInvalidField();if(a!==b.wasValid){b.onValidityChange(a);b.fireEvent("validitychange",b,a);b.wasValid=a}},checkValidityDelay:function(){this.checkValidityTask.delay(10)},onValidityChange:function(g){var d=this.getBoundItems(),b,c,a,e;if(d){b=d.items;a=b.length;for(c=0;c<a;c++){e=b[c];if(e.disabled===g){e.setDisabled(!g)}}}},isDirty:function(){return !!this.getFields().findBy(function(a){return a.isDirty()})},checkDirtyDelay:function(){this.checkDirtyTask.delay(10)},checkDirty:function(){var a=this.isDirty();if(a!==this.wasDirty){this.fireEvent("dirtychange",this,a);this.wasDirty=a}},hasUpload:function(){return !!this.getFields().findBy(function(a){return a.isFileUpload()})},doAction:function(b,a){if(Ext.isString(b)){b=Ext.ClassManager.instantiateByAlias("formaction."+b,Ext.apply({},a,{form:this}))}if(this.fireEvent("beforeaction",this,b)!==false){this.beforeAction(b);Ext.defer(b.run,100,b)}return this},submit:function(a){a=a||{};var b=this,c;if(a.standardSubmit||b.standardSubmit){c="standardsubmit"}else{c=b.api?"directsubmit":"submit"}return b.doAction(c,a)},load:function(a){return this.doAction(this.api?"directload":"load",a)},updateRecord:function(c){c=c||this._record;if(!c){return this}var b=c.fields.items,d=this.getFieldValues(),h={},g=0,a=b.length,e;for(;g<a;++g){e=b[g].name;if(d.hasOwnProperty(e)){h[e]=d[e]}}c.beginEdit();c.set(h);c.endEdit();return this},loadRecord:function(a){this._record=a;return this.setValues(a.getData())},getRecord:function(){return this._record},beforeAction:function(c){var g=this,b=c.waitMsg,k=Ext.baseCSSPrefix+"mask-loading",d=g.getFields().items,e,j=d.length,h,a;for(e=0;e<j;e++){h=d[e];if(h.isFormField&&h.syncValue){h.syncValue()}}if(b){a=g.waitMsgTarget;if(a===true){g.owner.el.mask(b,k)}else{if(a){a=g.waitMsgTarget=Ext.get(a);a.mask(b,k)}else{g.floatingAncestor=g.owner.up("[floating]");if(g.floatingAncestor){g.savePreventFocusOnActivate=g.floatingAncestor.preventFocusOnActivate;g.floatingAncestor.preventFocusOnActivate=true}Ext.MessageBox.wait(b,c.waitTitle||g.waitTitle)}}}},afterAction:function(c,e){var a=this;if(c.waitMsg){var b=Ext.MessageBox,d=a.waitMsgTarget;if(d===true){a.owner.el.unmask()}else{if(d){d.unmask()}else{b.hide()}}}if(a.floatingAncestor){a.floatingAncestor.preventFocusOnActivate=a.savePreventFocusOnActivate}if(e){if(c.reset){a.reset()}Ext.callback(c.success,c.scope||c,[a,c]);a.fireEvent("actioncomplete",a,c)}else{Ext.callback(c.failure,c.scope||c,[a,c]);a.fireEvent("actionfailed",a,c)}},findField:function(a){return this.getFields().findBy(function(b){return b.id===a||b.getName()===a})},markInvalid:function(k){var d=this,h,a,b,g,c;function j(e,m){var l=d.findField(e);if(l){l.markInvalid(m)}}if(Ext.isArray(k)){a=k.length;for(h=0;h<a;h++){b=k[h];j(b.id,b.msg)}}else{if(k instanceof Ext.data.Errors){a=k.items.length;for(h=0;h<a;h++){b=k.items[h];j(b.field,b.message)}}else{for(c in k){if(k.hasOwnProperty(c)){g=k[c];j(c,g,k)}}}}return this},setValues:function(b){var d=this,a,c,h,g;function e(j,l){var k=d.findField(j);if(k){k.setValue(l);if(d.trackResetOnLoad){k.resetOriginalValue()}}}Ext.suspendLayouts();if(Ext.isArray(b)){c=b.length;for(a=0;a<c;a++){h=b[a];e(h.id,h.value)}}else{Ext.iterate(b,e)}Ext.resumeLayouts(true);return this},getValues:function(j,k,o,m){var n={},g=this.getFields().items,h,p=g.length,e=Ext.isArray,l,d,c,b,a;for(h=0;h<p;h++){l=g[h];if(!k||l.isDirty()){d=l[m?"getModelData":"getSubmitData"](o);if(Ext.isObject(d)){for(a in d){if(d.hasOwnProperty(a)){c=d[a];if(o&&c===""){c=l.emptyText||""}if(n.hasOwnProperty(a)){b=n[a];if(!e(b)){b=n[a]=[b]}if(e(c)){n[a]=b.concat(c)}else{b.push(c)}}else{n[a]=c}}}}}}if(j){n=Ext.Object.toQueryString(n)}return n},getFieldValues:function(a){return this.getValues(false,a,false,true)},clearInvalid:function(){Ext.suspendLayouts();var b=this,a=b.getFields().items,c,d=a.length;for(c=0;c<d;c++){a[c].clearInvalid()}Ext.resumeLayouts(true);return b},reset:function(b){Ext.suspendLayouts();var c=this,a=c.getFields().items,d,e=a.length;for(d=0;d<e;d++){a[d].reset()}Ext.resumeLayouts(true);if(b===true){delete c._record}return c},applyToFields:function(c){var a=this.getFields().items,b,d=a.length;for(b=0;b<d;b++){Ext.apply(a[b],c)}return this},applyIfToFields:function(c){var a=this.getFields().items,b,d=a.length;for(b=0;b<d;b++){Ext.applyIf(a[b],c)}return this}});Ext.define("Ext.form.FieldAncestor",{xhooks:{initHierarchyState:function(a){if(this.fieldDefaults){if(a.fieldDefaults){a.fieldDefaults=Ext.apply(Ext.Object.chain(a.fieldDefaults),this.fieldDefaults)}else{a.fieldDefaults=this.fieldDefaults}}}},initFieldAncestor:function(){var a=this;a.addEvents("fieldvaliditychange","fielderrorchange");a.monitor=new Ext.container.Monitor({scope:a,addHandler:a.onChildFieldAdd,removeHandler:a.onChildFieldRemove});a.initFieldDefaults()},initMonitor:function(){this.monitor.bind(this)},onChildFieldAdd:function(b){var a=this;a.mon(b,"errorchange",a.handleFieldErrorChange,a);a.mon(b,"validitychange",a.handleFieldValidityChange,a)},onChildFieldRemove:function(b){var a=this;a.mun(b,"errorchange",a.handleFieldErrorChange,a);a.mun(b,"validitychange",a.handleFieldValidityChange,a)},initFieldDefaults:function(){if(!this.fieldDefaults){this.fieldDefaults={}}},handleFieldValidityChange:function(c,b){var a=this;if(c!==a){a.fireEvent("fieldvaliditychange",a,c,b);a.onFieldValidityChange(c,b)}},handleFieldErrorChange:function(b,a){var c=this;if(b!==c){c.fireEvent("fielderrorchange",c,b,a);c.onFieldErrorChange(b,a)}},onFieldValidityChange:Ext.emptyFn,onFieldErrorChange:Ext.emptyFn,beforeDestroy:function(){this.monitor.unbind();this.callParent()}});Ext.define("Ext.layout.component.field.FieldContainer",{extend:Ext.layout.component.field.Field,alias:"layout.fieldcontainer",type:"fieldcontainer",waitForOuterHeightInDom:true,waitForOuterWidthInDom:true,beginLayout:function(b){var a=this.owner;this.callParent(arguments);b.hasRawContent=true;a.bodyEl.setStyle("height","");a.containerEl.setStyle("height","");b.containerElContext=b.getEl("containerEl")},measureContentHeight:function(a){return a.hasDomProp("containerLayoutDone")?this.callParent(arguments):NaN},measureContentWidth:function(a){return a.hasDomProp("containerLayoutDone")?this.callParent(arguments):NaN},publishInnerWidth:function(c,b){var d=c.bodyCellContext,a=d.el.getWidth();d.setWidth(a,false);c.containerElContext.setWidth(a,false)},publishInnerHeight:function(b,a){var c=b.bodyCellContext,d=b.containerElContext;a-=this.measureLabelErrorHeight(b);c.setHeight(a);d.setHeight(a)}});Ext.define("Ext.form.FieldContainer",{extend:Ext.container.Container,mixins:{labelable:Ext.form.Labelable,fieldAncestor:Ext.form.FieldAncestor},alias:"widget.fieldcontainer",componentLayout:"fieldcontainer",componentCls:Ext.baseCSSPrefix+"form-fieldcontainer",customOverflowEl:"containerEl",childEls:["containerEl"],combineLabels:false,labelConnector:", ",combineErrors:false,maskOnDisable:false,fieldSubTpl:'<div id="{id}-containerEl" class="{containerElCls}">{%this.renderContainer(out,values)%}</div>',initComponent:function(){var a=this;a.initLabelable();a.initFieldAncestor();a.callParent();a.initMonitor()},getOverflowEl:function(){return this.containerEl},onAdd:function(a){var b=this;if(Ext.isGecko&&b.layout.type==="absolute"&&!b.hideLabel&&b.labelAlign!=="top"){a.x+=b.labelWidth+b.labelPad}b.callParent(arguments);b.updateLabel()},onRemove:function(a,b){var c=this;c.callParent(arguments);if(!b){c.updateLabel()}},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){var a=this,b=a.callParent();b.containerElCls=a.containerElCls;return Ext.applyIf(b,a.getLabelableRenderData())},getFieldLabel:function(){var a=this.fieldLabel||"";if(!a&&this.combineLabels){a=Ext.Array.map(this.query("[isFieldLabelable]"),function(b){return b.getFieldLabel()}).join(this.labelConnector)}return a},getSubTplData:function(){var a=this.initRenderData();Ext.apply(a,this.subTplData);return a},getSubTplMarkup:function(){var c=this,a=c.getTpl("fieldSubTpl"),b;if(!a.renderContent){c.setupRenderTpl(a)}b=a.apply(c.getSubTplData());return b},updateLabel:function(){var b=this,a=b.labelEl;if(a){b.setFieldLabel(b.getFieldLabel())}},onFieldErrorChange:function(e,b){if(this.combineErrors){var d=this,g=d.getActiveError(),c=Ext.Array.filter(d.query("[isFormField]"),function(h){return h.hasActiveError()}),a=d.getCombinedErrors(c);if(a){d.setActiveErrors(a)}else{d.unsetActiveError()}if(g!==d.getActiveError()){d.doComponentLayout()}}},getCombinedErrors:function(e){var l=[],c,m=e.length,j,d,k,b,g,h;for(c=0;c<m;c++){j=e[c];d=j.getActiveErrors();b=d.length;for(k=0;k<b;k++){g=d[k];h=j.getFieldLabel();l.push((h?h+": ":"")+g)}}return l},getTargetEl:function(){return this.containerEl},applyTargetCls:function(b){var a=this.containerElCls;this.containerElCls=a?a+" "+b:b}});Ext.define("Ext.layout.container.CheckboxGroup",{extend:Ext.layout.container.Container,alias:["layout.checkboxgroup"],autoFlex:true,type:"checkboxgroup",createsInnerCt:true,childEls:["innerCt"],renderTpl:['<table id="{ownerId}-innerCt" class="'+Ext.baseCSSPrefix+'table-plain" cellpadding="0"','role="presentation" style="{tableStyle}"><tbody><tr>','<tpl for="columns">','<td class="{parent.colCls}" valign="top" style="{style}">',"{% this.renderColumn(out,parent,xindex-1) %}","</td>","</tpl>","</tr></tbody></table>"],lastOwnerItemsGeneration:null,beginLayout:function(b){var k=this,e,d,h,a,j,g=0,m=0,l=k.autoFlex,c=k.innerCt.dom.style;k.callParent(arguments);e=k.columnNodes;b.innerCtContext=b.getEl("innerCt",k);if(!b.widthModel.shrinkWrap){d=e.length;if(k.columnsArray){for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){g+=a;m++}}for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){j=a/g*100+"%"}else{j=a+"px"}e[h].style.width=j}}else{for(h=0;h<d;h++){j=l?1/d*100+"%":"";e[h].style.width=j;m++}}if(!m){c.tableLayout="fixed";c.width=""}else{if(m<d){c.tableLayout="fixed";c.width="100%"}else{c.tableLayout="auto";if(l){c.width="100%"}else{c.width=""}}}}else{c.tableLayout="auto";c.width=""}},cacheElements:function(){var a=this;a.callParent();a.rowEl=a.innerCt.down("tr");a.columnNodes=a.rowEl.dom.childNodes},calculate:function(h){var e=this,c,b,a,j,d,g;if(!h.getDomProp("containerChildrenSizeDone")){e.done=false}else{c=h.innerCtContext;b=h.widthModel.shrinkWrap;a=h.heightModel.shrinkWrap;j=a||b;d=c.el.dom;g=j&&c.getPaddingInfo();if(b){h.setContentWidth(d.offsetWidth+g.width,true)}if(a){h.setContentHeight(d.offsetHeight+g.height,true)}}},doRenderColumn:function(d,m,g){var j=m.$layout,c=j.owner,e=m.columnCount,h=c.items.items,b=h.length,n,a,k,l,o;if(c.vertical){k=Math.ceil(b/e);a=g*k;b=Math.min(b,a+k);l=1}else{a=g;l=e}for(;a<b;a+=l){n=h[a];j.configureItem(n);o=n.getRenderTree();Ext.DomHelper.generateMarkup(o,d)}},getColumnCount:function(){var b=this,a=b.owner,c=a.columns;if(b.columnsArray){return c.length}if(Ext.isNumber(c)){return c}return a.items.length},getItemSizePolicy:function(a){return this.autoSizePolicy},getRenderData:function(){var k=this,g=k.callParent(),b=k.owner,h,d=k.getColumnCount(),a,c,j,l=k.autoFlex,e=0,m=0;if(k.columnsArray){for(h=0;h<d;h++){a=k.owner.columns[h];if(a<1){e+=a;m++}}}g.colCls=b.groupCls;g.columnCount=d;g.columns=[];for(h=0;h<d;h++){c=g.columns[h]={};if(k.columnsArray){a=k.owner.columns[h];if(a<1){j=a/e*100+"%"}else{j=a+"px"}c.style="width:"+j}else{c.style="width:"+1/d*100+"%";m++}}g.tableStyle=!m?"table-layout:fixed;":m<d?"table-layout:fixed;width:100%":l?"table-layout:auto;width:100%":"table-layout:auto;";return g},initLayout:function(){var b=this,a=b.owner;b.columnsArray=Ext.isArray(a.columns);b.autoColumns=!a.columns||a.columns==="auto";b.vertical=a.vertical;b.callParent()},isValidParent:function(){return true},setupRenderTpl:function(a){this.callParent(arguments);a.renderColumn=this.doRenderColumn},renderChildren:function(){var a=this,b=a.owner.items.generation;if(a.lastOwnerItemsGeneration!==b){a.lastOwnerItemsGeneration=b;a.renderItems(a.getLayoutItems())}},renderItems:function(e){var g=this,a=e.length,b,k,j,d,h,c;if(a){Ext.suspendLayouts();if(g.autoColumns){g.addMissingColumns(a)}d=g.columnNodes.length;j=Math.ceil(a/d);for(b=0;b<a;b++){k=e[b];h=g.getRenderRowIndex(b,j,d);c=g.getRenderColumnIndex(b,j,d);if(!k.rendered){g.renderItem(k,h,c)}else{if(!g.isItemAtPosition(k,h,c)){g.moveItem(k,h,c)}}}if(g.autoColumns){g.removeExceedingColumns(a)}Ext.resumeLayouts(true)}},isItemAtPosition:function(b,c,a){return b.el.dom===this.getNodeAt(c,a)},getRenderColumnIndex:function(b,a,c){if(this.vertical){return Math.floor(b/a)}else{return b%c}},getRenderRowIndex:function(b,a,d){var c=this;if(c.vertical){return b%a}else{return Math.floor(b/d)}},getNodeAt:function(b,a){return this.columnNodes[a].childNodes[b]},addMissingColumns:function(a){var g=this,c=g.columnNodes.length,e,h,b,d;if(c<a){e=a-c;h=g.rowEl;b=g.owner.groupCls;for(d=0;d<e;d++){h.createChild({cls:b,tag:"td",vAlign:"top"})}}},removeExceedingColumns:function(a){var e=this,b=e.columnNodes.length,d,g,c;if(b>a){d=b-a;g=e.rowEl;for(c=0;c<d;c++){g.last().remove()}}},renderItem:function(c,d,a){var b=this;b.configureItem(c);c.render(Ext.get(b.columnNodes[a]),d);b.afterRenderItem(c)},moveItem:function(d,g,b){var c=this,a=c.columnNodes[b],e=a.childNodes[g];a.insertBefore(d.el.dom,e||null)}});Ext.define("Ext.form.CheckboxGroup",{extend:Ext.form.FieldContainer,mixins:{field:Ext.form.field.Field},alias:"widget.checkboxgroup",columns:"auto",vertical:false,allowBlank:true,blankText:"You must select at least one item in this group",defaultType:"checkboxfield",groupCls:Ext.baseCSSPrefix+"form-check-group",fieldBodyCls:Ext.baseCSSPrefix+"form-checkboxgroup-body",layout:"checkboxgroup",componentCls:Ext.baseCSSPrefix+"form-checkboxgroup",initComponent:function(){var a=this;a.callParent();a.initField()},initValue:function(){var b=this,a=b.value;b.originalValue=b.lastValue=a||b.getValue();if(a){b.setValue(a)}},onAdd:function(e){var d=this,b,a,c;if(e.isCheckbox){d.mon(e,"change",d.checkChange,d)}else{if(e.isContainer){b=e.items.items;for(c=0,a=b.length;c<a;c++){d.onAdd(b[c])}}}d.callParent(arguments)},onRemove:function(e){var d=this,b,a,c;if(e.isCheckbox){d.mun(e,"change",d.checkChange,d)}else{if(e.isContainer){b=e.items.items;for(c=0,a=b.length;c<a;c++){d.onRemove(b[c])}}}d.callParent(arguments)},isEqual:function(b,a){var c=Ext.Object.toQueryString;return c(b)===c(a)},getErrors:function(){var a=[];if(!this.allowBlank&&Ext.isEmpty(this.getChecked())){a.push(this.blankText)}return a},getBoxes:function(a){return this.query("[isCheckbox]"+(a||""))},eachBox:function(b,a){Ext.Array.forEach(this.getBoxes(),b,a||this)},getChecked:function(){return this.getBoxes("[checked]")},isDirty:function(){var c=this.getBoxes(),a,d=c.length;for(a=0;a<d;a++){if(c[a].isDirty()){return true}}},setReadOnly:function(e){var c=this.getBoxes(),a,d=c.length;for(a=0;a<d;a++){c[a].setReadOnly(e)}this.readOnly=e},reset:function(){var c=this,b=c.hasActiveError(),a=c.preventMark;c.preventMark=true;c.batchChanges(function(){var e=c.getBoxes(),d,g=e.length;for(d=0;d<g;d++){e[d].reset()}});c.preventMark=a;c.unsetActiveError();if(b){c.updateLayout()}},resetOriginalValue:function(){var d=this,c=d.getBoxes(),a,e=c.length;for(a=0;a<e;a++){c[a].resetOriginalValue()}d.originalValue=d.getValue();d.checkDirty()},setValue:function(h){var g=this,d=g.getBoxes(),a,k=d.length,e,c,j;g.batchChanges(function(){for(a=0;a<k;a++){e=d[a];c=e.getName();j=false;if(h&&h.hasOwnProperty(c)){if(Ext.isArray(h[c])){j=Ext.Array.contains(h[c],e.inputValue)}else{j=h[c]}}e.setValue(j)}});return g},getValue:function(){var d={},g=this.getBoxes(),c,k=g.length,h,e,a,j;for(c=0;c<k;c++){h=g[c];e=h.getName();a=h.inputValue;if(h.getValue()){if(d.hasOwnProperty(e)){j=d[e];if(!Ext.isArray(j)){j=d[e]=[j]}j.push(a)}else{d[e]=a}}}return d},getSubmitData:function(){return null},getModelData:function(){return null},validate:function(){var a=this,d,c,b;if(a.disabled){c=true}else{d=a.getErrors();c=Ext.isEmpty(d);b=a.wasValid;if(c){a.unsetActiveError()}else{a.setActiveError(d)}}if(c!==b){a.wasValid=c;a.fireEvent("validitychange",a,c);a.updateLayout()}return c}},function(){this.borrow(Ext.form.field.Base,["markInvalid","clearInvalid"])});Ext.define("Ext.form.CheckboxManager",{extend:Ext.util.MixedCollection,singleton:true,getByName:function(a,b){return this.filterBy(function(c){return c.name==a&&c.getFormId()==b})}});Ext.define("Ext.form.FieldSet",{extend:Ext.container.Container,mixins:{fieldAncestor:Ext.form.FieldAncestor},alias:"widget.fieldset",collapsed:false,toggleOnTitleClick:true,baseCls:Ext.baseCSSPrefix+"fieldset",layout:"anchor",border:1,componentLayout:"fieldset",autoEl:"fieldset",childEls:["body"],renderTpl:["{%this.renderLegend(out,values);%}",'<div id="{id}-body" class="{baseCls}-body {bodyTargetCls}"<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values);%}","</div>"],stateEvents:["collapse","expand"],maskOnDisable:false,beforeDestroy:function(){var b=this,a=b.legend;if(a){delete a.ownerCt;a.destroy();b.legend=null}b.callParent()},initComponent:function(){var b=this,a=b.baseCls;b.callParent();b.layout.managePadding=b.layout.manageOverflow=false;b.addEvents("beforeexpand","beforecollapse","expand","collapse");if(b.collapsed){b.addCls(a+"-collapsed");b.collapse()}if(b.title||b.checkboxToggle||b.collapsible){b.addTitleClasses();b.legend=Ext.widget(b.createLegendCt())}},initPadding:function(g){var d=this,c=Ext.Element,a=d.getProtoBody(),e=d.padding,b;if(e!==undefined){if(Ext.isIEQuirks||Ext.isIE8m){e=c.parseBox(e);b=c.parseBox(0);b.top=e.top;e.top=0;a.setStyle("padding",c.unitizeBox(b))}g.setStyle("padding",c.unitizeBox(e))}},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({styleProp:"bodyStyle",styleIsText:true})}return a},initRenderData:function(){var a=this,b=a.callParent();b.bodyTargetCls=a.bodyTargetCls;a.protoBody.writeTo(b);delete a.protoBody;return b},getState:function(){var a=this.callParent();a=this.addPropertyToState(a,"collapsed");return a},afterCollapse:Ext.emptyFn,afterExpand:Ext.emptyFn,collapsedHorizontal:function(){return true},collapsedVertical:function(){return true},createLegendCt:function(){var c=this,a=[],b={xtype:"container",baseCls:c.baseCls+"-header",id:c.id+"-legend",autoEl:"legend",items:a,ownerCt:c,shrinkWrap:true,ownerLayout:c.componentLayout};if(c.checkboxToggle){a.push(c.createCheckboxCmp())}else{if(c.collapsible){a.push(c.createToggleCmp())}}a.push(c.createTitleCmp());return b},createTitleCmp:function(){var b=this,a={xtype:"component",html:b.title,cls:b.baseCls+"-header-text",id:b.id+"-legendTitle"};if(b.collapsible&&b.toggleOnTitleClick){a.listeners={click:{element:"el",scope:b,fn:b.toggle}};a.cls+=" "+b.baseCls+"-header-text-collapsible"}return b.titleCmp=Ext.widget(a)},createCheckboxCmp:function(){var a=this,b="-checkbox";a.checkboxCmp=Ext.widget({xtype:"checkbox",hideEmptyLabel:true,name:a.checkboxName||a.id+b,cls:a.baseCls+"-header"+b,id:a.id+"-legendChk",checked:!a.collapsed,listeners:{change:a.onCheckChange,scope:a}});return a.checkboxCmp},createToggleCmp:function(){var a=this;a.toggleCmp=Ext.widget({xtype:"tool",height:15,width:15,type:"toggle",handler:a.toggle,id:a.id+"-legendToggle",scope:a});return a.toggleCmp},doRenderLegend:function(b,e){var d=e.$comp,c=d.legend,a;if(c){c.ownerLayout.configureItem(c);a=c.getRenderTree();Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var a=this.legend;this.callParent();if(a){a.finishRender()}},getCollapsed:function(){return this.collapsed?"top":false},getCollapsedDockedItems:function(){var a=this.legend;return a?[a]:[]},setTitle:function(d){var c=this,b=c.legend,a=c.baseCls;c.title=d;if(c.rendered){if(!b){c.legend=b=Ext.widget(c.createLegendCt());c.addTitleClasses();b.ownerLayout.configureItem(b);b.render(c.el,0)}c.titleCmp.update(d)}else{if(b){c.titleCmp.update(d)}else{c.addTitleClasses();c.legend=Ext.widget(c.createLegendCt())}}return c},addTitleClasses:function(){var b=this,c=b.title,a=b.baseCls;if(c){b.addCls(a+"-with-title")}if(c||b.checkboxToggle||b.collapsible){b.addCls(a+"-with-header")}},applyTargetCls:function(a){this.bodyTargetCls=a},getTargetEl:function(){return this.body||this.frameBody||this.el},getDefaultContentTarget:function(){return this.body},expand:function(){return this.setExpanded(true)},collapse:function(){return this.setExpanded(false)},setExpanded:function(b){var c=this,d=c.checkboxCmp,a=b?"expand":"collapse";if(!c.rendered||c.fireEvent("before"+a,c)!==false){b=!!b;if(d){d.setValue(b)}if(b){c.removeCls(c.baseCls+"-collapsed")}else{c.addCls(c.baseCls+"-collapsed")}c.collapsed=!b;if(c.rendered){c.updateLayout({isRoot:false});c.fireEvent(a,c)}}return c},getRefItems:function(a){var c=this.callParent(arguments),b=this.legend;if(b){c.unshift(b);if(a){c.unshift.apply(c,b.getRefItems(true))}}return c},toggle:function(){this.setExpanded(!!this.collapsed)},onCheckChange:function(b,a){this.setExpanded(a)},setupRenderTpl:function(a){this.callParent(arguments);a.renderLegend=this.doRenderLegend}});Ext.define("Ext.form.Label",{extend:Ext.Component,alias:"widget.label",autoEl:"label",maskOnDisable:false,getElConfig:function(){var a=this;a.html=a.text?Ext.util.Format.htmlEncode(a.text):a.html||"";return Ext.apply(a.callParent(),{htmlFor:a.forId||""})},setText:function(c,b){var a=this;b=b!==false;if(b){a.text=c;delete a.html}else{a.html=c;delete a.text}if(a.rendered){a.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(c):c;a.updateLayout()}return a}});Ext.define("Ext.form.Panel",{extend:Ext.panel.Panel,mixins:{fieldAncestor:Ext.form.FieldAncestor},alias:"widget.form",alternateClassName:["Ext.FormPanel","Ext.form.FormPanel"],layout:"anchor",ariaRole:"form",basicFormConfigs:["api","baseParams","errorReader","jsonSubmit","method","paramOrder","paramsAsHash","reader","standardSubmit","timeout","trackResetOnLoad","url","waitMsgTarget","waitTitle"],initComponent:function(){var a=this;if(a.frame){a.border=false}a.initFieldAncestor();a.callParent();a.relayEvents(a.form,["beforeaction","actionfailed","actioncomplete","validitychange","dirtychange"]);if(a.pollForChanges){a.startPolling(a.pollInterval||500)}},initItems:function(){this.callParent();this.initMonitor();this.form=this.createForm()},afterFirstLayout:function(){this.callParent(arguments);this.form.initialize()},createForm:function(){var b={},d=this.basicFormConfigs,a=d.length,c=0,e;for(;c<a;++c){e=d[c];b[e]=this[e]}return new Ext.form.Basic(this,b)},getForm:function(){return this.form},loadRecord:function(a){return this.getForm().loadRecord(a)},getRecord:function(){return this.getForm().getRecord()},getValues:function(d,b,c,a){return this.getForm().getValues(d,b,c,a)},isDirty:function(){return this.form.isDirty()},isValid:function(){return this.form.isValid()},hasInvalidField:function(){return this.form.hasInvalidField()},beforeDestroy:function(){this.stopPolling();this.form.destroy();this.callParent()},load:function(a){this.form.load(a)},submit:function(a){this.form.submit(a)},startPolling:function(b){this.stopPolling();var a=new Ext.util.TaskRunner(b);a.start({interval:0,run:this.checkChange,scope:this});this.pollTask=a},stopPolling:function(){var a=this.pollTask;if(a){a.stopAll();delete this.pollTask}},checkChange:function(){var a=this.form.getFields().items,b,c=a.length;for(b=0;b<c;b++){a[b].checkChange()}}});Ext.define("Ext.form.RadioGroup",{extend:Ext.form.CheckboxGroup,alias:"widget.radiogroup",allowBlank:true,blankText:"You must select one item in this group",defaultType:"radiofield",groupCls:Ext.baseCSSPrefix+"form-radio-group",getBoxes:function(a){return this.query("[isRadio]"+(a||""))},checkChange:function(){var b=this.getValue(),a=Ext.Object.getKeys(b)[0];if(Ext.isArray(b[a])){return}this.callParent(arguments)},setValue:function(d){var j,g,e,h,c,a,b;if(Ext.isObject(d)){for(b in d){if(d.hasOwnProperty(b)){j=d[b];g=this.items.first();e=g?g.getFormId():null;h=Ext.form.RadioManager.getWithValue(b,j,e).items;a=h.length;for(c=0;c<a;++c){h[c].setValue(true)}}}}return this}});Ext.define("Ext.form.RadioManager",{extend:Ext.util.MixedCollection,singleton:true,getByName:function(a,b){return this.filterBy(function(c){return c.name==a&&c.getFormId()==b})},getWithValue:function(a,b,c){return this.filterBy(function(d){return d.name==a&&d.inputValue==b&&d.getFormId()==c})},getChecked:function(a,b){return this.findBy(function(c){return c.name==a&&c.checked&&c.getFormId()==b})}});Ext.define("Ext.form.action.DirectLoad",{extend:Ext.form.action.Load,alternateClassName:"Ext.form.Action.DirectLoad",alias:"formaction.directload",type:"directload",run:function(){var d=this,c=d.form,b=c.api.load,e=b.directCfg.method,a=e.getArgs(d.getParams(),c.paramOrder,c.paramsAsHash);a.push(d.onComplete,d);b.apply(window,a)},processResponse:function(a){return this.result=a},onComplete:function(b,a){if(b){this.onSuccess(b)}else{this.onFailure(null)}}});Ext.define("Ext.form.action.DirectSubmit",{extend:Ext.form.action.Submit,alternateClassName:"Ext.form.Action.DirectSubmit",alias:"formaction.directsubmit",type:"directsubmit",doSubmit:function(){var a=this,c=Ext.Function.bind(a.onComplete,a),b=a.buildForm();a.form.api.submit(b.formEl,c,a);a.cleanup(b)},processResponse:function(a){return this.result=a},onComplete:function(b,a){if(b){this.onSuccess(b)}else{this.onFailure(null)}}});Ext.define("Ext.form.action.StandardSubmit",{extend:Ext.form.action.Submit,alias:"formaction.standardsubmit",doSubmit:function(){var a=this.buildForm();a.formEl.submit();this.cleanup(a)}});Ext.define("Ext.form.field.Checkbox",{extend:Ext.form.field.Base,alias:["widget.checkboxfield","widget.checkbox"],alternateClassName:"Ext.form.Checkbox",componentLayout:"field",stretchInputElFixed:false,childEls:["boxLabelEl"],fieldSubTpl:["<tpl if=\"boxLabel && boxLabelAlign == 'before'\">","{beforeBoxLabelTpl}",'<label id="{cmpId}-boxLabelEl" {boxLabelAttrTpl} class="{boxLabelCls} {boxLabelCls}-{boxLabelAlign}" for="{id}">',"{beforeBoxLabelTextTpl}","{boxLabel}","{afterBoxLabelTextTpl}","</label>","{afterBoxLabelTpl}","</tpl>",'<input type="button" id="{id}" {inputAttrTpl}','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls} {typeCls} {inputCls}" autocomplete="off" hidefocus="true" />',"<tpl if=\"boxLabel && boxLabelAlign == 'after'\">","{beforeBoxLabelTpl}",'<label id="{cmpId}-boxLabelEl" {boxLabelAttrTpl} class="{boxLabelCls} {boxLabelCls}-{boxLabelAlign}" for="{id}">',"{beforeBoxLabelTextTpl}","{boxLabel}","{afterBoxLabelTextTpl}","</label>","{afterBoxLabelTpl}","</tpl>",{disableFormats:true,compiled:true}],subTplInsertions:["beforeBoxLabelTpl","afterBoxLabelTpl","beforeBoxLabelTextTpl","afterBoxLabelTextTpl","boxLabelAttrTpl","inputAttrTpl"],isCheckbox:true,focusCls:"form-checkbox-focus",fieldBodyCls:Ext.baseCSSPrefix+"form-cb-wrap",checked:false,checkedCls:Ext.baseCSSPrefix+"form-cb-checked",boxLabelCls:Ext.baseCSSPrefix+"form-cb-label",boxLabelAlign:"after",inputValue:"on",checkChangeEvents:[],inputType:"checkbox",onRe:/^on$/i,inputCls:Ext.baseCSSPrefix+"form-cb",initComponent:function(){this.callParent(arguments);this.getManager().add(this)},initValue:function(){var b=this,a=!!b.checked;b.originalValue=b.lastValue=a;b.setValue(a)},getElConfig:function(){var a=this;if(a.isChecked(a.rawValue,a.inputValue)){a.addCls(a.checkedCls)}return a.callParent()},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{disabled:a.readOnly||a.disabled,boxLabel:a.boxLabel,boxLabelCls:a.boxLabelCls,boxLabelAlign:a.boxLabelAlign})},initEvents:function(){var a=this;a.callParent();a.mon(a.inputEl,"click",a.onBoxClick,a)},setBoxLabel:function(a){var b=this;b.boxLabel=a;if(b.rendered){b.boxLabelEl.update(a)}},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(!this.checked)}},getRawValue:function(){return this.checked},getValue:function(){return this.checked},getSubmitValue:function(){var a=this.uncheckedValue,b=Ext.isDefined(a)?a:null;return this.checked?this.inputValue:b},isChecked:function(b,a){return b===true||b==="true"||b==="1"||b===1||((Ext.isString(b)||Ext.isNumber(b))&&a?b==a:this.onRe.test(b))},setRawValue:function(c){var b=this,d=b.inputEl,a=b.isChecked(c,b.inputValue);if(d){b[a?"addCls":"removeCls"](b.checkedCls)}b.checked=b.rawValue=a;return a},setValue:function(g){var e=this,c,b,a,d;if(Ext.isArray(g)){c=e.getManager().getByName(e.name,e.getFormId()).items;a=c.length;for(b=0;b<a;++b){d=c[b];d.setValue(Ext.Array.contains(g,d.inputValue))}}else{e.callParent(arguments)}return e},valueToRaw:function(a){return a},onChange:function(b,a){var d=this,c=d.handler;if(c){c.call(d.scope||d,d,b)}d.callParent(arguments)},resetOriginalValue:function(b){var g=this,d,e,a,c;if(!b){d=g.getManager().getByName(g.name,g.getFormId()).items;a=d.length;for(c=0;c<a;++c){e=d[c];if(e!==g){d[c].resetOriginalValue(true)}}}g.callParent()},beforeDestroy:function(){this.callParent();this.getManager().removeAtKey(this.id)},getManager:function(){return Ext.form.CheckboxManager},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=a.readOnly}},setReadOnly:function(c){var a=this,b=a.inputEl;if(b){b.dom.disabled=!!c||a.disabled}a.callParent(arguments)},getFormId:function(){var b=this,a;if(!b.formId){a=b.up("form");if(a){b.formId=a.id}}return b.formId}});Ext.define("Ext.layout.component.field.Trigger",{alias:"layout.triggerfield",extend:Ext.layout.component.field.Field,type:"triggerfield",borderWidths:{},beginLayout:function(d){var c=this,a=c.owner,b;d.triggerWrap=d.getEl("triggerWrap");c.callParent(arguments);b=a.getTriggerStateFlags();if(b!=a.lastTriggerStateFlags){a.lastTriggerStateFlags=b;c.updateEditState()}},beginLayoutCycle:function(a){this.callParent(arguments);if(a.widthModel.shrinkWrap&&!this.owner.inputWidth){a.inputContext.el.setStyle("width","")}},beginLayoutFixed:function(g,c,h){var d=this,a=g.target,e=d.ieInputWidthAdjustment||0,j="100%",b=a.triggerWrap;d.callParent(arguments);a.inputCell.setStyle("width","100%");if(e){d.adjustIEInputPadding(g);if(h==="px"){if(a.inputWidth){j=a.inputWidth-d.getExtraWidth(g)}else{j=c-e-d.getExtraWidth(g)}j+="px"}}a.inputEl.setStyle("width",j);j=a.inputWidth;if(j){b.setStyle("width",j+e+"px")}else{b.setStyle("width",c+h)}b.setStyle("table-layout","fixed")},adjustIEInputPadding:function(a){this.owner.inputCell.setStyle("padding-right",this.ieInputWidthAdjustment+"px")},getExtraWidth:function(d){var b=this,a=b.owner,e=b.borderWidths,c=a.ui+a.triggerEl.getCount();if(!(c in e)){e[c]=d.triggerWrap.getBorderInfo().width}return e[c]+a.getTriggerWidth()},beginLayoutShrinkWrap:function(c){var a=c.target,e="",d=a.inputWidth,b=a.triggerWrap;this.callParent(arguments);if(d){b.setStyle("width",d+"px");d=d-this.getExtraWidth(c)+"px";a.inputEl.setStyle("width",d);a.inputCell.setStyle("width",d)}else{a.inputCell.setStyle("width",e);a.inputEl.setStyle("width",e);b.setStyle("width",e);b.setStyle("table-layout","auto")}},getTextWidth:function(){var b=this,a=b.owner,d=a.inputEl,c;c=(d.dom.value||(a.hasFocus?"":a.emptyText)||"")+a.growAppend;return d.getTextWidth(c)},publishOwnerWidth:function(c,b){var a=this.owner;this.callParent(arguments);if(!a.grow&&!a.inputWidth){b-=this.getExtraWidth(c);if(a.labelAlign!="top"){b-=a.getLabelWidth()}c.inputContext.setWidth(b)}},measureContentWidth:function(h){var g=this,b=g.owner,e=g.callParent(arguments),j=h.inputContext,d,a,c;if(b.grow&&!h.state.growHandled){d=g.getTextWidth()+h.inputContext.getFrameInfo().width;a=b.growMax;c=Math.min(a,e);a=Math.max(b.growMin,a,c);d=Ext.Number.constrain(d,b.growMin,a);j.setWidth(d);h.state.growHandled=true;j.domBlock(g,"width");e=NaN}else{if(!b.inputWidth){e-=g.getExtraWidth(h)}}return e},updateEditState:function(){var c=this,a=c.owner,e=a.inputEl,d=Ext.baseCSSPrefix+"trigger-noedit",b,g;if(c.owner.readOnly){e.addCls(d);g=true;b=false}else{if(c.owner.editable){e.removeCls(d);g=false}else{e.addCls(d);g=true}b=!c.owner.hideTrigger}a.triggerCell.setDisplayed(b);e.dom.readOnly=g}});Ext.define("Ext.form.field.Trigger",{extend:Ext.form.field.Text,alias:["widget.triggerfield","widget.trigger"],alternateClassName:["Ext.form.TriggerField","Ext.form.TwinTriggerField","Ext.form.Trigger"],childEls:[{name:"triggerCell",select:"."+Ext.baseCSSPrefix+"trigger-cell"},{name:"triggerEl",select:"."+Ext.baseCSSPrefix+"form-trigger"},"triggerWrap","inputCell"],triggerBaseCls:Ext.baseCSSPrefix+"form-trigger",triggerWrapCls:Ext.baseCSSPrefix+"form-trigger-wrap",triggerNoEditCls:Ext.baseCSSPrefix+"trigger-noedit",hideTrigger:false,editable:true,readOnly:false,repeatTriggerClick:false,autoSize:Ext.emptyFn,monitorTab:true,mimicing:false,triggerIndexRe:/trigger-index-(\d+)/,extraTriggerCls:"",componentLayout:"triggerfield",initComponent:function(){this.wrapFocusCls=this.triggerWrapCls+"-focus";this.callParent(arguments)},getSubTplMarkup:function(b){var c=this,a=b.childElCls,d=c.callParent(arguments);return'<table id="'+c.id+'-triggerWrap" class="'+Ext.baseCSSPrefix+"form-trigger-wrap"+a+'" cellpadding="0" cellspacing="0"><tbody><tr><td id="'+c.id+'-inputCell" class="'+Ext.baseCSSPrefix+"form-trigger-input-cell"+a+'">'+d+"</td>"+c.getTriggerMarkup()+"</tr></tbody></table>"},getSubTplData:function(){var b=this,c=b.callParent(),d=b.readOnly===true,a=b.editable!==false;return Ext.apply(c,{editableCls:d||!a?" "+b.triggerNoEditCls:"",readOnly:!a||d})},getLabelableRenderData:function(){var b=this,c=b.triggerWrapCls,a=b.callParent(arguments);return Ext.applyIf(a,{triggerWrapCls:c,triggerMarkup:b.getTriggerMarkup()})},getTriggerMarkup:function(){var e=this,c=0,j=e.readOnly||e.hideTrigger,a,g=e.triggerBaseCls,h=[],d=Ext.dom.Element.unselectableCls,b="width:"+e.triggerWidth+"px;"+(j?"display:none;":""),k=e.extraTriggerCls+" "+Ext.baseCSSPrefix+"trigger-cell "+d;if(!e.trigger1Cls){e.trigger1Cls=e.triggerCls}for(c=0;(a=e["trigger"+(c+1)+"Cls"])||c<1;c++){h.push({tag:"td",valign:"top",cls:k,style:b,cn:{cls:[Ext.baseCSSPrefix+"trigger-index-"+c,g,a].join(" "),role:"button"}})}h[0].cn.cls+=" "+g+"-first";return Ext.DomHelper.markup(h)},disableCheck:function(){return !this.disabled},beforeRender:function(){var a=this,b=a.triggerBaseCls,c;if(!a.triggerWidth){c=Ext.getBody().createChild({style:"position: absolute;",cls:Ext.baseCSSPrefix+"form-trigger"});Ext.form.field.Trigger.prototype.triggerWidth=c.getWidth();c.remove()}a.callParent();if(b!=Ext.baseCSSPrefix+"form-trigger"){a.addChildEls({name:"triggerEl",select:"."+b})}a.lastTriggerStateFlags=a.getTriggerStateFlags()},onRender:function(){var a=this;a.callParent(arguments);a.doc=Ext.getDoc();a.initTrigger()},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerEl.getCount()*b.triggerWidth}return a},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateLayout()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateLayout()}},setReadOnly:function(c){var b=this,a=b.readOnly;b.callParent(arguments);if(c!=a){b.updateLayout()}},initTrigger:function(){var h=this,j=h.triggerWrap,l=h.triggerEl,a=h.disableCheck,d,c,b,g,k;if(h.repeatTriggerClick){h.triggerRepeater=new Ext.util.ClickRepeater(j,{preventDefault:true,handler:h.onTriggerWrapClick,listeners:{mouseup:h.onTriggerWrapMouseup,scope:h},scope:h})}else{h.mon(j,{click:h.onTriggerWrapClick,mouseup:h.onTriggerWrapMouseup,scope:h})}l.setVisibilityMode(Ext.Element.DISPLAY);l.addClsOnOver(h.triggerBaseCls+"-over",a,h);d=l.elements;c=d.length;for(g=0;g<c;g++){b=d[g];k=g+1;b.addClsOnOver(h["trigger"+k+"Cls"]+"-over",a,h);b.addClsOnClick(h["trigger"+k+"Cls"]+"-click",a,h)}l.addClsOnClick(h.triggerBaseCls+"-click",a,h)},onDestroy:function(){var a=this;Ext.destroyMembers(a,"triggerRepeater","triggerWrap","triggerEl");delete a.doc;a.callParent()},onFocus:function(){var a=this;a.callParent(arguments);if(!a.mimicing){a.bodyEl.addCls(a.wrapFocusCls);a.mimicing=true;a.mon(a.doc,"mousedown",a.mimicBlur,a,{delay:10});if(a.monitorTab){a.on("specialkey",a.checkTab,a)}}},checkTab:function(a,b){if(!this.ignoreMonitorTab&&b.getKey()==b.TAB){this.triggerBlur()}},getTriggerStateFlags:function(){var a=this,b=0;if(a.readOnly){b+=1}if(a.editable){b+=2}if(a.hideTrigger){b+=4}return b},onBlur:Ext.emptyFn,mimicBlur:function(a){if(!this.isDestroyed&&!this.bodyEl.contains(a.target)&&this.validateBlur(a)){this.triggerBlur(a)}},triggerBlur:function(b){var a=this;a.mimicing=false;a.mun(a.doc,"mousedown",a.mimicBlur,a);if(a.monitorTab&&a.inputEl){a.un("specialkey",a.checkTab,a)}Ext.form.field.Trigger.superclass.onBlur.call(a,b);if(a.bodyEl){a.bodyEl.removeCls(a.wrapFocusCls)}},validateBlur:function(a){return true},onTriggerWrapClick:function(){var d=this,e,b,a,c;c=arguments[d.triggerRepeater?1:0];if(c&&!d.readOnly&&!d.disabled){e=c.getTarget("."+d.triggerBaseCls,null);b=e&&e.className.match(d.triggerIndexRe);if(b){a=d["onTrigger"+(parseInt(b[1],10)+1)+"Click"]||d.onTriggerClick;if(a){a.call(d,c)}}}},onTriggerWrapMouseup:Ext.emptyFn,onTriggerClick:Ext.emptyFn});Ext.define("Ext.form.field.Picker",{extend:Ext.form.field.Trigger,alias:"widget.pickerfield",alternateClassName:"Ext.form.Picker",matchFieldWidth:true,pickerAlign:"tl-bl?",openCls:Ext.baseCSSPrefix+"pickerfield-open",editable:true,initComponent:function(){this.callParent();this.addEvents("expand","collapse","select")},initEvents:function(){var a=this;a.callParent();a.keyNav=new Ext.util.KeyNav(a.inputEl,{down:a.onDownArrow,esc:{handler:a.onEsc,scope:a,defaultEventAction:false},scope:a,forceKeyDown:true});if(!a.editable){a.mon(a.inputEl,"click",a.onTriggerClick,a)}if(Ext.isGecko){a.inputEl.dom.setAttribute("autocomplete","off")}},onEsc:function(a){if(Ext.isIE){a.preventDefault()}if(this.isExpanded){this.collapse();a.stopEvent()}},onDownArrow:function(a){if(!this.isExpanded){this.onTriggerClick()}},expand:function(){var c=this,a,b,d;if(c.rendered&&!c.isExpanded&&!c.isDestroyed){a=c.bodyEl;b=c.getPicker();d=c.collapseIf;b.show();c.isExpanded=true;c.alignPicker();a.addCls(c.openCls);c.mon(Ext.getDoc(),{mousewheel:d,mousedown:d,scope:c});Ext.EventManager.onWindowResize(c.alignPicker,c);c.fireEvent("expand",c);c.onExpand()}},onExpand:Ext.emptyFn,alignPicker:function(){var b=this,a=b.getPicker();if(b.isExpanded){if(b.matchFieldWidth){a.setWidth(b.bodyEl.getWidth())}if(a.isFloating()){b.doAlign()}}},doAlign:function(){var d=this,c=d.picker,a="-above",b;d.picker.alignTo(d.bodyEl,d.pickerAlign,d.pickerOffset);b=c.el.getY()<d.inputEl.getY();d.bodyEl[b?"addCls":"removeCls"](d.openCls+a);c[b?"addCls":"removeCls"](c.baseCls+a)},collapse:function(){if(this.isExpanded&&!this.isDestroyed){var d=this,c=d.openCls,b=d.picker,e=Ext.getDoc(),g=d.collapseIf,a="-above";b.hide();d.isExpanded=false;d.bodyEl.removeCls([c,c+a]);b.el.removeCls(b.baseCls+a);e.un("mousewheel",g,d);e.un("mousedown",g,d);Ext.EventManager.removeResizeListener(d.alignPicker,d);d.fireEvent("collapse",d);d.onCollapse()}},onCollapse:Ext.emptyFn,collapseIf:function(b){var a=this;if(!a.isDestroyed&&!b.within(a.bodyEl,false,true)&&!b.within(a.picker.el,false,true)&&!a.isEventWithinPickerLoadMask(b)){a.collapse()}},getPicker:function(){var a=this;return a.picker||(a.picker=a.createPicker())},createPicker:Ext.emptyFn,onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.expand()}a.inputEl.focus()}},triggerBlur:function(){var a=this.picker;this.callParent(arguments);if(a&&a.isVisible()){a.hide()}},mimicBlur:function(c){var b=this,a=b.picker;if(!a||!c.within(a.el,false,true)&&!b.isEventWithinPickerLoadMask(c)){b.callParent(arguments)}},onDestroy:function(){var b=this,a=b.picker;Ext.EventManager.removeResizeListener(b.alignPicker,b);Ext.destroy(b.keyNav);if(a){delete a.pickerField;a.destroy()}b.callParent()},isEventWithinPickerLoadMask:function(b){var a=this.picker.loadMask;return a?b.within(a.maskEl,false,true)||b.within(a.el,false,true):false}});Ext.define("Ext.selection.Model",{extend:Ext.util.Observable,alternateClassName:"Ext.AbstractSelectionModel",mixins:{bindable:Ext.util.Bindable},allowDeselect:false,selected:null,pruneRemoved:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.addEvents("selectionchange","focuschange");b.modes={SINGLE:true,SIMPLE:true,MULTI:true};b.setSelectionMode(a.mode||b.mode);b.selected=new Ext.util.MixedCollection(null,b.getSelectionId);b.callParent(arguments)},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(c.store&&!b){c.refresh()}},getStoreListeners:function(){var a=this;return{add:a.onStoreAdd,clear:a.onStoreClear,bulkremove:a.onStoreRemove,update:a.onStoreUpdate,load:a.onStoreLoad,idchanged:a.onModelIdChanged,refresh:a.onStoreRefresh}},selectAll:function(b){var e=this,d=e.store.getRange(),c=0,a=d.length,g=e.getSelection().length;e.bulkChange=true;for(;c<a;c++){e.doSelect(d[c],true,b)}delete e.bulkChange;e.maybeFireSelectionChange(e.getSelection().length!==g)},deselectAll:function(b){var e=this,d=e.getSelection(),c=0,a=d.length,g=e.getSelection().length;e.bulkChange=true;for(;c<a;c++){e.doDeselect(d[c],b)}delete e.bulkChange;e.maybeFireSelectionChange(e.getSelection().length!==g)},selectWithEvent:function(a,g,d){var c=this,b=c.isSelected(a);switch(c.selectionMode){case"MULTI":if(g.shiftKey&&c.selectionStart){c.selectRange(c.selectionStart,a,g.ctrlKey)}else{if(g.ctrlKey&&b){c.doDeselect(a,false)}else{if(g.ctrlKey){c.doSelect(a,true,false)}else{if(b&&!g.shiftKey&&!g.ctrlKey&&c.selected.getCount()>1){c.doSelect(a,d,false)}else{if(!b){c.doSelect(a,false)}}}}}break;case"SIMPLE":if(b){c.doDeselect(a)}else{c.doSelect(a,true)}break;case"SINGLE":if(c.allowDeselect&&b){c.doDeselect(a)}else{c.doSelect(a,false)}break}if(!g.shiftKey){if(c.isSelected(a)){c.selectionStart=a}else{c.selectionStart=null}}},afterKeyNavigate:function(g,d){var h=this,c,a,b=h.isSelected(d),k=h.selectionStart&&h.isSelected(h.lastFocused)?h.selectionStart:(h.selectionStart=h.lastFocused),l=g.getCharCode(),m=l===g.SPACE,j=l===g.UP||l===g.PAGE_UP?"up":l===g.DOWN||l===g.DOWN?"down":null;switch(h.selectionMode){case"MULTI":if(m){if(g.shiftKey){h.selectRange(k,d,g.ctrlKey)}else{if(b){h.doDeselect(d,g.ctrlKey);h.setLastFocused(null);h.setLastFocused(d)}else{h.doSelect(d,g.ctrlKey)}}}else{if(g.shiftKey&&k){a=h.store.indexOf(k);c=h.store.indexOf(d);if(j==="up"&&a<=c){h.deselectRange(h.lastFocused,c+1)}else{if(j==="down"&&a>=c){h.deselectRange(h.lastFocused,c-1)}else{if(k!==d){h.selectRange(k,d,g.ctrlKey)}}}h.lastSelected=d;h.setLastFocused(d)}else{if(g.ctrlKey&&b){h.setLastFocused(d)}else{if(g.ctrlKey){h.setLastFocused(d)}else{h.doSelect(d,false)}}}}break;case"SIMPLE":if(b){h.doDeselect(d)}else{h.doSelect(d,true)}break;case"SINGLE":if(m){if(b){h.doDeselect(d);h.setLastFocused(d)}else{h.doSelect(d)}}else{if(g.ctrlKey){h.setLastFocused(d)}else{if(h.allowDeselect&&b){h.doDeselect(d)}else{h.doSelect(d,false)}}}break}if(!g.shiftKey){if(h.isSelected(d)){h.selectionStart=d}}},selectRange:function(c,b,h){var g=this,a=g.store,d,e=[];if(g.isLocked()){return}if(!h){g.deselectAll(true)}if(!Ext.isNumber(c)){c=a.indexOf(c)}if(!Ext.isNumber(b)){b=a.indexOf(b)}if(c>b){d=b;b=c;c=d}for(d=c;d<=b;d++){if(!g.isSelected(a.getAt(d))){e.push(a.getAt(d))}}g.doMultiSelect(e,true)},deselectRange:function(d,c){var h=this,b=h.store,g,e,a;if(h.isLocked()){return}if(!Ext.isNumber(d)){d=b.indexOf(d)}if(!Ext.isNumber(c)){c=b.indexOf(c)}if(d>c){e=c;c=d;d=e}for(g=d;g<=c;g++){a=b.getAt(g);if(h.isSelected(a)){h.deselect(a)}}},onModelIdChanged:function(a,d,e,c,b){this.selected.updateKey(b,c)},select:function(b,c,a){if(Ext.isDefined(b)){this.doSelect(b,c,a)}},deselect:function(b,a){this.doDeselect(b,a)},doSelect:function(c,e,b){var d=this,a;if(d.locked||!d.store){return}if(typeof c==="number"){a=d.store.getAt(c);if(!a){return}c=[a]}if(d.selectionMode=="SINGLE"&&c){a=c.length?c[0]:c;d.doSingleSelect(a,b)}else{d.doMultiSelect(c,e,b)}},doMultiSelect:function(a,l,k){var h=this,b=h.selected,j=false,d=0,g,e;if(h.locked){return}a=!Ext.isArray(a)?[a]:a;g=a.length;if(!l&&b.getCount()>0){if(h.doDeselect(h.getSelection(),k)===false){return}}function c(){b.add(e);j=true}for(;d<g;d++){e=a[d];if(l&&h.isSelected(e)){continue}h.lastSelected=e;h.onSelectChange(e,true,k,c)}if(!h.preventFocus){h.setLastFocused(e,k)}h.maybeFireSelectionChange(j&&!k)},doDeselect:function(a,k){var j=this,b=j.selected,d=0,h,e,l=0,g=0;if(j.locked||!j.store){return false}if(typeof a==="number"){e=j.store.getAt(a);if(!e){return false}a=[e]}else{if(!Ext.isArray(a)){a=[a]}}function c(){++g;b.remove(e)}h=a.length;for(;d<h;d++){e=a[d];if(j.isSelected(e)){if(j.lastSelected===e){j.lastSelected=b.last();if(j.lastFocused===e){j.setLastFocused(null)}}++l;j.onSelectChange(e,false,k,c)}}j.maybeFireSelectionChange(g>0&&!k);return g===l},doSingleSelect:function(a,b){var d=this,g=false,c=d.selected;if(d.locked){return}if(d.isSelected(a)){return}function e(){d.bulkChange=true;if(c.getCount()>0&&d.doDeselect(d.lastSelected,b)===false){delete d.bulkChange;return false}delete d.bulkChange;c.add(a);d.lastSelected=a;g=true}d.onSelectChange(a,true,b,e);if(g){if(!b&&!d.preventFocus){d.setLastFocused(a)}d.maybeFireSelectionChange(!b)}},setLastFocused:function(c,b){var d=this,a=d.lastFocused;d.lastFocused=c;if(c!==a){d.onLastFocusChanged(a,c,b)}},isFocused:function(a){return a===this.getLastFocused()},maybeFireSelectionChange:function(a){var b=this;if(a&&!b.bulkChange){b.fireEvent("selectionchange",b,b.getSelection())}},getLastSelected:function(){return this.lastSelected},getLastFocused:function(){return this.lastFocused},getSelection:function(){return this.selected.getRange()},getSelectionMode:function(){return this.selectionMode},setSelectionMode:function(a){a=a?a.toUpperCase():"SINGLE";this.selectionMode=this.modes[a]?a:"SINGLE"},isLocked:function(){return this.locked},setLocked:function(a){this.locked=!!a},isRangeSelected:function(h,g){var e=this,a=e.store,d=a.indexOf(h),c=a.indexOf(g),b;if(c<d){b=c;c=d;d=b}for(b=d;b<=c;b++){if(!e.isSelected(a.getAt(b))){return false}}return true},isSelected:function(a){a=Ext.isNumber(a)?this.store.getAt(a):a;return this.selected.contains(a)},hasSelection:function(){return this.selected.getCount()>0},getSelectionId:function(a){return a.internalId},pruneIf:function(){var g=this,d=g.selected,c=[],a=d.length,b,e;if(g.pruneRemoved){for(b=0;b<a;b++){e=d.getAt(b);if(!this.storeHasSelected(e)){c.push(e)}}if(c.length){for(b=0,a=c.length;b<a;b++){d.remove(c[b])}g.maybeFireSelectionChange(true)}}},storeHasSelected:function(b){var d=this.store,c,a,g,e;if(b.hasId()&&d.getById(b)){return true}else{c=d.data.items;a=c.length;g=b.internalId;for(e=0;e<a;++e){if(g===c[e].internalId){return true}}}return false},refresh:function(){var h=this,l=h.store,a,d=[],g=[],c=h.getSelection(),e=c.length,k,j,b=0,m=h.getLastFocused();if(!l){return}for(;b<e;b++){k=c[b];if(l.indexOf(k)!==-1){d.push(k)}else{if(!h.pruneRemoved){a=l.getById(k.getId());if(a){d.push(a)}else{g.push(k)}}}if(h.mode==="SINGLE"&&g.length){break}}if(h.selected.getCount()!=d.length+g.length){j=true}h.clearSelections();if(l.indexOf(m)!==-1){h.setLastFocused(m,true)}if(d.length){h.doSelect(d,false,true)}if(g.length){h.selected.addAll(g);if(!h.lastSelected){h.lastSelected=g[g.length-1]}}h.maybeFireSelectionChange(j)},clearSelections:function(){this.selected.clear();this.lastSelected=null;this.setLastFocused(null)},onStoreAdd:Ext.emptyFn,onStoreClear:function(){if(this.selected.getCount()>0){this.clearSelections();this.maybeFireSelectionChange(true)}},onStoreRemove:function(c,b,d,a){var e=this;if(e.selectionStart&&Ext.Array.contains(b,e.selectionStart)){e.selectionStart=null}if(a||e.locked||!e.pruneRemoved){return}e.deselectDeletedRecords(b)},deselectDeletedRecords:function(b){var g=this,d=g.selected,c,e=b.length,h=0,a;for(c=0;c<e;c++){a=b[c];if(d.remove(a)){if(g.lastSelected==a){g.lastSelected=null}if(g.getLastFocused()==a){g.setLastFocused(null)}++h}}if(h){g.maybeFireSelectionChange(true)}},getCount:function(){return this.selected.getCount()},onUpdate:Ext.emptyFn,destroy:Ext.emptyFn,onStoreUpdate:Ext.emptyFn,onStoreRefresh:Ext.emptyFn,onStoreLoad:Ext.emptyFn,onSelectChange:Ext.emptyFn,onLastFocusChanged:function(b,a){this.fireEvent("focuschange",this,b,a)},onEditorKey:Ext.emptyFn,bindComponent:Ext.emptyFn,beforeViewRender:Ext.emptyFn});Ext.define("Ext.selection.DataViewModel",{extend:Ext.selection.Model,deselectOnContainerClick:true,enableKeyNav:true,constructor:function(a){this.addEvents("beforedeselect","beforeselect","deselect","select");this.callParent(arguments)},bindComponent:function(a){var b=this,c={refresh:b.refresh,scope:b};b.view=a;b.bindStore(a.getStore());c[a.triggerEvent]=b.onItemClick;c[a.triggerCtEvent]=b.onContainerClick;a.on(c);if(b.enableKeyNav){b.initKeyNav(a)}},onUpdate:function(b){var a=this.view;if(a&&this.isSelected(b)){a.onItemSelect(b)}},onItemClick:function(b,a,d,c,g){this.selectWithEvent(a,g)},onContainerClick:function(){if(this.deselectOnContainerClick){this.deselectAll()}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on({render:Ext.Function.bind(b.initKeyNav,b,[a]),single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a.el,ignoreInputFields:true,down:Ext.pass(b.onNavKey,[1],b),right:Ext.pass(b.onNavKey,[1],b),left:Ext.pass(b.onNavKey,[-1],b),up:Ext.pass(b.onNavKey,[-1],b),scope:b})},onNavKey:function(g){g=g||1;var e=this,b=e.view,d=e.getSelection()[0],c=e.view.store.getCount(),a;if(d){a=b.indexOf(b.getNode(d))+g}else{a=0}if(a<0){a=c-1}else{if(a>=c){a=0}}e.select(a)},onSelectChange:function(b,e,d,h){var g=this,a=g.view,c=e?"select":"deselect";if((d||g.fireEvent("before"+c,g,b))!==false&&h()!==false){if(a){if(e){a.onItemSelect(b)}else{a.onItemDeselect(b)}}if(!d){g.fireEvent(c,g,b)}}},onLastFocusChanged:function(d,b,c){var a=this.view;if(a&&!c&&b){a.focusNode(b);this.fireEvent("focuschange",this,d,b)}},destroy:function(){Ext.destroy(this.keyNav);this.callParent()}});Ext.define("Ext.view.AbstractView",{extend:Ext.Component,mixins:{bindable:Ext.util.Bindable},inheritableStatics:{getRecord:function(a){return this.getBoundView(a).getRecord(a)},getBoundView:function(a){return Ext.getCmp(a.boundView)}},deferInitialRefresh:true,itemCls:Ext.baseCSSPrefix+"dataview-item",loadingText:"Loading...",loadMask:true,loadingUseMsg:true,selectedItemCls:Ext.baseCSSPrefix+"item-selected",emptyText:"",deferEmptyText:true,trackOver:false,blockRefresh:false,preserveScrollOnRefresh:false,last:false,triggerEvent:"itemclick",triggerCtEvent:"containerclick",addCmpEvents:function(){},initComponent:function(){var c=this,a=Ext.isDefined,d=c.itemTpl,b={};if(d){if(Ext.isArray(d)){d=d.join("")}else{if(Ext.isObject(d)){b=Ext.apply(b,d.initialConfig);d=d.html}}if(!c.itemSelector){c.itemSelector="."+c.itemCls}d=Ext.String.format('<tpl for="."><div class="{0}">{1}</div></tpl>',c.itemCls,d);c.tpl=new Ext.XTemplate(d,b)}c.callParent();c.tpl=c.getTpl("tpl");if(c.overItemCls){c.trackOver=true}c.addEvents("beforerefresh","refresh","viewready","itemupdate","itemadd","itemremove");c.addCmpEvents();c.store=Ext.data.StoreManager.lookup(c.store||"ext-empty-store");if(!c.dataSource){c.dataSource=c.store}c.bindStore(c.dataSource,true,"dataSource");if(!c.all){c.all=new Ext.CompositeElementLite}c.scrollState={top:0,left:0};c.on({scroll:c.onViewScroll,element:"el",scope:c})},onRender:function(){var c=this,b=c.loadMask,a={target:c,msg:c.loadingText,msgCls:c.loadingCls,useMsg:c.loadingUseMsg,store:c.getMaskStore()};c.callParent(arguments);if(b){if(Ext.isObject(b)){a=Ext.apply(a,b)}c.loadMask=new Ext.LoadMask(a);c.loadMask.on({scope:c,beforeshow:c.onMaskBeforeShow,hide:c.onMaskHide})}},finishRender:function(){var a=this;a.callParent(arguments);if(!a.up("[collapsed],[hidden]")){a.doFirstRefresh(a.dataSource)}},onBoxReady:function(){var a=this;a.callParent(arguments);if(!a.firstRefreshDone){a.doFirstRefresh(a.dataSource)}},getMaskStore:function(){return this.store},onMaskBeforeShow:function(){var b=this,a=b.loadingHeight;if(a&&a>b.getHeight()){b.hasLoadingHeight=true;b.oldMinHeight=b.minHeight;b.minHeight=a;b.updateLayout()}},onMaskHide:function(){var a=this;if(!a.destroying&&a.hasLoadingHeight){a.minHeight=a.oldMinHeight;a.updateLayout();delete a.hasLoadingHeight}},beforeRender:function(){this.callParent(arguments);this.getSelectionModel().beforeViewRender(this)},afterRender:function(){this.callParent(arguments);this.getSelectionModel().bindComponent(this)},getSelectionModel:function(){var a=this,b="SINGLE";if(a.simpleSelect){b="SIMPLE"}else{if(a.multiSelect){b="MULTI"}}if(!a.selModel||!a.selModel.events){a.selModel=new Ext.selection.DataViewModel(Ext.apply({allowDeselect:a.allowDeselect,mode:b},a.selModel))}if(!a.selModel.hasRelaySetup){a.relayEvents(a.selModel,["selectionchange","beforeselect","beforedeselect","select","deselect","focuschange"]);a.selModel.hasRelaySetup=true}if(a.disableSelection){a.selModel.locked=true}return a.selModel},refresh:function(){var c=this,h,b,e,d,g,a;if(!c.rendered||c.isDestroyed){return}if(!c.hasListeners.beforerefresh||c.fireEvent("beforerefresh",c)!==false){h=c.getTargetEl();a=c.getViewRange();g=h.dom;if(!c.preserveScrollOnRefresh){b=g.parentNode;e=g.style.display;g.style.display="none";d=g.nextSibling;b.removeChild(g)}if(c.refreshCounter){c.clearViewEl()}else{c.fixedNodes=h.dom.childNodes.length;c.refreshCounter=1}c.tpl.append(h,c.collectData(a,c.all.startIndex));if(a.length<1){if(!this.store.loading&&(!c.deferEmptyText||c.hasFirstRefresh)){Ext.core.DomHelper.insertHtml("beforeEnd",h.dom,c.emptyText)}c.all.clear()}else{c.collectNodes(h.dom);c.updateIndexes(0)}if(c.hasFirstRefresh){if(c.refreshSelmodelOnRefresh!==false){c.selModel.refresh()}else{c.selModel.pruneIf()}}c.hasFirstRefresh=true;if(!c.preserveScrollOnRefresh){b.insertBefore(g,d);g.style.display=e}this.refreshSize();c.fireEvent("refresh",c);if(!c.viewReady){c.viewReady=true;c.fireEvent("viewready",c)}}},collectNodes:function(a){this.all.fill(Ext.query(this.getItemSelector(),Ext.getDom(a)),this.all.startIndex)},getViewRange:function(){return this.dataSource.getRange()},refreshSize:function(){var a=this.getSizeModel();if(a.height.shrinkWrap||a.width.shrinkWrap){this.updateLayout()}},clearViewEl:function(){var b=this,a=b.getTargetEl();if(b.fixedNodes){while(a.dom.childNodes[b.fixedNodes]){a.dom.removeChild(a.dom.childNodes[b.fixedNodes])}}else{a.update("")}b.refreshCounter++},onViewScroll:Ext.emptyFn,onIdChanged:Ext.emptyFn,saveScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;a.left=b.scrollLeft;a.top=b.scrollTop}},restoreScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;b.scrollLeft=a.left;b.scrollTop=a.top}},prepareData:function(e,d,c){var b,a,g;if(c){b=c.getAssociatedData();for(a in b){if(b.hasOwnProperty(a)){if(!g){e=Ext.Object.chain(e);g=true}e[a]=b[a]}}}return e},collectData:function(c,g){var e=[],d=0,a=c.length,b;for(;d<a;d++){b=c[d];e[d]=this.prepareData(b.data,g+d,b)}return e},bufferRender:function(a,b){var c=this,d=c.renderBuffer||(c.renderBuffer=document.createElement("div"));c.tpl.overwrite(d,c.collectData(a,b));return Ext.DomQuery.select(c.getItemSelector(),d)},getNodeContainer:function(){return this.getTargetEl()},onUpdate:function(e,a){var d=this,b,c;if(d.viewReady){b=d.dataSource.indexOf(a);if(b>-1){c=d.bufferRender([a],b)[0];if(d.getNode(a)){d.all.replaceElement(b,c,true);d.updateIndexes(b,b);d.selModel.onUpdate(a);if(d.hasListeners.itemupdate){d.fireEvent("itemupdate",a,b,c)}return c}}}},onAdd:function(c,b,d){var e=this,a;if(e.rendered){if(e.all.getCount()===0){e.refresh();a=e.all.slice()}else{a=e.doAdd(b,d);if(e.refreshSelmodelOnRefresh!==false){e.selModel.refresh()}e.updateIndexes(d);e.refreshSize()}if(e.hasListeners.itemadd){e.fireEvent("itemadd",b,d,a)}}},doAdd:function(c,d){var j=this,b=j.bufferRender(c,d,true),g=j.all,h=g.getCount(),e,a;if(h===0){for(e=0,a=b.length;e<a;e++){this.getNodeContainer().appendChild(b[e])}}else{if(d<h){if(d===0){g.item(d).insertSibling(b,"before",true)}else{g.item(d-1).insertSibling(b,"after",true)}}else{g.last().insertSibling(b,"after",true)}}g.insert(d,b);return b},onRemove:function(j,b,d){var g=this,h=g.hasListeners.itemremove,e,a,c;if(g.all.getCount()){if(g.dataSource.getCount()===0){if(h){for(e=d.length-1;e>=0;--e){g.fireEvent("itemremove",b[e],d[e])}}g.refresh()}else{for(e=d.length-1;e>=0;--e){a=b[e];c=d[e];g.doRemove(a,c);if(h){g.fireEvent("itemremove",a,c)}}g.updateIndexes(d[0])}this.refreshSize()}},doRemove:function(a,b){this.all.removeElement(b,true)},refreshNode:function(a){this.onUpdate(this.dataSource,this.dataSource.getAt(a))},updateIndexes:function(e,d){var b=this.all.elements,a=this.getViewRange(),c;e=e||0;d=d||(d===0?0:b.length-1);for(c=e;c<=d;c++){b[c].viewIndex=c;b[c].viewRecordId=a[c].internalId;if(!b[c].boundView){b[c].boundView=this.id}}},getStore:function(){return this.store},bindStore:function(a,b,d){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(!b){c.getSelectionModel().bindStore(a)}if(c.componentLayoutCounter){c.doFirstRefresh(a)}},doFirstRefresh:function(a){var b=this;b.firstRefreshDone=true;if(a&&!a.loading){if(b.deferInitialRefresh){b.applyFirstRefresh()}else{b.refresh()}}},applyFirstRefresh:function(){var a=this;if(a.isDestroyed){return}if(a.up("[isCollapsingOrExpanding]")){Ext.Function.defer(a.applyFirstRefresh,100,a)}else{Ext.Function.defer(function(){if(!a.isDestroyed){a.refresh()}},1)}},onUnbindStore:function(a){this.setMaskBind(null)},onBindStore:function(a,b,c){this.setMaskBind(a);if(!b&&c==="store"){this.bindStore(a,false,"dataSource")}},setMaskBind:function(b){var a=this.loadMask;if(a&&a.bindStore){a.bindStore(b)}},getStoreListeners:function(){var a=this;return{idchanged:a.onIdChanged,refresh:a.onDataRefresh,add:a.onAdd,bulkremove:a.onRemove,update:a.onUpdate,clear:a.refresh}},onDataRefresh:function(){var a=this,b=!a.firstRefreshDone&&(!a.rendered||a.up("[collapsed],[isCollapsingOrExpanding],[hidden]"));if(b){a.deferInitialRefresh=false}else{if(a.blockRefresh!==true){a.firstRefreshDone=true;a.refresh.apply(a,arguments)}}},findItemByChild:function(a){return Ext.fly(a).findParent(this.getItemSelector(),this.getTargetEl())},findTargetByEvent:function(a){return a.getTarget(this.getItemSelector(),this.getTargetEl())},getSelectedNodes:function(){var b=[],a=this.selModel.getSelection(),d=a.length,c=0;for(;c<d;c++){b.push(this.getNode(a[c]))}return b},getRecords:function(c){var b=[],d=0,a=c.length,e=this.dataSource.data;for(;d<a;d++){b[b.length]=e.getByKey(c[d].viewRecordId)}return b},getRecord:function(a){return this.dataSource.data.getByKey(Ext.getDom(a).viewRecordId)},isSelected:function(b){var a=this.getRecord(b);return this.selModel.isSelected(a)},select:function(b,c,a){this.selModel.select(b,c,a)},deselect:function(b,a){this.selModel.deselect(b,a)},getNode:function(a){if(!a&&a!==0||!this.rendered){return null}if(Ext.isString(a)){return document.getElementById(a)}if(Ext.isNumber(a)){return this.all.elements[a]}if(a.isModel){return this.getNodeByRecord(a)}return a},getNodeByRecord:function(a){var c=this.all.elements,d=c.length,b=0;for(;b<d;b++){if(c[b].viewRecordId===a.internalId){return c[b]}}return null},getNodes:function(c,a){var b=this.all;if(a===undefined){a=b.getCount()}else{a++}return b.slice(c||0,a)},indexOf:function(a){a=this.getNode(a);if(!a&&a!==0){return -1}if(Ext.isNumber(a.viewIndex)){return a.viewIndex}return this.all.indexOf(a)},onDestroy:function(){var a=this;a.all.clear();a.callParent();a.bindStore(null);a.selModel.destroy()},onItemSelect:function(a){var b=this.getNode(a);if(b){Ext.fly(b).addCls(this.selectedItemCls)}},onItemDeselect:function(a){var b=this.getNode(a);if(b){Ext.fly(b).removeCls(this.selectedItemCls)}},getItemSelector:function(){return this.itemSelector}},function(){Ext.deprecate("extjs","4.0",function(){Ext.view.AbstractView.override({getSelectionCount:function(){if(Ext.global.console){Ext.global.console.warn("DataView: getSelectionCount will be removed, please interact with the Ext.selection.DataViewModel")}return this.selModel.getSelection().length},getSelectedRecords:function(){if(Ext.global.console){Ext.global.console.warn("DataView: getSelectedRecords will be removed, please interact with the Ext.selection.DataViewModel")}return this.selModel.getSelection()},select:function(a,b,d){if(Ext.global.console){Ext.global.console.warn("DataView: select will be removed, please access select through a DataView's SelectionModel, ie: view.getSelectionModel().select()")}var c=this.getSelectionModel();return c.select.apply(c,arguments)},clearSelections:function(){if(Ext.global.console){Ext.global.console.warn("DataView: clearSelections will be removed, please access deselectAll through DataView's SelectionModel, ie: view.getSelectionModel().deselectAll()")}var a=this.getSelectionModel();return a.deselectAll()}})})});Ext.define("Ext.view.View",{extend:Ext.view.AbstractView,alternateClassName:"Ext.DataView",alias:"widget.dataview",deferHighlight:Ext.isIE7m?100:0,mouseOverOutBuffer:20,inputTagRe:/^textarea$|^input$/i,inheritableStatics:{EventMap:{mousedown:"MouseDown",mouseup:"MouseUp",click:"Click",dblclick:"DblClick",contextmenu:"ContextMenu",mouseover:"MouseOver",mouseout:"MouseOut",mouseenter:"MouseEnter",mouseleave:"MouseLeave",keydown:"KeyDown",focus:"Focus"}},initComponent:function(){var a=this;a.callParent();if(a.mouseOverOutBuffer){a.handleMouseOverOrOut=Ext.Function.createBuffered(a.handleMouseOverOrOut,a.mouseOverOutBuffer,a);a.lastMouseOverOutEvent=new Ext.EventObjectImpl}else{if(a.deferHighlight){a.setHighlightedItem=Ext.Function.createBuffered(a.setHighlightedItem,a.deferHighlight,a)}}},addCmpEvents:function(){this.addEvents("beforeitemmousedown","beforeitemmouseup","beforeitemmouseenter","beforeitemmouseleave","beforeitemclick","beforeitemdblclick","beforeitemcontextmenu","beforeitemkeydown","itemmousedown","itemmouseup","itemmouseenter","itemmouseleave","itemclick","itemdblclick","itemcontextmenu","itemkeydown","beforecontainermousedown","beforecontainermouseup","beforecontainermouseover","beforecontainermouseout","beforecontainerclick","beforecontainerdblclick","beforecontainercontextmenu","beforecontainerkeydown","containermouseup","containermouseover","containermouseout","containerclick","containerdblclick","containercontextmenu","containerkeydown","selectionchange","beforeselect","beforedeselect","select","deselect","focuschange","highlightitem","unhighlightitem")},getFocusEl:function(){return this.getTargetEl()},afterRender:function(){var a=this,b=a.mouseOverOutBuffer?a.onMouseOverOut:a.handleMouseOverOrOut;a.callParent();a.mon(a.getTargetEl(),{scope:a,freezeEvent:true,click:a.handleEvent,mousedown:a.handleEvent,mouseup:a.handleEvent,dblclick:a.handleEvent,contextmenu:a.handleEvent,keydown:a.handleEvent,mouseover:b,mouseout:b})},onMouseOverOut:function(b){var a=this;a.lastMouseOverOutEvent.setEvent(b.browserEvent,true);a.handleMouseOverOrOut(a.lastMouseOverOutEvent)},handleMouseOverOrOut:function(d){var c=this,b=d.type==="mouseout",a=d[b?"getRelatedTarget":"getTarget"](c.dataRowSelector||c.itemSelector);if(!c.mouseOverItem||a!==c.mouseoverItem){if(c.mouseOverItem){d.item=c.mouseOverItem;d.newType="mouseleave";c.handleEvent(d)}c.mouseOverItem=a;if(c.mouseOverItem){d.item=c.mouseOverItem;d.newType="mouseenter";c.handleEvent(d)}}},handleEvent:function(c){var b=this,a=c.type=="keydown"&&c.getKey();if(b.processUIEvent(c)!==false){b.processSpecialEvent(c)}if(a===c.SPACE){if(!b.inputTagRe.test(c.getTarget().tagName)){c.stopEvent()}}},processItemEvent:Ext.emptyFn,processContainerEvent:Ext.emptyFn,processSpecialEvent:Ext.emptyFn,processUIEvent:function(h){if(!Ext.getBody().isAncestor(h.target)){return}var j=this,l=h.getTarget(j.getItemSelector(),j.getTargetEl()),a=this.statics().EventMap,g,d,k=h.type,c=h.type,b;if(h.newType){c=h.newType;l=h.item}if(!l&&k=="keydown"){b=j.getSelectionModel();d=b.lastFocused||b.getLastSelected();if(d){l=j.getNode(d,true)}}if(l){if(!d){d=j.getRecord(l)}g=j.indexInStore?j.indexInStore(d):j.indexOf(l);if(!d||j.processItemEvent(d,l,g,h)===false){return false}if(j["onBeforeItem"+a[c]](d,l,g,h)===false||j.fireEvent("beforeitem"+c,j,d,l,g,h)===false||j["onItem"+a[c]](d,l,g,h)===false){return false}j.fireEvent("item"+c,j,d,l,g,h)}else{if(j.processContainerEvent(h)===false||j["onBeforeContainer"+a[k]](h)===false||j.fireEvent("beforecontainer"+k,j,h)===false||j["onContainer"+a[k]](h)===false){return false}j.fireEvent("container"+k,j,h)}return true},onItemMouseEnter:function(a,c,b,d){if(this.trackOver){this.highlightItem(c)}},onItemMouseLeave:function(a,c,b,d){if(this.trackOver){this.clearHighlight()}},onItemMouseDown:Ext.emptyFn,onItemMouseUp:Ext.emptyFn,onItemFocus:Ext.emptyFn,onItemClick:Ext.emptyFn,onItemDblClick:Ext.emptyFn,onItemContextMenu:Ext.emptyFn,onItemKeyDown:Ext.emptyFn,onBeforeItemMouseDown:Ext.emptyFn,onBeforeItemMouseUp:Ext.emptyFn,onBeforeItemFocus:Ext.emptyFn,onBeforeItemMouseEnter:Ext.emptyFn,onBeforeItemMouseLeave:Ext.emptyFn,onBeforeItemClick:Ext.emptyFn,onBeforeItemDblClick:Ext.emptyFn,onBeforeItemContextMenu:Ext.emptyFn,onBeforeItemKeyDown:Ext.emptyFn,onContainerMouseDown:Ext.emptyFn,onContainerMouseUp:Ext.emptyFn,onContainerMouseOver:Ext.emptyFn,onContainerMouseOut:Ext.emptyFn,onContainerClick:Ext.emptyFn,onContainerDblClick:Ext.emptyFn,onContainerContextMenu:Ext.emptyFn,onContainerKeyDown:Ext.emptyFn,onBeforeContainerMouseDown:Ext.emptyFn,onBeforeContainerMouseUp:Ext.emptyFn,onBeforeContainerMouseOver:Ext.emptyFn,onBeforeContainerMouseOut:Ext.emptyFn,onBeforeContainerClick:Ext.emptyFn,onBeforeContainerDblClick:Ext.emptyFn,onBeforeContainerContextMenu:Ext.emptyFn,onBeforeContainerKeyDown:Ext.emptyFn,setHighlightedItem:function(c){var b=this,a=b.highlightedItem;if(a!=c){if(a){Ext.fly(a).removeCls(b.overItemCls);b.fireEvent("unhighlightitem",b,a)}b.highlightedItem=c;if(c){Ext.fly(c).addCls(b.overItemCls);b.fireEvent("highlightitem",b,c)}}},highlightItem:function(a){this.setHighlightedItem(a)},clearHighlight:function(){this.setHighlightedItem(undefined)},onUpdate:function(b,a){var g=this,e,c,d;if(g.viewReady){e=g.getNode(a);c=g.callParent(arguments);d=g.highlightedItem;if(d&&d===e){delete g.highlightedItem;if(c){g.highlightItem(c)}}}},refresh:function(){this.clearHighlight();this.callParent(arguments)},focusNode:function(j){var g=this,e=g.getNode(j,true),d=g.el,a=0,b=0,h=d.getRegion(),c;h.bottom=h.top+d.dom.clientHeight;h.right=h.left+d.dom.clientWidth;if(e){c=Ext.fly(e).getRegion();if(c.top<h.top){a=c.top-h.top}else{if(c.bottom>h.bottom){a=c.bottom-h.bottom}}if(c.left<h.left){b=c.left-h.left}else{if(c.right>h.right){b=c.right-h.right}}if(b||a){g.scrollBy(b,a,false)}d.focus()}}});Ext.define("Ext.layout.component.BoundList",{extend:Ext.layout.component.Auto,alias:"layout.boundlist",type:"component",beginLayout:function(d){var c=this,a=c.owner,b=a.pagingToolbar;c.callParent(arguments);if(a.floating){d.savedXY=a.getXY();a.setXY([0,-9999])}if(b){d.toolbarContext=d.context.getCmp(b)}d.listContext=d.getEl("listEl")},beginLayoutCycle:function(b){var a=this.owner;this.callParent(arguments);if(b.heightModel.auto){a.el.setHeight("auto");a.listEl.setHeight("auto")}},getLayoutItems:function(){var a=this.owner.pagingToolbar;return a?[a]:[]},isValidParent:function(){return true},finishedLayout:function(a){var b=a.savedXY;this.callParent(arguments);if(b){this.owner.setXY(b)}},measureContentWidth:function(a){return this.owner.listEl.getWidth()},measureContentHeight:function(a){return this.owner.listEl.getHeight()},publishInnerHeight:function(c,a){var b=c.toolbarContext,d=0;if(b){d=b.getProp("height")}if(d===undefined){this.done=false}else{c.listContext.setHeight(a-c.getFrameInfo().height-d)}},calculateOwnerHeightFromContentHeight:function(c){var a=this.callParent(arguments),b=c.toolbarContext;if(b){a+=b.getProp("height")}return a}});Ext.define("Ext.toolbar.TextItem",{extend:Ext.toolbar.Item,alias:"widget.tbtext",alternateClassName:"Ext.Toolbar.TextItem",text:"",renderTpl:"{text}",baseCls:Ext.baseCSSPrefix+"toolbar-text",beforeRender:function(){var a=this;a.callParent();Ext.apply(a.renderData,{text:a.text})},setText:function(b){var a=this;a.text=b;if(a.rendered){a.el.update(b);a.updateLayout()}}});Ext.define("Ext.form.field.Spinner",{extend:Ext.form.field.Trigger,alias:"widget.spinnerfield",alternateClassName:"Ext.form.Spinner",trigger1Cls:Ext.baseCSSPrefix+"form-spinner-up",trigger2Cls:Ext.baseCSSPrefix+"form-spinner-down",spinUpEnabled:true,spinDownEnabled:true,keyNavEnabled:true,mouseWheelEnabled:true,repeatTriggerClick:true,onSpinUp:Ext.emptyFn,onSpinDown:Ext.emptyFn,triggerTpl:'<td style="{triggerStyle}" class="{triggerCls}"><div class="'+Ext.baseCSSPrefix+"trigger-index-0 "+Ext.baseCSSPrefix+"form-trigger "+Ext.baseCSSPrefix+'form-spinner-up {spinnerUpCls} {childElCls}" role="button"></div><div class="'+Ext.baseCSSPrefix+"trigger-index-1 "+Ext.baseCSSPrefix+"form-trigger "+Ext.baseCSSPrefix+'form-spinner-down {spinnerDownCls} {childElCls}" role="button"></div></td></tr>',initComponent:function(){this.callParent();this.addEvents("spin","spinup","spindown")},onRender:function(){var b=this,a;b.callParent(arguments);a=b.triggerEl;b.spinUpEl=a.item(0);b.spinDownEl=a.item(1);b.triggerCell=b.spinUpEl.parent();if(b.keyNavEnabled){b.spinnerKeyNav=new Ext.util.KeyNav(b.inputEl,{scope:b,up:b.spinUp,down:b.spinDown})}if(b.mouseWheelEnabled){b.mon(b.bodyEl,"mousewheel",b.onMouseWheel,b)}},getSubTplMarkup:function(b){var c=this,a=b.childElCls,d=Ext.form.field.Base.prototype.getSubTplMarkup.apply(c,arguments);return'<table id="'+c.id+'-triggerWrap" class="'+Ext.baseCSSPrefix+"form-trigger-wrap"+a+'" cellpadding="0" cellspacing="0"><tbody><tr><td id="'+c.id+'-inputCell" class="'+Ext.baseCSSPrefix+"form-trigger-input-cell"+a+'">'+d+"</td>"+c.getTriggerMarkup()+"</tbody></table>"},getTriggerMarkup:function(){return this.getTpl("triggerTpl").apply(this.getTriggerData())},getTriggerData:function(){var a=this,b=a.readOnly||a.hideTrigger;return{triggerCls:Ext.baseCSSPrefix+"trigger-cell",triggerStyle:b?"display:none":"",spinnerUpCls:!a.spinUpEnabled?a.trigger1Cls+"-disabled":"",spinnerDownCls:!a.spinDownEnabled?a.trigger2Cls+"-disabled":""}},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerWidth}return a},onTrigger1Click:function(){this.spinUp()},onTrigger2Click:function(){this.spinDown()},onTriggerWrapMouseup:function(){this.inputEl.focus()},spinUp:function(){var a=this;if(a.spinUpEnabled&&!a.disabled){a.fireEvent("spin",a,"up");a.fireEvent("spinup",a);a.onSpinUp()}},spinDown:function(){var a=this;if(a.spinDownEnabled&&!a.disabled){a.fireEvent("spin",a,"down");a.fireEvent("spindown",a);a.onSpinDown()}},setSpinUpEnabled:function(a){var b=this,c=b.spinUpEnabled;b.spinUpEnabled=a;if(c!==a&&b.rendered){b.spinUpEl[a?"removeCls":"addCls"](b.trigger1Cls+"-disabled")}},setSpinDownEnabled:function(a){var b=this,c=b.spinDownEnabled;b.spinDownEnabled=a;if(c!==a&&b.rendered){b.spinDownEl[a?"removeCls":"addCls"](b.trigger2Cls+"-disabled")}},onMouseWheel:function(b){var a=this,c;if(a.hasFocus){c=b.getWheelDelta();if(c>0){a.spinUp()}else{if(c<0){a.spinDown()}}b.stopEvent()}},onDestroy:function(){Ext.destroyMembers(this,"spinnerKeyNav","spinUpEl","spinDownEl");this.callParent()}});Ext.define("Ext.form.field.Number",{extend:Ext.form.field.Spinner,alias:"widget.numberfield",alternateClassName:["Ext.form.NumberField","Ext.form.Number"],allowDecimals:true,decimalSeparator:".",submitLocaleSeparator:true,decimalPrecision:2,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,step:1,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",negativeText:"The value cannot be negative",baseChars:"0123456789",autoStripChars:false,initComponent:function(){var a=this;a.callParent();a.setMinValue(a.minValue);a.setMaxValue(a.maxValue)},getErrors:function(c){var b=this,e=b.callParent(arguments),d=Ext.String.format,a;c=Ext.isDefined(c)?c:this.processRawValue(this.getRawValue());if(c.length<1){return e}c=String(c).replace(b.decimalSeparator,".");if(isNaN(c)){e.push(d(b.nanText,c))}a=b.parseValue(c);if(b.minValue===0&&a<0){e.push(this.negativeText)}else{if(a<b.minValue){e.push(d(b.minText,b.minValue))}}if(a>b.maxValue){e.push(d(b.maxText,b.maxValue))}return e},rawToValue:function(b){var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return a},valueToRaw:function(c){var b=this,a=b.decimalSeparator;c=b.parseValue(c);c=b.fixPrecision(c);c=Ext.isNumber(c)?c:parseFloat(String(c).replace(a,"."));c=isNaN(c)?"":String(c).replace(".",a);return c},getSubmitValue:function(){var a=this,b=a.callParent();if(!a.submitLocaleSeparator){b=b.replace(a.decimalSeparator,".")}return b},onChange:function(){this.toggleSpinners();this.callParent(arguments)},toggleSpinners:function(){var c=this,d=c.getValue(),b=d===null,a;if(c.spinUpEnabled||c.spinUpDisabledByToggle){a=b||d<c.maxValue;c.setSpinUpEnabled(a,true)}if(c.spinDownEnabled||c.spinDownDisabledByToggle){a=b||d>c.minValue;c.setSpinDownEnabled(a,true)}},setMinValue:function(b){var a=this,c;a.minValue=Ext.Number.from(b,Number.NEGATIVE_INFINITY);a.toggleSpinners();if(a.disableKeyFilter!==true){c=a.baseChars+"";if(a.allowDecimals){c+=a.decimalSeparator}if(a.minValue<0){c+="-"}c=Ext.String.escapeRegex(c);a.maskRe=new RegExp("["+c+"]");if(a.autoStripChars){a.stripCharsRe=new RegExp("[^"+c+"]","gi")}}},setMaxValue:function(a){this.maxValue=Ext.Number.from(a,Number.MAX_VALUE);this.toggleSpinners()},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?null:a},fixPrecision:function(d){var c=this,b=isNaN(d),a=c.decimalPrecision;if(b||!d){return b?"":d}else{if(!c.allowDecimals||a<=0){a=0}}return parseFloat(Ext.Number.toFixed(parseFloat(d),a))},beforeBlur:function(){var b=this,a=b.parseValue(b.getRawValue());if(!Ext.isEmpty(a)){b.setValue(a)}},setSpinUpEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinUpDisabledByToggle}else{this.spinUpDisabledByToggle=!b}},onSpinUp:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()+a.step,a.minValue,a.maxValue))}},setSpinDownEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinDownDisabledByToggle}else{this.spinDownDisabledByToggle=!b}},onSpinDown:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()-a.step,a.minValue,a.maxValue))}},setSpinValue:function(c){var b=this,a;if(b.enforceMaxLength){if(b.fixPrecision(c).toString().length>b.maxLength){return}}b.setValue(c)}});Ext.define("Ext.toolbar.Paging",{extend:Ext.toolbar.Toolbar,alias:"widget.pagingtoolbar",alternateClassName:"Ext.PagingToolbar",mixins:{bindable:Ext.util.Bindable},displayInfo:false,prependButtons:false,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",inputItemWidth:30,getPagingItems:function(){var a=this;return[{itemId:"first",tooltip:a.firstText,overflowText:a.firstText,iconCls:Ext.baseCSSPrefix+"tbar-page-first",disabled:true,handler:a.moveFirst,scope:a},{itemId:"prev",tooltip:a.prevText,overflowText:a.prevText,iconCls:Ext.baseCSSPrefix+"tbar-page-prev",disabled:true,handler:a.movePrevious,scope:a},"-",a.beforePageText,{xtype:"numberfield",itemId:"inputItem",name:"inputItem",cls:Ext.baseCSSPrefix+"tbar-page-number",allowDecimals:false,minValue:1,hideTrigger:true,enableKeyEvents:true,keyNavEnabled:false,selectOnFocus:true,submitValue:false,isFormField:false,width:a.inputItemWidth,margins:"-1 2 3 2",listeners:{scope:a,keydown:a.onPagingKeyDown,blur:a.onPagingBlur}},{xtype:"tbtext",itemId:"afterTextItem",text:Ext.String.format(a.afterPageText,1)},"-",{itemId:"next",tooltip:a.nextText,overflowText:a.nextText,iconCls:Ext.baseCSSPrefix+"tbar-page-next",disabled:true,handler:a.moveNext,scope:a},{itemId:"last",tooltip:a.lastText,overflowText:a.lastText,iconCls:Ext.baseCSSPrefix+"tbar-page-last",disabled:true,handler:a.moveLast,scope:a},"-",{itemId:"refresh",tooltip:a.refreshText,overflowText:a.refreshText,iconCls:Ext.baseCSSPrefix+"tbar-loading",handler:a.doRefresh,scope:a}]},initComponent:function(){var b=this,c=b.getPagingItems(),a=b.items||b.buttons||[];if(b.prependButtons){b.items=a.concat(c)}else{b.items=c.concat(a)}delete b.buttons;if(b.displayInfo){b.items.push("->");b.items.push({xtype:"tbtext",itemId:"displayItem"})}b.callParent();b.addEvents("change","beforechange");b.on("beforerender",b.onLoad,b,{single:true});b.bindStore(b.store||"ext-empty-store",true)},updateInfo:function(){var e=this,c=e.child("#displayItem"),a=e.store,b=e.getPageData(),d,g;if(c){d=a.getCount();if(d===0){g=e.emptyMsg}else{g=Ext.String.format(e.displayMsg,b.fromRecord,b.toRecord,b.total)}c.setText(g)}},onLoad:function(){var g=this,d,b,c,a,e,h;e=g.store.getCount();h=e===0;if(!h){d=g.getPageData();b=d.currentPage;c=d.pageCount;a=Ext.String.format(g.afterPageText,isNaN(c)?1:c)}else{b=0;c=0;a=Ext.String.format(g.afterPageText,0)}Ext.suspendLayouts();g.child("#afterTextItem").setText(a);g.child("#inputItem").setDisabled(h).setValue(b);g.child("#first").setDisabled(b===1||h);g.child("#prev").setDisabled(b===1||h);g.child("#next").setDisabled(b===c||h);g.child("#last").setDisabled(b===c||h);g.child("#refresh").enable();g.updateInfo();Ext.resumeLayouts(true);if(g.rendered){g.fireEvent("change",g,d)}},getPageData:function(){var b=this.store,a=b.getTotalCount();return{total:a,currentPage:b.currentPage,pageCount:Math.ceil(a/b.pageSize),fromRecord:(b.currentPage-1)*b.pageSize+1,toRecord:Math.min(b.currentPage*b.pageSize,a)}},onLoadError:function(){if(!this.rendered){return}this.child("#refresh").enable()},readPageFromInput:function(b){var a=this.child("#inputItem").getValue(),c=parseInt(a,10);if(!a||isNaN(c)){this.child("#inputItem").setValue(b.currentPage);return false}return c},onPagingFocus:function(){this.child("#inputItem").select()},onPagingBlur:function(b){var a=this.getPageData().currentPage;this.child("#inputItem").setValue(a)},onPagingKeyDown:function(j,h){var d=this,b=h.getKey(),c=d.getPageData(),a=h.shiftKey?10:1,g;if(b==h.RETURN){h.stopEvent();g=d.readPageFromInput(c);if(g!==false){g=Math.min(Math.max(1,g),c.pageCount);if(d.fireEvent("beforechange",d,g)!==false){d.store.loadPage(g)}}}else{if(b==h.HOME||b==h.END){h.stopEvent();g=b==h.HOME?1:c.pageCount;j.setValue(g)}else{if(b==h.UP||b==h.PAGE_UP||b==h.DOWN||b==h.PAGE_DOWN){h.stopEvent();g=d.readPageFromInput(c);if(g){if(b==h.DOWN||b==h.PAGE_DOWN){a*=-1}g+=a;if(g>=1&&g<=c.pageCount){j.setValue(g)}}}}}},beforeLoad:function(){if(this.rendered&&this.refresh){this.refresh.disable()}},moveFirst:function(){if(this.fireEvent("beforechange",this,1)!==false){this.store.loadPage(1)}},movePrevious:function(){var b=this,a=b.store.currentPage-1;if(a>0){if(b.fireEvent("beforechange",b,a)!==false){b.store.previousPage()}}},moveNext:function(){var c=this,b=c.getPageData().pageCount,a=c.store.currentPage+1;if(a<=b){if(c.fireEvent("beforechange",c,a)!==false){c.store.nextPage()}}},moveLast:function(){var b=this,a=b.getPageData().pageCount;if(b.fireEvent("beforechange",b,a)!==false){b.store.loadPage(a)}},doRefresh:function(){var a=this,b=a.store.currentPage;if(a.fireEvent("beforechange",a,b)!==false){a.store.loadPage(b)}},getStoreListeners:function(){return{beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError}},unbind:function(a){this.bindStore(null)},bind:function(a){this.bindStore(a)},onDestroy:function(){this.unbind();this.callParent()}});Ext.define("Ext.view.BoundList",{extend:Ext.view.View,alias:"widget.boundlist",alternateClassName:"Ext.BoundList",pageSize:0,baseCls:Ext.baseCSSPrefix+"boundlist",itemCls:Ext.baseCSSPrefix+"boundlist-item",listItemCls:"",shadow:false,trackOver:true,refreshed:0,deferInitialRefresh:false,componentLayout:"boundlist",childEls:["listEl"],renderTpl:['<div id="{id}-listEl" class="{baseCls}-list-ct ',Ext.dom.Element.unselectableCls,'" style="overflow:auto"></div>',"{%","var me=values.$comp, pagingToolbar=me.pagingToolbar;","if (pagingToolbar) {","pagingToolbar.ownerLayout = me.componentLayout;","Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);","}","%}",{disableFormats:true}],initComponent:function(){var b=this,a=b.baseCls,c=b.itemCls;b.selectedItemCls=a+"-selected";b.overItemCls=a+"-item-over";b.itemSelector="."+c;if(b.floating){b.addCls(a+"-floating")}if(!b.tpl){b.tpl=new Ext.XTemplate('<ul class="'+Ext.plainListCls+'"><tpl for=".">','<li role="option" unselectable="on" class="'+c+'">'+b.getInnerTpl(b.displayField)+"</li>","</tpl></ul>")}else{if(Ext.isString(b.tpl)){b.tpl=new Ext.XTemplate(b.tpl)}}if(b.pageSize){b.pagingToolbar=b.createPagingToolbar()}b.callParent()},beforeRender:function(){var a=this;a.callParent(arguments);if(a.up("menu")){a.addCls(Ext.baseCSSPrefix+"menu")}},getRefOwner:function(){return this.pickerField},getRefItems:function(){return this.pagingToolbar?[this.pagingToolbar]:[]},createPagingToolbar:function(){return Ext.widget("pagingtoolbar",{id:this.id+"-paging-toolbar",pageSize:this.pageSize,store:this.dataSource,border:false,ownerCt:this,ownerLayout:this.getComponentLayout()})},finishRenderChildren:function(){var a=this.pagingToolbar;this.callParent(arguments);if(a){a.finishRender()}},refresh:function(){var b=this,a=b.pagingToolbar,c=b.rendered;b.callParent();if(c&&a&&a.rendered&&!b.preserveScrollOnRefresh){b.el.appendChild(a.el)}if(c&&Ext.isIE6&&Ext.isStrict){b.listEl.repaint()}},bindStore:function(a,b){var c=this.pagingToolbar;this.callParent(arguments);if(c){c.bindStore(a,b)}},getTargetEl:function(){return this.listEl||this.el},getInnerTpl:function(a){return"{"+a+"}"},onDestroy:function(){Ext.destroyMembers(this,"pagingToolbar","listEl");this.callParent()}});Ext.define("Ext.view.BoundListKeyNav",{extend:Ext.util.KeyNav,constructor:function(b,a){var c=this;c.boundList=a.boundList;c.callParent([b,Ext.apply({},a,c.defaultHandlers)])},defaultHandlers:{up:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c>0?c-1:d.getCount()-1;e.highlightAt(a)},down:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c<d.getCount()-1?c+1:0;e.highlightAt(a)},pageup:function(){},pagedown:function(){},home:function(){this.highlightAt(0)},end:function(){var a=this;a.highlightAt(a.boundList.all.getCount()-1)},enter:function(a){this.selectHighlighted(a)}},highlightAt:function(b){var a=this.boundList,c=a.all.item(b);if(c){c=c.dom;a.highlightItem(c);a.getTargetEl().scrollChildIntoView(c,false)}},selectHighlighted:function(g){var d=this,b=d.boundList,c=b.highlightedItem,a=b.getSelectionModel();if(c){a.selectWithEvent(b.getRecord(c),g)}}});Ext.define("Ext.layout.component.field.ComboBox",{extend:Ext.layout.component.field.Trigger,alias:"layout.combobox",type:"combobox",startingWidth:null,getTextWidth:function(){var h=this,b=h.owner,l=b.store,j=b.displayField,d=l.data.length,k="",e=0,c=0,g,m,a;for(;e<d;e++){m=l.getAt(e).data[j];g=m.length;if(g>c){c=g;k=m}}a=Math.max(h.callParent(arguments),b.inputEl.getTextWidth(k+b.growAppend));if(!h.startingWidth||b.removingRecords){h.startingWidth=a;if(a<b.growMin){b.defaultListConfig.minWidth=b.growMin}b.removingRecords=false}return a<h.startingWidth?h.startingWidth:a}});Ext.define("Ext.form.field.ComboBox",{extend:Ext.form.field.Picker,alternateClassName:"Ext.form.ComboBox",alias:["widget.combobox","widget.combo"],mixins:{bindable:Ext.util.Bindable},componentLayout:"combobox",triggerCls:Ext.baseCSSPrefix+"form-arrow-trigger",hiddenName:"",hiddenDataCls:Ext.baseCSSPrefix+"hide-display "+Ext.baseCSSPrefix+"form-data-hidden",fieldSubTpl:['<div class="{hiddenDataCls}" role="presentation"></div>','<input id="{id}" type="{type}" {inputAttrTpl} class="{fieldCls} {typeCls} {editableCls}" autocomplete="off"','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="name"> name="{name}"</tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','<tpl if="size"> size="{size}"</tpl>','<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',"/>",{compiled:true,disableFormats:true}],getSubTplData:function(){var a=this;Ext.applyIf(a.subTplData,{hiddenDataCls:a.hiddenDataCls});return a.callParent(arguments)},afterRender:function(){var a=this;a.callParent(arguments);a.setHiddenValue(a.value)},multiSelect:false,delimiter:", ",displayField:"text",triggerAction:"all",allQuery:"",queryParam:"query",queryMode:"remote",queryCaching:true,pageSize:0,autoSelect:true,typeAhead:false,typeAheadDelay:250,selectOnTab:true,forceSelection:false,growToLongestValue:true,defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:"sides"},ignoreSelection:0,removingRecords:null,resizeComboToGrow:function(){var a=this;return a.grow&&a.growToLongestValue},initComponent:function(){var e=this,c=Ext.isDefined,b=e.store,d=e.transform,a,g;Ext.applyIf(e.renderSelectors,{hiddenDataEl:"."+e.hiddenDataCls.split(" ").join(".")});this.addEvents("beforequery","select","beforeselect","beforedeselect");if(d){a=Ext.getDom(d);if(a){if(!e.store){b=Ext.Array.map(Ext.Array.from(a.options),function(h){return[h.value,h.text]})}if(!e.name){e.name=a.name}if(!("value" in e)){e.value=a.value}}}e.bindStore(b||"ext-empty-store",true);b=e.store;if(b.autoCreated){e.queryMode="local";e.valueField=e.displayField="field1";if(!b.expanded){e.displayField="field2"}}e.queryFilter=new Ext.util.Filter({id:e.id+"-query-filter",disabled:true,root:"data",property:e.displayField});b.filter(e.queryFilter);if(!c(e.valueField)){e.valueField=e.displayField}g=e.queryMode==="local";if(!c(e.queryDelay)){e.queryDelay=g?10:500}if(!c(e.minChars)){e.minChars=g?0:4}if(!e.displayTpl){e.displayTpl=new Ext.XTemplate('<tpl for=".">{[typeof values === "string" ? values : values["'+e.displayField+'"]]}<tpl if="xindex < xcount">'+e.delimiter+"</tpl></tpl>")}else{if(Ext.isString(e.displayTpl)){e.displayTpl=new Ext.XTemplate(e.displayTpl)}}e.callParent();e.doQueryTask=new Ext.util.DelayedTask(e.doRawQuery,e);if(e.store.getCount()>0){e.setValue(e.value)}if(a){e.render(a.parentNode,a);Ext.removeNode(a);delete e.renderTo}},getStore:function(){return this.store},beforeBlur:function(){this.doQueryTask.cancel();this.assertValue()},assertValue:function(){var b=this,c=b.getRawValue(),d,a;if(b.forceSelection){if(b.multiSelect){if(c!==b.getDisplayValue()){b.setValue(b.lastSelection)}}else{d=b.findRecordByDisplay(c);if(d){a=b.value;if(!b.findRecordByValue(a)){b.select(d,true)}}else{b.setValue(b.lastSelection)}}}b.collapse()},onTypeAhead:function(){var e=this,d=e.displayField,b=e.store.findRecord(d,e.getRawValue()),c=e.getPicker(),g,a,h;if(b){g=b.get(d);a=g.length;h=e.getRawValue().length;c.highlightItem(c.getNode(b));if(h!==0&&h!==a){e.setRawValue(g);e.selectText(h,g.length)}}},resetToDefault:Ext.emptyFn,beforeReset:function(){this.callParent();if(!this.queryFilter.disabled){this.queryFilter.disabled=true;this.store.filter()}},onUnbindStore:function(a){var c=this,b=c.picker;c.store.removeFilter(c.queryFilter);if(!a&&b){b.bindStore(null)}},onBindStore:function(a,c){var b=this.picker;if(!c){this.resetToDefault();a.filter(this.queryFilter)}if(b){b.bindStore(a)}},getStoreListeners:function(){var a=this;return{beforeload:a.onBeforeLoad,clear:a.onClear,datachanged:a.onDataChanged,load:a.onLoad,exception:a.onException,remove:a.onRemove}},onBeforeLoad:function(){++this.ignoreSelection},onDataChanged:function(){var a=this;if(a.resizeComboToGrow()){a.updateLayout()}},onClear:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true;a.onDataChanged()}},onRemove:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true}},onException:function(){if(this.ignoreSelection>0){--this.ignoreSelection}this.collapse()},onLoad:function(){var a=this,b=a.value;if(a.ignoreSelection>0){--a.ignoreSelection}if(a.rawQuery){a.rawQuery=false;a.syncSelection();if(a.picker&&!a.picker.getSelectionModel().hasSelection()){a.doAutoSelect()}}else{if(a.value||a.value===0){a.setValue(a.value)}else{if(a.store.getCount()){a.doAutoSelect()}else{a.setValue(a.value)}}}},doRawQuery:function(){this.doQuery(this.getRawValue(),false,true)},doQuery:function(h,c,e){h=h||"";var d=this,b={query:h,forceAll:c,combo:d,cancel:false},a=d.store,g=d.queryMode==="local";if(d.fireEvent("beforequery",b)===false||b.cancel){return false}h=b.query;c=b.forceAll;if(c||h.length>=d.minChars){d.expand();if(!d.queryCaching||d.lastQuery!==h){d.lastQuery=h;if(g){if(h||!c){d.queryFilter.disabled=false;d.queryFilter.setValue(d.enableRegEx?new RegExp(h):h)}else{d.queryFilter.disabled=true}a.filter()}else{d.rawQuery=e;if(d.pageSize){d.loadPage(1)}else{a.load({params:d.getParams(h)})}}}if(d.getRawValue()!==d.getDisplayValue()){d.ignoreSelection++;d.picker.getSelectionModel().deselectAll();d.ignoreSelection--}if(g){d.doAutoSelect()}if(d.typeAhead){d.doTypeAhead()}}return true},loadPage:function(a){this.store.loadPage(a,{params:this.getParams(this.lastQuery)})},onPageChange:function(b,a){this.loadPage(a);return false},getParams:function(c){var b={},a=this.queryParam;if(a){b[a]=c}return b},doAutoSelect:function(){var b=this,a=b.picker,c,d;if(a&&b.autoSelect&&b.store.getCount()>0){c=a.getSelectionModel().lastSelected;d=a.getNode(c||0);if(d){a.highlightItem(d);a.listEl.scrollChildIntoView(d,false)}}},doTypeAhead:function(){if(!this.typeAheadTask){this.typeAheadTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.typeAheadTask.delay(this.typeAheadDelay)}},onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.onFocus({});if(a.triggerAction==="all"){a.doQuery(a.allQuery,true)}else{a.doQuery(a.getRawValue(),false,true)}}a.inputEl.focus()}},onPaste:function(){var a=this;if(!a.readOnly&&!a.disabled&&a.editable){a.doQueryTask.delay(a.queryDelay)}},onKeyUp:function(d,b){var c=this,a=d.getKey();if(!c.readOnly&&!c.disabled&&c.editable){c.lastKey=a;if(!d.isSpecialKey()||a==d.BACKSPACE||a==d.DELETE){c.doQueryTask.delay(c.queryDelay)}}if(c.enableKeyEvents){c.callParent(arguments)}},initEvents:function(){var a=this;a.callParent();if(!a.enableKeyEvents){a.mon(a.inputEl,"keyup",a.onKeyUp,a)}a.mon(a.inputEl,"paste",a.onPaste,a)},onDestroy:function(){this.bindStore(null);this.callParent()},onAdded:function(){var a=this;a.callParent(arguments);if(a.picker){a.picker.ownerCt=a.up("[floating]");a.picker.registerWithOwnerCt()}},createPicker:function(){var c=this,b,a=Ext.apply({xtype:"boundlist",pickerField:c,selModel:{mode:c.multiSelect?"SIMPLE":"SINGLE"},floating:true,hidden:true,store:c.store,displayField:c.displayField,focusOnToFront:false,pageSize:c.pageSize,tpl:c.tpl},c.listConfig,c.defaultListConfig);b=c.picker=Ext.widget(a);if(c.pageSize){b.pagingToolbar.on("beforechange",c.onPageChange,c)}c.mon(b,{itemclick:c.onItemClick,refresh:c.onListRefresh,scope:c});c.mon(b.getSelectionModel(),{beforeselect:c.onBeforeSelect,beforedeselect:c.onBeforeDeselect,selectionchange:c.onListSelectionChange,scope:c});return b},alignPicker:function(){var b=this,a=b.getPicker(),e=b.getPosition()[1]-Ext.getBody().getScroll().top,d=Ext.Element.getViewHeight()-e-b.getHeight(),c=Math.max(e,d);if(a.height){delete a.height;a.updateLayout()}if(a.getHeight()>c-5){a.setHeight(c-5)}b.callParent()},onListRefresh:function(){this.alignPicker();this.syncSelection()},onItemClick:function(c,a){var e=this,d=e.picker.getSelectionModel().getSelection(),b=e.valueField;if(!e.multiSelect&&d.length){if(a.get(b)===d[0].get(b)){e.displayTplData=[a.data];e.setRawValue(e.getDisplayValue());e.collapse()}}},onBeforeSelect:function(b,a){return this.fireEvent("beforeselect",this,a,a.index)},onBeforeDeselect:function(b,a){return this.fireEvent("beforedeselect",this,a,a.index)},onListSelectionChange:function(b,d){var a=this,e=a.multiSelect,c=d.length>0;if(!a.ignoreSelection&&a.isExpanded){if(!e){Ext.defer(a.collapse,1,a)}if(e||c){a.setValue(d,false)}if(c){a.fireEvent("select",a,d)}a.inputEl.focus()}},onExpand:function(){var d=this,a=d.listKeyNav,c=d.selectOnTab,b=d.getPicker();if(a){a.enable()}else{a=d.listKeyNav=new Ext.view.BoundListKeyNav(this.inputEl,{boundList:b,forceKeyDown:true,tab:function(g){if(c){this.selectHighlighted(g);d.triggerBlur()}return true},enter:function(j){var g=b.getSelectionModel(),h=g.getCount();this.selectHighlighted(j);if(!d.multiSelect&&h===g.getCount()){d.collapse()}}})}if(c){d.ignoreMonitorTab=true}Ext.defer(a.enable,1,a);d.inputEl.focus()},onCollapse:function(){var b=this,a=b.listKeyNav;if(a){a.disable();b.ignoreMonitorTab=false}},select:function(e,b){var d=this,c=d.picker,a=true;if(e&&e.isModel&&b===true){if(c){a=!c.getSelectionModel().isSelected(e)}if(a){d.fireEvent("select",d,e)}}d.setValue(e,true)},findRecord:function(d,c){var b=this.store,a=b.findExact(d,c);return a!==-1?b.getAt(a):false},findRecordByValue:function(a){return this.findRecord(this.valueField,a)},findRecordByDisplay:function(a){return this.findRecord(this.displayField,a)},setValue:function(m,e){var k=this,c=k.valueNotFoundText,n=k.inputEl,g,j,h,a,l=[],b=[],d=[];if(k.store.loading){k.value=m;k.setHiddenValue(k.value);return k}m=Ext.Array.from(m);for(g=0,j=m.length;g<j;g++){h=m[g];if(!h||!h.isModel){h=k.findRecordByValue(h)}if(h){l.push(h);b.push(h.data);d.push(h.get(k.valueField))}else{if(!k.forceSelection){d.push(m[g]);a={};a[k.displayField]=m[g];b.push(a)}else{if(Ext.isDefined(c)){b.push(c)}}}}k.setHiddenValue(d);k.value=k.multiSelect?d:d[0];if(!Ext.isDefined(k.value)){k.value=null}k.displayTplData=b;k.lastSelection=k.valueModels=l;if(n&&k.emptyText&&!Ext.isEmpty(m)){n.removeCls(k.emptyCls)}k.setRawValue(k.getDisplayValue());k.checkChange();if(e!==false){k.syncSelection()}k.applyEmptyText();return k},setHiddenValue:function(j){var e=this,a=e.hiddenName,d,b,k,h,g,c;if(!e.hiddenDataEl||!a){return}j=Ext.Array.from(j);b=e.hiddenDataEl.dom;k=b.childNodes;h=k[0];g=j.length;c=k.length;if(!h&&g>0){e.hiddenDataEl.update(Ext.DomHelper.markup({tag:"input",type:"hidden",name:a}));c=1;h=b.firstChild}while(c>g){b.removeChild(k[0]);--c}while(c<g){b.appendChild(h.cloneNode(true));++c}for(d=0;d<g;d++){k[d].value=j[d]}},getDisplayValue:function(){return this.displayTpl.apply(this.displayTplData)},getValue:function(){var b=this,a=b.picker,d=b.getRawValue(),c=b.value;if(b.getDisplayValue()!==d){c=d;b.value=b.displayTplData=b.valueModels=null;if(a){b.ignoreSelection++;a.getSelectionModel().deselectAll();b.ignoreSelection--}}return c},getSubmitValue:function(){var a=this.getValue();if(Ext.isEmpty(a)){a=""}return a},isEqual:function(e,d){var b=Ext.Array.from,c,a;e=b(e);d=b(d);a=e.length;if(a!==d.length){return false}for(c=0;c<a;c++){if(d[c]!==e[c]){return false}}return true},clearValue:function(){this.setValue([])},syncSelection:function(){var h=this,d=h.picker,g,c,b=h.valueModels||[],e=b.length,a,j;if(d){g=[];for(a=0;a<e;a++){j=b[a];if(j&&j.isModel&&h.store.indexOf(j)>=0){g.push(j)}}h.ignoreSelection++;c=d.getSelectionModel();c.deselectAll();if(g.length){c.select(g,undefined,true)}h.ignoreSelection--}},onEditorTab:function(b){var a=this.listKeyNav;if(this.selectOnTab&&a){a.selectHighlighted(b)}}});Ext.define("Ext.picker.Month",{extend:Ext.Component,alias:"widget.monthpicker",alternateClassName:"Ext.MonthPicker",childEls:["bodyEl","prevEl","nextEl","buttonsEl","monthEl","yearEl"],renderTpl:['<div id="{id}-bodyEl" class="{baseCls}-body">','<div id="{id}-monthEl" class="{baseCls}-months">','<tpl for="months">','<div class="{parent.baseCls}-item {parent.baseCls}-month">','<a style="{parent.monthStyle}" hidefocus="on" class="{parent.baseCls}-item-inner" href="#">{.}</a>',"</div>","</tpl>","</div>",'<div id="{id}-yearEl" class="{baseCls}-years">','<div class="{baseCls}-yearnav">','<div class="{baseCls}-yearnav-button-ct">','<a id="{id}-prevEl" class="{baseCls}-yearnav-button {baseCls}-yearnav-prev" href="#" hidefocus="on" ></a>',"</div>",'<div class="{baseCls}-yearnav-button-ct">','<a id="{id}-nextEl" class="{baseCls}-yearnav-button {baseCls}-yearnav-next" href="#" hidefocus="on" ></a>',"</div>","</div>",'<tpl for="years">','<div class="{parent.baseCls}-item {parent.baseCls}-year">','<a hidefocus="on" class="{parent.baseCls}-item-inner" href="#">{.}</a>',"</div>","</tpl>","</div>",'<div class="'+Ext.baseCSSPrefix+'clear"></div>',"</div>",'<tpl if="showButtons">','<div id="{id}-buttonsEl" class="{baseCls}-buttons">{%',"var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;","okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;","okBtn.ownerCt = cancelBtn.ownerCt = me;","Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);","Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);","%}</div>","</tpl>"],okText:"OK",cancelText:"Cancel",baseCls:Ext.baseCSSPrefix+"monthpicker",showButtons:true,measureWidth:35,measureMaxHeight:20,smallCls:Ext.baseCSSPrefix+"monthpicker-small",totalYears:10,yearOffset:5,monthOffset:6,initComponent:function(){var a=this;a.selectedCls=a.baseCls+"-selected";a.addEvents("cancelclick","monthclick","monthdblclick","okclick","select","yearclick","yeardblclick");if(a.small){a.addCls(a.smallCls)}a.setValue(a.value);a.activeYear=a.getYear((new Date).getFullYear()-4,-4);if(a.showButtons){a.okBtn=new Ext.button.Button({text:a.okText,handler:a.onOkClick,scope:a});a.cancelBtn=new Ext.button.Button({text:a.cancelText,handler:a.onCancelClick,scope:a})}this.callParent()},beforeRender:function(){var g=this,c=0,b=[],a=Ext.Date.getShortMonthName,e=g.monthOffset,h=g.monthMargin,d="";g.callParent();for(;c<e;++c){b.push(a(c),a(c+e))}if(Ext.isDefined(h)){d="margin: 0 "+h+"px;"}Ext.apply(g.renderData,{months:b,years:g.getYears(),showButtons:g.showButtons,monthStyle:d})},afterRender:function(){var b=this,a=b.bodyEl,c=b.buttonsEl;b.callParent();b.mon(a,"click",b.onBodyClick,b);b.mon(a,"dblclick",b.onBodyClick,b);b.years=a.select("."+b.baseCls+"-year a");b.months=a.select("."+b.baseCls+"-month a");b.backRepeater=new Ext.util.ClickRepeater(b.prevEl,{handler:Ext.Function.bind(b.adjustYear,b,[-b.totalYears])});b.prevEl.addClsOnOver(b.baseCls+"-yearnav-prev-over");b.nextRepeater=new Ext.util.ClickRepeater(b.nextEl,{handler:Ext.Function.bind(b.adjustYear,b,[b.totalYears])});b.nextEl.addClsOnOver(b.baseCls+"-yearnav-next-over");b.updateBody();if(!Ext.isDefined(b.monthMargin)){Ext.picker.Month.prototype.monthMargin=b.calculateMonthMargin()}},calculateMonthMargin:function(){var d=this,b=d.monthEl,a=d.months,e=a.first(),c=e.getMargin("l");while(c&&d.getLargest()>d.measureMaxHeight){--c;a.setStyle("margin","0 "+c+"px")}return c},getLargest:function(a){var b=0;this.months.each(function(d){var c=d.getHeight();if(c>b){b=c}});return b},setValue:function(d){var c=this,e=c.activeYear,g=c.monthOffset,b,a;if(!d){c.value=[null,null]}else{if(Ext.isDate(d)){c.value=[d.getMonth(),d.getFullYear()]}else{c.value=[d[0],d[1]]}}if(c.rendered){b=c.value[1];if(b!==null){if(b<e||b>e+c.yearOffset){c.activeYear=b-c.yearOffset+1}}c.updateBody()}return c},getValue:function(){return this.value},hasSelection:function(){var a=this.value;return a[0]!==null&&a[1]!==null},getYears:function(){var d=this,e=d.yearOffset,g=d.activeYear,a=g+e,c=g,b=[];for(;c<a;++c){b.push(c,c+e)}return b},updateBody:function(){var j=this,e=j.years,b=j.months,n=j.getYears(),o=j.selectedCls,l=j.getYear(null),g=j.value[0],m=j.monthOffset,h,d,k,a,c;if(j.rendered){e.removeCls(o);b.removeCls(o);d=e.elements;a=d.length;for(k=0;k<a;k++){c=Ext.fly(d[k]);h=n[k];c.dom.innerHTML=h;if(h==l){c.addCls(o)}}if(g!==null){if(g<m){g=g*2}else{g=(g-m)*2+1}b.item(g).addCls(o)}}},getYear:function(a,c){var b=this.value[1];c=c||0;return b===null?a:b+c},onBodyClick:function(d,b){var c=this,a=d.type=="dblclick";if(d.getTarget("."+c.baseCls+"-month")){d.stopEvent();c.onMonthClick(b,a)}else{if(d.getTarget("."+c.baseCls+"-year")){d.stopEvent();c.onYearClick(b,a)}}},adjustYear:function(a){if(typeof a!="number"){a=this.totalYears}this.activeYear+=a;this.updateBody()},onOkClick:function(){this.fireEvent("okclick",this,this.value)},onCancelClick:function(){this.fireEvent("cancelclick",this)},onMonthClick:function(c,a){var b=this;b.value[0]=b.resolveOffset(b.months.indexOf(c),b.monthOffset);b.updateBody();b.fireEvent("month"+(a?"dbl":"")+"click",b,b.value);b.fireEvent("select",b,b.value)},onYearClick:function(c,a){var b=this;b.value[1]=b.activeYear+b.resolveOffset(b.years.indexOf(c),b.yearOffset);b.updateBody();b.fireEvent("year"+(a?"dbl":"")+"click",b,b.value);b.fireEvent("select",b,b.value)},resolveOffset:function(a,b){if(a%2===0){return a/2}else{return b+Math.floor(a/2)}},beforeDestroy:function(){var a=this;a.years=a.months=null;Ext.destroyMembers(a,"backRepeater","nextRepeater","okBtn","cancelBtn");a.callParent()},finishRenderChildren:function(){var a=this;this.callParent(arguments);if(this.showButtons){a.okBtn.finishRender();a.cancelBtn.finishRender()}},onDestroy:function(){Ext.destroyMembers(this,"okBtn","cancelBtn");this.callParent()}});Ext.define("Ext.picker.Date",{extend:Ext.Component,alias:"widget.datepicker",alternateClassName:"Ext.DatePicker",childEls:["innerEl","eventEl","prevEl","nextEl","middleBtnEl","footerEl"],border:true,renderTpl:['<div id="{id}-innerEl" role="grid">','<div role="presentation" class="{baseCls}-header">','<a id="{id}-prevEl" class="{baseCls}-prev {baseCls}-arrow" href="#" role="button" title="{prevText}" hidefocus="on" ></a>','<div class="{baseCls}-month" id="{id}-middleBtnEl">{%this.renderMonthBtn(values, out)%}</div>','<a id="{id}-nextEl" class="{baseCls}-next {baseCls}-arrow" href="#" role="button" title="{nextText}" hidefocus="on" ></a>',"</div>",'<table id="{id}-eventEl" class="{baseCls}-inner" cellspacing="0" role="presentation">','<thead role="presentation"><tr role="presentation">','<tpl for="dayNames">','<th role="columnheader" class="{parent.baseCls}-column-header" title="{.}">','<div class="{parent.baseCls}-column-header-inner">{.:this.firstInitial}</div>',"</th>","</tpl>","</tr></thead>",'<tbody role="presentation"><tr role="presentation">','<tpl for="days">',"{#:this.isEndOfWeek}",'<td role="gridcell" id="{[Ext.id()]}">','<a role="presentation" hidefocus="on" class="{parent.baseCls}-date" href="#"></a>',"</td>","</tpl>","</tr></tbody>","</table>",'<tpl if="showToday">','<div id="{id}-footerEl" role="presentation" class="{baseCls}-footer">{%this.renderTodayBtn(values, out)%}</div>',"</tpl>","</div>",{firstInitial:function(a){return Ext.picker.Date.prototype.getDayInitial(a)},isEndOfWeek:function(b){b--;var a=b%7===0&&b!==0;return a?'</tr><tr role="row">':""},renderTodayBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.todayBtn.getRenderTree(),b)},renderMonthBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.monthBtn.getRenderTree(),b)}}],todayText:"Today",ariaTitle:"Date Picker: {0}",ariaTitleDateFormat:"F d, Y",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",disabledDaysText:"Disabled",disabledDatesText:"Disabled",nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",monthYearFormat:"F Y",startDay:0,showToday:true,disableAnim:false,baseCls:Ext.baseCSSPrefix+"datepicker",longDayFormat:"F d, Y",focusOnShow:false,focusOnSelect:true,initHour:12,numDays:42,initComponent:function(){var b=this,a=Ext.Date.clearTime;b.selectedCls=b.baseCls+"-selected";b.disabledCellCls=b.baseCls+"-disabled";b.prevCls=b.baseCls+"-prevday";b.activeCls=b.baseCls+"-active";b.cellCls=b.baseCls+"-cell";b.nextCls=b.baseCls+"-prevday";b.todayCls=b.baseCls+"-today";b.dayNames=b.dayNames.slice(b.startDay).concat(b.dayNames.slice(0,b.startDay));b.callParent();b.value=b.value?a(b.value,true):a(new Date);b.addEvents("select");b.initDisabledDays()},beforeRender:function(){var b=this,c=new Array(b.numDays),a=Ext.Date.format(new Date,b.format);if(b.up("menu")){b.addCls(Ext.baseCSSPrefix+"menu")}b.monthBtn=new Ext.button.Split({ownerCt:b,ownerLayout:b.getComponentLayout(),text:"",tooltip:b.monthYearText,listeners:{click:b.showMonthPicker,arrowclick:b.showMonthPicker,scope:b}});if(b.showToday){b.todayBtn=new Ext.button.Button({ownerCt:b,ownerLayout:b.getComponentLayout(),text:Ext.String.format(b.todayText,a),tooltip:Ext.String.format(b.todayTip,a),tooltipType:"title",handler:b.selectToday,scope:b})}b.callParent();Ext.applyIf(b,{renderData:{}});Ext.apply(b.renderData,{dayNames:b.dayNames,showToday:b.showToday,prevText:b.prevText,nextText:b.nextText,days:c});b.protoEl.unselectable()},finishRenderChildren:function(){var a=this;a.callParent();a.monthBtn.finishRender();if(a.showToday){a.todayBtn.finishRender()}},onRender:function(b,a){var c=this;c.callParent(arguments);c.cells=c.eventEl.select("tbody td");c.textNodes=c.eventEl.query("tbody td a");c.mon(c.eventEl,{scope:c,mousewheel:c.handleMouseWheel,click:{fn:c.handleDateClick,delegate:"a."+c.baseCls+"-date"}})},initEvents:function(){var c=this,a=Ext.Date,b=a.DAY;c.callParent();c.prevRepeater=new Ext.util.ClickRepeater(c.prevEl,{handler:c.showPrevMonth,scope:c,preventDefault:true,stopDefault:true});c.nextRepeater=new Ext.util.ClickRepeater(c.nextEl,{handler:c.showNextMonth,scope:c,preventDefault:true,stopDefault:true});c.keyNav=new Ext.util.KeyNav(c.eventEl,Ext.apply({scope:c,left:function(d){if(d.ctrlKey){c.showPrevMonth()}else{c.update(a.add(c.activeDate,b,-1))}},right:function(d){if(d.ctrlKey){c.showNextMonth()}else{c.update(a.add(c.activeDate,b,1))}},up:function(d){if(d.ctrlKey){c.showNextYear()}else{c.update(a.add(c.activeDate,b,-7))}},down:function(d){if(d.ctrlKey){c.showPrevYear()}else{c.update(a.add(c.activeDate,b,7))}},pageUp:c.showNextMonth,pageDown:c.showPrevMonth,enter:function(d){d.stopPropagation();return true}},c.keyNavConfig));if(c.showToday){c.todayKeyListener=c.eventEl.addKeyListener(Ext.EventObject.SPACE,c.selectToday,c)}c.update(c.value)},initDisabledDays:function(){var h=this,b=h.disabledDates,g="(?:",a,j,c,e;if(!h.disabledDatesRE&&b){a=b.length-1;c=b.length;for(j=0;j<c;j++){e=b[j];g+=Ext.isDate(e)?"^"+Ext.String.escapeRegex(Ext.Date.dateFormat(e,h.format))+"$":e;if(j!=a){g+="|"}}h.disabledDatesRE=new RegExp(g+")")}},setDisabledDates:function(a){var b=this;if(Ext.isArray(a)){b.disabledDates=a;b.disabledDatesRE=null}else{b.disabledDatesRE=a}b.initDisabledDays();b.update(b.value,true);return b},setDisabledDays:function(a){this.disabledDays=a;return this.update(this.value,true)},setMinDate:function(a){this.minDate=a;return this.update(this.value,true)},setMaxDate:function(a){this.maxDate=a;return this.update(this.value,true)},setValue:function(a){this.value=Ext.Date.clearTime(a,true);return this.update(this.value)},getValue:function(){return this.value},getDayInitial:function(a){return a.substr(0,1)},focus:function(){this.update(this.activeDate)},onEnable:function(){this.callParent();this.setDisabledStatus(false);this.update(this.activeDate)},onDisable:function(){this.callParent();this.setDisabledStatus(true)},setDisabledStatus:function(a){var b=this;b.keyNav.setDisabled(a);b.prevRepeater.setDisabled(a);b.nextRepeater.setDisabled(a);if(b.showToday){b.todayKeyListener.setDisabled(a);b.todayBtn.setDisabled(a)}},getActive:function(){return this.activeDate||this.value},runAnimation:function(c){var b=this.monthPicker,a={duration:200,callback:function(){if(c){b.hide()}else{b.show()}}};if(c){b.el.slideOut("t",a)}else{b.el.slideIn("t",a)}},hideMonthPicker:function(a){var c=this,b=c.monthPicker;if(b){if(c.shouldAnimate(a)){c.runAnimation(true)}else{b.hide()}}return c},showMonthPicker:function(a){var c=this,b;if(c.rendered&&!c.disabled){b=c.createMonthPicker();b.setValue(c.getActive());b.setSize(c.getSize());b.setPosition(-1,-1);if(c.shouldAnimate(a)){c.runAnimation(false)}else{b.show()}}return c},shouldAnimate:function(a){return Ext.isDefined(a)?a:!this.disableAnim},createMonthPicker:function(){var b=this,a=b.monthPicker;if(!a){b.monthPicker=a=new Ext.picker.Month({renderTo:b.el,floating:true,shadow:false,small:b.showToday===false,listeners:{scope:b,cancelclick:b.onCancelClick,okclick:b.onOkClick,yeardblclick:b.onOkClick,monthdblclick:b.onOkClick}});if(!b.disableAnim){a.el.setStyle("display","none")}b.on("beforehide",Ext.Function.bind(b.hideMonthPicker,b,[false]))}return a},onOkClick:function(b,e){var d=this,g=e[0],c=e[1],a=new Date(c,g,d.getActive().getDate());if(a.getMonth()!==g){a=Ext.Date.getLastDateOfMonth(new Date(c,g,1))}d.setValue(a);d.hideMonthPicker()},onCancelClick:function(){this.selectedUpdate(this.activeDate);this.hideMonthPicker()},showPrevMonth:function(a){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.MONTH,-1))},showNextMonth:function(a){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.MONTH,1))},showPrevYear:function(){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.YEAR,-1))},showNextYear:function(){return this.setValue(Ext.Date.add(this.activeDate,Ext.Date.YEAR,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(d,a){var c=this,b=c.handler;d.stopEvent();if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},onSelect:function(){if(this.hideOnSelect){this.hide()}},selectToday:function(){var c=this,a=c.todayBtn,b=c.handler;if(a&&!a.disabled){c.setValue(Ext.Date.clearTime(new Date));c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}return c},selectedUpdate:function(a){var d=this,j=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;b<e;b++){h=Ext.fly(g[b]);if(h.dom.firstChild.dateValue==j){d.fireEvent("highlightitem",d,h);h.addCls(l);if(d.isVisible()&&!d.doCancelFocus){Ext.fly(h.dom.firstChild).focus(50)}break}}},fullUpdate:function(D){var H=this,g=H.cells.elements,d=H.textNodes,J=H.disabledCellCls,o=Ext.Date,z=0,G=0,e=H.isVisible(),x=+o.clearTime(D,true),C=+o.clearTime(new Date),w=H.minDate?o.clearTime(H.minDate,true):Number.NEGATIVE_INFINITY,y=H.maxDate?o.clearTime(H.maxDate,true):Number.POSITIVE_INFINITY,F=H.disabledDatesRE,u=H.disabledDatesText,K=H.disabledDays?H.disabledDays.join(""):false,E=H.disabledDaysText,A=H.format,m=o.getDaysInMonth(D),q=o.getFirstDateOfMonth(D),j=q.getDay()-H.startDay,B=o.add(D,o.MONTH,-1),b=H.longDayFormat,h,l,s,a,I,n,p,c,k,t;if(j<0){j+=7}m+=j;l=o.getDaysInMonth(B)-j;s=new Date(B.getFullYear(),B.getMonth(),l,H.initHour);if(H.showToday){I=o.clearTime(new Date);a=I<w||I>y||F&&A&&F.test(o.dateFormat(I,A))||K&&K.indexOf(I.getDay())!=-1;if(!H.disabled){H.todayBtn.setDisabled(a);H.todayKeyListener.setDisabled(a)}}n=function(L,M){h=false;t=+o.clearTime(s,true);L.title=o.format(s,b);L.firstChild.dateValue=t;if(t==C){M+=" "+H.todayCls;L.title=H.todayText}if(t==x){M+=" "+H.selectedCls;H.fireEvent("highlightitem",H,L);if(e&&H.floating){Ext.fly(L.firstChild).focus(50)}}if(t<w){M+=" "+J;L.title=H.minText;h=true}if(!h&&t>y){M+=" "+J;L.title=H.maxText;h=true}if(!h&&K){if(K.indexOf(s.getDay())!==-1){L.title=E;M+=" "+J;h=true}}if(!h&&F&&A){k=o.dateFormat(s,A);if(F.test(k)){L.title=u.replace("%0",k);M+=" "+J}}L.className=M+" "+H.cellCls};for(;z<H.numDays;++z){if(z<j){p=++l;c=H.prevCls}else{if(z>=m){p=++G;c=H.nextCls}else{p=z-j+1;c=H.activeCls}}d[z].innerHTML=p;s.setDate(s.getDate()+1);n(g[z],c)}H.monthBtn.setText(Ext.Date.format(D,H.monthYearFormat))},update:function(a,d){var b=this,c=b.activeDate;if(b.rendered){b.activeDate=a;if(!d&&c&&b.el&&c.getMonth()==a.getMonth()&&c.getFullYear()==a.getFullYear()){b.selectedUpdate(a,c)}else{b.fullUpdate(a,c)}b.innerEl.dom.title=Ext.String.format(b.ariaTitle,Ext.Date.format(b.activeDate,b.ariaTitleDateFormat))}return b},beforeDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.todayKeyListener,a.keyNav,a.monthPicker,a.monthBtn,a.nextRepeater,a.prevRepeater,a.todayBtn);delete a.textNodes;delete a.cells.elements}a.callParent()},onShow:function(){this.callParent(arguments);if(this.focusOnShow){this.focus()}}},function(){var b=this.prototype,a=Ext.Date;b.monthNames=a.monthNames;b.dayNames=a.dayNames;b.format=a.defaultFormat});Ext.define("Ext.form.field.Date",{extend:Ext.form.field.Picker,alias:"widget.datefield",alternateClassName:["Ext.form.DateField","Ext.form.Date"],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}",triggerCls:Ext.baseCSSPrefix+"form-date-trigger",showToday:true,useStrict:undefined,initTime:"12",initTimeFormat:"H",matchFieldWidth:false,startDay:0,initComponent:function(){var d=this,b=Ext.isString,c,a;c=d.minValue;a=d.maxValue;if(b(c)){d.minValue=d.parseDate(c)}if(b(a)){d.maxValue=d.parseDate(a)}d.disabledDatesRE=null;d.initDisabledDays();d.callParent()},initValue:function(){var a=this,b=a.value;if(Ext.isString(b)){a.value=a.rawToValue(b)}a.callParent()},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,g="(?:",h,e=b.length,c;for(h=0;h<e;h++){c=b[h];g+=Ext.isDate(c)?"^"+Ext.String.escapeRegex(c.dateFormat(this.format))+"$":c;if(h!==a){g+="|"}}this.disabledDatesRE=new RegExp(g+")")}},setDisabledDates:function(a){var c=this,b=c.picker;c.disabledDates=a;c.initDisabledDays();if(b){b.setDisabledDates(c.disabledDatesRE)}},setDisabledDays:function(a){var b=this.picker;this.disabledDays=a;if(b){b.setDisabledDays(a)}},setMinValue:function(c){var b=this,a=b.picker,d=Ext.isString(c)?b.parseDate(c):c;b.minValue=d;if(a){a.minText=Ext.String.format(b.minText,b.formatDate(b.minValue));a.setMinDate(d)}},setMaxValue:function(c){var b=this,a=b.picker,d=Ext.isString(c)?b.parseDate(c):c;b.maxValue=d;if(a){a.maxText=Ext.String.format(b.maxText,b.formatDate(b.maxValue));a.setMaxDate(d)}},getErrors:function(q){var j=this,p=Ext.String.format,k=Ext.Date.clearTime,o=j.callParent(arguments),n=j.disabledDays,d=j.disabledDatesRE,m=j.minValue,h=j.maxValue,g=n?n.length:0,e=0,a,b,l,c;q=j.formatDate(q||j.processRawValue(j.getRawValue()));if(q===null||q.length<1){return o}a=q;q=j.parseDate(q);if(!q){o.push(p(j.invalidText,a,Ext.Date.unescapeFormat(j.format)));return o}c=q.getTime();if(m&&c<k(m).getTime()){o.push(p(j.minText,j.formatDate(m)))}if(h&&c>k(h).getTime()){o.push(p(j.maxText,j.formatDate(h)))}if(n){l=q.getDay();for(;e<g;e++){if(l===n[e]){o.push(j.disabledDaysText);break}}}b=j.formatDate(q);if(d&&d.test(b)){o.push(p(j.disabledDatesText,b))}return o},rawToValue:function(a){return this.parseDate(a)||a||null},valueToRaw:function(a){return this.formatDate(this.parseDate(a))},safeParse:function(g,h){var e=this,c=Ext.Date,a=null,b=e.useStrict,d;if(c.formatContainsHourInfo(h)){a=c.parse(g,h,b)}else{d=c.parse(g+" "+e.initTime,h+" "+e.initTimeFormat,b);if(d){a=c.clearTime(d)}}return a},getSubmitValue:function(){var b=this.submitFormat||this.format,a=this.getValue();return a?Ext.Date.format(a,b):""},parseDate:function(e){if(!e||Ext.isDate(e)){return e}var d=this,h=d.safeParse(e,d.format),b=d.altFormats,g=d.altFormatsArray,c=0,a;if(!h&&b){g=g||b.split("|");a=g.length;for(;c<a&&!h;++c){h=d.safeParse(e,g[c])}}return h},formatDate:function(a){return Ext.isDate(a)?Ext.Date.dateFormat(a,this.format):a},createPicker:function(){var a=this,b=Ext.String.format;return new Ext.picker.Date({pickerField:a,ownerCt:a.ownerCt,renderTo:document.body,floating:true,hidden:true,focusOnShow:true,minDate:a.minValue,maxDate:a.maxValue,disabledDatesRE:a.disabledDatesRE,disabledDatesText:a.disabledDatesText,disabledDays:a.disabledDays,disabledDaysText:a.disabledDaysText,format:a.format,showToday:a.showToday,startDay:a.startDay,minText:b(a.minText,a.formatDate(a.minValue)),maxText:b(a.maxText,a.formatDate(a.maxValue)),listeners:{scope:a,select:a.onSelect},keyNavConfig:{esc:function(){a.collapse()}}})},onDownArrow:function(a){this.callParent(arguments);if(this.isExpanded){this.getPicker().focus()}},onSelect:function(a,c){var b=this;b.setValue(c);b.fireEvent("select",b,c);b.collapse()},onExpand:function(){var a=this.getValue();this.picker.setValue(Ext.isDate(a)?a:new Date)},onCollapse:function(){this.focus(false,60)},beforeBlur:function(){var c=this,a=c.parseDate(c.getRawValue()),b=c.focusTask;if(b){b.cancel()}if(a){c.setValue(a)}}});Ext.define("Ext.form.field.FileButton",{extend:Ext.button.Button,alias:"widget.filebutton",childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl","fileInputEl"],inputCls:Ext.baseCSSPrefix+"form-file-input",cls:Ext.baseCSSPrefix+"form-file-btn",preventDefault:false,renderTpl:['<div id="{id}-btnWrap" class="{baseCls}-wrap','<tpl if="splitCls"> {splitCls}</tpl>','{childElCls}" unselectable="on">','<a id="{id}-btnEl" class="{baseCls}-button" role="button" hidefocus="on" unselectable="on"','<tpl if="tabIndex != null>',' tabIndex="{tabIndex}"',"</tpl>",">",'<span id="{id}-btnInnerEl" class="{baseCls}-inner {innerCls}','{childElCls}" unselectable="on">',"{text}","</span>",'<span role="img" id="{id}-btnIconEl" class="{baseCls}-icon-el {iconCls}','{childElCls} {glyphCls}" unselectable="on" style="','<tpl if="iconUrl">background-image:url({iconUrl});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl><tpl if="iconCls || iconUrl">&#160;</tpl>',"</span>","</a>","</div>",'<input id="{id}-fileInputEl" class="{inputCls}" type="file" size="1" name="{inputName}">'],getTemplateArgs:function(){var a=this.callParent();a.inputCls=this.inputCls;a.inputName=this.inputName;return a},afterRender:function(){var a=this;a.callParent(arguments);a.fileInputEl.on("change",a.fireChange,a)},fireChange:function(a){this.fireEvent("change",this,a,this.fileInputEl.dom.value)},createFileInput:function(a){var b=this;b.fileInputEl=b.el.createChild({name:b.inputName,id:!a?b.id+"-fileInputEl":undefined,cls:b.inputCls,tag:"input",type:"file",size:1});b.fileInputEl.on("change",b.fireChange,b)},reset:function(a){if(a){this.fileInputEl.remove()}this.createFileInput(!a)},restoreInput:function(a){this.fileInputEl.remove();a=Ext.get(a);this.el.appendChild(a);this.fileInputEl=a},onDisable:function(){this.callParent();this.fileInputEl.dom.disabled=true},onEnable:function(){this.callParent();this.fileInputEl.dom.disabled=false}});Ext.define("Ext.form.field.File",{extend:Ext.form.field.Trigger,alias:["widget.filefield","widget.fileuploadfield"],alternateClassName:["Ext.form.FileUploadField","Ext.ux.form.FileUploadField","Ext.form.File"],buttonText:"Browse...",buttonOnly:false,buttonMargin:3,clearOnSubmit:true,fieldBodyCls:Ext.baseCSSPrefix+"form-file-wrap",readOnly:true,triggerNoEditCls:"",componentLayout:"triggerfield",childEls:["browseButtonWrap"],onRender:function(){var a=this,c=a.id,b;a.callParent(arguments);b=a.inputEl;b.dom.name="";a.button=new Ext.form.field.FileButton(Ext.apply({renderTo:c+"-browseButtonWrap",ownerCt:a,ownerLayout:a.componentLayout,id:c+"-button",ui:a.ui,disabled:a.disabled,text:a.buttonText,style:a.buttonOnly?"":"margin-left:"+a.buttonMargin+"px",inputName:a.getName(),listeners:{scope:a,change:a.onFileChange}},a.buttonConfig));a.fileInputEl=a.button.fileInputEl;if(a.buttonOnly){a.inputCell.setDisplayed(false)}a.browseButtonWrap.dom.style.width=a.browseButtonWrap.dom.lastChild.offsetWidth+a.button.getEl().getMargin("lr")+"px";if(Ext.isIE){a.button.getEl().repaint()}},getTriggerMarkup:function(){return'<td id="'+this.id+'-browseButtonWrap"></td>'},onFileChange:function(a,c,b){this.lastValue=null;Ext.form.field.File.superclass.setValue.call(this,b)},setValue:Ext.emptyFn,reset:function(){var b=this,a=b.clearOnSubmit;if(b.rendered){b.button.reset(a);b.fileInputEl=b.button.fileInputEl;if(a){b.inputEl.dom.value=""}}b.callParent()},onShow:function(){this.callParent();this.button.updateLayout()},onDisable:function(){this.callParent();this.button.disable()},onEnable:function(){this.callParent();this.button.enable()},isFileUpload:function(){return true},extractFileInput:function(){var a=this.button.fileInputEl.dom;this.reset();return a},restoreInput:function(b){var a=this.button;a.restoreInput(b);this.fileInputEl=a.fileInputEl},onDestroy:function(){Ext.destroyMembers(this,"button");delete this.fileInputEl;this.callParent()}});Ext.define("Ext.form.field.Hidden",{extend:Ext.form.field.Base,alias:["widget.hiddenfield","widget.hidden"],alternateClassName:"Ext.form.Hidden",inputType:"hidden",hideLabel:true,initComponent:function(){this.formItemCls+="-hidden";this.callParent()},isEqual:function(b,a){return this.isEqualAsString(b,a)},initEvents:Ext.emptyFn,setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.define("Ext.picker.Color",{extend:Ext.Component,alias:"widget.colorpicker",alternateClassName:"Ext.ColorPalette",componentCls:Ext.baseCSSPrefix+"color-picker",selectedCls:Ext.baseCSSPrefix+"color-picker-selected",itemCls:Ext.baseCSSPrefix+"color-picker-item",value:null,clickEvent:"click",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"],colorRe:/(?:^|\s)color-(.{6})(?:\s|$)/,renderTpl:['<tpl for="colors">','<a href="#" class="color-{.} {parent.itemCls}" hidefocus="on">','<span class="{parent.itemCls}-inner" style="background:#{.}">&#160;</span>',"</a>","</tpl>"],initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("select");if(a.handler){a.on("select",a.handler,a.scope,true)}},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{itemCls:a.itemCls,colors:a.colors})},onRender:function(){var b=this,a=b.clickEvent;b.callParent(arguments);b.mon(b.el,a,b.handleClick,b,{delegate:"a"});if(a!="click"){b.mon(b.el,"click",Ext.emptyFn,b,{delegate:"a",stopEvent:true})}},afterRender:function(){var a=this,b;a.callParent(arguments);if(a.value){b=a.value;a.value=null;a.select(b,true)}},handleClick:function(c,d){var b=this,a;c.stopEvent();if(!b.disabled){a=d.className.match(b.colorRe)[1];b.select(a.toUpperCase())}},select:function(b,a){var d=this,g=d.selectedCls,e=d.value,c;b=b.replace("#","");if(!d.rendered){d.value=b;return}if(b!=e||d.allowReselect){c=d.el;if(d.value){c.down("a.color-"+e).removeCls(g)}c.down("a.color-"+b).addCls(g);d.value=b;if(a!==true){d.fireEvent("select",d,b)}}},getValue:function(){return this.value||null}});Ext.define("Ext.layout.component.field.HtmlEditor",{extend:Ext.layout.component.field.FieldContainer,alias:["layout.htmleditor"],type:"htmleditor",naturalHeight:150,naturalWidth:300,beginLayout:function(b){var a=this.owner;this.callParent(arguments);b.toolbarContext=b.context.getCmp(a.toolbar);b.inputCmpContext=b.context.getCmp(a.inputCmp);b.textAreaContext=b.getEl("textareaEl");b.iframeContext=b.getEl("iframeEl")},beginLayoutCycle:function(h){var g=this,c=h.widthModel,b=h.heightModel,a=g.owner,e=a.iframeEl,d=a.textareaEl;g.callParent(arguments);if(c.shrinkWrap){e.setStyle("width","");d.setStyle("width","")}else{if(c.natural){h.bodyCellContext.setWidth(g.naturalWidth)}}if(b.natural||b.shrinkWrap){e.setHeight(g.naturalHeight);d.setHeight(g.naturalHeight)}},finishedLayout:function(){this.callParent(arguments);if(Ext.isIE9m&&Ext.isIEQuirks){this.owner.el.repaint()}},publishOwnerWidth:function(b,a){this.callParent(arguments);a-=b.inputCmpContext.getBorderInfo().width;b.textAreaContext.setWidth(a);b.iframeContext.setWidth(a)},publishInnerWidth:function(e,c){var b=e.inputCmpContext.getBorderInfo().width,d=Ext.isStrict&&Ext.isIE8m,a=e.widthModel.natural;this.callParent(arguments);c=e.bodyCellContext.props.width-b;if(a){if(d){c-=2}e.textAreaContext.setWidth(c);e.iframeContext.setWidth(c)}else{if(d){e.textAreaContext.setWidth(c)}}},publishInnerHeight:function(c,a){var d=c.toolbarContext.getProp("height"),b=this.owner.sourceEditMode;this.callParent(arguments);a=c.bodyCellContext.props.height;if(d!==undefined){a-=d+c.inputCmpContext.getFrameInfo().height;if(Ext.isIE8&&Ext.isStrict){a-=2}else{if(Ext.isIEQuirks&&(Ext.isIE8||Ext.isIE9)){a-=4}}c.iframeContext.setHeight(a);c.textAreaContext.setHeight(a)}else{this.done=false}}});Ext.define("Ext.form.field.HtmlEditor",{extend:Ext.form.FieldContainer,mixins:{field:Ext.form.field.Field},alias:"widget.htmleditor",alternateClassName:"Ext.form.HtmlEditor",componentLayout:"htmleditor",componentTpl:["{beforeTextAreaTpl}",'<textarea id="{id}-textareaEl" name="{name}" tabIndex="-1" {inputAttrTpl}',' class="{textareaCls}" autocomplete="off">',"{[Ext.util.Format.htmlEncode(values.value)]}","</textarea>","{afterTextAreaTpl}","{beforeIFrameTpl}",'<iframe id="{id}-iframeEl" name="{iframeName}" frameBorder="0" {iframeAttrTpl}',' src="{iframeSrc}" class="{iframeCls}"></iframe>',"{afterIFrameTpl}",{disableFormats:true}],stretchInputElFixed:true,subTplInsertions:["beforeTextAreaTpl","afterTextAreaTpl","beforeIFrameTpl","afterIFrameTpl","iframeAttrTpl","inputAttrTpl"],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"],defaultValue:Ext.isOpera||Ext.isIE6?"&#160;":"&#8203;",fieldBodyCls:Ext.baseCSSPrefix+"html-editor-wrap",initialized:false,activated:false,sourceEditMode:false,iframePad:3,hideMode:"offsets",maskOnDisable:true,containerElCls:Ext.baseCSSPrefix+"html-editor-container",initComponent:function(){var a=this;a.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange");a.items=[a.createToolbar(),a.createInputCmp()];a.layout={type:"vbox",align:"stretch"};a.callParent(arguments);a.initField()},createInputCmp:function(){this.inputCmp=Ext.widget(this.getInputCmpCfg());return this.inputCmp},getInputCmpCfg:function(){var a=this,c=a.id+"-inputCmp",b={id:c,name:a.name,textareaCls:Ext.baseCSSPrefix+"hidden",value:a.value,iframeName:Ext.id(),iframeSrc:Ext.SSL_SECURE_URL,iframeCls:Ext.baseCSSPrefix+"htmleditor-iframe"};a.getInsertionRenderData(b,a.subTplInsertions);return{flex:1,xtype:"component",tpl:a.getTpl("componentTpl"),childEls:["iframeEl","textareaEl"],id:c,cls:Ext.baseCSSPrefix+"html-editor-input",data:b}},createToolbar:function(){this.toolbar=Ext.widget(this.getToolbarCfg());return this.toolbar},getToolbarCfg:function(){var h=this,b=[],e,a=Ext.quickTipsActive&&Ext.tip.QuickTipManager.isEnabled(),d=Ext.baseCSSPrefix,j,g;function c(m,k,l){return{itemId:m,cls:d+"btn-icon",iconCls:d+"edit-"+m,enableToggle:k!==false,scope:h,handler:l||h.relayBtnCmd,clickEvent:"mousedown",tooltip:a?h.buttonTips[m]||g:g,overflowText:h.buttonTips[m].title||g,tabIndex:-1}}if(h.enableFont&&!Ext.isSafari2){j=Ext.widget("component",{itemId:"fontSelect",renderTpl:['<select id="{id}-selectEl" class="'+d+'font-select">',"</select>"],childEls:["selectEl"],afterRender:function(){h.fontSelect=this.selectEl;Ext.Component.prototype.afterRender.apply(this,arguments)},onDisable:function(){var k=this.selectEl;if(k){k.dom.disabled=true}Ext.Component.prototype.onDisable.apply(this,arguments)},onEnable:function(){var k=this.selectEl;if(k){k.dom.disabled=false}Ext.Component.prototype.onEnable.apply(this,arguments)},listeners:{change:function(){h.win.focus();h.relayCmd("fontName",h.fontSelect.dom.value);h.deferFocus()},element:"selectEl"}});b.push(j,"-")}if(h.enableFormat){b.push(c("bold"),c("italic"),c("underline"))}if(h.enableFontSize){b.push("-",c("increasefontsize",false,h.adjustFont),c("decreasefontsize",false,h.adjustFont))}if(h.enableColors){b.push("-",{itemId:"forecolor",cls:d+"btn-icon",iconCls:d+"edit-forecolor",overflowText:h.buttonTips.forecolor.title,tooltip:a?h.buttonTips.forecolor||g:g,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,clickEvent:"mousedown",handler:function(l,k){h.relayCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+k:k);this.up("menu").hide()}}]})},{itemId:"backcolor",cls:d+"btn-icon",iconCls:d+"edit-backcolor",overflowText:h.buttonTips.backcolor.title,tooltip:a?h.buttonTips.backcolor||g:g,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,clickEvent:"mousedown",handler:function(l,k){if(Ext.isGecko){h.execCmd("useCSS",false);h.execCmd("hilitecolor","#"+k);h.execCmd("useCSS",true);h.deferFocus()}else{h.relayCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE||Ext.isOpera?"#"+k:k)}this.up("menu").hide()}}]})})}if(h.enableAlignments){b.push("-",c("justifyleft"),c("justifycenter"),c("justifyright"))}if(!Ext.isSafari2){if(h.enableLinks){b.push("-",c("createlink",false,h.createLink))}if(h.enableLists){b.push("-",c("insertorderedlist"),c("insertunorderedlist"))}if(h.enableSourceEdit){b.push("-",c("sourceedit",true,function(k){h.toggleSourceEdit(!h.sourceEditMode)}))}}for(e=0;e<b.length;e++){if(b[e].itemId!=="sourceedit"){b[e].disabled=true}}return{xtype:"toolbar",defaultButtonUI:h.defaultButtonUI,cls:Ext.baseCSSPrefix+"html-editor-tb",enableOverflow:true,items:b,listeners:{click:function(k){k.preventDefault()},element:"el"}}},getMaskTarget:function(){return Ext.isGecko?this.inputCmp.el:this.bodyEl},setReadOnly:function(e){var d=this,c=d.textareaEl,b=d.iframeEl,a;d.readOnly=e;if(c){c.dom.readOnly=e}if(d.initialized){a=d.getEditorBody();if(Ext.isIE){b.setDisplayed(false);a.contentEditable=!e;b.setDisplayed(true)}else{d.setDesignMode(!e)}if(a){a.style.cursor=e?"default":"text"}d.disableItems(e)}},getDocMarkup:function(){var b=this,a=b.iframeEl.getHeight()-b.iframePad*2,c=Ext.isIE8m;return Ext.String.format((c?"":"<!DOCTYPE html>")+'<html><head><style type="text/css">'+(Ext.isOpera?"p{margin:0}":"")+"body{border:0;margin:0;padding:{0}px;direction:"+(b.rtl?"rtl;":"ltr;")+(c?Ext.emptyString:"min-")+"height:{1}px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;cursor:text;background-color:white;"+(Ext.isIE?"":"font-size:12px;font-family:{2}")+"}</style></head><body></body></html>",b.iframePad,a,b.defaultFont)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return !Ext.isIE&&this.iframeEl.dom.contentDocument||this.getWin().document},getWin:function(){return Ext.isIE?this.iframeEl.dom.contentWindow:window.frames[this.iframeEl.dom.name]},initDefaultFont:function(){var h=this,a=0,j,b,k,e,d,g,c;if(!h.defaultFont){b=h.textareaEl.getStyle("font-family");b=Ext.String.capitalize(b.split(",")[0]);j=Ext.Array.clone(h.fontFamilies);Ext.Array.include(j,b);j.sort();h.defaultFont=b;k=h.down("#fontSelect").selectEl.dom;for(d=0,g=j.length;d<g;++d){b=j[d];c=b.toLowerCase();e=new Option(b,c);if(b==h.defaultFont){a=d}e.style.fontFamily=c;k.add(e)}k.options[a].selected=true}},afterRender:function(){var b=this,a=b.inputCmp;b.callParent(arguments);b.iframeEl=a.iframeEl;b.textareaEl=a.textareaEl;b.inputEl=b.iframeEl;b.initDefaultFont();b.monitorTask=Ext.TaskManager.start({run:b.checkDesignMode,scope:b,interval:100});b.relayCmd("fontName",b.defaultFont)},initFrameDoc:function(){var b=this,c,a;Ext.TaskManager.stop(b.monitorTask);c=b.getDoc();b.win=b.getWin();c.open();c.write(b.getDocMarkup());c.close();a={run:function(){var d=b.getDoc();if(d.body||d.readyState==="complete"){Ext.TaskManager.stop(a);b.setDesignMode(true);Ext.defer(b.initEditor,10,b)}},interval:10,duration:10000,scope:b};Ext.TaskManager.start(a)},checkDesignMode:function(){var a=this,b=a.getDoc();if(b&&(!b.editorInitialized||a.getDesignMode()!=="on")){a.initFrameDoc()}},setDesignMode:function(c){var a=this,b=a.getDoc();if(b){if(a.readOnly){c=false}b.designMode=/on|true/i.test(String(c).toLowerCase())?"on":"off"}},getDesignMode:function(){var a=this.getDoc();return !a?"":String(a.designMode).toLowerCase()},disableItems:function(d){var b=this.getToolbar().items.items,c,a=b.length,e;for(c=0;c<a;c++){e=b[c];if(e.getItemId()!=="sourceedit"){e.setDisabled(d)}}},toggleSourceEdit:function(b){var g=this,d=g.iframeEl,a=g.textareaEl,e=Ext.baseCSSPrefix+"hidden",c=g.getToolbar().getComponent("sourceedit");if(!Ext.isBoolean(b)){b=!g.sourceEditMode}g.sourceEditMode=b;if(c.pressed!==b){c.toggle(b)}if(b){g.disableItems(true);g.syncValue();d.addCls(e);a.removeCls(e);a.dom.removeAttribute("tabIndex");a.focus();g.inputEl=a}else{if(g.initialized){g.disableItems(g.readOnly)}g.pushValue();d.removeCls(e);a.addCls(e);a.dom.setAttribute("tabIndex",-1);g.deferFocus();g.inputEl=d}g.fireEvent("editmodechange",g,b);g.updateLayout()},createLink:function(){var a=prompt(this.createLinkText,this.defaultLinkValue);if(a&&a!=="http://"){this.relayCmd("createlink",a)}},clearInvalid:Ext.emptyFn,setValue:function(c){var b=this,a=b.textareaEl;b.mixins.field.setValue.call(b,c);if(c===null||c===undefined){c=""}if(a){a.dom.value=c}b.pushValue();return this},cleanHtml:function(a){a=String(a);if(Ext.isWebKit){a=a.replace(/\sclass="(?:Apple-style-span|Apple-tab-span|khtml-block-placeholder)"/gi,"")}if(a.charCodeAt(0)===parseInt(this.defaultValue.replace(/\D/g,""),10)){a=a.substring(1)}return a},syncValue:function(){var e=this,b,g,d,a,c;if(e.initialized){b=e.getEditorBody();d=b.innerHTML;if(Ext.isWebKit){a=b.getAttribute("style");c=a.match(/text-align:(.*?);/i);if(c&&c[1]){d='<div style="'+c[0]+'">'+d+"</div>"}}d=e.cleanHtml(d);if(e.fireEvent("beforesync",e,d)!==false){if(e.textareaEl.dom.value!=d){e.textareaEl.dom.value=d;g=true}e.fireEvent("sync",e,d);if(g){e.checkChange()}}}},getValue:function(){var a=this,b;if(!a.sourceEditMode){a.syncValue()}b=a.rendered?a.textareaEl.dom.value:a.value;a.value=b;return b},pushValue:function(){var b=this,a;if(b.initialized){a=b.textareaEl.dom.value||"";if(!b.activated&&a.length<1){a=b.defaultValue}if(b.fireEvent("beforepush",b,a)!==false){b.getEditorBody().innerHTML=a;if(Ext.isGecko){b.setDesignMode(false);b.setDesignMode(true)}b.fireEvent("push",b,a)}}},deferFocus:function(){this.focus(false,true)},getFocusEl:function(){var a=this,b=a.win;return b&&!a.sourceEditMode?b:a.textareaEl},focus:function(d,b){var c=this,e,a;if(b){if(!c.focusTask){c.focusTask=new Ext.util.DelayedTask(c.focus)}c.focusTask.delay(Ext.isNumber(b)?b:10,null,c,[d,false])}else{if(d){if(c.textareaEl&&c.textareaEl.dom){e=c.textareaEl.dom.value}if(e&&e.length){c.execCmd("selectall",true)}}a=c.getFocusEl();if(a&&(a.isComponent||a.dom)){a.focus()}}return c},initEditor:function(){try{var g=this,d=g.getEditorBody(),b=g.textareaEl.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),j,c;b["background-attachment"]="fixed";d.bgProperties="fixed";Ext.DomHelper.applyStyles(d,b);j=g.getDoc();if(j){try{Ext.EventManager.removeAll(j)}catch(h){}}c=Ext.Function.bind(g.onEditorEvent,g);Ext.EventManager.on(j,{mousedown:c,dblclick:c,click:c,keyup:c,buffer:100});c=g.onRelayedEvent;Ext.EventManager.on(j,{mousedown:c,mousemove:c,mouseup:c,click:c,dblclick:c,scope:g});if(Ext.isGecko){Ext.EventManager.on(j,"keypress",g.applyCommand,g)}if(g.fixKeys){Ext.EventManager.on(j,"keydown",g.fixKeys,g)}if(Ext.isIE8m||Ext.isIE9&&!Ext.isStrict){Ext.EventManager.on(j,"focusout",function(){g.savedSelection=j.selection.type!=="None"?j.selection.createRange():null},g);Ext.EventManager.on(j,"focusin",function(){if(g.savedSelection){g.savedSelection.select()}},g)}Ext.EventManager.onWindowUnload(g.beforeDestroy,g);j.editorInitialized=true;g.initialized=true;g.pushValue();g.setReadOnly(g.readOnly);g.fireEvent("initialize",g)}catch(a){}},beforeDestroy:function(){var a=this,d=a.monitorTask,c,g;if(d){Ext.TaskManager.stop(d)}if(a.rendered){Ext.EventManager.removeUnloadListener(a.beforeDestroy,a);try{c=a.getDoc();if(c){Ext.EventManager.removeAll(Ext.fly(c));for(g in c){if(c.hasOwnProperty&&c.hasOwnProperty(g)){delete c[g]}}}}catch(b){}delete a.iframeEl;delete a.textareaEl;delete a.toolbar;delete a.inputCmp}a.callParent()},onRelayedEvent:function(c){var b=this.iframeEl,d=Ext.Element.getTrueXY(b),e=c.getXY(),a=Ext.EventManager.getPageXY(c.browserEvent);c.xy=[d[0]+a[0],d[1]+a[1]];c.injectEvent(b);c.xy=e},onFirstFocus:function(){var c=this,b,a;c.activated=true;c.disableItems(c.readOnly);if(Ext.isGecko){c.win.focus();b=c.win.getSelection();if(!b.focusNode||b.focusNode.nodeType!==3){a=b.getRangeAt(0);a.selectNodeContents(c.getEditorBody());a.collapse(true);c.deferFocus()}try{c.execCmd("useCSS",true);c.execCmd("styleWithCSS",false)}catch(d){}}c.fireEvent("activate",c)},adjustFont:function(d){var e=d.getItemId()==="increasefontsize"?1:-1,c=this.getDoc().queryCommandValue("FontSize")||"2",a=Ext.isString(c)&&c.indexOf("px")!==-1,b;c=parseInt(c,10);if(a){if(c<=10){c=1+e}else{if(c<=13){c=2+e}else{if(c<=16){c=3+e}else{if(c<=18){c=4+e}else{if(c<=24){c=5+e}else{c=6+e}}}}}c=Ext.Number.constrain(c,1,6)}else{b=Ext.isSafari;if(b){e*=2}c=Math.max(1,c+e)+(b?"px":0)}this.relayCmd("FontSize",c)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){var j=this,e,c,d,k,b,g,a,h;if(j.readOnly){return}if(!j.activated){j.onFirstFocus();return}d=j.getToolbar().items.map;k=j.getDoc();if(j.enableFont&&!Ext.isSafari2){g=k.queryCommandValue("fontName");b=(g?g.split(",")[0].replace(/^'/,"").replace(/'$/,""):j.defaultFont).toLowerCase();a=j.fontSelect.dom;if(b!==a.value||b!=g){a.value=b}}function m(){for(e=0,c=arguments.length,b;e<c;e++){b=arguments[e];d[b].toggle(k.queryCommandState(b))}}if(j.enableFormat){m("bold","italic","underline")}if(j.enableAlignments){m("justifyleft","justifycenter","justifyright")}if(!Ext.isSafari2&&j.enableLists){m("insertorderedlist","insertunorderedlist")}h=j.toolbar.query("menu");for(e=0;e<h.length;e++){h[e].hide()}j.syncValue()},relayBtnCmd:function(a){this.relayCmd(a.getItemId())},relayCmd:function(b,a){Ext.defer(function(){var c=this;if(!this.isDestroyed){c.win.focus();c.execCmd(b,a);c.updateToolbar()}},10,this)},execCmd:function(c,b){var a=this,d=a.getDoc();d.execCommand(c,false,b==undefined?null:b);a.syncValue()},applyCommand:function(d){if(d.ctrlKey){var a=this,g=d.getCharCode(),b;if(g>0){g=String.fromCharCode(g);switch(g){case"b":b="bold";break;case"i":b="italic";break;case"u":b="underline";break}if(b){a.win.focus();a.execCmd(b);a.deferFocus();d.preventDefault()}}}},insertAtCursor:function(c){var b=this,a;if(b.activated){b.win.focus();if(Ext.isIE){a=b.getDoc().selection.createRange();if(a){a.pasteHTML(c);b.syncValue();b.deferFocus()}}else{b.execCmd("InsertHTML",c);b.deferFocus()}}},fixKeys:function(){if(Ext.isIE){return function(h){var c=this,b=h.getKey(),g=c.getDoc(),j=c.readOnly,a,d;if(b===h.TAB){h.stopEvent();if(!j){a=g.selection.createRange();if(a){a.collapse(true);a.pasteHTML("&#160;&#160;&#160;&#160;");c.deferFocus()}}}else{if(b===h.ENTER){if(!j){a=g.selection.createRange();if(a){d=a.parentElement();if(!d||d.tagName.toLowerCase()!=="li"){h.stopEvent();a.pasteHTML("<br />");a.collapse(false);a.select()}}}}}}}if(Ext.isOpera){return function(c){var b=this,a=c.getKey(),d=b.readOnly;if(a===c.TAB){c.stopEvent();if(!d){b.win.focus();b.execCmd("InsertHTML","&#160;&#160;&#160;&#160;");b.deferFocus()}}}}return null}(),getToolbar:function(){return this.toolbar},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:Ext.baseCSSPrefix+"html-editor-tip"}}});Ext.define("Ext.form.field.Radio",{extend:Ext.form.field.Checkbox,alias:["widget.radiofield","widget.radio"],alternateClassName:"Ext.form.Radio",isRadio:true,focusCls:"form-radio-focus",inputType:"radio",ariaRole:"radio",formId:null,getGroupValue:function(){var a=this.getManager().getChecked(this.name,this.getFormId());return a?a.inputValue:null},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(true)}},onRemoved:function(){this.callParent(arguments);this.formId=null},setValue:function(a){var b=this,c;if(Ext.isBoolean(a)){b.callParent(arguments)}else{c=b.getManager().getWithValue(b.name,a,b.getFormId()).getAt(0);if(c){c.setValue(true)}}return b},getSubmitValue:function(){return this.checked?this.inputValue:null},getModelData:function(){return this.getSubmitData()},onChange:function(c,a){var g=this,e,d,b,h;g.callParent(arguments);if(c){h=g.getManager().getByName(g.name,g.getFormId()).items;d=h.length;for(e=0;e<d;e++){b=h[e];if(b!==g){b.setValue(false)}}}},getManager:function(){return Ext.form.RadioManager}});Ext.define("Ext.picker.Time",{extend:Ext.view.BoundList,alias:"widget.timepicker",increment:15,format:"g:i A",displayField:"disp",initDate:[2008,0,1],componentCls:Ext.baseCSSPrefix+"timepicker",loadMask:false,initComponent:function(){var c=this,a=Ext.Date,b=a.clearTime,d=c.initDate;c.absMin=b(new Date(d[0],d[1],d[2]));c.absMax=a.add(b(new Date(d[0],d[1],d[2])),"mi",24*60-1);c.store=c.createStore();c.store.addFilter(c.rangeFilter=new Ext.util.Filter({id:"time-picker-filter"}),false);c.updateList();c.callParent()},setMinValue:function(a){this.minValue=a;this.updateList()},setMaxValue:function(a){this.maxValue=a;this.updateList()},normalizeDate:function(a){var b=this.initDate;a.setFullYear(b[0],b[1],b[2]);return a},updateList:function(){var c=this,b=c.normalizeDate(c.minValue||c.absMin),a=c.normalizeDate(c.maxValue||c.absMax);c.rangeFilter.setFilterFn(function(d){var e=d.get("date");return e>=b&&e<=a});c.store.filter()},createStore:function(){var d=this,c=Ext.Date,e=[],b=d.absMin,a=d.absMax;while(b<=a){e.push({disp:c.dateFormat(b,d.format),date:b});b=c.add(b,"mi",d.increment)}return new Ext.data.Store({fields:["disp","date"],data:e})},focusNode:function(a){return false}});Ext.define("Ext.form.field.Time",{extend:Ext.form.field.ComboBox,alias:"widget.timefield",alternateClassName:["Ext.form.TimeField","Ext.form.Time"],triggerCls:Ext.baseCSSPrefix+"form-time-trigger",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,pickerMaxHeight:300,selectOnTab:true,snapToIncrement:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",ignoreSelection:0,queryMode:"local",displayField:"disp",valueField:"date",initComponent:function(){var c=this,b=c.minValue,a=c.maxValue;if(b){c.setMinValue(b)}if(a){c.setMaxValue(a)}c.displayTpl=new Ext.XTemplate('<tpl for=".">{[typeof values === "string" ? values : this.formatDate(values["'+c.displayField+'"])]}<tpl if="xindex < xcount">'+c.delimiter+"</tpl></tpl>",{formatDate:Ext.Function.bind(c.formatDate,c)});this.callParent()},transformOriginalValue:function(a){if(Ext.isString(a)){return this.rawToValue(a)}return a},isEqual:function(b,a){return Ext.Date.isEqual(b,a)},setMinValue:function(c){var b=this,a=b.picker;b.setLimit(c,true);if(a){a.setMinValue(b.minValue)}},setMaxValue:function(c){var b=this,a=b.picker;b.setLimit(c,false);if(a){a.setMaxValue(b.maxValue)}},setLimit:function(b,g){var a=this,e,c;if(Ext.isString(b)){e=a.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){c=Ext.Date.clearTime(new Date(a.initDate));c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}else{c=null}a[g?"minValue":"maxValue"]=c},rawToValue:function(a){return this.parseDate(a)||a||null},valueToRaw:function(a){return this.formatDate(this.parseDate(a))},getErrors:function(d){var b=this,g=Ext.String.format,h=b.callParent(arguments),c=b.minValue,e=b.maxValue,a;d=b.formatDate(d||b.processRawValue(b.getRawValue()));if(d===null||d.length<1){return h}a=b.parseDate(d);if(!a){h.push(g(b.invalidText,d,Ext.Date.unescapeFormat(b.format)));return h}if(c&&a<c){h.push(g(b.minText,b.formatDate(c)))}if(e&&a>e){h.push(g(b.maxText,b.formatDate(e)))}return h},formatDate:function(){return Ext.form.field.Date.prototype.formatDate.apply(this,arguments)},parseDate:function(e){var d=this,h=e,b=d.altFormats,g=d.altFormatsArray,c=0,a;if(e&&!Ext.isDate(e)){h=d.safeParse(e,d.format);if(!h&&b){g=g||b.split("|");a=g.length;for(;c<a&&!h;++c){h=d.safeParse(e,g[c])}}}if(h&&d.snapToIncrement){h=new Date(Ext.Number.snap(h.getTime(),d.increment*60*1000))}return h},safeParse:function(e,g){var d=this,b=Ext.Date,c,a=null;if(b.formatContainsDateInfo(g)){a=b.parse(e,g)}else{c=b.parse(d.initDate+" "+e,d.initDateFormat+" "+g);if(c){a=c}}return a},getSubmitValue:function(){var a=this,c=a.submitFormat||a.format,b=a.getValue();return b?Ext.Date.format(b,c):null},createPicker:function(){var b=this,a;b.listConfig=Ext.apply({xtype:"timepicker",selModel:{mode:"SINGLE"},cls:undefined,minValue:b.minValue,maxValue:b.maxValue,increment:b.increment,format:b.format,maxHeight:b.pickerMaxHeight},b.listConfig);a=b.callParent();b.bindStore(a.store);return a},onItemClick:function(b,a){var d=this,c=b.getSelectionModel().getSelection();if(c.length>0){c=c[0];if(c&&Ext.Date.isEqual(a.get("date"),c.get("date"))){d.collapse()}}},onListSelectionChange:function(b,d){if(d.length){var a=this,c=d[0].get("date");if(!a.ignoreSelection){a.skipSync=true;a.setValue(c);a.skipSync=false;a.fireEvent("select",a,c);a.picker.clearHighlight();a.collapse();a.inputEl.focus()}}},syncSelection:function(){var k=this,h=k.picker,c,g,l,b,j,e,a;if(h&&!k.skipSync){h.clearHighlight();l=k.getValue();g=h.getSelectionModel();k.ignoreSelection++;if(l===null){g.deselectAll()}else{if(Ext.isDate(l)){b=h.store.data.items;e=b.length;for(j=0;j<e;j++){a=b[j];if(Ext.Date.isEqual(a.get("date"),l)){c=a;break}}g.select(c)}}k.ignoreSelection--}},postBlur:function(){var a=this,b=a.getValue();a.callParent(arguments);if(a.wasValid&&b){a.setRawValue(a.formatDate(b))}},setValue:function(){this.getPicker();return this.callParent(arguments)},getValue:function(){return this.parseDate(this.callParent(arguments))}});Ext.define("Ext.grid.CellEditor",{extend:Ext.Editor,constructor:function(a){a=Ext.apply({},a);if(a.field){a.field.monitorTab=false}this.callParent([a])},onShow:function(){var a=this,d=a.boundEl.first(),b,c;if(d){if(a.isForTree){b=d.child("."+Ext.baseCSSPrefix+"tree-node-text",true);if(b){c=b.firstChild}}else{c=d.dom.lastChild}if(c&&c.nodeType===3){a.cellTextNode=c;a.cellTextValue=c.nodeValue;c.nodeValue=a.emptyText}}a.callParent(arguments)},onHide:function(){var b=this,c=b.boundEl.first(),a=b.cellTextNode;if(c&&a){if(a.nodeValue==b.emptyText){a.nodeValue=b.cellTextValue}delete b.cellTextNode;delete b.cellTextValue}b.callParent(arguments)},afterRender:function(){var a=this,b=a.field;a.callParent(arguments);if(b.isXType("checkboxfield")){b.mon(b.inputEl,{mousedown:a.onCheckBoxMouseDown,click:a.onCheckBoxClick,scope:a})}},onCheckBoxMouseDown:function(){this.completeEdit=Ext.emptyFn},onCheckBoxClick:function(){delete this.completeEdit;this.field.focus(false,10)},realign:function(d){var j=this,g=j.boundEl,h=g.first(),b=h.dom.childNodes,e=b.length,c=Ext.Array.clone(j.offsets),k,a;if(j.isForTree&&(e>1||e===1&&b[0].nodeType!==3)){k=h.child("."+Ext.baseCSSPrefix+"tree-node-text");c[0]=k.getOffsetsTo(h)[0];a=h.getWidth()-c[0];j.addCls(Ext.baseCSSPrefix+"grid-cell-editor-on-text-node")}else{a=g.getWidth()-1}if(d===true){j.field.setWidth(a)}j.alignTo(g,j.alignment,c)},onEditorTab:function(b){var a=this.field;if(a.onEditorTab){a.onEditorTab(b)}},emptyText:"\u00a0",alignment:"tl-tl",hideEl:false,cls:Ext.baseCSSPrefix+"small-editor "+Ext.baseCSSPrefix+"grid-editor "+Ext.baseCSSPrefix+"grid-cell-editor",shim:false,shadow:false});Ext.define("Ext.grid.ColumnComponentLayout",{extend:Ext.layout.component.Auto,alias:"layout.columncomponent",type:"columncomponent",setWidthInDom:true,getContentHeight:function(a){return this.owner.isGroupHeader?a.getProp("contentHeight"):this.callParent(arguments)},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(this.owner.isGroupHeader){a+=this.owner.titleEl.dom.offsetHeight}return a},getContentWidth:function(a){return this.owner.isGroupHeader?a.getProp("contentWidth"):this.callParent(arguments)},calculateOwnerWidthFromContentWidth:function(b,a){return a+b.getPaddingInfo().width}});Ext.define("Ext.grid.ColumnLayout",{extend:Ext.layout.container.HBox,alias:"layout.gridcolumn",type:"gridcolumn",reserveOffset:false,firstHeaderCls:Ext.baseCSSPrefix+"column-header-first",lastHeaderCls:Ext.baseCSSPrefix+"column-header-last",initLayout:function(){this.grid=this.owner.up("[scrollerOwner]");this.callParent()},beginLayout:function(c){var j=this,b=j.owner,a=j.grid,k=a.view,h=j.getVisibleItems(),g=h.length,d=j.firstHeaderCls,m=j.lastHeaderCls,e,l;if(a.lockable){if(b.up("tablepanel")===k.normalGrid){k=k.normalGrid.getView()}else{k=null}}for(e=0;e<g;e++){l=h[e];l.removeCls([d,m]);if(e===0){l.addCls(d)}if(e===g-1){l.addCls(m)}}j.callParent(arguments);if(!b.isHeader&&Ext.getScrollbarSize().width&&!a.collapsed&&k&&k.rendered&&(c.viewTable=k.body.dom)){c.viewContext=c.context.getCmp(k)}},beginLayoutCycle:function(e){this.callParent(arguments);var b=this.getVisibleItems(),a=b.length,c=0,d;for(;c<a;c++){d=b[c];d.el.setStyle({height:"auto"});d.titleEl.setStyle({paddingTop:"",paddingBottom:""})}},roundFlex:function(a){return Math.floor(a)},calculate:function(a){this.callParent(arguments);if(a.state.parallelDone){a.setProp("columnWidthsDone",true)}if(a.viewContext){a.state.tableHeight=a.viewTable.offsetHeight}},completeLayout:function(d){var b=this,a=b.owner,c=d.state;b.callParent(arguments);if(!d.flexedItems.length&&!c.flexesCalculated&&a.forceFit&&!a.isHeader){if(b.convertWidthsToFlexes(d)){b.cacheFlexes(d);d.invalidate({state:{flexesCalculated:true}})}}},convertWidthsToFlexes:function(a){var g=this,d=0,h=g.sizeModels.calculated,c,e,b,k,j;c=a.childItems;e=c.length;for(b=0;b<e;b++){k=c[b];j=k.target;d+=k.props.width;j.flex=a.childItems[b].flex=k.props.width;j.width=null;k.widthModel=h}return d!==a.props.width},finalizeLayout:function(g){var e=this,d=0,c=e.getVisibleItems(),a=c.length,b;b=g.props.height;if(e.owner.isGroupHeader){b-=e.owner.titleEl.dom.offsetHeight}for(;d<a;d++){c[d].setPadding(g.childItems[d],b)}},getContainerSize:function(e){var d=this,a=d.callParent(arguments),c=e.viewContext,b;if(c&&!c.heightModel.shrinkWrap&&c.target.componentLayout.ownerContext){b=c.getProp("height");if(isNaN(b)){d.done=false}else{if(e.state.tableHeight>b){a.width-=Ext.getScrollbarSize().width;e.state.parallelDone=false;c.invalidate()}}}return a},publishInnerCtSize:function(e){var d=this,c=e.state.boxPlan.targetSize,b=e.peek("contentWidth"),a;d.owner.tooNarrow=e.state.boxPlan.tooNarrow;if(b!=null&&!d.owner.isHeader){c.width=b;a=d.owner.ownerCt.view;if(a.scrollFlags.y){c.width+=Ext.getScrollbarSize().width}}return d.callParent(arguments)}});Ext.define("Ext.layout.container.Fit",{extend:Ext.layout.container.Container,alternateClassName:"Ext.layout.FitLayout",alias:"layout.fit",itemCls:Ext.baseCSSPrefix+"fit-item",targetCls:Ext.baseCSSPrefix+"layout-fit",type:"fit",defaultMargins:{top:0,right:0,bottom:0,left:0},manageMargins:true,sizePolicies:{0:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},1:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},2:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},3:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}},getItemSizePolicy:function(b,c){var a=c||this.owner.getSizeModel(),d=(a.width.shrinkWrap?0:1)|(a.height.shrinkWrap?0:2);return this.sizePolicies[d]},beginLayoutCycle:function(k,g){var u=this,w=u.lastHeightModel&&u.lastHeightModel.calculated,h=u.lastWidthModel&&u.lastWidthModel.calculated,o=h||w,l=0,m=0,t,b,p,s,e,a,j,n,q,d;u.callParent(arguments);if(o&&k.targetContext.el.dom.tagName.toUpperCase()!="TD"){o=h=w=false}b=k.childItems;e=b.length;for(p=0;p<e;++p){s=b[p];if(g){t=s.target;j=t.minHeight;n=t.minWidth;if(n||j){a=s.marginInfo||s.getMarginInfo();j+=a.height;n+=a.height;if(l<j){l=j}if(m<n){m=n}}}if(o){q=s.el.dom.style;if(w){q.height=""}if(h){q.width=""}}}if(g){k.maxChildMinHeight=l;k.maxChildMinWidth=m}t=k.target;k.overflowX=!k.widthModel.shrinkWrap&&k.maxChildMinWidth&&t.scrollFlags.x||d;k.overflowY=!k.heightModel.shrinkWrap&&k.maxChildMinHeight&&t.scrollFlags.y||d},calculate:function(g){var o=this,l=g.childItems,d=l.length,c=o.getContainerSize(g),e={length:d,ownerContext:g,targetSize:c},s=g.widthModel.shrinkWrap,m=g.heightModel.shrinkWrap,k=g.overflowX,h=g.overflowY,n,b,p,j,a,q;if(k||h){n=o.getScrollbarsNeeded(k&&c.width,h&&c.height,g.maxChildMinWidth,g.maxChildMinHeight);if(n){b=Ext.getScrollbarSize();if(n&1){c.height-=b.height}if(n&2){c.width-=b.width}}}for(j=0;j<d;++j){e.index=j;o.fitItem(l[j],e)}if(m||s){p=g.targetContext.getPaddingInfo();if(s){if(h&&!c.gotHeight){o.done=false}else{a=e.contentWidth+p.width;if(n&2){a+=b.width}if(!g.setContentWidth(a)){o.done=false}}}if(m){if(k&&!c.gotWidth){o.done=false}else{q=e.contentHeight+p.height;if(n&1){q+=b.height}if(!g.setContentHeight(q)){o.done=false}}}}},fitItem:function(b,c){var a=this;if(b.invalid){a.done=false;return}c.margins=b.getMarginInfo();c.needed=c.got=0;a.fitItemWidth(b,c);a.fitItemHeight(b,c);if(c.got!=c.needed){a.done=false}},fitItemWidth:function(c,d){var a,b;if(d.ownerContext.widthModel.shrinkWrap){b=c.getProp("width")+d.margins.width;a=d.contentWidth;if(a===undefined){d.contentWidth=b}else{d.contentWidth=Math.max(a,b)}}else{if(c.widthModel.calculated){++d.needed;if(d.targetSize.gotWidth){++d.got;this.setItemWidth(c,d)}}}this.positionItemX(c,d)},fitItemHeight:function(c,d){var b,a;if(d.ownerContext.heightModel.shrinkWrap){a=c.getProp("height")+d.margins.height;b=d.contentHeight;if(b===undefined){d.contentHeight=a}else{d.contentHeight=Math.max(b,a)}}else{if(c.heightModel.calculated){++d.needed;if(d.targetSize.gotHeight){++d.got;this.setItemHeight(c,d)}}}this.positionItemY(c,d)},positionItemX:function(a,c){var b=c.margins;if(c.index||b.left){a.setProp("x",b.left)}if(b.width){a.setProp("margin-right",b.width)}},positionItemY:function(a,c){var b=c.margins;if(c.index||b.top){a.setProp("y",b.top)}if(b.height){a.setProp("margin-bottom",b.height)}},setItemHeight:function(a,b){a.setHeight(b.targetSize.height-b.margins.height)},setItemWidth:function(a,b){a.setWidth(b.targetSize.width-b.margins.width)}});Ext.define("Ext.panel.Table",{extend:Ext.panel.Panel,alias:"widget.tablepanel",extraBaseCls:Ext.baseCSSPrefix+"grid",extraBodyCls:Ext.baseCSSPrefix+"grid-body",layout:"fit",hasView:false,viewType:null,selType:"rowmodel",scroll:true,deferRowRender:true,sortableColumns:true,enableLocking:false,scrollerOwner:true,enableColumnMove:true,sealedColumns:false,enableColumnResize:true,rowLines:true,colLinesCls:Ext.baseCSSPrefix+"grid-with-col-lines",rowLinesCls:Ext.baseCSSPrefix+"grid-with-row-lines",hiddenHeaderCtCls:Ext.baseCSSPrefix+"grid-header-ct-hidden",hiddenHeaderCls:Ext.baseCSSPrefix+"grid-header-hidden",resizeMarkerCls:Ext.baseCSSPrefix+"grid-resize-marker",emptyCls:Ext.baseCSSPrefix+"grid-empty",initComponent:function(){var e=this,g=e.columns||e.colModel,b,d,a,c=e.store=Ext.data.StoreManager.lookup(e.store||"ext-empty-store");if(e.columnLines){e.addCls(e.colLinesCls)}if(e.rowLines){e.addCls(e.rowLinesCls)}if(g instanceof Ext.grid.header.Container){e.headerCt=g;e.headerCt.isRootHeader=true;e.columns=e.headerCt.items.items}else{if(Ext.isArray(g)){g={items:g}}Ext.apply(g,{forceFit:e.forceFit,sortable:e.sortableColumns,enableColumnMove:e.enableColumnMove,enableColumnResize:e.enableColumnResize,sealed:e.sealedColumns,isRootHeader:true});if(Ext.isDefined(e.enableColumnHide)){g.enableColumnHide=e.enableColumnHide}e.columns=g.items;if(e.enableLocking||e.hasLockedColumns(e.columns)){e.self.mixin("lockable",Ext.grid.locking.Lockable);e.injectLockable()}}e.scrollTask=new Ext.util.DelayedTask(e.syncHorizontalScroll,e);e.addEvents("reconfigure","viewready");e.bodyCls=e.bodyCls||"";e.bodyCls+=" "+e.extraBodyCls;e.cls=e.cls||"";e.cls+=" "+e.extraBaseCls;delete e.autoScroll;if(!e.hasView){if(!e.headerCt){e.headerCt=new Ext.grid.header.Container(g)}e.columns=e.headerCt.items.items;if(c.buffered&&!c.remoteSort){for(d=0,a=e.columns.length;d<a;d++){e.columns[d].sortable=false}}if(e.hideHeaders){e.headerCt.height=0;e.headerCt.hiddenHeaders=true;e.headerCt.addCls(e.hiddenHeaderCtCls);e.addCls(e.hiddenHeaderCls);if(Ext.isIEQuirks){e.headerCt.style={display:"none"}}}e.relayHeaderCtEvents(e.headerCt);e.features=e.features||[];if(!Ext.isArray(e.features)){e.features=[e.features]}e.dockedItems=[].concat(e.dockedItems||[]);e.dockedItems.unshift(e.headerCt);e.viewConfig=e.viewConfig||{};b=e.getView();e.items=[b];e.hasView=true;if(!e.hideHeaders){b.on({scroll:{fn:e.onHorizontalScroll,element:"el",scope:e}})}e.bindStore(c,true);e.mon(b,{viewready:e.onViewReady,refresh:e.onRestoreHorzScroll,scope:e})}e.relayEvents(e.view,["beforeitemmousedown","beforeitemmouseup","beforeitemmouseenter","beforeitemmouseleave","beforeitemclick","beforeitemdblclick","beforeitemcontextmenu","itemmousedown","itemmouseup","itemmouseenter","itemmouseleave","itemclick","itemdblclick","itemcontextmenu","beforecellclick","cellclick","beforecelldblclick","celldblclick","beforecellcontextmenu","cellcontextmenu","beforecellmousedown","cellmousedown","beforecellmouseup","cellmouseup","beforecellkeydown","cellkeydown","beforecontainermousedown","beforecontainermouseup","beforecontainermouseover","beforecontainermouseout","beforecontainerclick","beforecontainerdblclick","beforecontainercontextmenu","containermouseup","containermouseover","containermouseout","containerclick","containerdblclick","containercontextmenu","selectionchange","beforeselect","select","beforedeselect","deselect"]);e.callParent(arguments);e.addStateEvents(["columnresize","columnmove","columnhide","columnshow","sortchange","filterchange"]);if(!e.lockable&&e.headerCt){e.headerCt.on("afterlayout",e.onRestoreHorzScroll,e)}},hasLockedColumns:function(c){var b,a=c.length,d;for(b=0;b<a;b++){d=c[b];if(!d.processed&&d.locked){return true}}},relayHeaderCtEvents:function(a){this.relayEvents(a,["columnresize","columnmove","columnhide","columnshow","columnschanged","sortchange","headerclick","headercontextmenu","headertriggerclick"])},getState:function(){var b=this,c=b.callParent(),a=b.store.getState();c=b.addPropertyToState(c,"columns",b.headerCt.getColumnsState());if(a){c.storeState=a}return c},applyState:function(e){var d=this,g=e.sort,a=e.storeState,b=d.store,c=e.columns;delete e.columns;d.callParent(arguments);if(c){d.headerCt.applyColumnsState(c)}if(g){if(b.remoteSort){b.sort({property:g.property,direction:g.direction,root:g.root},null,false)}else{b.sort(g.property,g.direction)}}else{if(a){b.applyState(a)}}},getStore:function(){return this.store},getView:function(){var a=this,b;if(!a.view){b=a.getSelectionModel();Ext.widget(Ext.apply({grid:a,deferInitialRefresh:a.deferRowRender!==false,trackOver:a.trackMouseOver!==false,scroll:a.scroll,xtype:a.viewType,store:a.store,headerCt:a.headerCt,selModel:b,features:a.features,panel:a,emptyText:a.emptyText||""},a.viewConfig));if(a.view.emptyText){a.view.emptyText='<div class="'+a.emptyCls+'">'+a.view.emptyText+"</div>"}a.view.getComponentLayout().headerCt=a.headerCt;a.mon(a.view,{uievent:a.processEvent,scope:a});b.view=a.view;a.headerCt.view=a.view}return a.view},setAutoScroll:Ext.emptyFn,processEvent:function(g,b,a,c,d,j){var h=this,k;if(d!==-1){k=h.headerCt.getGridColumns()[d];return k.processEvent.apply(k,arguments)}},determineScrollbars:function(){},invalidateScroller:function(){},scrollByDeltaY:function(b,a){this.getView().scrollBy(0,b,a)},scrollByDeltaX:function(b,a){this.getView().scrollBy(b,0,a)},afterCollapse:function(){var a=this;a.saveScrollPos();a.saveScrollPos();a.callParent(arguments)},afterExpand:function(){var a=this;a.callParent(arguments);a.restoreScrollPos();a.restoreScrollPos()},saveScrollPos:Ext.emptyFn,restoreScrollPos:Ext.emptyFn,onHeaderResize:function(){this.delayScroll()},onHeaderMove:function(e,g,a,b,d){var c=this;if(c.optimizedColumnMove===false){c.view.refresh()}else{c.view.moveColumn(b,d,a)}c.delayScroll()},onHeaderHide:function(a,b){this.delayScroll()},onHeaderShow:function(a,b){this.delayScroll()},delayScroll:function(){var a=this.getScrollTarget().el;if(a){this.scrollTask.delay(10,null,null,[a.dom.scrollLeft])}},onViewReady:function(){this.fireEvent("viewready",this)},onRestoreHorzScroll:function(){var a=this.scrollLeftPos;if(a){this.syncHorizontalScroll(a,true)}},getScrollerOwner:function(){var a=this;if(!this.scrollerOwner){a=this.up("[scrollerOwner]")}return a},getLhsMarker:function(){var a=this;return a.lhsMarker||(a.lhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getRhsMarker:function(){var a=this;return a.rhsMarker||(a.rhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getSelectionModel:function(){var c=this,a=c.selModel,e,d,b;if(!a){a={};e=true}if(!a.events){b=a.selType||c.selType;e=!a.mode;a=c.selModel=Ext.create("selection."+b,a)}if(c.simpleSelect){d="SIMPLE"}else{if(c.multiSelect){d="MULTI"}}Ext.applyIf(a,{allowDeselect:c.allowDeselect});if(d&&e){a.setSelectionMode(d)}if(!a.hasRelaySetup){c.relayEvents(a,["selectionchange","beforeselect","beforedeselect","select","deselect"]);a.hasRelaySetup=true}if(c.disableSelection){a.locked=true}return a},getScrollTarget:function(){var a=this.getScrollerOwner(),b=a.query("tableview");return b[1]||b[0]},onHorizontalScroll:function(a,b){this.syncHorizontalScroll(b.scrollLeft)},syncHorizontalScroll:function(d,b){var c=this,a;b=b===true;if(c.rendered&&(b||d!==c.scrollLeftPos)){if(b){a=c.getScrollTarget();a.el.dom.scrollLeft=d}c.headerCt.el.dom.scrollLeft=d;c.scrollLeftPos=d}},onStoreLoad:Ext.emptyFn,getEditorParent:function(){return this.body},bindStore:function(b,c){var d=this,a=d.getView(),e=b&&b.buffered,g;d.store=b;if(a.store!==b){if(c){a.bindStore(b,false,"dataSource")}else{a.bindStore(b,false)}}d.mon(b,{load:d.onStoreLoad,scope:d});d.storeRelayers=d.relayEvents(b,["filterchange"]);g=d.findPlugin("bufferedrenderer");if(g){d.verticalScroller=g;if(g.store){g.bindStore(b)}}else{if(e){d.verticalScroller=g=d.addPlugin(Ext.apply({ptype:"bufferedrenderer"},d.initialConfig.verticalScroller))}}if(g){d.invalidateScrollerOnRefresh=false}if(d.invalidateScrollerOnRefresh!==undefined){a.preserveScrollOnRefresh=!d.invalidateScrollerOnRefresh}},unbindStore:function(){var b=this,a=b.store;if(a){b.store=null;b.mun(a,{load:b.onStoreLoad,scope:b});Ext.destroy(b.storeRelayers)}},reconfigure:function(b,e){var g=this,a=g.getView(),d,j=g.store,h=g.headerCt,c=h?h.items.getRange():g.columns;if(e){e=Ext.Array.slice(e);delete a.tpl}g.fireEvent("beforereconfigure",g,b,e,j,c);if(g.lockable){g.reconfigureLockable(b,e)}else{Ext.suspendLayouts();if(e){delete g.scrollLeftPos;h.removeAll();h.add(e)}if(b&&b!==j){if(g.store){g.unbindStore()}b=Ext.StoreManager.lookup(b);d=a.deferInitialRefresh;a.deferInitialRefresh=false;g.bindStore(b);a.deferInitialRefresh=d}else{g.getView().refresh()}h.setSortState();Ext.resumeLayouts(true)}g.fireEvent("reconfigure",g,b,e,j,c)},beforeDestroy:function(){var a=this.scrollTask;if(a){a.cancel();this.scrollTask=null}this.callParent()},onDestroy:function(){if(this.lockable){this.destroyLockable()}this.callParent()}});Ext.define("Ext.util.CSS",function(){var c,e=null,d=document,b=/(-[a-z])/gi,a=function(g,h){return h.charAt(1).toUpperCase()};return{singleton:true,rules:e,initialized:false,constructor:function(){c=this},createStyleSheet:function(j,m){var h,g=d.getElementsByTagName("head")[0],l=d.createElement("style");l.setAttribute("type","text/css");if(m){l.setAttribute("id",m)}if(Ext.isIE){g.appendChild(l);h=l.styleSheet;h.cssText=j}else{try{l.appendChild(d.createTextNode(j))}catch(k){l.cssText=j}g.appendChild(l);h=l.styleSheet?l.styleSheet:l.sheet||d.styleSheets[d.styleSheets.length-1]}c.cacheStyleSheet(h);return h},removeStyleSheet:function(h){var g=d.getElementById(h);if(g){g.parentNode.removeChild(g)}},swapStyleSheet:function(j,g){var h;c.removeStyleSheet(j);h=d.createElement("link");h.setAttribute("rel","stylesheet");h.setAttribute("type","text/css");h.setAttribute("id",j);h.setAttribute("href",g);d.getElementsByTagName("head")[0].appendChild(h)},refreshCache:function(){return c.getRules(true)},cacheStyleSheet:function(m){if(!e){e=c.rules={}}try{var p=m.cssRules||m.rules,l=p.length-1,h=m.imports,g=h?h.length:0,o,k;for(k=0;k<g;++k){c.cacheStyleSheet(h[k])}for(;l>=0;--l){o=p[l];if(o.styleSheet){c.cacheStyleSheet(o.styleSheet)}c.cacheRule(o,m)}}catch(n){}},cacheRule:function(h,m){if(h.styleSheet){return c.cacheStyleSheet(h.styleSheet)}var l=h.selectorText,k,g;if(l){l=l.split(",");k=l.length;for(g=0;g<k;g++){e[Ext.String.trim(l[g]).toLowerCase()]={parentStyleSheet:m,cssRule:h}}}},getRules:function(j){var h={},g;if(e===null||j){c.refreshCache()}for(g in e){h[g]=e[g].cssRule}return h},refreshCache:function(){var j=d.styleSheets,h=0,g=j.length;e=c.rules={};for(;h<g;h++){try{if(!j[h].disabled){c.cacheStyleSheet(j[h])}}catch(k){}}},getRule:function(h,k,j){var l,g;if(!e||k){c.refreshCache()}if(!Ext.isArray(h)){g=e[h.toLowerCase()];if(g&&!j){g=g.cssRule}return g||null}for(l=0;l<h.length;l++){if(e[h[l]]){return j?e[h[l].toLowerCase()]:e[h[l].toLowerCase()].cssRule}}return null},createRule:function(m,h,k){var g,l=m.cssRules||m.rules,j=l.length;if(m.insertRule){m.insertRule(h+"{"+k+"}",j)}else{m.addRule(h,k||" ")}c.cacheRule(g=l[j],m);return g},updateRule:function(g,l,k){var m,h,j;if(!Ext.isArray(g)){m=c.getRule(g);if(m){if(arguments.length==2){j=Ext.Element.parseStyles(l);for(l in j){m.style[l.replace(b,a)]=j[l]}}else{m.style[l.replace(b,a)]=k}return true}}else{for(h=0;h<g.length;h++){if(c.updateRule(g[h],l,k)){return true}}}return false},deleteRule:function(g){var j=c.getRule(g,false,true),k,h;if(j){k=j.parentStyleSheet;h=Ext.Array.indexOf(k.cssRules||k.rules,j.cssRule);if(k.deleteRule){k.deleteRule(h)}else{k.removeRule(h)}delete e[g]}}}});Ext.define("Ext.view.TableLayout",{extend:Ext.layout.component.Auto,alias:["layout.tableview"],type:"tableview",beginLayout:function(d){var c=this,b=c.owner.lockingPartner,a=c.owner;c.callParent(arguments);if(b){c.lockedGrid=c.owner.up("[lockable]");c.lockedGrid.needsRowHeightSync=true;if(!d.lockingPartner){d.lockingPartner=d.context.getItem(b,b.el);if(d.lockingPartner&&!d.lockingPartner.lockingPartner){d.lockingPartner.lockingPartner=d}}}d.headerContext=d.context.getCmp(c.headerCt);if(c.owner.body.dom){d.bodyContext=d.getEl(c.owner.body)}if(Ext.isWebKit){a.el.select(a.getBodySelector()).setStyle("table-layout","auto")}},calculate:function(d){var c=this,a=c.lockingPartner,b;if(d.headerContext.hasProp("columnWidthsDone")){c.setColumnWidths(d);d.state.columnWidthsSynced=true;if(d.bodyContext){d.bodyContext.setHeight(b=d.bodyContext.el.dom.offsetHeight,false);d.setProp("contentHeight",b)}if(a&&!a.state.columnWidthsSynced){c.done=false}else{c.callParent(arguments)}}else{c.done=false}},measureContentHeight:function(b){var a=b.lockingPartner;if(!b.bodyContext||b.state.columnWidthsSynced&&(!a||a.state.columnWidthsSynced)){return this.callParent(arguments)}},setColumnWidths:function(c){var m=this,b=m.owner,a=c.context,e=m.headerCt.getGridColumns(),d,j=0,l=e.length,k=0,h,g=!Ext.isBorderBox;if(a){a.currentLayout=m}for(j=0;j<l;j++){d=e[j];if(d.hidden||d.hiddenAncestor){h=0}else{h=a.getCmp(d).props.width;k+=h;if(g){h-=a.getCmp(d).borderInfo.width}}b.body.select(b.getColumnSizerSelector(d)).setWidth(h)}b.el.select(b.getBodySelector()).setWidth(k)},finishedLayout:function(){var b=this,a=b.owner;b.callParent(arguments);if(Ext.isWebKit){a.el.select(a.getBodySelector()).setStyle("table-layout","")}if(a.refreshCounter&&b.lockedGrid&&b.lockedGrid.syncRowHeight&&b.lockedGrid.needsRowHeightSync){b.lockedGrid.syncRowHeights();b.lockedGrid.needsRowHeightSync=false}}});Ext.define("Ext.view.NodeCache",{constructor:function(a){this.view=a;this.clear();this.el=new Ext.dom.AbstractElement.Fly},clear:function(e){var c=this,d=this.elements,a,b;if(e){for(a in d){b=d[a];b.parentNode.removeChild(b)}}c.elements={};c.count=c.startIndex=0;c.endIndex=-1},fill:function(b,g){var d=this,e=d.elements={},c,a=b.length;if(!g){g=0}for(c=0;c<a;c++){e[g+c]=b[c]}d.startIndex=g;d.endIndex=g+a-1;d.count=a;return this},insert:function(g,b){var d=this,e=d.elements,c,a=b.length;if(d.count){if(g<d.count){for(c=d.endIndex+a;c>=g+a;c--){e[c]=e[c-a];e[c].setAttribute("data-recordIndex",c)}}d.endIndex=d.endIndex+a}else{d.startIndex=g;d.endIndex=g+a-1}for(c=0;c<a;c++,g++){e[g]=b[c];e[g].setAttribute("data-recordIndex",g)}d.count+=a},item:function(c,b){var d=this.elements[c],a=null;if(d){a=b?this.elements[c]:this.el.attach(this.elements[c])}return a},first:function(a){return this.item(this.startIndex,a)},last:function(a){return this.item(this.endIndex,a)},getCount:function(){return this.count},slice:function(e,b){var d=this.elements,a=[],c;if(arguments.length<2){b=this.endIndex}else{b=Math.min(this.endIndex,b-1)}for(c=e||this.startIndex;c<=b;c++){a.push(d[c])}return a},replaceElement:function(d,c,a){var e=this.elements,b=typeof d==="number"?d:this.indexOf(d);if(b>-1){c=Ext.getDom(c);if(a){d=e[b];d.parentNode.insertBefore(c,d);Ext.removeNode(d);c.setAttribute("data-recordIndex",b)}this.elements[b]=c}return this},indexOf:function(b){var c=this.elements,a;b=Ext.getDom(b);for(a=this.startIndex;a<=this.endIndex;a++){if(c[a]===b){return a}}return -1},removeRange:function(b,g,d){var j=this,a=j.elements,e,h,c,k;if(g===undefined){g=j.count}else{g=Math.min(j.endIndex+1,g+1)}if(!b){b=0}c=g-b;for(h=b,k=g;h<j.endIndex;h++,k++){if(d&&h<g){Ext.removeNode(a[h])}if(k<=j.endIndex){e=a[h]=a[k];e.setAttribute("data-recordIndex",h)}else{delete a[h]}}j.count-=c;j.endIndex-=c},removeElement:function(k,c){var h=this,a=h.elements,d,e,b=0,g,j;if(Ext.isArray(k)){e=k.length;for(b=0;b<e;b++){if(typeof k[b]!=="number"){k[b]=h.indexOf(k[b])}}Ext.Array.sort(k)}else{e=1;k=[k]}for(g=j=k[0],b=0;g<=h.endIndex;g++,j++){if(b<e&&g===k[b]){j++;b++;if(c){Ext.removeNode(a[g])}}if(j<=h.endIndex&&j>=h.startIndex){d=a[g]=a[j];d.setAttribute("data-recordIndex",g)}else{delete a[g]}}h.endIndex-=e;h.count-=e},scroll:function(e,l,c){var k=this,a=k.elements,n=e.length,h,d,b,g,j=k.view.getNodeContainer(),m=document.createDocumentFragment();if(l==-1){for(h=k.endIndex-c+1;h<=k.endIndex;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}k.endIndex-=c;g=k.view.bufferRender(e,k.startIndex-=n);for(h=0;h<n;h++){a[k.startIndex+h]=g[h];m.appendChild(g[h])}j.insertBefore(m,j.firstChild)}else{b=k.startIndex+c;for(h=k.startIndex;h<b;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}k.startIndex=h;g=k.view.bufferRender(e,k.endIndex+1);for(h=0;h<n;h++){a[k.endIndex+=1]=g[h];m.appendChild(g[h])}j.appendChild(m)}k.count=k.endIndex-k.startIndex+1}});Ext.define("Ext.view.Table",{extend:Ext.view.View,alias:"widget.tableview",componentLayout:"tableview",baseCls:Ext.baseCSSPrefix+"grid-view",firstCls:Ext.baseCSSPrefix+"grid-cell-first",lastCls:Ext.baseCSSPrefix+"grid-cell-last",headerRowSelector:"tr."+Ext.baseCSSPrefix+"grid-header-row",selectedItemCls:Ext.baseCSSPrefix+"grid-row-selected",selectedCellCls:Ext.baseCSSPrefix+"grid-cell-selected",focusedItemCls:Ext.baseCSSPrefix+"grid-row-focused",overItemCls:Ext.baseCSSPrefix+"grid-row-over",altRowCls:Ext.baseCSSPrefix+"grid-row-alt",dirtyCls:Ext.baseCSSPrefix+"grid-dirty-cell",rowClsRe:new RegExp("(?:^|\\s*)"+Ext.baseCSSPrefix+"grid-row-(first|last|alt)(?:\\s+|$)","g"),cellRe:new RegExp(Ext.baseCSSPrefix+"grid-cell-([^\\s]+) ",""),positionBody:true,trackOver:true,getRowClass:null,stripeRows:true,markDirty:true,tpl:"{%values.view.tableTpl.applyOut(values, out)%}",tableTpl:['<table id="{view.id}-table" class="'+Ext.baseCSSPrefix+"{view.id}-table "+Ext.baseCSSPrefix+'grid-table" border="0" cellspacing="0" cellpadding="0" style="{tableStyle}" tabIndex="-1">',"{[values.view.renderColumnSizer(out)]}","{[values.view.renderTHead(values, out)]}","{[values.view.renderTFoot(values, out)]}",'<tbody id="{view.id}-body">',"{%","values.view.renderRows(values.rows, values.viewStartIndex, out);","%}","</tbody>","</table>",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'<tr {[values.rowId ? ("id=\\"" + values.rowId + "\\"") : ""]} ','data-boundView="{view.id}" ','data-recordId="{record.internalId}" ','data-recordIndex="{recordIndex}" ','class="{[values.itemClasses.join(" ")]} {[values.rowClasses.join(" ")]}{[dataRowCls]}" ','{rowAttr:attributes} tabIndex="-1">','<tpl for="columns">{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","</tpl>","</tr>",{priority:0}],cellTpl:['<td class="{tdCls}" {tdAttr}>','<div {unselectableAttr} class="'+Ext.baseCSSPrefix+'grid-cell-inner"','style="text-align:{align};<tpl if="style">{style}</tpl>">{value}</div>',"</td>",{priority:0}],refreshSelmodelOnRefresh:false,tableValues:{},rowValues:{itemClasses:[],rowClasses:[]},cellValues:{classes:[Ext.baseCSSPrefix+"grid-cell "+Ext.baseCSSPrefix+"grid-td"]},renderBuffer:document.createElement("div"),constructor:function(a){if(a.grid.isTree){a.baseCls=Ext.baseCSSPrefix+"tree-view"}this.callParent([a])},initComponent:function(){var b=this,a=b.scroll;this.addEvents("beforecellclick","cellclick","beforecelldblclick","celldblclick","beforecellcontextmenu","cellcontextmenu","beforecellmousedown","cellmousedown","beforecellmouseup","cellmouseup","beforecellkeydown","cellkeydown");b.body=new Ext.dom.Element.Fly;b.body.id=b.id+"gridBody";b.autoScroll=undefined;if(!b.trackOver){b.overItemCls=null}if(a===true||a==="both"){b.autoScroll=true}else{if(a==="horizontal"){b.overflowX="auto"}else{if(a==="vertical"){b.overflowY="auto"}}}b.selModel.view=b;b.headerCt.view=b;b.grid.view=b;b.initFeatures(b.grid);delete b.grid;b.tpl=b.getTpl("tpl");b.itemSelector=b.getItemSelector();b.all=new Ext.view.NodeCache(b);b.callParent()},moveColumn:function(a,o,d){var n=this,l=d>1?document.createDocumentFragment():undefined,c=o,p=n.getGridColumns().length,h=p-1,b=(n.firstCls||n.lastCls)&&(o===0||o==p||a===0||a==h),g,e,t,k,m,s,q;if(n.rendered&&o!==a){t=n.el.query(n.getDataRowSelector());if(o>a&&l){c-=d}for(g=0,k=t.length;g<k;g++){m=t[g];s=m.childNodes;if(b){if(s.length===1){Ext.fly(s[0]).addCls(n.firstCls);Ext.fly(s[0]).addCls(n.lastCls);continue}if(a===0){Ext.fly(s[0]).removeCls(n.firstCls);Ext.fly(s[1]).addCls(n.firstCls)}else{if(a===h){Ext.fly(s[h]).removeCls(n.lastCls);Ext.fly(s[h-1]).addCls(n.lastCls)}}if(o===0){Ext.fly(s[0]).removeCls(n.firstCls);Ext.fly(s[a]).addCls(n.firstCls)}else{if(o===p){Ext.fly(s[h]).removeCls(n.lastCls);Ext.fly(s[a]).addCls(n.lastCls)}}}if(l){for(e=0;e<d;e++){l.appendChild(s[a])}m.insertBefore(l,s[c]||null)}else{m.insertBefore(s[a],s[c]||null)}}q=n.el.query(n.getBodySelector());for(g=0,k=q.length;g<k;g++){m=q[g];if(l){for(e=0;e<d;e++){l.appendChild(m.childNodes[a])}m.insertBefore(l,m.childNodes[c]||null)}else{m.insertBefore(m.childNodes[a],m.childNodes[c]||null)}}}},scrollToTop:Ext.emptyFn,addElListener:function(a,c,b){this.mon(this,a,c,b,{element:"el"})},getGridColumns:function(){return this.headerCt.getGridColumns()},getHeaderAtIndex:function(a){return this.headerCt.getHeaderAtIndex(a)},getCell:function(a,b){var c=this.getNode(a,true);return Ext.fly(c).down(b.getCellSelector())},getFeature:function(b){var a=this.featuresMC;if(a){return a.get(b)}},findFeature:function(a){if(this.features){return Ext.Array.findBy(this.features,function(b){if(b.ftype===a){return true}})}},initFeatures:function(d){var g=this,c,e,b,a;g.tableTpl=Ext.XTemplate.getTpl(this,"tableTpl");g.rowTpl=Ext.XTemplate.getTpl(this,"rowTpl");g.cellTpl=Ext.XTemplate.getTpl(this,"cellTpl");g.featuresMC=new Ext.util.MixedCollection;e=g.features=g.constructFeatures();a=e?e.length:0;for(c=0;c<a;c++){b=e[c];b.view=g;b.grid=d;g.featuresMC.add(b);b.init(d)}},renderTHead:function(b,c){var e=b.view.headerFns,a,d;if(e){for(d=0,a=e.length;d<a;++d){e[d].call(this,b,c)}}},addHeaderFn:function(){var a=this.headerFns;if(!a){a=this.headerFns=[]}a.push(fn)},renderTFoot:function(b,c){var e=b.view.footerFns,a,d;if(e){for(d=0,a=e.length;d<a;++d){e[d].call(this,b,c)}}},addFooterFn:function(a){var b=this.footerFns;if(!b){b=this.footerFns=[]}b.push(a)},addTableTpl:function(a){return this.addTpl("tableTpl",a)},addRowTpl:function(a){return this.addTpl("rowTpl",a)},addCellTpl:function(a){return this.addTpl("cellTpl",a)},addTpl:function(e,d){var c=this,a,b;d=Ext.Object.chain(d);if(!d.isTemplate){d.applyOut=c.tplApplyOut}for(a=c[e];d.priority<a.priority;a=a.nextTpl){b=a}if(b){b.nextTpl=d}else{c[e]=d}d.nextTpl=a;return d},tplApplyOut:function(a,b){if(this.before){if(this.before(a,b)===false){return}}this.nextTpl.applyOut(a,b);if(this.after){this.after(a,b)}},constructFeatures:function(){var g=this,e=g.features,d,b,c=0,a;if(e){b=[];a=e.length;for(;c<a;c++){d=e[c];if(!d.isFeature){d=Ext.create("feature."+d.ftype,d)}b[c]=d}}return b},beforeRender:function(){var a=this;a.callParent();if(!a.enableTextSelection){a.protoEl.unselectable()}},onViewScroll:function(b,a){this.callParent(arguments);this.fireEvent("bodyscroll",b,a)},createRowElement:function(a,b){var c=this,d=c.renderBuffer;c.tpl.overwrite(d,c.collectData([a],b));return Ext.fly(d).down(c.getNodeContainerSelector(),true).firstChild},bufferRender:function(a,b){var c=this,d=c.renderBuffer;c.tpl.overwrite(d,c.collectData(a,b));return Ext.Array.toArray(Ext.fly(d).down(c.getNodeContainerSelector(),true).childNodes)},collectData:function(a,b){this.rowValues.view=this;return{view:this,rows:a,viewStartIndex:b,tableStyle:this.bufferedRenderer?"position:absolute;top:"+this.bufferedRenderer.bodyTop:""}},collectNodes:function(a){this.all.fill(this.getNodeContainer().childNodes,this.all.startIndex)},refreshSize:function(){var c=this,b,a=c.getBodySelector();if(a){c.body.attach(c.el.child(a,true))}if(!c.hasLoadingHeight){b=c.up("tablepanel");Ext.suspendLayouts();c.callParent();b.updateLayout();Ext.resumeLayouts(true)}},statics:{getBoundView:function(a){return Ext.getCmp(a.getAttribute("data-boundView"))}},getRecord:function(b){b=this.getNode(b);if(b){var a=b.getAttribute("data-recordIndex");if(a){a=parseInt(a,10);if(a>-1){return this.store.data.getAt(a)}}return this.dataSource.data.get(b.getAttribute("data-recordId"))}},indexOf:function(a){a=this.getNode(a,false);if(!a&&a!==0){return -1}return this.all.indexOf(a)},indexInStore:function(b){b=this.getNode(b,true);if(!b&&b!==0){return -1}var a=b.getAttribute("data-recordIndex");if(a){return parseInt(a,10)}return this.dataSource.indexOf(this.getRecord(b))},renderRows:function(e,d,b){var g=this.rowValues,a=e.length,h=this.getHeaderCt(),c;g.view=this;g.columns=h.getGridColumns();g.visibleColumns=h.getVisibleGridColumns();for(c=0;c<a;c++,d++){g.itemClasses.length=g.rowClasses.length=0;this.renderRow(e[c],d,b)}g.view=g.columns=g.visibleColumns=g.record=null},renderColumnSizer:function(b){var d=this.getGridColumns(),a=d.length,c,g,e;for(c=0;c<a;c++){g=d[c];e=g.hidden?0:g.lastBox?g.lastBox.width:Ext.grid.header.Container.prototype.defaultWidth;b.push('<colgroup><col class="',Ext.baseCSSPrefix,"grid-cell-",d[c].getItemId(),'" style="width:'+e+'px"></colgroup>')}},renderRow:function(g,a,e){var j=this,d=a===-1,h=j.selModel,m=j.rowValues,c=m.itemClasses,b=m.rowClasses,l,k=j.rowTpl;m.record=g;m.recordId=g.internalId;m.recordIndex=a;m.rowId=j.getRowId(g);m.itemCls=m.rowCls="";if(!m.columns){m.columns=j.headerCt.getGridColumns()}c.length=b.length=0;if(!d){c[0]=Ext.baseCSSPrefix+"grid-row";if(h&&h.isRowSelected&&h.isRowSelected(g,a)){c.push(j.selectedItemCls)}if(j.stripeRows&&a%2!==0){b.push(j.altRowCls)}if(j.getRowClass){l=j.getRowClass(g,a,null,j.dataSource);if(l){b.push(l)}}}if(e){k.applyOut(m,e)}else{return k.apply(m)}},renderCell:function(c,g,e,j,d){var l=this,h=l.selModel,k=l.cellValues,b=k.classes,a=g.data[c.dataIndex],n=l.cellTpl,o,m;k.record=g;k.column=c;k.recordIndex=e;k.columnIndex=j;k.cellIndex=j;k.align=c.align;k.tdCls=c.tdCls;k.style=k.tdAttr="";k.unselectableAttr=l.enableTextSelection?"":'unselectable="on"';if(c.renderer&&c.renderer.call){o=c.renderer.call(c.scope||l.ownerCt,a,k,g,e,j,l.dataSource,l);if(k.css){g.cssWarning=true;k.tdCls+=" "+k.css;delete k.css}}else{o=a}k.value=o==null||o===""?"&#160;":o;b[1]=Ext.baseCSSPrefix+"grid-cell-"+c.getItemId();m=2;if(c.tdCls){b[m++]=c.tdCls}if(l.markDirty&&g.isModified(c.dataIndex)){b[m++]=l.dirtyCls}if(c.isFirstVisible){b[m++]=l.firstCls}if(c.isLastVisible){b[m++]=l.lastCls}if(!l.enableTextSelection){b[m++]=Ext.baseCSSPrefix+"unselectable"}b[m++]=k.tdCls;if(h&&h.isCellSelected&&h.isCellSelected(l,e,j)){b[m++]=l.selectedCellCls}b.length=m;k.tdCls=b.join(" ");n.applyOut(k,d);k.column=null},getNode:function(c,b){var d,a=this.callParent(arguments);if(a&&a.tagName){if(b){if(!(d=Ext.fly(a)).is(this.dataRowSelector)){return d.down(this.dataRowSelector,true)}}else{if(b===false){if(!(d=Ext.fly(a)).is(this.itemSelector)){return d.up(this.itemSelector,null,true)}}}}return a},getRowId:function(a){return this.id+"-record-"+a.internalId},constructRowId:function(a){return this.id+"-record-"+a},getNodeById:function(b,a){b=this.constructRowId(b);return this.retrieveNode(b,a)},getNodeByRecord:function(a,b){var c=this.getRowId(a);return this.retrieveNode(c,b)},retrieveNode:function(e,c){var a=this.el.getById(e,true),b=this.itemSelector,d;if(c===false&&a){if(!(d=Ext.fly(a)).is(b)){return d.up(b,null,true)}}return a},updateIndexes:Ext.emptyFn,bodySelector:"table",nodeContainerSelector:"tbody",itemSelector:"tr."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"tr."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"td."+Ext.baseCSSPrefix+"grid-cell",sizerSelector:"col."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainer:function(){return this.el.down(this.nodeContainerSelector,true)},getBodySelector:function(){return this.bodySelector+"."+Ext.baseCSSPrefix+this.id+"-table"},getNodeContainerSelector:function(){return this.nodeContainerSelector},getColumnSizerSelector:function(a){return this.sizerSelector+"-"+a.getItemId()},getItemSelector:function(){return this.itemSelector},getDataRowSelector:function(){return this.dataRowSelector},getCellSelector:function(b){var a=this.cellSelector;if(b){a+="-"+b.getItemId()}return a},getCellInnerSelector:function(a){return this.getCellSelector(a)+" "+this.innerSelector},addRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).addCls(a)}},removeRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).removeCls(a)}},onRowSelect:function(a){this.addRowCls(a,this.selectedItemCls)},onRowDeselect:function(b){var a=this;a.removeRowCls(b,a.selectedItemCls);a.removeRowCls(b,a.focusedItemCls)},onCellSelect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).addCls(this.selectedCellCls)}},onCellDeselect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).removeCls(this.selectedCellCls)}},onCellFocus:function(a){this.focusCell(a)},getCellByPosition:function(a,b){if(a){var c=this.getNode(a.row,true),d=this.headerCt.getHeaderAtIndex(a.column);if(d&&c){return Ext.fly(c).down(this.getCellSelector(d),b)}}return false},focus:function(){var a=this.getFocusEl();if(a){this.focusRow(a)}},getFocusEl:function(){var b=this,a;if(b.refreshCounter){a=b.focusedRow;if(!(a&&b.el.contains(a))){if(b.all.getCount()){b.focusRow(b.getFirstVisibleRowIndex());a=b.focusedRow}else{a=b.body}}}else{return b.el}return Ext.get(a)},onRowFocus:function(d,b,a){var c=this;if(b){c.addRowCls(d,c.focusedItemCls);if(!a){c.focusRow(d)}}else{c.removeRowCls(d,c.focusedItemCls)}},focusRow:function(c){var b=this,e,d=b.ownerCt&&b.ownerCt.collapsed,a;if(b.isVisible(true)&&!d&&(e=b.getNode(c,true))&&b.el){a=b.getRecord(e);c=b.indexInStore(e);b.selModel.setLastFocused(a);e.focus();b.focusedRow=e;b.fireEvent("rowfocus",a,e,c)}},focusCell:function(g){var j=this,k=j.getCellByPosition(g),e=j.getRecord(g.row),b=j.el,d=0,c=b.getRegion(),a=j.ownerCt,h;this.focusRow(e);if(k){c.right=c.left+b.dom.clientWidth;h=k.getRegion();if(h.left<c.left){d=h.left-c.left}else{if(h.right>c.right){d=h.right-c.right}}if(d){a.scrollByDeltaX(d)}j.fireEvent("cellfocus",e,k,g)}},scrollByDelta:function(c,b){b=b||"scrollTop";var a=this.el.dom;a[b]=a[b]+=c},isDataRow:function(a){return Ext.fly(a).hasCls(Ext.baseCSSPrefix+"grid-data-row")},syncRowHeights:function(g,a){g=Ext.get(g);a=Ext.get(a);g.dom.style.height=a.dom.style.height="";var d=this,e=d.rowTpl,b=g.dom.offsetHeight,c=a.dom.offsetHeight;if(b!==c){while(e){if(e.syncRowHeights){if(e.syncRowHeights(g,a)===false){break}}e=e.nextTpl}b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b!==c){g=g.down("[data-recordId]")||g;a=a.down("[data-recordId]")||a;if(g&&a){g.dom.style.height=a.dom.style.height="";b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b>c){g.setHeight(b);a.setHeight(b)}else{if(c>b){g.setHeight(c);a.setHeight(c)}}}}}},onIdChanged:function(a,h,g,c,b){var e=this,d;if(e.viewReady){d=e.getNodeById(b);if(d){d.setAttribute("data-recordId",h.internalId);d.id=e.getRowId(h)}}},onUpdate:function(s,g,e,o){var n=this,t=n.rowTpl,j,l,m,q,b,a,h,c,k,p,d;if(n.viewReady){m=n.getNodeByRecord(g,false);if(m){k=n.overItemCls;p=n.focusedItemCls;j=n.indexInStore(g);l=Ext.fly(m,"_internal");q=n.createRowElement(g,j);if(l.hasCls(k)){Ext.fly(q).addCls(k)}if(l.hasCls(p)){Ext.fly(q).addCls(p)}d=n.headerCt.getGridColumns();if(m.mergeAttributes){m.mergeAttributes(q,true)}else{b=q.attributes;a=b.length;for(c=0;c<a;c++){h=b[c].name;if(h!=="id"){m.setAttribute(h,b[c].value)}}}if(d.length){n.updateColumns(g,n.getNode(m,true),n.getNode(q,true),d,o)}while(t){if(t.syncContent){if(t.syncContent(m,q)===false){break}}t=t.nextTpl}n.fireEvent("itemupdate",g,j,m);n.refreshSize()}}},updateColumns:function(d,c,j,b,q){var w=this,k,s,t,g,m=b.length,n,e,a,l,h,p=w.editingPlugin||w.lockingPartner&&w.ownerCt.ownerLockable.view.editingPlugin,o=p&&p.editing,u=w.getCellSelector();if(c.mergeAttributes){c.mergeAttributes(j,true)}else{k=j.attributes;s=k.length;for(g=0;g<s;g++){t=k[g].name;if(t!=="id"){c.setAttribute(t,k[g].value)}}}for(n=0;n<m;n++){e=b[n];if(w.shouldUpdateCell(d,e,q)){u=w.getCellSelector(e);a=Ext.DomQuery.selectNode(u,c);l=Ext.DomQuery.selectNode(u,j);if(o){Ext.fly(a).syncContent(l)}else{h=a.parentNode;h.insertBefore(l,a);h.removeChild(a)}}}},shouldUpdateCell:function(b,e,d){if(e.hasCustomRenderer||!d){return true}if(d){var a=d.length,c,g;for(c=0;c<a;++c){g=d[c];if(g===e.dataIndex||g===b.idProperty){return true}}}return false},refresh:function(){var a=this;a.callParent(arguments);a.headerCt.setSortState();a.selModel.onLastFocusChanged(null,a.selModel.lastFocused)},processItemEvent:function(d,s,n,j){if(this.indexInStore(s)!==-1){var l=this,o=j.getTarget(l.getCellSelector(),s),m,a=l.statics().EventMap,g=l.getSelectionModel(),k=j.type,b=l.features,h=b.length,c,q,p;if(k=="keydown"&&!o&&g.getCurrentPosition){o=l.getCellByPosition(g.getCurrentPosition(),true)}if(o){if(!o.parentNode){return false}m=o.cellIndex;if(!(m||m===0)){m=Number(o.getAttribute("data-cellIndex"))}}else{m=-1}q=l.fireEvent("uievent",k,l,o,n,m,j,d,s);if(q===false||l.callParent(arguments)===false){return false}for(c=0;c<h;++c){p=b[c];if(p.wrapsItem){if(p.vetoEvent(d,s,n,j)===false){l.processSpecialEvent(j);return false}}}if(k=="mouseover"||k=="mouseout"){return true}if(!o){return true}return !(l["onBeforeCell"+a[k]](o,m,d,s,n,j)===false||l.fireEvent("beforecell"+k,l,o,m,d,s,n,j)===false||l["onCell"+a[k]](o,m,d,s,n,j)===false||l.fireEvent("cell"+k,l,o,m,d,s,n,j)===false)}else{this.processSpecialEvent(j);return false}},processSpecialEvent:function(j){var m=this,c=m.features,l=c.length,n=j.type,d,o,g,h,b,k,a=m.ownerCt;m.callParent(arguments);if(n=="mouseover"||n=="mouseout"){return}for(d=0;d<l;d++){o=c[d];if(o.hasFeatureEvent){h=j.getTarget(o.eventSelector,m.getTargetEl());if(h){g=o.eventPrefix;b=o.getFireEventArgs("before"+g+n,m,h,j);k=o.getFireEventArgs(g+n,m,h,j);if(m.fireEvent.apply(m,b)===false||a.fireEvent.apply(a,b)===false||m.fireEvent.apply(m,k)===false||a.fireEvent.apply(a,k)===false){return false}}}}return true},onCellMouseDown:Ext.emptyFn,onCellMouseUp:Ext.emptyFn,onCellClick:Ext.emptyFn,onCellDblClick:Ext.emptyFn,onCellContextMenu:Ext.emptyFn,onCellKeyDown:Ext.emptyFn,onBeforeCellMouseDown:Ext.emptyFn,onBeforeCellMouseUp:Ext.emptyFn,onBeforeCellClick:Ext.emptyFn,onBeforeCellDblClick:Ext.emptyFn,onBeforeCellContextMenu:Ext.emptyFn,onBeforeCellKeyDown:Ext.emptyFn,expandToFit:function(a){this.autoSizeColumn(a)},autoSizeColumn:function(a){if(Ext.isNumber(a)){a=this.getGridColumns[a]}if(a){if(a.isGroupHeader){a.autoSize();return}delete a.flex;a.setWidth(this.getMaxContentWidth(a))}},getMaxContentWidth:function(h){var e=this,a=e.el.query(h.getCellInnerSelector()),g=h.getWidth(),b=0,d=a.length,c;e.body.select(e.getColumnSizerSelector(h)).setWidth(40);c=h.textEl.dom.offsetWidth+h.titleEl.getPadding("lr");for(;b<d;b++){c=Math.max(c,a[b].scrollWidth+2)}e.body.select(e.getColumnSizerSelector(h)).setWidth(g);return c},getPositionByEvent:function(g){var d=this,b=g.getTarget(d.cellSelector),c=g.getTarget(d.itemSelector),a=d.getRecord(c),h=d.getHeaderByCell(b);return d.getPosition(a,h)},getHeaderByCell:function(b){if(b){var a=b.className.match(this.cellRe);if(a&&a[1]){return Ext.getCmp(a[1])}}return false},walkCells:function(m,n,h,o,a,p){if(!m){return false}var k=this,q=m.row,d=m.column,l=k.dataSource.getCount(),g=k.getFirstVisibleColumnIndex(),b=k.getLastVisibleColumnIndex(),j={row:q,column:d},c=k.headerCt.getHeaderAtIndex(d);if(!c||c.hidden||!l){return false}h=h||{};n=n.toLowerCase();switch(n){case"right":if(d===b){if(o||q===l-1){return false}if(!h.ctrlKey){j.row=k.walkRows(q,1);if(j.row!==q){j.column=g}}}else{if(!h.ctrlKey){j.column=d+k.getRightGap(c)}else{j.column=b}}break;case"left":if(d===g){if(o||q===0){return false}if(!h.ctrlKey){j.row=k.walkRows(q,-1);if(j.row!==q){j.column=b}}}else{if(!h.ctrlKey){j.column=d+k.getLeftGap(c)}else{j.column=g}}break;case"up":if(q===0){return false}else{if(!h.ctrlKey){j.row=k.walkRows(q,-1)}else{j.row=k.walkRows(-1,1)}}break;case"down":if(q===l-1){return false}else{if(!h.ctrlKey){j.row=k.walkRows(q,1)}else{j.row=k.walkRows(l,-1)}}break}if(a&&a.call(p||window,j)!==true){return false}else{return j}},walkRows:function(j,a){var d=this,e=0,l=j,b,h=(d.dataSource.buffered?d.dataSource.getTotalCount():d.dataSource.getCount())-1,c=a<0?0:h,g=c?1:-1,k=j;do{if(c?k>=c:k<=0){return l||c}k+=g;if((b=Ext.fly(d.getNode(k,true)))&&b.isVisible(true)){e+=g;l=k}}while(e!==a);return k},walkRecs:function(b,a){var h=this,j=0,m=b,c,l=(h.store.buffered?h.store.getTotalCount():h.store.getCount())-1,e=a<0?0:l,k=e?1:-1,g=h.store.indexOf(b),d;do{if(e?g>=e:g<=0){return m}g+=k;d=h.store.getAt(g);if((c=Ext.fly(h.getNodeByRecord(d,true)))&&c.isVisible(true)){j+=k;m=d}}while(j!==a);return m},getFirstVisibleRowIndex:function(){var c=this,b=c.dataSource.buffered?c.dataSource.getTotalCount():c.dataSource.getCount(),a=c.indexOf(c.all.first())-1;do{a+=1;if(a===b){return}}while(!Ext.fly(c.getNode(a,true)).isVisible(true));return a},getLastVisibleRowIndex:function(){var b=this,a=b.indexOf(b.all.last());do{a-=1;if(a===-1){return}}while(!Ext.fly(b.getNode(a,true)).isVisible(true));return a},getFirstVisibleColumnIndex:function(){var a=this.getHeaderCt().getVisibleGridColumns()[0];return a?a.getIndex():-1},getLastVisibleColumnIndex:function(){var b=this.getHeaderCt().getVisibleGridColumns(),a=b[b.length-1];return a.getIndex()},getHeaderCt:function(){return this.headerCt},getPosition:function(a,b){return{row:this.dataSource.indexOf(a,true),column:Ext.Array.indexOf(this.headerCt.getGridColumns(),b)}},getRightGap:function(a){var g=this.getHeaderCt(),e=g.getGridColumns(),b=Ext.Array.indexOf(e,a),c=b+1,d;for(;c<=e.length;c++){if(!e[c].hidden){d=c;break}}return d-b},beforeDestroy:function(){var a=this;if(a.rendered){a.el.removeAllListeners()}a.callParent(arguments)},onDestroy:function(){var d=this,c=d.featuresMC,a,b;if(c){for(b=0,a=c.getCount();b<a;++b){c.getAt(b).destroy()}}d.featuresMC=null;this.callParent(arguments)},getLeftGap:function(a){var g=this.getHeaderCt(),e=g.getGridColumns(),c=Ext.Array.indexOf(e,a),d=c-1,b;for(;d>=0;d--){if(!e[d].hidden){b=d;break}}return b-c},onAdd:function(c,a,b){this.callParent(arguments);this.doStripeRows(b)},onRemove:function(c,a,b){this.callParent(arguments);this.doStripeRows(b[0])},doStripeRows:function(b,a){var d=this,e,h,c,g;if(d.rendered&&d.stripeRows){e=d.getNodes(b,a);for(c=0,h=e.length;c<h;c++){g=e[c];g.className=g.className.replace(d.rowClsRe," ");b++;if(b%2===0){g.className+=" "+d.altRowCls}}}}});Ext.define("Ext.grid.View",{extend:Ext.view.Table,alias:"widget.gridview",stripeRows:true,autoScroll:true});Ext.define("Ext.grid.Panel",{extend:Ext.panel.Table,alias:["widget.gridpanel","widget.grid"],alternateClassName:["Ext.list.ListView","Ext.ListView","Ext.grid.GridPanel"],viewType:"gridview",lockable:false,rowLines:true});Ext.define("Ext.grid.plugin.BufferedRendererTableView",{override:"Ext.view.Table",onAdd:function(b,a,c){var e=this.bufferedRenderer,d=this.all;if(e&&d.getCount()+a.length>e.viewSize){if(c<d.startIndex+e.viewSize&&c+a.length>d.startIndex){this.onDataRefresh()}else{e.stretchView(this,e.getScrollHeight())}}else{this.callParent([b,a,c])}},onRemove:function(b,a,c){if(this.bufferedRenderer){this.onDataRefresh()}else{this.callParent([b,a,c])}}});Ext.define("Ext.grid.RowEditorButtons",{extend:Ext.container.Container,alias:"widget.roweditorbuttons",frame:true,constructor:function(b){var a=b.rowEditor,d=Ext.baseCSSPrefix,c=a.editingPlugin;b=Ext.apply({floating:{shadow:false},baseCls:d+"grid-row-editor-buttons",layout:{type:"hbox",align:"middle"},defaults:{xtype:"button",ui:a.buttonUI,scope:c,flex:1,minWidth:Ext.panel.Panel.prototype.minButtonWidth},items:[{cls:d+"row-editor-update-button",itemId:"update",handler:c.completeEdit,text:a.saveBtnText,disabled:a.updateButtonDisabled},{cls:d+"row-editor-cancel-button",handler:c.cancelEdit,text:a.cancelBtnText}]},b);this.callParent([b])},getTargetEl:function(){return this.el},afterComponentLayout:function(){if(Ext.isIEQuirks&&!this.componentLayoutCounter){this.el.setWidth(this.width=this.layout.innerCt.getWidth()+this.getFrameInfo().width)}this.callParent(arguments)}});Ext.define("Ext.grid.RowEditor",{extend:Ext.form.Panel,alias:"widget.roweditor",saveBtnText:"Update",cancelBtnText:"Cancel",errorsText:"Errors",dirtyText:"You need to commit or cancel your changes",lastScrollLeft:0,lastScrollTop:0,border:false,buttonUI:"default",hideMode:"offsets",initComponent:function(){var b=this,a;b.cls=Ext.baseCSSPrefix+"grid-editor "+Ext.baseCSSPrefix+"grid-row-editor";b.layout={type:"hbox",align:"middle"};b.columns=new Ext.util.HashMap;b.columns.getKey=function(d){var c;if(d.getEditor){c=d.getEditor();if(c){return c.id}}return d.id};b.mon(b.columns,{add:b.doColumnAdd,remove:b.doColumnRemove,replace:b.onColumnReplace,scope:b});b.callParent(arguments);if(b.fields){b.setField(b.fields,true);delete b.fields}b.mon(b.hierarchyEventSource,{scope:b,show:b.repositionIfVisible});b.mon(b.view.headerCt,"afterlayout",b.correctWidth,b);a=b.getForm();a.trackResetOnLoad=true},onFieldRender:function(e){var c=this,d=c.getEditorMargins(e),b=c.columns.get(e.id),a;e.setMargin("0 "+d.right+" 0 "+d.left,true);if(b.isVisible()){c.setFieldWidth(b,e)}else{if(!b.rendered){a=Ext.Function.bind(c.setFieldWidth,c,[b,e]);c.mon(c.view.headerCt,"afterlayout",a,c,{single:true})}}},setFieldWidth:function(a,c){var b=this.getEditorMargins(c);c.setWidth(a.getWidth()-b.width)},setupMargin:function(h){var e=this,c=e.cellPadding,g=e.view,a=0,l=0,b=1,k,d,j;if(!c){j=g.el.down(g.cellSelector+" "+g.innerSelector);if(j){c={left:j.getPadding("l"),right:j.getPadding("r"),top:j.getPadding("t"),bottom:j.getPadding("b")}}else{c={left:0,right:0}}e.cellPadding=c}k=h.inputEl;if(k){a=k.getPadding("l");l=k.getPadding("r")}if(h.isXType("textfield")){b=1}d={left:Math.max(1,c.left-(a+b)),right:Math.max(1,c.right-(l+b)),top:c.top,bottom:c.bottom};d.width=d.left+d.right;h.editorMargin=d;return d},getEditorMargins:function(b){var a=b.editorMargin;if(!a){a=this.setupMargin(b)}return a},onFieldChange:function(){var c=this,b=c.getForm(),a=b.isValid();if(c.errorSummary&&c.isVisible()){c[a?"hideToolTip":"showToolTip"]()}c.updateButton(a);c.isValid=a},updateButton:function(b){var a=this.floatingButtons;if(a){a.child("#update").setDisabled(!b)}else{this.updateButtonDisabled=!b}},afterRender:function(){var c=this,b=c.editingPlugin,a=b.grid,e,d;c.callParent(arguments);c.mon(c.container,"scroll",c.onCtScroll,c,{buffer:10});if(a.lockable){a.normalGrid.view.mon(a.normalGrid.view.el,"scroll",c.onNormalViewScroll,c,{buffer:10})}c.mon(c.el,{click:Ext.emptyFn,stopPropagation:true});c.el.swallowEvent(["keypress","keydown"]);c.keyNav=new Ext.util.KeyNav(c.el,{enter:b.completeEdit,esc:b.onEscKey,scope:b});c.mon(b.view,{beforerefresh:c.onBeforeViewRefresh,refresh:c.onViewRefresh,itemremove:c.onViewItemRemove,scope:c});c.preventReposition=true;c.columns.each(function(g,h){e=h.getEditor();d=c.getEditorMargins(e);h.getEditor().setMargin("0 "+d.right+" 0 "+d.left,true);if(h.isVisible()){c.onColumnShow(h)}},c);delete c.preventReposition},onBeforeViewRefresh:function(b){var c=this,a=b.el.dom;if(c.el.dom.parentNode===a){a.removeChild(c.el.dom)}},onViewRefresh:function(b){var d=this,c=d.context,a;d.container.dom.appendChild(d.el.dom);if(c&&(a=c.store.indexOf(c.record))>=0){c.row=b.getNode(a);d.reposition();if(d.tooltip&&d.tooltip.isVisible()){d.tooltip.setTarget(c.row)}}else{d.editingPlugin.cancelEdit()}},onViewItemRemove:function(a,b){var c=this.context;if(c&&a===c.record){this.editingPlugin.cancelEdit()}},onCtScroll:function(d,c){var a=this,b=c.scrollTop,g=Ext.fly(c).getScrollLeft();if(b!==a.lastScrollTop){a.lastScrollTop=b;if(a.tooltip&&a.tooltip.isVisible()||a.hiddenTip){a.repositionTip()}}if(g!==a.lastScrollLeft){a.lastScrollLeft=g;a.reposition()}},onNormalViewScroll:function(d,c){if(this.ignoreScroll){this.ignoreScroll=false;return}var a=this,b=c.scrollTop;if(b!==a.lastScrollTop){a.lastScrollTop=b;if(a.tooltip&&a.tooltip.isVisible()||a.hiddenTip){a.repositionTip()}}this.reposition(null,true)},onColumnResize:function(b,a){var c;if(!b.isGroupHeader&&this.rendered){c=b.getEditor();c.setWidth(a-this.getEditorMargins(c).width);this.repositionIfVisible()}},onColumnHide:function(a){if(!a.isGroupHeader){a.getEditor().hide();this.repositionIfVisible()}},onColumnShow:function(a){var b=this,c;if(!a.isGroupHeader){c=a.getEditor();c.show();if(b.rendered){c.setWidth(a.getWidth()-b.getEditorMargins(c).width);if(!b.preventReposition){this.repositionIfVisible()}}}},onColumnMove:function(c,b,d){var a=this.editingPlugin.grid,g;if(a.lockable&&a.normalGrid.headerCt.contains(c,true)){g=a.lockedGrid.view.getGridColumns().length;b+=g;d+=g}if(!c.isGroupHeader){var e=c.getEditor();if(this.items.indexOf(e)!=d){this.move(b,d)}}},onColumnAdd:function(a){this.doColumnAdd(this.columns,a.getEditor().id,a);if(!a.isGroupHeader){this.setField(a)}},doColumnAdd:function(e,a,b){var c=this,g,d;if(!b.isGroupHeader){g=c.editingPlugin.grid.headerCt.getHeaderIndex(b);d=b.getEditor({xtype:"displayfield"});c.insert(g,d)}},onColumnRemove:function(a){this.doColumnRemove(this.columns,a.getEditor().id,a);this.columns.remove(a)},doColumnRemove:function(e,a,b){var c=this,d;if(!b.isGroupHeader){d=b.getEditor();c.remove(d,false)}},onColumnReplace:function(d,a,c,b){this.onColumnRemove(d,a,b)},clearFields:function(){var b=this.columns,a;for(a in b){if(b.hasOwnProperty(a)){b.removeAtKey(a)}}},getFloatingButtons:function(){var a=this;if(!a.floatingButtons){a.floatingButtons=new Ext.grid.RowEditorButtons({rowEditor:a,renderTo:a.el})}return a.floatingButtons},repositionIfVisible:function(d){var b=this,a=b.view;if(d&&(d==b||!d.el.isAncestor(a.el))){return}if(b.isVisible()&&a.isVisible(true)){b.reposition()}},getRefOwner:function(){return this.editingPlugin.grid},reposition:function(t,n){var u=this,d=u.context,g=d&&Ext.get(d.row),q=u.getFloatingButtons(),s=q.el,b=u.editingPlugin.grid,h=b.lockable?b.normalGrid.view.el:b.view.el,p=b.headerCt.getFullWidth(),w=b.getWidth(),m=Math.min(p,w),o=Ext.fly(b.view.el.dom).getScrollLeft(),j=q.getWidth(),e=(m-j)/2+o,a=u.getLocalX(),k,l=function(){if(!n){if((k=s.getRegion().bottom-b.el.getRegion().bottom)>0){if(b.lockable){b.normalGrid.view.body.dom.style.marginBottom=b.lockedGrid.view.body.dom.style.marginBottom=s.getHeight()+"px"}u.ignoreScroll=true;h.dom.scrollTop+=k;if(b.lockable){u.setLocalY(u.getLocalY()-k)}}}if(t&&t.callback){t.callback.call(t.scope||u)}},c;if(b.lockable){b.normalGrid.view.body.dom.style.marginBottom=b.lockedGrid.view.body.dom.style.marginBottom="";a+=b.normalGrid.view.el.dom.scrollLeft*(u.rtl?1:-1)}if(g&&Ext.isElement(g.dom)){if(!n){g.scrollIntoView(h,false)}u.setLocalX(a);if(t){c={to:{y:g.getXY()[1]-u.body.getBorderPadding().beforeY},duration:t.duration||125,listeners:{afteranimate:function(){u.setButtonPosition(s,e);l()}}};u.animate(c)}else{u.setLocalY((b.lockable?g.getOffsetsTo(b.body)[1]:g.dom.offsetTop)-u.body.getBorderPadding().beforeY);u.setButtonPosition(s,e);l()}}u.correctWidth()},correctWidth:function(){var a=this,b;if(a.rendered&&a.isVisible()&&a.el.dom.parentNode){b=a.editingPlugin.grid.headerCt.getFullWidth();if(a.getWidth()!=b){a.setWidth(b)}}},getLocalX:function(){return 0},setButtonPosition:function(a,b){a.setLocalXY(b,this.el.dom.offsetHeight-1)},getEditor:function(a){var b=this;if(Ext.isNumber(a)){return b.query(">[isFormField]")[a]}else{if(a.isHeader&&!a.isGroupHeader){return a.getEditor()}}},removeField:function(b){var a=this;b=a.getEditor(b);a.mun(b,"validitychange",a.onValidityChange,a);a.columns.removeAtKey(b.id);Ext.destroy(b)},setField:function(c,a){var e=this,b,d,g;if(Ext.isArray(c)){d=c.length;for(b=0;b<d;b++){e.setField(c[b],a)}return}g=c.getEditor(null,{xtype:"displayfield",getModelData:function(){return null}});e.mon(g,"change",e.onFieldChange,e);if(e.rendered){e.mon(g,"afterrender",e.onFieldRender,e,{single:true})}if(e.isVisible()&&e.context){if(g.is("displayfield")){e.renderColumnData(g,e.context.record,c)}else{g.suspendEvents();g.setValue(e.context.record.get(c.dataIndex));g.resumeEvents()}}e.columns.add(g.id,c);if(c.hidden){e.onColumnHide(c)}else{if(c.rendered&&!a){e.onColumnShow(c)}}},loadRecord:function(d){var j=this,a=j.getForm(),e=a.getFields(),h=e.items,b=h.length,c,g,k;for(c=0;c<b;c++){h[c].suspendEvents()}a.loadRecord(d);for(c=0;c<b;c++){h[c].resumeEvents()}k=a.isValid();if(j.errorSummary){if(k){j.hideToolTip()}else{j.showToolTip()}}j.updateButton(k);g=j.query(">displayfield");b=g.length;for(c=0;c<b;c++){j.renderColumnData(g[c],d)}},renderColumnData:function(n,j,c){var l=this,a=l.editingPlugin.grid,e=a.headerCt,m=a.view,p=m.store,g=c||l.columns.get(n.id),o=j.get(g.dataIndex),k=g.editRenderer||g.renderer,b,d,h;if(k){b={tdCls:"",style:""};d=p.indexOf(j);h=e.getHeaderIndex(g);o=k.call(g.scope||e.ownerCt,o,b,j,d,h,p,m)}n.setRawValue(o);n.resetOriginalValue()},beforeEdit:function(){var a=this;if(a.isVisible()&&a.errorSummary&&!a.autoCancel&&a.isDirty()){a.showToolTip();return false}},startEdit:function(b,h){var g=this,e=g.editingPlugin.grid,c=e.store,a=e.getView(),d=g.context=Ext.apply(g.editingPlugin.context,{view:a,store:c});if(!g.rendered){g.render(a.el)}d.grid.getSelectionModel().select(b);g.loadRecord(b);if(!g.isVisible()){g.show()}g.reposition({callback:this.focusContextCell})},focusContextCell:function(){var a=this.getEditor(this.context.colIdx);if(a&&a.focus){a.focus()}},cancelEdit:function(){var g=this,e=g.getForm(),a=e.getFields(),b=a.items,d=b.length,c;g.hide();e.clearInvalid();for(c=0;c<d;c++){b[c].suspendEvents()}e.reset();for(c=0;c<d;c++){b[c].resumeEvents()}},completeEdit:function(){var b=this,a=b.getForm();if(!a.isValid()){return}a.updateRecord(b.context.record);b.hide();return true},onShow:function(){this.callParent(arguments);this.reposition()},onHide:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.hideToolTip()}if(a.context){a.context.view.focus();a.context=null}},isDirty:function(){var b=this,a=b.getForm();return a.isDirty()},getToolTip:function(){return this.tooltip||(this.tooltip=new Ext.tip.ToolTip({cls:Ext.baseCSSPrefix+"grid-row-editor-errors",title:this.errorsText,autoHide:false,closable:true,closeAction:"disable",anchor:"left",anchorToTarget:false}))},hideToolTip:function(){var a=this,b=a.getToolTip();if(b.rendered){b.disable()}a.hiddenTip=false},showToolTip:function(){var a=this,b=a.getToolTip();b.showAt([0,0]);b.update(a.getErrors());a.repositionTip();b.enable()},repositionTip:function(){var j=this,k=j.getToolTip(),c=j.context,m=Ext.get(c.row),l=c.grid.view.el,e=l.getHeight(),g=j.lastScrollTop,h=g+e,b=m.getHeight(),a=m.dom.offsetTop,d=a+b;if(d>g&&a<h){k.showAt(k.getAlignToXY(l,"tl-tr",[15,m.getOffsetsTo(l)[1]]));j.hiddenTip=false}else{k.hide();j.hiddenTip=true}},getErrors:function(){var d=this,e=!d.autoCancel&&d.isDirty()?d.dirtyText+"<br />":"",g=[],a=d.query(">[isFormField]"),c=a.length,b;for(b=0;b<c;b++){g=g.concat(Ext.Array.map(a[b].getErrors(),d.createListItem))}return e+'<ul class="'+Ext.plainListCls+'">'+g.join("")+"</ul>"},createListItem:function(a){return"<li>"+a+"</li>"},beforeDestroy:function(){Ext.destroy(this.floatingButtons,this.tooltip);this.callParent()}});Ext.define("Ext.grid.plugin.HeaderResizer",{extend:Ext.AbstractPlugin,alias:"plugin.gridheaderresizer",disabled:false,config:{dynamic:false},colHeaderCls:Ext.baseCSSPrefix+"column-header",minColWidth:40,maxColWidth:1000,wResizeCursor:"col-resize",eResizeCursor:"col-resize",init:function(a){this.headerCt=a;a.on("render",this.afterHeaderRender,this,{single:true})},destroy:function(){if(this.tracker){this.tracker.destroy()}},afterHeaderRender:function(){var b=this.headerCt,a=b.el;b.mon(a,"mousemove",this.onHeaderCtMouseMove,this);this.tracker=new Ext.dd.DragTracker({disabled:this.disabled,onBeforeStart:Ext.Function.bind(this.onBeforeStart,this),onStart:Ext.Function.bind(this.onStart,this),onDrag:Ext.Function.bind(this.onDrag,this),onEnd:Ext.Function.bind(this.onEnd,this),tolerance:3,autoStart:300,el:a})},onHeaderCtMouseMove:function(b,l){var d=this,a,j,k,g,c,h;if(d.headerCt.dragging){if(d.activeHd){d.activeHd.el.dom.style.cursor="";delete d.activeHd}}else{j=b.getTarget("."+d.colHeaderCls,3,true);if(j){k=Ext.getCmp(j.id);if(k.isOnLeftEdge(b)){g=k.previousNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(g){h=d.headerCt.up("tablepanel");c=g.up("tablepanel");if(!(c===h||h.ownerCt.isXType("tablepanel")&&h.ownerCt.view.lockedGrid===c)){g=null}}}else{if(k.isOnRightEdge(b)){g=k}else{g=null}}if(g){if(g.isGroupHeader){a=g.getGridColumns();g=a[a.length-1]}if(g&&!(g.fixed||g.resizable===false||d.disabled)){d.activeHd=g;k.el.dom.style.cursor=d.eResizeCursor;if(k.triggerEl){k.triggerEl.dom.style.cursor=d.eResizeCursor}}}else{k.el.dom.style.cursor="";if(k.triggerEl){k.triggerEl.dom.style.cursor=""}d.activeHd=null}}}},onBeforeStart:function(a){this.dragHd=this.activeHd;if(!!this.dragHd&&!this.headerCt.dragging){this.tracker.constrainTo=this.getConstrainRegion();return true}else{this.headerCt.dragging=false;return false}},getConstrainRegion:function(){var c=this,a=c.dragHd.el,b;if(c.headerCt.forceFit){b=c.dragHd.nextNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(!c.headerInSameGrid(b)){b=null}}return c.adjustConstrainRegion(Ext.util.Region.getRegion(a),0,c.headerCt.forceFit?b?b.getWidth()-c.minColWidth:0:c.maxColWidth-a.getWidth(),0,c.minColWidth)},onStart:function(h){var j=this,g=j.dragHd,b=g.el.getWidth(),d=g.getOwnerHeaderCt(),m,l,n,c,a,k,o;j.headerCt.dragging=true;j.origWidth=b;if(!j.dynamic){n=c=d.up("tablepanel");if(n.ownerLockable){c=n.ownerLockable}m=j.getLeftMarkerX(c);a=c.getLhsMarker();k=c.getRhsMarker();o=n.body.getHeight()+d.getHeight();l=d.getOffsetsTo(c)[1];a.setLocalY(l);k.setLocalY(l);a.setHeight(o);k.setHeight(o);j.setMarkerX(a,m);j.setMarkerX(k,m+b)}},onDrag:function(b){var a=this,c;if(a.dynamic){a.doResize()}else{c=this.headerCt.up("tablepanel");if(c.ownerLockable){c=c.ownerLockable}this.setMarkerX(this.getMovingMarker(c),this.calculateDragX(c))}},getMovingMarker:function(a){return a.getRhsMarker()},onEnd:function(a){this.headerCt.dragging=false;if(this.dragHd){if(!this.dynamic){var b=this.headerCt.up("tablepanel");if(b.ownerLockable){b=b.ownerLockable}this.setMarkerX(b.getLhsMarker(),-9999);this.setMarkerX(b.getRhsMarker(),-9999)}this.doResize()}},doResize:function(){var c=this,b=c.dragHd,a,d;if(b){d=c.tracker.getOffset("point");if(b.flex){delete b.flex}Ext.suspendLayouts();c.adjustColumnWidth(d[0]);if(c.headerCt.forceFit){a=b.nextNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(!c.headerInSameGrid(a)){a=null}if(a){delete a.flex;a.setWidth(a.getWidth()-d[0])}}Ext.resumeLayouts(true)}},headerInSameGrid:function(b){var a=this.dragHd.up("tablepanel");return !!b.up(a)},disable:function(){this.disabled=true;if(this.tracker){this.tracker.disable()}},enable:function(){this.disabled=false;if(this.tracker){this.tracker.enable()}},calculateDragX:function(a){return this.tracker.getXY("point")[0]-a.getX()-a.el.getBorderWidth("l")},getLeftMarkerX:function(a){return this.dragHd.getX()-a.getX()-a.el.getBorderWidth("l")-1},setMarkerX:function(b,a){b.setLocalX(a)},adjustConstrainRegion:function(g,d,e,a,c){return g.adjust(d,e,a,c)},adjustColumnWidth:function(a){this.dragHd.setWidth(this.origWidth+a)}});Ext.define("Ext.grid.header.DragZone",{extend:Ext.dd.DragZone,colHeaderCls:Ext.baseCSSPrefix+"column-header",maxProxyWidth:120,constructor:function(a){this.headerCt=a;this.ddGroup=this.getDDGroup();this.callParent([a.el]);this.proxy.el.addCls(Ext.baseCSSPrefix+"grid-col-dd")},getDDGroup:function(){return"header-dd-zone-"+this.headerCt.up("[scrollerOwner]").id},getDragData:function(b){var d=b.getTarget("."+this.colHeaderCls),a,c;if(d){a=Ext.getCmp(d.id);if(!this.headerCt.dragging&&a.draggable&&!(a.isOnLeftEdge(b)||a.isOnRightEdge(b))){c=document.createElement("div");c.innerHTML=Ext.getCmp(d.id).text;return{ddel:c,header:a}}}return false},onBeforeDrag:function(){return !(this.headerCt.dragging||this.disabled)},onInitDrag:function(){this.headerCt.dragging=true;this.callParent(arguments)},onDragDrop:function(){this.headerCt.dragging=false;this.callParent(arguments)},afterRepair:function(){this.callParent();this.headerCt.dragging=false},getRepairXY:function(){return this.dragData.header.el.getXY()},disable:function(){this.disabled=true},enable:function(){this.disabled=false}});Ext.define("Ext.grid.header.DropZone",{extend:Ext.dd.DropZone,colHeaderCls:Ext.baseCSSPrefix+"column-header",proxyOffsets:[-4,-9],constructor:function(a){this.headerCt=a;this.ddGroup=this.getDDGroup();this.callParent([a.el])},getDDGroup:function(){return"header-dd-zone-"+this.headerCt.up("[scrollerOwner]").id},getTargetFromEvent:function(a){return a.getTarget("."+this.colHeaderCls)},getTopIndicator:function(){if(!this.topIndicator){this.self.prototype.topIndicator=Ext.DomHelper.append(Ext.getBody(),{cls:"col-move-top",html:"&#160;"},true);this.self.prototype.indicatorXOffset=Math.floor((this.topIndicator.dom.offsetWidth+1)/2)}return this.topIndicator},getBottomIndicator:function(){if(!this.bottomIndicator){this.self.prototype.bottomIndicator=Ext.DomHelper.append(Ext.getBody(),{cls:"col-move-bottom",html:"&#160;"},true)}return this.bottomIndicator},getLocation:function(d,b){var a=d.getXY()[0],c=Ext.fly(b).getRegion(),g;if(c.right-a<=(c.right-c.left)/2){g="after"}else{g="before"}return{pos:g,header:Ext.getCmp(b.id),node:b}},positionIndicator:function(D,s,z){var C=this,t=D.header,g=C.getLocation(z,s),l=g.header,d=g.pos,q,k,c,y,n,w,x,a,b,m,o,B,A,p,j,u,h;if(l===C.lastTargetHeader&&d===C.lastDropPos){return}q=t.up("headercontainer:not(gridcolumn)");k=l.up("headercontainer:not(gridcolumn)");c=t.nextSibling("gridcolumn:not([hidden])");y=t.previousSibling("gridcolumn:not([hidden])");C.lastTargetHeader=l;C.lastDropPos=d;if(!l.draggable&&d==="before"&&l.getIndex()===0){return false}D.isLock=D.isUnlock=false;if(q!==k&&q.lockableInjected&&k.lockableInjected&&k.lockedCt){D.isLock=true}else{if(q!==k&&q.lockableInjected&&k.lockableInjected&&q.lockedCt){D.isUnlock=true}}if(D.isUnlock&&t.lockable===false||D.isLock&&!t.isLockable()){return false}D.dropLocation=g;if(t!==l&&(d==="before"&&c!==l||d==="after"&&y!==l)&&!l.isDescendantOf(t)){p=Ext.dd.DragDropManager.getRelated(C);j=p.length;u=0;for(;u<j;u++){h=p[u];if(h!==C&&h.invalidateDrop){h.invalidateDrop()}}C.valid=true;n=C.getTopIndicator();w=C.getBottomIndicator();if(d==="before"){x="bc-tl";a="tc-bl"}else{x="bc-tr";a="tc-br"}b=n.getAlignToXY(l.el,x);m=w.getAlignToXY(l.el,a);o=C.headerCt.el;B=o.getX()-C.indicatorXOffset;A=o.getX()+o.getWidth();b[0]=Ext.Number.constrain(b[0],B,A);m[0]=Ext.Number.constrain(m[0],B,A);n.setXY(b);w.setXY(m);n.show();w.show()}else{C.invalidateDrop()}},invalidateDrop:function(){this.valid=false;this.hideIndicators()},onNodeOver:function(d,a,h,g){var c=this,b=true,k=g.header,j;if(g.header.el.dom===d){b=false}else{j=c.getLocation(h,d).header;b=k.ownerCt===j.ownerCt||!k.ownerCt.sealed&&!j.ownerCt.sealed}if(b){c.positionIndicator(g,d,h)}else{c.valid=false}return c.valid?c.dropAllowed:c.dropNotAllowed},hideIndicators:function(){var a=this;a.getTopIndicator().hide();a.getBottomIndicator().hide();a.lastTargetHeader=a.lastDropPos=null},onNodeOut:function(){this.hideIndicators()},onNodeDrop:function(o,c,s,w){if(this.valid){var q=w.header,g=w.dropLocation,l=g.header,u=q.ownerCt,m=u.items.indexOf(q),a=l.ownerCt,p=a.items.indexOf(l),j=this.headerCt,b=j.getHeaderIndex(q),n=q.isGroupHeader?q.query(":not([isGroupHeader])").length:1,t=j.getHeaderIndex(l),k=u===a,h,d;if(g.pos==="after"){p++;t+=l.isGroupHeader?l.query(":not([isGroupHeader])").length:1}if(w.isLock){h=u.up("[scrollerOwner]");h.lock(q,p);w.isLock=false;this.onNodeDrop(o,c,s,w)}else{if(w.isUnlock){h=u.up("[scrollerOwner]");h.unlock(q,p);w.isUnlock=false;this.onNodeDrop(o,c,s,w)}else{this.invalidateDrop();d=q.getWidth();if(k){if(p===m){j.onHeaderMoved(q,n,b,t);return}if(p>m){p-=1}}Ext.suspendLayouts();if(k){a.move(m,p)}else{u.remove(q,false);a.insert(p,q)}if(a.isGroupHeader){if(!k){q.savedFlex=q.flex;delete q.flex;q.width=d}}else{if(q.savedFlex){q.flex=q.savedFlex;delete q.width}}j.purgeCache();Ext.resumeLayouts(true);j.onHeaderMoved(q,n,b,t)}}}}});Ext.define("Ext.grid.plugin.HeaderReorderer",{extend:Ext.AbstractPlugin,alias:"plugin.gridheaderreorderer",init:function(a){this.headerCt=a;a.on({render:this.onHeaderCtRender,single:true,scope:this})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onHeaderCtRender:function(){var a=this;a.dragZone=new Ext.grid.header.DragZone(a.headerCt);a.dropZone=new Ext.grid.header.DropZone(a.headerCt);if(a.disabled){a.dragZone.disable()}},enable:function(){this.disabled=false;if(this.dragZone){this.dragZone.enable()}},disable:function(){this.disabled=true;if(this.dragZone){this.dragZone.disable()}}});Ext.define("Ext.grid.header.Container",{extend:Ext.container.Container,border:true,alias:"widget.headercontainer",baseCls:Ext.baseCSSPrefix+"grid-header-ct",dock:"top",weight:100,defaultType:"gridcolumn",detachOnRemove:false,defaultWidth:100,sortAscText:"Sort Ascending",sortDescText:"Sort Descending",sortClearText:"Clear Sort",columnsText:"Columns",headerOpenCls:Ext.baseCSSPrefix+"column-header-open",menuSortAscCls:Ext.baseCSSPrefix+"hmenu-sort-asc",menuSortDescCls:Ext.baseCSSPrefix+"hmenu-sort-desc",menuColsIcon:Ext.baseCSSPrefix+"cols-icon",triStateSort:false,ddLock:false,dragging:false,sortable:true,enableColumnHide:true,initComponent:function(){var a=this;a.headerCounter=0;a.plugins=a.plugins||[];if(!a.isHeader){if(a.enableColumnResize){a.resizer=new Ext.grid.plugin.HeaderResizer;a.plugins.push(a.resizer)}if(a.enableColumnMove){a.reorderer=new Ext.grid.plugin.HeaderReorderer;a.plugins.push(a.reorderer)}}if(a.isHeader&&!a.items){a.layout=a.layout||"container"}else{a.layout=Ext.apply({type:"gridcolumn",align:"stretchmax"},a.initialConfig.layout)}a.defaults=a.defaults||{};Ext.applyIf(a.defaults,{triStateSort:a.triStateSort,sortable:a.sortable});a.menuTask=new Ext.util.DelayedTask(a.updateMenuDisabledState,a);a.callParent();a.addEvents("columnresize","headerclick","headercontextmenu","headertriggerclick","columnmove","columnhide","columnshow","columnschanged","sortchange","menucreate")},isLayoutRoot:function(){if(this.hiddenHeaders){return false}return this.callParent()},getOwnerHeaderCt:function(){var a=this;return a.isRootHeader?a:a.up("[isRootHeader]")},onDestroy:function(){var a=this;if(a.menu){a.menu.un("hide",a.onMenuHide,a)}a.menuTask.cancel();Ext.destroy(a.resizer,a.reorderer);a.callParent()},applyColumnsState:function(e){if(!e||!e.length){return}var m=this,k=m.items.items,j=k.length,g=0,b=e.length,l,d,a,h;for(l=0;l<b;l++){a=e[l];for(h=j;h--;){d=k[h];if(d.getStateId&&d.getStateId()==a.id){if(g!==h){m.moveHeader(h,g)}if(d.applyColumnState){d.applyColumnState(a)}++g;break}}}},getColumnsState:function(){var b=this,a=[],c;b.items.each(function(d){c=d.getColumnState&&d.getColumnState();if(c){a.push(c)}});return a},onAdd:function(b){var a=this;if(!b.headerId){b.headerId=b.initialConfig.id||Ext.id(null,"header-")}if(!b.getStateId()){b.stateId=b.initialConfig.id||"h"+ ++a.headerCounter}a.callParent(arguments);a.onColumnsChanged()},onMove:function(){this.callParent(arguments);this.onColumnsChanged()},onShow:function(){this.callParent(arguments);this.onColumnsChanged()},onColumnsChanged:function(){var a=this.getOwnerHeaderCt();if(a){a.purgeCache();if(this.rendered){a.fireEvent("columnschanged",a)}}},onRemove:function(d){var b=this,a=b.ownerCt;b.callParent(arguments);if(!b.destroying){b.onColumnsChanged();if(b.isGroupHeader&&!b.items.getCount()&&a){b.detachComponent(d);Ext.suspendLayouts();a.remove(b);Ext.resumeLayouts(true)}}},applyDefaults:function(b){var a;if(b&&!b.isComponent&&b.xtype=="rownumberer"){a=b}else{a=this.callParent(arguments);if(!b.isGroupHeader&&!("width" in a)&&!a.flex){a.width=this.defaultWidth}}return a},setSortState:function(){var a=this.up("[store]").store,c=a.getFirstSorter(),b;if(c){b=this.down("gridcolumn[dataIndex="+c.property+"]");if(b){b.setSortState(c.direction,false,true)}}else{this.clearOtherSortStates(null)}},getHeaderMenu:function(){var b=this.getMenu(),a;if(b){a=b.child("#columnItem");if(a){return a.menu}}return null},onHeaderVisibilityChange:function(e,d){var b=this,c=b.getHeaderMenu(),a;if(c){a=b.getMenuItemForHeader(c,e);if(a){a.setChecked(d,true)}if(c.isVisible()){b.menuTask.delay(50)}}},updateMenuDisabledState:function(h){var g=this,d=g.query(":not([hidden])"),c,a=d.length,e,b,j;if(!h){h=g.getMenu()}for(c=0;c<a;++c){e=d[c];b=g.getMenuItemForHeader(h,e);if(b){j=e.isHideable()?"enable":"disable";if(b.menu){j+="CheckChange"}b[j]()}}},getMenuItemForHeader:function(a,b){return b?a.down("menucheckitem[headerId="+b.id+"]"):null},onHeaderShow:function(c){var b=this,a=b.ownerCt;if(b.forceFit){delete b.flex}b.onHeaderVisibilityChange(c,true);if(!c.isGroupHeader){if(a){a.onHeaderShow(b,c)}}b.fireEvent("columnshow",b,c);b.fireEvent("columnschanged",this)},onHeaderHide:function(c){var b=this,a=b.ownerCt;b.onHeaderVisibilityChange(c,false);if(!c.isGroupHeader){if(a){a.onHeaderHide(b,c)}}b.fireEvent("columnhide",b,c);b.fireEvent("columnschanged",this)},tempLock:function(){this.ddLock=true;Ext.Function.defer(function(){this.ddLock=false},200,this)},onHeaderResize:function(g,b,e){var d=this,a=d.view,c=d.ownerCt;if(a&&a.body.dom){d.tempLock();if(c){c.onHeaderResize(d,g,b)}}d.fireEvent("columnresize",this,g,b)},onHeaderClick:function(c,b,a){c.fireEvent("headerclick",this,c,b,a);this.fireEvent("headerclick",this,c,b,a)},onHeaderContextMenu:function(c,b,a){c.fireEvent("headercontextmenu",this,c,b,a);this.fireEvent("headercontextmenu",this,c,b,a)},onHeaderTriggerClick:function(d,c,a){var b=this;if(d.fireEvent("headertriggerclick",b,d,c,a)!==false&&b.fireEvent("headertriggerclick",b,d,c,a)!==false){b.showMenuBy(a,d)}},showMenuBy:function(b,g){var d=this.getMenu(),e=d.down("#ascItem"),c=d.down("#descItem"),a;d.activeHeader=d.ownerButton=g;g.setMenuActive(true);a=g.sortable?"enable":"disable";if(e){e[a]()}if(c){c[a]()}d.showBy(b)},onMenuHide:function(a){a.activeHeader.setMenuActive(false)},moveHeader:function(a,b){this.tempLock();this.onHeaderMoved(this.move(a,b),1,a,b)},purgeCache:function(){var a=this,b=a.menu;a.gridDataColumns=a.hideableColumns=null;if(b&&b.hidden){b.hide();b.destroy();a.menu=null}},onHeaderMoved:function(g,a,c,e){var d=this,b=d.ownerCt;if(b&&b.onHeaderMove){b.onHeaderMove(d,g,a,c,e)}d.fireEvent("columnmove",d,g,c,e)},getMenu:function(){var a=this;if(!a.menu){a.menu=new Ext.menu.Menu({hideOnParentHide:false,items:a.getMenuItems(),listeners:{hide:a.onMenuHide,scope:a}});a.fireEvent("menucreate",a,a.menu)}a.updateMenuDisabledState(a.menu);return a.menu},getMenuItems:function(){var c=this,b=[],a=c.enableColumnHide?c.getColumnMenu(c):null;if(c.sortable){b=[{itemId:"ascItem",text:c.sortAscText,cls:c.menuSortAscCls,handler:c.onSortAscClick,scope:c},{itemId:"descItem",text:c.sortDescText,cls:c.menuSortDescCls,handler:c.onSortDescClick,scope:c}]}if(a&&a.length){if(c.sortable){b.push("-")}b.push({itemId:"columnItem",text:c.columnsText,cls:c.menuColsIcon,menu:a,hideOnClick:false})}return b},onSortAscClick:function(){var b=this.getMenu(),a=b.activeHeader;a.setSortState("ASC")},onSortDescClick:function(){var b=this.getMenu(),a=b.activeHeader;a.setSortState("DESC")},getColumnMenu:function(g){var c=[],b=0,e,a=g.query(">gridcolumn[hideable]"),h=a.length,d;for(;b<h;b++){e=a[b];d=new Ext.menu.CheckItem({text:e.menuText||e.text,checked:!e.hidden,hideOnClick:false,headerId:e.id,menu:e.isGroupHeader?this.getColumnMenu(e):undefined,checkHandler:this.onColumnCheckChange,scope:this});c.push(d);e.on({destroy:Ext.Function.bind(d.destroy,d)})}return c},onColumnCheckChange:function(a,b){var c=Ext.getCmp(a.headerId);c[b?"show":"hide"]()},getColumnCount:function(){return this.getGridColumns().length},getFullWidth:function(){var c=0,b=this.getVisibleGridColumns(),e=b.length,a=0,d;for(;a<e;a++){d=b[a];if(d.getDesiredWidth){c+=d.getDesiredWidth()||0}else{c+=d.getWidth()}}return c},clearOtherSortStates:function(a){var c=this.getGridColumns(),d=c.length,b=0;for(;b<d;b++){if(c[b]!==a){c[b].setSortState(null,true)}}},getVisibleGridColumns:function(){var c=this.getGridColumns(),b=[],a=c.length,d;for(d=0;d<a;d++){if(!c[d].hidden){b[b.length]=c[d]}}return b},getGridColumns:function(h,a){if(!h&&this.gridDataColumns){return this.gridDataColumns}var g=this,k=h||[],e,b,d,j,c;a=a||g.hidden;if(g.items){e=g.items.items;for(b=0,d=e.length;b<d;b++){j=e[b];if(j.isGroupHeader){j.getGridColumns(k,a)}else{j.hiddenAncestor=a;k.push(j)}}}if(!h){g.gridDataColumns=k}if(!h&&d){for(b=0,d=k.length;b<d;b++){j=k[b];j.isFirstVisible=j.isLastVisible=false;if(!j.hidden||j.hiddenAncestor){if(!c){j.isFirstVisible=true}c=j}}if(c){c.isLastVisible=true}}return k},getHideableColumns:function(){var b=this,a=b.hideableColumns;if(!a){a=b.hideableColumns=b.query("[hideable]")}return a},getHeaderIndex:function(a){if(a.isGroupHeader){a=a.down(":not([isGroupHeader])")}return Ext.Array.indexOf(this.getGridColumns(),a)},getHeaderAtIndex:function(a){var b=this.getGridColumns();return b.length?b[a]:null},getVisibleHeaderClosestToIndex:function(b){var a=this.getHeaderAtIndex(b);if(a&&a.hidden){a=a.next(":not([hidden])")||a.prev(":not([hidden])")}return a},autoSizeColumn:function(b){var a=this.view;if(a){a.autoSizeColumn(b)}}});Ext.define("Ext.grid.column.Column",{extend:Ext.grid.header.Container,alias:"widget.gridcolumn",alternateClassName:"Ext.grid.Column",baseCls:Ext.baseCSSPrefix+"column-header",hoverCls:Ext.baseCSSPrefix+"column-header-over",handleWidth:4,sortState:null,possibleSortStates:["ASC","DESC"],childEls:["titleEl","triggerEl","textEl"],renderTpl:'<div id="{id}-titleEl" {tipMarkup}class="'+Ext.baseCSSPrefix+'column-header-inner"><span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'column-header-text{childElCls}">{text}</span><tpl if="!menuDisabled"><div id="{id}-triggerEl" class="'+Ext.baseCSSPrefix+'column-header-trigger{childElCls}"></div></tpl></div>{%this.renderContainer(out,values)%}',dataIndex:null,text:"&#160;",menuText:null,emptyCellText:"&#160;",sortable:true,resizable:true,hideable:true,menuDisabled:false,renderer:false,editRenderer:false,align:"left",draggable:true,tooltipType:"qtip",initDraggable:Ext.emptyFn,tdCls:"",isHeader:true,ascSortCls:Ext.baseCSSPrefix+"column-header-sort-ASC",descSortCls:Ext.baseCSSPrefix+"column-header-sort-DESC",componentLayout:"columncomponent",groupSubHeaderCls:Ext.baseCSSPrefix+"group-sub-header",groupHeaderCls:Ext.baseCSSPrefix+"group-header",detachOnRemove:true,initResizable:Ext.emptyFn,initComponent:function(){var b=this,c,a;if(Ext.isDefined(b.header)){b.text=b.header;delete b.header}if(!b.triStateSort){b.possibleSortStates.length=2}if(Ext.isDefined(b.columns)){b.isGroupHeader=true;b.items=b.columns;delete b.columns;delete b.flex;delete b.width;b.cls=(b.cls||"")+" "+b.groupHeaderCls;b.sortable=false;b.resizable=false;b.align="center"}else{b.isContainer=false;if(b.flex){b.minWidth=b.minWidth||Ext.grid.plugin.HeaderResizer.prototype.minColWidth}}b.addCls(Ext.baseCSSPrefix+"column-header-align-"+b.align);c=b.renderer;if(c){if(typeof c=="string"){b.renderer=Ext.util.Format[c]}b.hasCustomRenderer=true}else{if(b.defaultRenderer){b.scope=b;b.renderer=b.defaultRenderer}}b.callParent(arguments);a={element:"el",click:b.onElClick,contextmenu:b.onElContextMenu,scope:b};if(b.resizable){a.dblclick=b.onElDblClick}b.on(a);b.on({element:"titleEl",mouseenter:b.onTitleMouseOver,mouseleave:b.onTitleMouseOut,scope:b})},onAdd:function(a){a.isSubHeader=true;if(this.hidden){a.hide()}a.addCls(this.groupSubHeaderCls);this.callParent(arguments)},onRemove:function(a){a.isSubHeader=false;a.removeCls(this.groupSubHeaderCls);this.callParent(arguments)},initRenderData:function(){var b=this,d="",c=b.tooltip,a=b.tooltipType=="qtip"?"data-qtip":"title";if(!Ext.isEmpty(c)){d=a+'="'+c+'" '}return Ext.applyIf(b.callParent(arguments),{text:b.text,menuDisabled:b.menuDisabled,tipMarkup:d})},applyColumnState:function(b){var a=this,c=Ext.isDefined;a.applyColumnsState(b.columns);if(c(b.hidden)){a.hidden=b.hidden}if(c(b.locked)){a.locked=b.locked}if(c(b.sortable)){a.sortable=b.sortable}if(c(b.width)){delete a.flex;a.width=b.width}else{if(c(b.flex)){delete a.width;a.flex=b.flex}}},getColumnState:function(){var e=this,b=e.items.items,a=b?b.length:0,d,c=[],g={id:e.getStateId()};e.savePropsToState(["hidden","sortable","locked","flex","width"],g);if(e.isGroupHeader){for(d=0;d<a;d++){c.push(b[d].getColumnState())}if(c.length){g.columns=c}}else{if(e.isSubHeader&&e.ownerCt.hidden){delete e.hidden}}if("width" in g){delete g.flex}return g},getStateId:function(){return this.stateId||this.headerId},setText:function(a){this.text=a;if(this.rendered){this.textEl.update(a)}},getIndex:function(){return this.isGroupColumn?false:this.getOwnerHeaderCt().getHeaderIndex(this)},getVisibleIndex:function(){return this.isGroupColumn?false:Ext.Array.indexOf(this.getOwnerHeaderCt().getVisibleGridColumns(),this)},beforeRender:function(){var b=this,a=b.up("tablepanel");b.callParent();if(a&&(!b.sortable||a.sortableColumns===false)&&!b.groupable&&!b.lockable&&(a.enableColumnHide===false||!b.getOwnerHeaderCt().getHideableColumns().length)){b.menuDisabled=true}b.protoEl.unselectable()},afterRender:function(){var b=this,a=b.el;b.callParent(arguments);if(b.overCls){a.addClsOnOver(b.overCls)}if(!Ext.isIE8||!Ext.isStrict){b.mon(b.getFocusEl(),{focus:b.onTitleMouseOver,blur:b.onTitleMouseOut,scope:b})}b.keyNav=new Ext.util.KeyNav(a,{enter:b.onEnterKey,down:b.onDownKey,scope:b})},afterComponentLayout:function(d,a,c,g){var e=this,b=e.getOwnerHeaderCt();e.callParent(arguments);if(b&&(c!=null||e.flex)&&d!==c){b.onHeaderResize(e,d,true)}},setPadding:function(b,j){var d=this,h=d.textEl.dom.offsetHeight,a=d.titleEl,g=a.dom.offsetHeight,e,c;j-=b.borderInfo.height;if(b.innerCtContext){d.layout.innerCt.setHeight(j-g)}else{if(g<j){if(h){g=j;j-=h;e=Math.floor(j/2);c=j-e;a.setStyle({paddingTop:e+"px",paddingBottom:c+"px"})}}}if((Ext.isIE6||Ext.isIEQuirks)&&d.triggerEl){d.triggerEl.setHeight(g)}},onDestroy:function(){var a=this;Ext.destroy(a.textEl,a.keyNav,a.field);delete a.keyNav;a.callParent(arguments)},onTitleMouseOver:function(){this.titleEl.addCls(this.hoverCls)},onTitleMouseOut:function(){this.titleEl.removeCls(this.hoverCls)},onDownKey:function(a){if(this.triggerEl){this.onElClick(a,this.triggerEl.dom||this.el.dom)}},onEnterKey:function(a){this.onElClick(a,this.el.dom)},onElDblClick:function(g,a){var c=this,b,d;if(c.isOnLeftEdge(g)){b=c.previousNode("gridcolumn:not([hidden]):not([isGroupHeader])");if(b&&b.getOwnerHeaderCt()===c.getOwnerHeaderCt()){b.autoSize()}}else{if(c.isOnRightEdge(g)){if(c.isGroupHeader&&g.getPoint().isContainedBy(c.layout.innerCt)){d=c.query("gridcolumn:not([hidden]):not([isGroupHeader])");this.getOwnerHeaderCt().autoSizeColumn(d[d.length-1]);return}c.autoSize()}}},autoSize:function(){var b=this,c,e,a,d;if(b.isGroupHeader){c=b.query("gridcolumn:not([hidden]):not([isGroupHeader])");e=c.length;d=this.getOwnerHeaderCt();Ext.suspendLayouts();for(a=0;a<e;a++){d.autoSizeColumn(c[a])}Ext.resumeLayouts(true);return}this.getOwnerHeaderCt().autoSizeColumn(this)},onElClick:function(d,b){var c=this,a=c.getOwnerHeaderCt();if(a&&!a.ddLock){if(c.triggerEl&&(d.target===c.triggerEl.dom||b===c.triggerEl.dom||d.within(c.triggerEl))){a.onHeaderTriggerClick(c,d,b)}else{if(d.getKey()||!c.isOnLeftEdge(d)&&!c.isOnRightEdge(d)){c.toggleSortState();a.onHeaderClick(c,d,b)}}}},onElContextMenu:function(d,b){var c=this,a=c.getOwnerHeaderCt();if(a&&!a.ddLock){a.onHeaderContextMenu(c,d,b)}},processEvent:function(g,b,a,c,d,h){return this.fireEvent.apply(this,arguments)},toggleSortState:function(){var b=this,a,c;if(b.sortable){a=Ext.Array.indexOf(b.possibleSortStates,b.sortState);c=(a+1)%b.possibleSortStates.length;b.setSortState(b.possibleSortStates[c])}},doSort:function(c){var b=this.up("tablepanel"),a=b.store;if(b.ownerLockable&&a.isNodeStore){a=b.ownerLockable.lockedGrid.store}a.sort({property:this.getSortParam(),direction:c})},getSortParam:function(){return this.dataIndex},setSortState:function(g,e,c){var d=this,h=d.ascSortCls,b=d.descSortCls,a=d.getOwnerHeaderCt(),j=d.sortState;g=g||null;if(!d.sorting&&j!==g&&d.getSortParam()){if(g&&!c){d.sorting=true;d.doSort(g);d.sorting=false}switch(g){case"DESC":d.addCls(b);d.removeCls(h);break;case"ASC":d.addCls(h);d.removeCls(b);break;default:d.removeCls([h,b])}if(a&&!d.triStateSort&&!e){a.clearOtherSortStates(d)}d.sortState=g;if(d.triStateSort||g!=null){a.fireEvent("sortchange",a,d,g)}}},isHideable:function(){var a={hideCandidate:this,result:this.hideable};if(a.result){this.ownerCt.bubble(this.hasOtherMenuEnabledChildren,null,[a])}return a.result},hasOtherMenuEnabledChildren:function(a){var b,c;if(!this.isXType("headercontainer")){a.result=false;return false}b=this.query(">:not([hidden]):not([menuDisabled])");c=b.length;if(Ext.Array.contains(b,a.hideCandidate)){c--}if(c){return false}a.hideCandidate=this},isLockable:function(){var a={result:this.lockable!==false};if(a.result){this.ownerCt.bubble(this.hasMultipleVisibleChildren,null,[a])}return a.result},hasMultipleVisibleChildren:function(a){if(!this.isXType("headercontainer")){a.result=false;return false}if(this.query(">:not([hidden])").length>1){return false}},hide:function(c){var j=this,e=j.getOwnerHeaderCt(),b=j.ownerCt,a,k,h,g,d;if(!e){j.callParent();return j}if(e.forceFit){j.visibleSiblingCount=e.getVisibleGridColumns().length-1;if(j.flex){j.savedWidth=j.getWidth();delete j.flex}}a=b.isGroupHeader;if(a&&!c){h=b.query(">:not([hidden])");if(h.length===1&&h[0]==j){j.ownerCt.hide();return}}Ext.suspendLayouts();if(j.isGroupHeader){h=j.items.items;for(d=0,g=h.length;d<g;d++){k=h[d];if(!k.hidden){k.hide(true)}}}j.callParent();e.onHeaderHide(j);Ext.resumeLayouts(true);return j},show:function(g,h){var n=this,k=n.getOwnerHeaderCt(),d=n.ownerCt,m,l,j,o,b,a,e,c;if(!n.rendered){n.hidden=false;return}a=k.el.getViewSize().width-(k.view.el.dom.scrollHeight>k.view.el.dom.clientHeight?Ext.getScrollbarSize().width:0);if(k.forceFit){m=Ext.ComponentQuery.query(":not([flex])",k.getVisibleGridColumns());if(m.length){n.width=n.savedWidth||n.width||Ext.grid.header.Container.prototype.defaultWidth}else{m=k.getVisibleGridColumns();l=m.length;c=n.visibleSiblingCount;b=n.savedWidth||n.width||Ext.grid.header.Container.prototype.defaultWidth;b=Math.min(Math.max(b*(c/l),Ext.grid.header.Container.prototype.defaultWidth),a-l*Ext.grid.header.Container.prototype.defaultWidth);delete n.width;n.flex=b;a-=b;e=0;for(j=0;j<l;j++){o=m[j];o.flex=o.width||o.getWidth();e+=o.flex;delete o.width}for(j=0;j<l;j++){o=m[j];o.flex=o.flex/e*a}}}Ext.suspendLayouts();if(n.isSubHeader&&d.hidden){d.show(false,true)}n.callParent(arguments);if(n.isGroupHeader&&h!==true&&!n.query(":not([hidden])").length){m=n.items.items;for(j=0,l=m.length;j<l;j++){o=m[j];if(o.hidden){o.show(true)}}}Ext.resumeLayouts(true);d=n.getOwnerHeaderCt();if(d){d.onHeaderShow(n)}},getDesiredWidth:function(){var a=this;if(a.rendered&&a.componentLayout&&a.componentLayout.lastComponentSize){return a.componentLayout.lastComponentSize.width}else{if(a.flex){return a.width}else{return a.width}}},getCellSelector:function(){return"."+Ext.baseCSSPrefix+"grid-cell-"+this.getItemId()},getCellInnerSelector:function(){return this.getCellSelector()+" ."+Ext.baseCSSPrefix+"grid-cell-inner"},isOnLeftEdge:function(a){return a.getXY()[0]-this.getX()<=this.handleWidth},isOnRightEdge:function(a){return this.getX()+this.getWidth()-a.getXY()[0]<=this.handleWidth},setMenuActive:function(a){this.titleEl[a?"addCls":"removeCls"](this.headerOpenCls)}});Ext.define("Ext.grid.RowNumberer",{extend:Ext.grid.column.Column,alias:"widget.rownumberer",text:"&#160",width:23,sortable:false,draggable:false,autoLock:true,lockable:false,align:"right",constructor:function(a){this.width=this.width;this.callParent(arguments);if(this.rowspan){this.renderer=Ext.Function.bind(this.renderer,this)}},resizable:false,hideable:false,menuDisabled:true,dataIndex:"",cls:Ext.baseCSSPrefix+"row-numberer",rowspan:undefined,renderer:function(e,b,a,d,h,c){var g=this.rowspan;if(g){b.tdAttr='rowspan="'+g+'"'}b.tdCls=Ext.baseCSSPrefix+"grid-cell-special";return d+1}});Ext.define("Ext.view.DropZone",{extend:Ext.dd.DropZone,indicatorHtml:'<div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-left"></div><div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-right"></div>',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",constructor:function(a){var b=this;Ext.apply(b,a);if(!b.ddGroup){b.ddGroup="view-dd-zone-"+b.view.id}b.callParent([b.view.el])},fireViewEvent:function(){var b=this,a;b.lock();a=b.view.fireEvent.apply(b.view,arguments);b.unlock();return a},getTargetFromEvent:function(k){var j=k.getTarget(this.view.getItemSelector()),d,c,b,g,a,h;if(!j){d=k.getPageY();for(g=0,c=this.view.getNodes(),a=c.length;g<a;g++){b=c[g];h=Ext.fly(b).getBox();if(d<=h.bottom){return b}}}return j},getIndicator:function(){var a=this;if(!a.indicator){a.indicator=new Ext.Component({html:a.indicatorHtml,cls:a.indicatorCls,ownerCt:a.view,floating:true,shadow:false})}return a.indicator},getPosition:function(c,a){var g=c.getXY()[1],b=Ext.fly(a).getRegion(),d;if(b.bottom-g>=(b.bottom-b.top)/2){d="before"}else{d="after"}return d},containsRecordAtOffset:function(d,b,g){if(!b){return false}var a=this.view,c=a.indexOf(b),e=a.getNode(c+g,true),h=e?a.getRecord(e):null;return h&&Ext.Array.contains(d,h)},positionIndicator:function(b,c,d){var g=this,j=g.view,h=g.getPosition(d,b),l=j.getRecord(b),a=c.records,k;if(!Ext.Array.contains(a,l)&&(h=="before"&&!g.containsRecordAtOffset(a,l,-1)||h=="after"&&!g.containsRecordAtOffset(a,l,1))){g.valid=true;if(g.overRecord!=l||g.currentPosition!=h){k=Ext.fly(b).getY()-j.el.getY()-1;if(h=="after"){k+=Ext.fly(b).getHeight()}g.getIndicator().setWidth(Ext.fly(j.el).getWidth()).showAt(0,k);g.overRecord=l;g.currentPosition=h}}else{g.invalidateDrop()}},invalidateDrop:function(){if(this.valid){this.valid=false;this.getIndicator().hide()}},onNodeOver:function(c,a,g,d){var b=this;if(!Ext.Array.contains(d.records,b.view.getRecord(c))){b.positionIndicator(c,d,g)}return b.valid?b.dropAllowed:b.dropNotAllowed},notifyOut:function(c,a,g,d){var b=this;b.callParent(arguments);b.overRecord=b.currentPosition=null;b.valid=false;if(b.indicator){b.indicator.hide()}},onContainerOver:function(a,h,g){var d=this,b=d.view,c=b.dataSource.getCount();if(c){d.positionIndicator(b.all.last(),g,h)}else{d.overRecord=d.currentPosition=null;d.getIndicator().setWidth(Ext.fly(b.el).getWidth()).showAt(0,0);d.valid=true}return d.dropAllowed},onContainerDrop:function(a,c,b){return this.onNodeDrop(a,null,c,b)},onNodeDrop:function(j,a,h,g){var d=this,c=false,b={wait:false,processDrop:function(){d.invalidateDrop();d.handleNodeDrop(g,d.overRecord,d.currentPosition);c=true;d.fireViewEvent("drop",j,g,d.overRecord,d.currentPosition)},cancelDrop:function(){d.invalidateDrop();c=true}},k=false;if(d.valid){k=d.fireViewEvent("beforedrop",j,g,d.overRecord,d.currentPosition,b);if(b.wait){return}if(k!==false){if(!c){b.processDrop()}}}return k},destroy:function(){Ext.destroy(this.indicator);delete this.indicator;this.callParent()}});Ext.define("Ext.grid.ViewDropZone",{extend:Ext.view.DropZone,indicatorHtml:'<div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-left"></div><div class="'+Ext.baseCSSPrefix+'grid-drop-indicator-right"></div>',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",handleNodeDrop:function(b,d,e){var j=this.view,k=j.getStore(),h,a,c,g;if(b.copy){a=b.records;b.records=[];for(c=0,g=a.length;c<g;c++){b.records.push(a[c].copy())}}else{b.view.store.remove(b.records,b.view===j)}if(d&&e){h=k.indexOf(d);if(e!=="before"){h++}k.insert(h,b.records)}else{k.add(b.records)}j.getSelectionModel().select(b.records)}});Ext.define("Ext.grid.column.Action",{extend:Ext.grid.column.Column,alias:["widget.actioncolumn"],alternateClassName:"Ext.grid.ActionColumn",actionIdRe:new RegExp(Ext.baseCSSPrefix+"action-col-(\\d+)"),altText:"",menuText:"<i>Actions</i>",sortable:false,constructor:function(d){var g=this,b=Ext.apply({},d),c=b.items||g.items||[g],h,e,a;g.origRenderer=b.renderer||g.renderer;g.origScope=b.scope||g.scope;g.renderer=g.scope=b.renderer=b.scope=null;b.items=null;g.callParent([b]);g.items=c;for(e=0,a=c.length;e<a;++e){if(c[e].getClass){h=true;break}}if(g.origRenderer||h){g.hasCustomRenderer=true}},defaultRenderer:function(o,s,e,a,d,n,m){var l=this,g=Ext.baseCSSPrefix,q=l.origScope||l,k=l.items,h=k.length,c=0,p,j,b,t;j=Ext.isFunction(l.origRenderer)?l.origRenderer.apply(q,arguments)||"":"";s.tdCls+=" "+Ext.baseCSSPrefix+"action-col-cell";for(;c<h;c++){p=k[c];b=p.disabled||(p.isDisabled?p.isDisabled.call(p.scope||q,m,a,d,p,e):false);t=b?null:p.tooltip||(p.getTip?p.getTip.apply(p.scope||q,arguments):null);if(!p.hasActionConfiguration){p.stopSelection=l.stopSelection;p.disable=Ext.Function.bind(l.disableAction,l,[c],0);p.enable=Ext.Function.bind(l.enableAction,l,[c],0);p.hasActionConfiguration=true}j+='<img alt="'+(p.altText||l.altText)+'" src="'+(p.icon||Ext.BLANK_IMAGE_URL)+'" class="'+g+"action-col-icon "+g+"action-col-"+String(c)+" "+(b?g+"item-disabled":" ")+" "+(Ext.isFunction(p.getClass)?p.getClass.apply(p.scope||q,arguments):p.iconCls||l.iconCls||"")+'"'+(t?' data-qtip="'+t+'"':"")+" />"}return j},enableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=false;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).removeCls(c.disabledCls);if(!a){c.fireEvent("enable",c)}},disableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=true;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).addCls(c.disabledCls);if(!a){c.fireEvent("disable",c)}},destroy:function(){delete this.items;delete this.renderer;return this.callParent(arguments)},processEvent:function(k,n,p,b,l,h,d,s){var j=this,g=h.getTarget(),c,q,m,o=k=="keydown"&&h.getKey(),a;if(o&&!Ext.fly(g).findParent(n.getCellSelector())){g=Ext.fly(p).down("."+Ext.baseCSSPrefix+"action-col-icon",true)}if(g&&(c=g.className.match(j.actionIdRe))){q=j.items[parseInt(c[1],10)];a=q.disabled||(q.isDisabled?q.isDisabled.call(q.scope||j.origScope||j,n,b,l,q,d):false);if(q&&!a){if(k=="click"||o==h.ENTER||o==h.SPACE){m=q.handler||j.handler;if(m){m.call(q.scope||j.origScope||j,n,b,l,q,h,d,s)}}else{if(k=="mousedown"&&q.stopSelection!==false){return false}}}}return j.callParent(arguments)},cascade:function(b,a){b.call(a||this,this)},getRefItems:function(){return[]}});Ext.define("Ext.grid.column.Boolean",{extend:Ext.grid.column.Column,alias:["widget.booleancolumn"],alternateClassName:"Ext.grid.BooleanColumn",trueText:"true",falseText:"false",undefinedText:"&#160;",defaultRenderer:function(a){if(a===undefined){return this.undefinedText}if(!a||a==="false"){return this.falseText}return this.trueText}});Ext.define("Ext.grid.column.CheckColumn",{extend:Ext.grid.column.Column,alternateClassName:"Ext.ux.CheckColumn",alias:"widget.checkcolumn",align:"center",stopSelection:true,tdCls:Ext.baseCSSPrefix+"grid-cell-checkcolumn",constructor:function(){this.addEvents("beforecheckchange","checkchange");this.scope=this;this.callParent(arguments)},processEvent:function(h,k,o,b,j,d,c,p){var g=this,n=h==="keydown"&&d.getKey(),a=h=="mousedown";if(!g.disabled&&(a||n==d.ENTER||n==d.SPACE)){var l=g.dataIndex,m=!c.get(l);if(g.fireEvent("beforecheckchange",g,b,m)!==false){c.set(l,m);g.fireEvent("checkchange",g,b,m);if(a){d.stopEvent()}if(!g.stopSelection){k.selModel.selectByPosition({row:b,column:j})}return false}else{return !g.stopSelection}}else{return g.callParent(arguments)}},onEnable:function(a){var b=this;b.callParent(arguments);b.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"grid-cell-"+b.id).removeCls(b.disabledCls);if(!a){b.fireEvent("enable",b)}},onDisable:function(a){var b=this;b.callParent(arguments);b.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"grid-cell-"+b.id).addCls(b.disabledCls);if(!a){b.fireEvent("disable",b)}},renderer:function(b,c){var d=Ext.baseCSSPrefix,a=[d+"grid-checkcolumn"];if(this.disabled){c.tdCls+=" "+this.disabledCls}if(b){a.push(d+"grid-checkcolumn-checked")}return'<img class="'+a.join(" ")+'" src="'+Ext.BLANK_IMAGE_URL+'"/>'}});Ext.define("Ext.grid.column.Date",{extend:Ext.grid.column.Column,alias:["widget.datecolumn"],alternateClassName:"Ext.grid.DateColumn",initComponent:function(){if(!this.format){this.format=Ext.Date.defaultFormat}this.callParent(arguments)},defaultRenderer:function(a){return Ext.util.Format.date(a,this.format)}});Ext.define("Ext.grid.column.Number",{extend:Ext.grid.column.Column,alias:["widget.numbercolumn"],alternateClassName:"Ext.grid.NumberColumn",format:"0,000.00",defaultRenderer:function(a){return Ext.util.Format.number(a,this.format)}});Ext.define("Ext.grid.column.Template",{extend:Ext.grid.column.Column,alias:["widget.templatecolumn"],alternateClassName:"Ext.grid.TemplateColumn",initComponent:function(){var a=this;a.tpl=!Ext.isPrimitive(a.tpl)&&a.tpl.compile?a.tpl:new Ext.XTemplate(a.tpl);a.hasCustomRenderer=true;a.callParent(arguments)},defaultRenderer:function(c,d,a){var b=Ext.apply({},a.data,a.getAssociatedData());return this.tpl.apply(b)}});Ext.define("Ext.grid.feature.Feature",{extend:Ext.util.Observable,alias:"feature.feature",wrapsItem:false,isFeature:true,disabled:false,hasFeatureEvent:true,eventPrefix:null,eventSelector:null,view:null,grid:null,constructor:function(a){this.initialConfig=a;this.callParent(arguments)},clone:function(){return new this.self(this.initialConfig)},init:Ext.emptyFn,destroy:function(){this.clearListeners()},getFireEventArgs:function(b,a,c,d){return[b,a,c,d]},vetoEvent:Ext.emptyFn,enable:function(){this.disabled=false},disable:function(){this.disabled=true}});Ext.define("Ext.grid.feature.AbstractSummary",{extend:Ext.grid.feature.Feature,alias:"feature.abstractsummary",summaryRowCls:Ext.baseCSSPrefix+"grid-row-summary",summaryTableCls:Ext.baseCSSPrefix+"table-plain "+Ext.baseCSSPrefix+"grid-table",summaryRowSelector:"."+Ext.baseCSSPrefix+"grid-row-summary",summaryRowTpl:{before:function(a,b){if(a.record.isSummary){this.summaryFeature.outputSummaryRecord(a.record,a,b);return false}},priority:1000},showSummaryRow:true,init:function(){var a=this;a.view.summaryFeature=a;a.rowTpl=a.view.self.prototype.rowTpl;a.view.addRowTpl(a.summaryRowTpl).summaryFeature=a},toggleSummaryRow:function(a){this.showSummaryRow=!!a},outputSummaryRecord:function(g,l,d){var h=l.view,a=h.rowValues,c=l.columns||h.headerCt.getGridColumns(),k=c.length,e,b,j={view:h,record:g,rowStyle:"",rowClasses:[this.summaryRowCls],itemClasses:[],recordIndex:-1,rowId:h.getRowId(g),columns:c,visibleColumns:l.visibleColumns||h.headerCt.getVisibleGridColumns()};for(e=0;e<k;e++){b=c[e];b.savedRenderer=b.renderer;if(b.summaryRenderer){b.renderer=b.summaryRenderer}else{if(!b.summaryType){b.renderer=Ext.emptyFn}}if(!b.dataIndex){b.dataIndex=b.id}}h.rowValues=j;h.self.prototype.rowTpl.applyOut(j,d);h.rowValues=a;for(e=0;e<k;e++){b=c[e];b.renderer=b.savedRenderer;b.savedRenderer=null}},getSummary:function(b,c,e,d){var a=d.records;if(c){if(Ext.isFunction(c)){return b.getAggregate(c,null,a,[e])}switch(c){case"count":return a.length;case"min":return b.getMin(a,e);case"max":return b.getMax(a,e);case"sum":return b.getSum(a,e);case"average":return b.getAverage(a,e);default:return""}}},generateSummaryData:function(){var l=this,o=l.view.store,c=o.groups.items,h=o.proxy.reader,j=c.length,a=l.getGroupField(),e={},k=l.lockingPartner,d,p,g,m,s,b,q,n;if(l.remoteRoot&&h.rawData){b=true;n={};m=h.root;h.root=l.remoteRoot;h.buildExtractors(true);s=h.getRoot(h.rawData);j=s.length;if(!h.convertRecordData){h.buildExtractors()}for(d=0;d<j;++d){q={};h.convertRecordData(q,s[d]);n[q[a]]=q}h.root=m;h.buildExtractors(true)}for(d=0;d<j;++d){p=c[d];if(b||p.isDirty()||!p.hasAggregate()){if(b){g=l.populateRemoteRecord(p,n)}else{g=l.populateRecord(p)}if(!k||l.view.ownerCt===l.view.ownerCt.ownerLockable.normalGrid){p.commit()}}else{g=p.getAggregateRecord();if(k&&!g.hasPartnerData){l.populateRecord(p);g.hasPartnerData=true}}e[p.key]=g}return e},populateRemoteRecord:function(e,c){var a=e.getAggregateRecord(true),b=c[e.key],d;a.beginEdit();for(d in b){if(b.hasOwnProperty(d)){if(d!==a.idProperty){a.set(d,b[d])}}}a.endEdit(true);a.commit(true);return a},populateRecord:function(k){var g=this,h=g.view,j=h.store,d=k.getAggregateRecord(),b=h.headerCt.getGridColumns(),e=b.length,c,a,l;d.beginEdit();for(c=0;c<e;++c){a=b[c];l=a.dataIndex||a.id;d.set(l,g.getSummary(j,a.summaryType,l,k))}d.endEdit(true);d.commit();return d}});Ext.define("Ext.grid.feature.GroupStore",{extend:Ext.util.Observable,isStore:true,constructor:function(c,a){var b=this;b.superclass.constructor.apply(b,arguments);b.groupingFeature=c;b.bindStore(a);b.processStore(a);b.view.dataSource=b},bindStore:function(a){var b=this;if(b.store){Ext.destroy(b.storeListeners);b.store=null}if(a){b.storeListeners=a.on({bulkremove:b.onBulkRemove,add:b.onAdd,update:b.onUpdate,refresh:b.onRefresh,clear:b.onClear,scope:b,destroyable:true});b.store=a}},processStore:function(j){var h=this,b=j.model,a=j.getGroups(),l=a.length,e,m,n,d=h.data,k=this.groupingFeature.groupCache,c=this.groupingFeature.groupCache={},g=h.groupingFeature.startCollapsed;if(d){d.clear()}else{d=h.data=new Ext.util.MixedCollection(false,Ext.data.Store.recordIdFn)}for(e=0;e<l;e++){m=a[e];c[m.name]=m;m.isCollapsed=g||k[m.name]&&k[m.name].isCollapsed;if(m.isCollapsed){m.placeholder=n=new b(null,"group-"+m.name+"-placeholder");n.set(h.getGroupField(),m.name);n.rows=n.children=m.children;d.add(n)}else{d.insert(h.data.length,m.children)}}},isCollapsed:function(a){return this.groupingFeature.groupCache[a].isCollapsed},isInCollapsedGroup:function(a){var b;if(this.store.isGrouped()&&(b=this.groupingFeature.groupCache[a.get(this.getGroupField())])){return b.isCollapsed||false}return false},getCount:function(){return this.data.getCount()},getTotalCount:function(){return this.data.getCount()},rangeCached:function(){return true},getRange:function(d,b,c){var a=this.data.getRange(d,b);if(c&&c.callback){c.callback.call(c.scope||this,a,d,b,c)}return a},getAt:function(a){return this.getRange(a,a)[0]},getById:function(a){return this.store.getById(a)},indexOf:function(d,j){var e=this,a,b,h,c,k,g,l=0;if(d&&!e.isInCollapsedGroup(d)){a=e.store.groupField;b=e.store.getGroups();h=b.length;for(c=0;c<h;c++){k=b[c];if(k.name===d.get(a)){g=Ext.Array.indexOf(k.children,d);return l+g}l+=j&&this.isCollapsed(k.name)?1:k.children.length}}return -1},onRefresh:function(a){this.processStore(this.store);this.fireEvent("refresh",this)},onBulkRemove:function(b,a,c){this.processStore(this.store);this.fireEvent("refresh",this)},onClear:function(b,a,c){this.processStore(this.store);this.fireEvent("clear",this)},onAdd:function(b,a,c){this.processStore(this.store);this.fireEvent("refresh",this)},onUpdate:function(c,a,b,h){var g=this,d=g.groupingFeature.getRecordGroup(a),j,e;if(c.isGrouped()){if(h&&Ext.Array.contains(h,g.groupingFeature.getGroupField())){return g.onRefresh(g.store)}if(d.isCollapsed){g.fireEvent("update",g,d.placeholder)}else{Ext.suspendLayouts();g.fireEvent("update",g,a,b,h);j=d.children[0];e=d.children[d.children.length-1];if(j!==a){g.fireEvent("update",g,j,"edit")}if(e!==a&&e!==j){g.fireEvent("update",g,e,"edit")}Ext.resumeLayouts(true)}}}});Ext.define("Ext.grid.feature.Grouping",{extend:Ext.grid.feature.Feature,mixins:{summary:Ext.grid.feature.AbstractSummary},alias:"feature.grouping",eventPrefix:"group",groupCls:Ext.baseCSSPrefix+"grid-group-hd",eventSelector:"."+Ext.baseCSSPrefix+"grid-group-hd",refreshData:{},groupInfo:{},wrapsItem:true,groupHeaderTpl:"{columnName}: {name}",depthToIndent:17,collapsedCls:Ext.baseCSSPrefix+"grid-group-collapsed",hdCollapsedCls:Ext.baseCSSPrefix+"grid-group-hd-collapsed",hdNotCollapsibleCls:Ext.baseCSSPrefix+"grid-group-hd-not-collapsible",collapsibleCls:Ext.baseCSSPrefix+"grid-group-hd-collapsible",ctCls:Ext.baseCSSPrefix+"group-hd-container",groupByText:"Group by this field",showGroupsText:"Show in groups",hideGroupedHeader:false,startCollapsed:false,enableGroupingMenu:true,enableNoGroups:true,collapsible:true,expandTip:"Click to expand. CTRL key collapses all others",collapseTip:"Click to collapse. CTRL/click collapses all others",showSummaryRow:false,tableTpl:{before:function(a){if(a.rows.length===1&&a.rows[0].isSummary){return}this.groupingFeature.setup(a.rows,a.view.rowValues)},after:function(a){if(a.rows.length===1&&a.rows[0].isSummary){return}this.groupingFeature.cleanup(a.rows,a.view.rowValues)},priority:200},groupTpl:["{%","var me = this.groupingFeature;","me.setupRowData(values.record, values.recordIndex, values);","values.needsWrap = values.isFirstRow || values.summaryRecord;","values.recordIndex += me.skippedRows;","%}",'<tpl if="needsWrap">','<tr data-boundView="{view.id}" data-recordId="{record.internalId}" data-recordIndex="{[values.isCollapsedGroup ? -1 : values.recordIndex]}" class="{[values.itemClasses.join(" ")]} '+Ext.baseCSSPrefix+'grid-wrap-row">','<td class="'+Ext.baseCSSPrefix+'group-hd-container" colspan="{columns.length}">','<tpl if="isFirstRow">',"{%",'var groupTitleStyle = (!values.view.lockingPartner || (values.view.ownerCt === values.view.ownerCt.ownerLockable.lockedGrid) || (values.view.lockingPartner.headerCt.getVisibleGridColumns().length === 0)) ? "" : "visibility:hidden";',"%}",'<div id="{groupId}" class="'+Ext.baseCSSPrefix+'grid-group-hd {collapsibleCls}" tabIndex="0">','<div class="'+Ext.baseCSSPrefix+'grid-group-title" style="{[groupTitleStyle]}">','{[values.groupHeaderTpl.apply(values.groupInfo, parent) || "&#160;"]}',"</div>","</div>","</tpl>",'<tpl if="summaryRecord || !isCollapsedGroup">','<table class="'+Ext.baseCSSPrefix+"{view.id}-table "+Ext.baseCSSPrefix+'grid-table" border="0" cellspacing="0" cellpadding="0" style="width:100%">',"{[values.view.renderColumnSizer(out)]}",'<tpl if="!isCollapsedGroup">',"{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent);","%}","</tpl>",'<tpl if="summaryRecord">',"{%me.outputSummaryRecord(values.summaryRecord, values, out);%}","</tpl>","</table>","</tpl>","</td>","</tr>","{%","if (values.isCollapsedGroup) {","me.skippedRows += me.getRecordGroup(values.record).children.length - 1;","}","%}","<tpl else>","{%this.nextTpl.applyOut(values, out, parent);%}","</tpl>",{priority:200,syncRowHeights:function(d,k){d=Ext.fly(d,"syncDest");k=Ext.fly(k,"sycSrc");var b=this.owner,e=d.down(b.eventSelector,true),g,h=d.down(b.summaryRowSelector,true),c,a,j;if(e&&(g=k.down(b.eventSelector,true))){e.style.height=g.style.height="";if((a=e.offsetHeight)>(j=g.offsetHeight)){Ext.fly(g).setHeight(a)}else{if(j>a){Ext.fly(e).setHeight(j)}}}if(h&&(c=k.down(b.summaryRowSelector,true))){h.style.height=c.style.height="";if((a=h.offsetHeight)>(j=c.offsetHeight)){Ext.fly(c).setHeight(a)}else{if(j>a){Ext.fly(h).setHeight(j)}}}},syncContent:function(b,h){b=Ext.fly(b,"syncDest");h=Ext.fly(h,"sycSrc");var a=this.owner,d=b.down(a.eventSelector,true),c=h.down(a.eventSelector,true),g=b.down(a.summaryRowSelector,true),e=h.down(a.summaryRowSelector,true);if(d&&c){Ext.fly(d).syncContent(c)}if(g&&e){Ext.fly(g).syncContent(e)}}}],constructor:function(){this.groupCache={};this.callParent(arguments)},init:function(b){var c=this,a=c.view;c.mixins.summary.init.call(c);c.callParent(arguments);a.headerCt.on({columnhide:c.onColumnHideShow,columnshow:c.onColumnHideShow,columnmove:c.onColumnMove,scope:c});a.addTableTpl(c.tableTpl).groupingFeature=c;a.addRowTpl(Ext.XTemplate.getTpl(c,"groupTpl")).groupingFeature=c;a.preserveScrollOnRefresh=true;if(a.store.buffered){c.collapsible=false}else{c.dataSource=a.dataSource=new Ext.grid.feature.GroupStore(c,a.store);c.startCollapsed=false}c.grid.on({reconfigure:c.onReconfigure});a.on({afterrender:c.afterViewRender,scope:c,single:true})},vetoEvent:function(a,c,d,b){if(b.type!=="mouseover"&&b.type!=="mouseout"&&b.type!=="mouseenter"&&b.type!=="mouseleave"&&b.getTarget(this.eventSelector)){return false}},enable:function(){var c=this,a=c.view,b=a.store,d;c.lastGroupField=c.getGroupField();if(c.lastGroupIndex){c.block();b.group(c.lastGroupIndex);c.unblock()}c.callParent();d=c.view.headerCt.getMenu().down("#groupToggleMenuItem");if(d){d.setChecked(true,true)}c.refreshIf()},disable:function(){var d=this,a=d.view,b=a.store,e,c;c=b.groupers.first();if(c){d.lastGroupIndex=c.property;d.block();b.clearGrouping();d.unblock()}d.callParent();e=d.view.headerCt.getMenu().down("#groupToggleMenuItem");if(e){e.setChecked(false,true)}d.refreshIf()},refreshIf:function(){var b=this.grid.ownerCt,a=this.view;if(!a.store.remoteGroup&&!this.blockRefresh){if(b&&b.lockable){b.view.refresh()}else{a.refresh()}}},afterViewRender:function(){var b=this,a=b.view;a.on({scope:b,groupclick:b.onGroupClick});if(b.enableGroupingMenu){b.injectGroupingMenu()}b.pruneGroupedHeader();b.lastGroupField=b.getGroupField();b.block();b.onGroupChange();b.unblock()},injectGroupingMenu:function(){var a=this,b=a.view.headerCt;b.showMenuBy=a.showMenuBy;b.getMenuItems=a.getMenuItems()},onColumnHideShow:function(c,g){var k=this.view,b=k.headerCt,a=b.getMenu(),e=a.down("#groupMenuItem"),l=b.getGridColumns().length,j,h,d;if(e){if(b.getVisibleGridColumns().length>1){e.enable()}else{e.disable()}}if(k.rendered){j=k.el.query("."+this.ctCls);for(d=0,h=j.length;d<h;++d){j[d].colSpan=l}}},onColumnMove:function(){var h=this,c=h.view.store,b,e,a,d,j,g;if(c.isGrouped()){b=c.getGroups();a=b.length;for(e=0;e<a;e++){d=b[e];j=d.children[0];g=d.children[d.children.length-1];c.fireEvent("update",c,j,"edit");if(g!==j){c.fireEvent("update",c,g,"edit")}}}},showMenuBy:function(b,h){var g=this.getMenu(),c=g.down("#groupMenuItem"),a=h.groupable===false||this.view.headerCt.getVisibleGridColumns().length<2?"disable":"enable",e=g.down("#groupToggleMenuItem"),d=this.view.store.isGrouped();c[a]();if(e){e.setChecked(d,true);e[d?"enable":"disable"]()}Ext.grid.header.Container.prototype.showMenuBy.apply(this,arguments)},getMenuItems:function(){var g=this,c=g.groupByText,e=g.disabled||!g.getGroupField(),a=g.showGroupsText,d=g.enableNoGroups,b=g.view.headerCt.getMenuItems;return function(){var h=b.call(this);h.push("-",{iconCls:Ext.baseCSSPrefix+"group-by-icon",itemId:"groupMenuItem",text:c,handler:g.onGroupMenuItemClick,scope:g});if(d){h.push({itemId:"groupToggleMenuItem",text:a,checked:!e,checkHandler:g.onGroupToggleMenuItemClick,scope:g})}return h}},onGroupMenuItemClick:function(c,g){var d=this,h=c.parentMenu,j=h.activeHeader,a=d.view,b=a.store;delete d.lastGroupIndex;d.block();d.enable();b.group(j.dataIndex);d.pruneGroupedHeader();d.unblock();d.refreshIf()},block:function(){this.blockRefresh=this.view.blockRefresh=true},unblock:function(){this.blockRefresh=this.view.blockRefresh=false},onGroupToggleMenuItemClick:function(a,b){this[b?"enable":"disable"]()},pruneGroupedHeader:function(){var a=this,b=a.getGroupedHeader();if(a.hideGroupedHeader&&b){Ext.suspendLayouts();if(a.prunedHeader&&a.prunedHeader!==b){a.prunedHeader.show()}a.prunedHeader=b;b.hide();Ext.resumeLayouts(true)}},getHeaderNode:function(a){return Ext.get(this.createGroupId(a))},getGroup:function(b){var a=this.groupCache,c=a[b];if(!c){c=a[b]={isCollapsed:false}}return c},isExpanded:function(a){return !this.getGroup(a).isCollapsed},expand:function(b,a){this.doCollapseExpand(false,b,a)},expandAll:function(){var d=this,a=d.view,c=d.groupCache,e,b=d.lockingPartner;for(e in c){if(c.hasOwnProperty(e)){c[e].isCollapsed=false}}Ext.suspendLayouts();a.suspendEvent("beforerefresh","refresh");d.dataSource.onRefresh();a.resumeEvent("beforerefresh","refresh");if(b){b.expandAll()}Ext.resumeLayouts(true);for(e in c){if(c.hasOwnProperty(e)){a.fireEvent("groupexpand",a,Ext.get(this.getHeaderNode(e)),e)}}},collapse:function(b,a){this.doCollapseExpand(true,b,a)},collapseAll:function(){var d=this,a=d.view,c=d.groupCache,e,b=d.lockingPartner;for(e in c){if(c.hasOwnProperty(e)){c[e].isCollapsed=true}}Ext.suspendLayouts();a.suspendEvent("beforerefresh","refresh");d.dataSource.onRefresh();a.resumeEvent("beforerefresh","refresh");if(b){b.collapseAll()}Ext.resumeLayouts(true);for(e in c){if(c.hasOwnProperty(e)){a.fireEvent("groupcollapse",a,Ext.get(this.getHeaderNode(e)),e)}}},doCollapseExpand:function(e,h,b){var d=this,a=d.view,c=d.lockingPartner,g;if(d.groupCache[h].isCollapsed!=e){d.groupCache[h].isCollapsed=e;Ext.suspendLayouts();d.dataSource.onRefresh();g=Ext.get(this.getHeaderNode(h));a.fireEvent(e?"groupcollapse":"groupexpand",a,g,h);if(c){c.doCollapseExpand(e,h,b)}Ext.resumeLayouts(true);if(b){g.up(a.getItemSelector()).scrollIntoView(a.el,null,true)}}},onGroupChange:function(){var d=this,e=d.getGroupField(),c,a,b;if(d.hideGroupedHeader){if(d.lastGroupField){c=d.getMenuItem(d.lastGroupField);if(c){c.setChecked(true)}}if(e){a=d.view.headerCt.getVisibleGridColumns();b=a.length===1&&a[0].dataIndex==e;c=d.getMenuItem(e);if(c&&!b){c.setChecked(false)}}}d.refreshIf();d.lastGroupField=e},getMenuItem:function(b){var a=this.view,d=a.headerCt.down("gridcolumn[dataIndex="+b+"]"),c=a.headerCt.getMenu();return d?c.down("menuitem[headerId="+d.id+"]"):null},onGroupKey:function(c,b){var a=this,d=a.getGroupName(b.target);if(d){a.onGroupClick(a.view,b.target,d,b)}},onGroupClick:function(a,j,l,k){var h=this,d=h.groupCache,b=!h.isExpanded(l),c;if(h.collapsible){if(k.ctrlKey){Ext.suspendLayouts();for(c in d){if(c===l){if(b){h.expand(l)}}else{h.doCollapseExpand(true,c,false)}}Ext.resumeLayouts(true);return}if(b){h.expand(l)}else{h.collapse(l)}}},setupRowData:function(j,m,o){var k=this,e=k.refreshData,b=k.groupInfo,h=e.header,c=e.groupField,l=k.view.dataSource,a,n,d,g;o.isCollapsedGroup=false;o.summaryRecord=null;if(e.doGrouping){a=k.view.store.groupers.first();n=a.getGroupString(j);o.isFirstRow=m===0;if(!o.isFirstRow){d=l.getAt(m-1);if(d){o.isFirstRow=!d.isEqual(a.getGroupString(d),n)}}o.isLastRow=m==l.getTotalCount()-1;if(!o.isLastRow){g=l.getAt(m+1);if(g){o.isLastRow=!g.isEqual(a.getGroupString(g),n)}}if(o.isFirstRow){b.groupField=c;b.name=n;b.groupValue=j.get(c);b.columnName=h?h.text:c;o.collapsibleCls=k.collapsible?k.collapsibleCls:k.hdNotCollapsibleCls;o.groupId=k.createGroupId(n);if(!k.isExpanded(n)){o.itemClasses.push(k.hdCollapsedCls);o.isCollapsedGroup=true}if(l.buffered){b.rows=b.children=[]}else{b.rows=b.children=k.getRecordGroup(j).children}o.groupInfo=b}if(o.isLastRow){if(k.showSummaryRow){o.summaryRecord=e.summaryData[n]}}}},setup:function(c,d){var a=this,b=a.refreshData;a.skippedRows=0;if(d.view.bufferedRenderer){d.view.bufferedRenderer.variableRowHeight=true}b.groupField=a.getGroupField();b.header=a.getGroupedHeader(b.groupField);b.doGrouping=!a.disabled&&a.view.store.isGrouped();d.groupHeaderTpl=Ext.XTemplate.getTpl(a,"groupHeaderTpl");if(a.showSummaryRow){b.summaryData=a.generateSummaryData()}},cleanup:function(b,c){var a=this.refreshData;c.groupInfo=c.groupHeaderTpl=c.isFirstRow=null;a.groupField=a.header=null},getGroupName:function(b){var d=this,a=d.view,c=d.eventSelector,e,h,g;h=Ext.fly(b).findParent(c);if(!h){g=Ext.fly(b).findParent(a.itemSelector);if(g){h=g.down(c,true)}}if(h){e=h.id.split(a.id+"-hd-");if(e.length===2){return Ext.htmlDecode(e[1])}}},getRecordGroup:function(a){var b=this.view.store.groupers.first();if(b){return this.groupCache[b.getGroupString(a)]}},createGroupId:function(a){return this.view.id+"-hd-"+Ext.htmlEncode(a)},createGroupCls:function(a){return this.view.id+"-"+Ext.htmlEncode(a)+"-item"},getGroupField:function(){return this.view.store.getGroupField()},getGroupedHeader:function(b){var d=this,e=d.view.headerCt,c=d.lockingPartner,a,g;b=b||this.getGroupField();if(b){a="[dataIndex="+b+"]";g=e.down(a);if(!g&&c){g=c.view.headerCt.down(a)}}return g||null},getFireEventArgs:function(b,a,d,c){return[b,a,d,this.getGroupName(d),c]},destroy:function(){var a=this,b=a.dataSource;delete a.view;delete a.prunedHeader;delete a.grid;a.callParent();a.groupCache=null;if(b){b.bindStore(null)}},onReconfigure:function(d,a,c,g,b){var e=d;if(a!==g){if(a.buffered!==g.buffered){Ext.Error.raise("Cannot reconfigure grouping switching between buffered and non-buffered stores")}if(a.buffered){e.bindStore(a);e.dataSource.processStore(a)}}}});Ext.define("Ext.grid.feature.GroupingSummary",{extend:Ext.grid.feature.Grouping,alias:"feature.groupingsummary",showSummaryRow:true,vetoEvent:function(b,d,g,c){var a=this.callParent(arguments);if(a!==false){if(c.getTarget(this.summaryRowSelector)){a=false}}return a}});Ext.define("Ext.grid.feature.RowBody",{extend:Ext.grid.feature.Feature,alias:"feature.rowbody",rowBodyCls:Ext.baseCSSPrefix+"grid-row-body",rowBodyHiddenCls:Ext.baseCSSPrefix+"grid-row-body-hidden",rowBodyTdSelector:"td."+Ext.baseCSSPrefix+"grid-cell-rowbody",eventPrefix:"rowbody",eventSelector:"tr."+Ext.baseCSSPrefix+"grid-rowbody-tr",tableTpl:{before:function(b,c){var a=b.view,d=a.rowValues;if(!d.visibleColumns){d.visibleColumns=a.headerCt.getVisibleGridColumns()}this.rowBody.setup(b.rows,d)},after:function(b,c){var a=b.view,d=a.rowValues;this.rowBody.cleanup(b.rows,d)},priority:100},extraRowTpl:["{%","values.view.rowBodyFeature.setupRowData(values.record, values.recordIndex, values);","this.nextTpl.applyOut(values, out, parent);","%}",'<tr class="'+Ext.baseCSSPrefix+'grid-rowbody-tr {rowBodyCls}">','<td class="'+Ext.baseCSSPrefix+'grid-cell-rowbody" colspan="{rowBodyColspan}">','<div class="'+Ext.baseCSSPrefix+'grid-rowbody {rowBodyDivCls}">{rowBody}</div>',"</td>","</tr>",{priority:100,syncRowHeights:function(g,c){var a=this.owner,b=Ext.fly(g).down(a.eventSelector,true),h,d,e;if(b&&(h=Ext.fly(c).down(a.eventSelector,true))){if((d=b.offsetHeight)>(e=h.offsetHeight)){Ext.fly(h).setHeight(d)}else{if(e>d){Ext.fly(b).setHeight(e)}}}},syncContent:function(b,e){var a=this.owner,c=Ext.fly(b).down(a.eventSelector,true),d;if(c&&(d=Ext.fly(e).down(a.eventSelector,true))){Ext.fly(c).syncContent(d)}}}],init:function(b){var c=this,a=c.view;a.rowBodyFeature=c;if(!a.findFeature("rowwrap")){b.mon(a,{element:"el",mousedown:c.onMouseDown,scope:c});c.mon(b.getStore(),"remove",c.onStoreRemove,c)}a.headerCt.on({columnschanged:c.onColumnsChanged,scope:c});a.addTableTpl(c.tableTpl).rowBody=c;a.addRowTpl(Ext.XTemplate.getTpl(this,"extraRowTpl"));c.callParent(arguments)},onStoreRemove:function(b,d,c){var a=this.view,e;if(a.rendered){e=a.getNode(c);if(e){e=Ext.fly(e).next(this.eventSelector);if(e){e.remove()}}}},onMouseDown:function(c){var b=this,a=c.getTarget(b.eventSelector);if(a&&Ext.fly(a=a.previousSibling).is(b.view.getItemSelector())){c.target=a;b.view.handleEvent(c)}},getSelectedRow:function(a,c){var b=a.getNode(c,false);if(b){return Ext.fly(b).down(this.eventSelector)}return null},onColumnsChanged:function(d){var b=this.view.el.query(this.rowBodyTdSelector),e=d.getGridColumns().length,a=b.length,c;for(c=0;c<a;++c){b[c].colSpan=e}},setupRowData:function(a,c,b){if(this.getAdditionalData){Ext.apply(b,this.getAdditionalData(a.data,c,a,b))}},setup:function(a,b){b.rowBodyCls=this.rowBodyCls;b.rowBodyColspan=b.view.getGridColumns().length},cleanup:function(a,b){b.rowBodyCls=b.rowBodyColspan=b.rowBody=null}});Ext.define("Ext.grid.feature.RowWrap",{extend:Ext.grid.feature.Feature,alias:"feature.rowwrap",rowWrapTd:"td."+Ext.baseCSSPrefix+"grid-rowwrap",hasFeatureEvent:false,tableTpl:{before:function(a,b){if(a.view.bufferedRenderer){a.view.bufferedRenderer.variableRowHeight=true}},priority:200},wrapTpl:['<tr data-boundView="{view.id}" data-recordId="{record.internalId}" data-recordIndex="{recordIndex}" class="{[values.itemClasses.join(" ")]} '+Ext.baseCSSPrefix+'grid-wrap-row">','<td class="'+Ext.baseCSSPrefix+"grid-rowwrap "+Ext.baseCSSPrefix+'grid-td" colSpan="{columns.length}">','<table class="'+Ext.baseCSSPrefix+"{view.id}-table "+Ext.baseCSSPrefix+'grid-table" border="0" cellspacing="0" cellpadding="0">',"{[values.view.renderColumnSizer(out)]}","{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent)","%}","</table>","</td>","</tr>",{priority:200}],init:function(a){var b=this;b.view.addTableTpl(b.tableTpl);b.view.addRowTpl(Ext.XTemplate.getTpl(b,"wrapTpl"));b.view.headerCt.on({columnhide:b.onColumnHideShow,columnshow:b.onColumnHideShow,scope:b})},onColumnHideShow:function(){var b=this.view,c=b.el.query(this.rowWrapTd),e=b.headerCt.getGridColumns().length,a=c.length,d;for(d=0;d<a;++d){c[d].colSpan=e}}});Ext.define("Ext.grid.feature.Summary",{extend:Ext.grid.feature.AbstractSummary,alias:"feature.summary",dock:undefined,dockedSummaryCls:Ext.baseCSSPrefix+"docked-summary",panelBodyCls:Ext.baseCSSPrefix+"summary-",init:function(b){var c=this,a=c.view;c.callParent(arguments);if(c.dock){b.headerCt.on({afterlayout:c.onStoreUpdate,scope:c});b.on({beforerender:function(){c.summaryBar=b.addDocked({childEls:["innerCt"],renderTpl:['<div id="{id}-innerCt">','<table cellpadding="0" class="'+c.summaryTableCls+'">','<tr class="'+c.summaryRowCls+'"></tr>',"</table>","</div>"],style:"overflow:hidden",itemId:"summaryBar",cls:[c.dockedSummaryCls,c.dockedSummaryCls+"-"+c.dock],xtype:"component",dock:c.dock,weight:10000000})[0]},afterrender:function(){b.body.addCls(c.panelBodyCls+c.dock);a.mon(a.el,{scroll:c.onViewScroll,scope:c});c.onStoreUpdate()},single:true});b.headerCt.afterComponentLayout=Ext.Function.createSequence(b.headerCt.afterComponentLayout,function(){c.summaryBar.innerCt.setWidth(this.getFullWidth()+Ext.getScrollbarSize().width)})}else{c.view.addFooterFn(c.renderTFoot)}b.on({columnmove:c.onStoreUpdate,scope:c});a.mon(a.store,{update:c.onStoreUpdate,datachanged:c.onStoreUpdate,scope:c})},renderTFoot:function(b,c){var a=b.view,d=a.findFeature("summary");if(d.showSummaryRow){c.push("<tfoot>");d.outputSummaryRecord(d.createSummaryRecord(a),b,c);c.push("</tfoot>")}},vetoEvent:function(a,c,d,b){return !b.getTarget(this.summaryRowSelector)},onViewScroll:function(){this.summaryBar.el.dom.scrollLeft=this.view.el.dom.scrollLeft},createSummaryRecord:function(a){var d=a.headerCt.getVisibleGridColumns(),h={records:a.store.getRange()},g=d.length,c,e,b=this.summaryRecord||(this.summaryRecord=new a.store.model(null,a.id+"-summary-record"));b.beginEdit();for(c=0;c<g;c++){e=d[c];if(!e.dataIndex){e.dataIndex=e.id}b.set(e.dataIndex,this.getSummary(a.store,e.summaryType,e.dataIndex,h))}b.endEdit(true);b.commit(true);b.isSummary=true;return b},onStoreUpdate:function(){var g=this,b=g.view,a=g.createSummaryRecord(b),d=b.createRowElement(a,-1),c,e,h;if(!b.rendered){return}if(g.dock){c=g.summaryBar.el.down("."+g.summaryRowCls,true)}else{c=g.view.getNode(a)}if(c){h=c.parentNode;h.insertBefore(d,c);h.removeChild(c);e=g.lockingPartner;if(e&&e.grid.rendered&&!g.calledFromLockingPartner){e.calledFromLockingPartner=true;e.onStoreUpdate();e.calledFromLockingPartner=false}}if(g.dock){g.onColumnHeaderLayout()}},onColumnHeaderLayout:function(){var b=this.view,d=b.headerCt.getGridColumns(),g,a=d.length,c,h=this.summaryBar.el,e;for(c=0;c<a;c++){g=d[c];e=h.down(b.getCellSelector(g));if(e){if(g.hidden){e.setDisplayed(false)}else{e.setDisplayed(true);e.setWidth(g.width||(g.lastBox?g.lastBox.width:100))}}}}});Ext.define("Ext.grid.locking.HeaderContainer",{extend:Ext.grid.header.Container,constructor:function(d){var c=this,a,b,e=[];c.lockable=d;c.callParent();a=c.lockable.lockedGrid.headerCt.events;for(b in a){if(a.hasOwnProperty(b)){e.push(b)}}c.relayEvents(c.lockable.lockedGrid.headerCt,e);c.relayEvents(c.lockable.normalGrid.headerCt,e)},getGridColumns:function(){return this.lockable.lockedGrid.headerCt.getGridColumns().concat(this.lockable.normalGrid.headerCt.getGridColumns())},getColumnsState:function(){var b=this,a=b.lockable.lockedGrid.headerCt.getColumnsState(),c=b.lockable.normalGrid.headerCt.getColumnsState();return a.concat(c)},applyColumnsState:function(h){var p=this,e=p.lockable.lockedGrid,g=e.headerCt,n=p.lockable.normalGrid.headerCt,q=Ext.Array.toValueMap(g.items.items,"headerId"),j=Ext.Array.toValueMap(n.items.items,"headerId"),m=[],o=[],l=1,b=h.length,k,a,d,c;for(k=0;k<b;k++){c=h[k];d=q[c.id];a=d||j[c.id];if(a){if(a.applyColumnState){a.applyColumnState(c)}if(a.locked===undefined){a.locked=!!d}if(a.locked){m.push(a);if(!a.hidden&&typeof a.width=="number"){l+=a.width}}else{o.push(a)}}}if(m.length+o.length==g.items.getCount()+n.items.getCount()){g.removeAll(false);n.removeAll(false);g.add(m);n.add(o);e.setWidth(l)}}});Ext.define("Ext.grid.locking.View",{alternateClassName:"Ext.grid.LockingView",mixins:{observable:Ext.util.Observable},isLockingView:true,eventRelayRe:/^(beforeitem|beforecontainer|item|container|cell|refresh)/,constructor:function(c){var g=this,j=[],a=g.eventRelayRe,b=c.locked.getView(),h=c.normal.getView(),d,e;Ext.apply(g,{lockedView:b,normalView:h,lockedGrid:c.locked,normalGrid:c.normal,panel:c.panel});g.mixins.observable.constructor.call(g,c);d=b.events;for(e in d){if(d.hasOwnProperty(e)&&a.test(e)){j.push(e)}}g.relayEvents(b,j);g.relayEvents(h,j);h.on({scope:g,itemmouseleave:g.onItemMouseLeave,itemmouseenter:g.onItemMouseEnter});b.on({scope:g,itemmouseleave:g.onItemMouseLeave,itemmouseenter:g.onItemMouseEnter});g.panel.on({render:g.onPanelRender,scope:g})},onPanelRender:function(){var c=this,b=c.loadMask,a={target:c.panel,msg:c.loadingText,msgCls:c.loadingCls,useMsg:c.loadingUseMsg,store:c.panel.store};c.el=c.panel.body;c.fireEvent("render",c);if(b){if(Ext.isObject(b)){a=Ext.apply(a,b)}c.loadMask=new Ext.LoadMask(a)}},getGridColumns:function(){var a=this.lockedGrid.headerCt.getGridColumns();return a.concat(this.normalGrid.headerCt.getGridColumns())},getEl:function(a){return this.getViewForColumn(a).getEl()},getViewForColumn:function(b){var a=this.lockedView,c;a.headerCt.cascade(function(d){if(d===b){c=true;return false}});return c?a:this.normalView},onItemMouseEnter:function(c,b){var g=this,d=g.lockedView,a=g.normalView,e;if(c.trackOver){if(c!==d){a=d}e=a.getNode(b,false);a.highlightItem(e)}},onItemMouseLeave:function(c,b){var e=this,d=e.lockedView,a=e.normalView;if(c.trackOver){if(c!==d){a=d}a.clearHighlight()}},relayFn:function(c,b){b=b||[];var a=this.lockedView;a[c].apply(a,b);a=this.normalView;a[c].apply(a,b)},getSelectionModel:function(){return this.panel.getSelectionModel()},getStore:function(){return this.panel.store},getNode:function(b,a){return this.normalView.getNode(b,a)},getCell:function(b,c){var a=this.getViewForColumn(c),d=a.getNode(b,true);return Ext.fly(d).down(c.getCellSelector())},indexOf:function(b){var a=this.lockedView.indexOf(b);if(!a){a=this.normalView.indexOf(b)}return a},focus:function(){var b=this.getSelectionModel().getCurrentPosition(),a=b?b.view:this.normalView;a.focus()},focusCell:function(a){a.view.focusCell(a)},isVisible:function(a){return this.panel.isVisible(a)},getRecord:function(b){var a=this.lockedView.getRecord(b);if(!a){a=this.normalView.getRecord(b)}return a},scrollBy:function(){var a=this.normalView;a.scrollBy.apply(a,arguments)},addElListener:function(a,c,b){this.relayFn("addElListener",arguments)},refreshNode:function(){this.relayFn("refreshNode",arguments)},refresh:function(){this.relayFn("refresh",arguments)},bindStore:function(){this.relayFn("bindStore",arguments)},addRowCls:function(){this.relayFn("addRowCls",arguments)},removeRowCls:function(){this.relayFn("removeRowCls",arguments)},destroy:function(){var b=this,a=b.loadMask;b.clearListeners();if(a&&a.bindStore){a.bindStore(null)}}});Ext.define("Ext.grid.locking.Lockable",{alternateClassName:"Ext.grid.Lockable",syncRowHeight:true,headerCounter:0,scrollDelta:40,lockedGridCls:Ext.baseCSSPrefix+"grid-inner-locked",unlockText:"Unlock",lockText:"Lock",bothCfgCopy:["invalidateScrollerOnRefresh","hideHeaders","enableColumnHide","enableColumnMove","enableColumnResize","sortableColumns","columnLines","rowLines"],normalCfgCopy:["verticalScroller","verticalScrollDock","verticalScrollerType","scroll"],lockedCfgCopy:[],determineXTypeToCreate:function(e){var c=this,h,d,b,g,a;if(c.subGridXType){h=c.subGridXType}else{if(!e){return"gridpanel"}d=this.getXTypes().split("/");b=d.length;g=d[b-1];a=d[b-2];if(a!=="tablepanel"){h=a}else{h=g}}return h},injectLockable:function(){this.lockable=true;this.hasView=true;var o=this,a=Ext.getScrollbarSize().width,p=o.store=Ext.StoreManager.lookup(o.store),k=o.getSelectionModel(),l,b,e,m,h,d,c,j,q,g,n;l=o.constructLockableFeatures();if(o.features){o.features=null}b=o.constructLockablePlugins();o.plugins=b.topPlugins;e=Ext.apply({id:o.id+"-locked",ownerLockable:o,xtype:o.determineXTypeToCreate(true),store:p,scrollerOwner:false,animate:false,scroll:a?false:"vertical",selModel:k,border:false,cls:o.lockedGridCls,isLayoutRoot:function(){return false},features:l.lockedFeatures,plugins:b.lockedPlugins},o.lockedGridConfig);m=Ext.apply({id:o.id+"-normal",ownerLockable:o,xtype:o.determineXTypeToCreate(),store:p,scrollerOwner:false,selModel:k,border:false,isLayoutRoot:function(){return false},features:l.normalFeatures,plugins:b.normalPlugins},o.normalGridConfig);o.addCls(Ext.baseCSSPrefix+"grid-locked");Ext.copyTo(m,o,o.bothCfgCopy,true);Ext.copyTo(e,o,o.bothCfgCopy,true);Ext.copyTo(m,o,o.normalCfgCopy,true);Ext.copyTo(e,o,o.lockedCfgCopy,true);for(h=0;h<o.normalCfgCopy.length;h++){delete o[o.normalCfgCopy[h]]}for(h=0;h<o.lockedCfgCopy.length;h++){delete o[o.lockedCfgCopy[h]]}o.addEvents("processcolumns","lockcolumn","unlockcolumn");o.addStateEvents(["lockcolumn","unlockcolumn"]);d=o.processColumns(o.columns);e.width=d.lockedWidth+Ext.num(k.headerWidth,0)+(d.locked.items.length?1:0);e.columns=d.locked;m.columns=d.normal;m.flex=1;e.viewConfig=o.lockedViewConfig||{};e.viewConfig.loadingUseMsg=false;e.viewConfig.loadMask=false;if(a){e.viewConfig.style="border-bottom:"+a+"px solid #f6f6f6;"+(e.viewConfig.style||"")}m.viewConfig=o.normalViewConfig||{};m.viewConfig.loadMask=false;Ext.applyIf(e.viewConfig,o.viewConfig);Ext.applyIf(m.viewConfig,o.viewConfig);o.lockedGrid=Ext.ComponentManager.create(e);if(o.isTree){o.lockedGrid.getView().animate=false;m.store=o.lockedGrid.view.store;m.deferRowRender=false;m.viewConfig.stripeRows=o.lockedGrid.view.stripeRows;m.rowLines=o.lockedGrid.rowLines}q=o.lockedGrid.getView();m.viewConfig.lockingPartner=q;o.normalGrid=Ext.ComponentManager.create(m);q.lockingPartner=g=o.normalGrid.getView();o.view=new Ext.grid.locking.View({loadingText:g.loadingText,loadingCls:g.loadingCls,loadingUseMsg:g.loadingUseMsg,loadMask:o.loadMask!==false,locked:o.lockedGrid,normal:o.normalGrid,panel:o});n={scroll:{fn:o.onLockedViewScroll,element:"el",scope:o}};if(a){o.lockedGrid.on({afterlayout:o.afterLockedViewLayout,scope:o});q.getOverflowStyle();if(q.scrollFlags.y){o.lockedGrid.headerCt.forceFit=true}else{n.mousewheel={fn:o.onLockedViewMouseWheel,element:"el",scope:o}}}q.on(n);n={scroll:{fn:o.onNormalViewScroll,element:"el",scope:o},scope:o};g.on(n);c=o.lockedGrid.headerCt;j=o.normalGrid.headerCt;o.headerCt=o.view.headerCt=new Ext.grid.locking.HeaderContainer(this);c.lockedCt=true;c.lockableInjected=true;j.lockableInjected=true;c.on({add:{buffer:1,scope:o,fn:o.onLockedHeaderAdd},columnshow:o.onLockedHeaderShow,columnhide:o.onLockedHeaderHide,sortchange:o.onLockedHeaderSortChange,columnresize:o.onLockedHeaderResize,scope:o});j.on({sortchange:o.onNormalHeaderSortChange,scope:o});o.modifyHeaderCt();o.items=[o.lockedGrid,o.normalGrid];o.relayHeaderCtEvents(c);o.relayHeaderCtEvents(j);o.storeRelayers=o.relayEvents(p,["filterchange"]);o.layout={type:"hbox",align:"stretch"}},getLockingViewConfig:function(){return{xclass:"Ext.grid.locking.View",locked:this.lockedGrid,normal:this.normalGrid,panel:this}},processColumns:function(h){var g=0,b=h.length,c=0,e=[],d=[],j,a;for(;g<b;++g){j=h[g];if(!j.isComponent){j=Ext.ComponentManager.create(h[g],"gridcolumn")}j.processed=true;if(j.locked||j.autoLock){if(!j.hidden){c+=this.getColumnWidth(j)||Ext.grid.header.Container.prototype.defaultWidth}e.push(j)}else{d.push(j)}if(!j.headerId){j.headerId=(j.initialConfig||j).id||"h"+ ++this.headerCounter}}a={lockedWidth:c,locked:{items:e,itemId:"lockedHeaderCt",stretchMaxPartner:"^^>>#normalHeaderCt"},normal:{items:d,itemId:"normalHeaderCt",stretchMaxPartner:"^^>>#lockedHeaderCt"}};this.fireEvent("processcolumns",this,a.lockedHeaders,a.normalHeaders);return a},getColumnWidth:function(e){var b=e.width||0,d,a,c;if(!b&&e.isGroupHeader){d=e.items.items;a=d.length;for(c=0;c<a;c++){b+=this.getColumnWidth(d[c])}}return b},afterLockedViewLayout:function(){var c=this,b=c.lockedGrid.getView(),a=b.el.dom,d=c.normalGrid.headerCt.tooNarrow?Ext.getScrollbarSize().height:0;if(b.scrollFlags.x&&a.scrollWidth>a.clientWidth){d=0}b.el.dom.style.borderBottomWidth=d+"px";if(!Ext.isBorderBox){b.el.setHeight(b.lastBox.height)}},onLockedViewMouseWheel:function(j){var d=this,h=-d.scrollDelta,a=h*j.getWheelDeltas().y,b=d.lockedGrid.getView().el.dom,c,g;if(!d.ignoreMousewheel){if(b){c=b.scrollTop!==b.scrollHeight-b.clientHeight;g=b.scrollTop!==0}if(a<0&&g||a>0&&c){j.stopEvent();b.scrollTop+=a;d.normalGrid.getView().el.dom.scrollTop=b.scrollTop;d.onNormalViewScroll()}}},onLockedViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){h.scrollTop=g.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);a.style.position="absolute";a.style.top=b.style.top}}},onNormalViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){g.scrollTop=h.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute";b.style.top=a.style.top}}},syncRowHeights:function(){var e=this,a,d=e.lockedGrid.getView(),b=e.normalGrid.getView(),g=d.all.slice(),j=b.all.slice(),c=g.length,h;if(j.length===c){for(a=0;a<c;a++){b.syncRowHeights(g[a],j[a])}h=b.el.dom.scrollTop;b.el.dom.scrollTop=h;d.el.dom.scrollTop=h}},modifyHeaderCt:function(){var a=this;a.lockedGrid.headerCt.getMenuItems=a.getMenuItems(a.lockedGrid.headerCt.getMenuItems,true);a.normalGrid.headerCt.getMenuItems=a.getMenuItems(a.normalGrid.headerCt.getMenuItems,false);a.lockedGrid.headerCt.showMenuBy=Ext.Function.createInterceptor(a.lockedGrid.headerCt.showMenuBy,a.showMenuBy);a.normalGrid.headerCt.showMenuBy=Ext.Function.createInterceptor(a.normalGrid.headerCt.showMenuBy,a.showMenuBy)},onUnlockMenuClick:function(){this.unlock()},onLockMenuClick:function(){this.lock()},showMenuBy:function(b,g){var e=this.getMenu(),c=e.down("#unlockItem"),d=e.down("#lockItem"),a=c.prev();if(g.lockable===false){a.hide();c.hide();d.hide()}else{a.show();c.show();d.show();if(!c.initialConfig.disabled){c.setDisabled(g.lockable===false)}if(!d.initialConfig.disabled){d.setDisabled(!g.isLockable())}}},getMenuItems:function(g,c){var h=this,j=h.unlockText,a=h.lockText,k=Ext.baseCSSPrefix+"hmenu-unlock",b=Ext.baseCSSPrefix+"hmenu-lock",e=Ext.Function.bind(h.onUnlockMenuClick,h),d=Ext.Function.bind(h.onLockMenuClick,h);return function(){var l=g.call(this);l.push("-",{itemId:"unlockItem",cls:k,text:j,handler:e,disabled:!c});l.push({itemId:"lockItem",cls:b,text:a,handler:d,disabled:c});return l}},syncLockedWidth:function(){var e=this,b=e.lockedGrid,d=b.view,c=d.el.dom,h=e.normalGrid,g=b.headerCt.getVisibleGridColumns().length,a=h.headerCt.getVisibleGridColumns().length;Ext.suspendLayouts();if(a){h.show();if(g){if(!b.headerCt.forceFit){delete b.flex;b.setWidth(b.headerCt.getFullWidth())}b.addCls(e.lockedGridCls);b.show()}else{b.getView().refresh();b.hide()}d.el.setStyle(d.getOverflowStyle());e.ignoreMousewheel=d.scrollFlags.y}else{h.hide();c.style.borderBottomWidth="0";b.flex=1;delete b.width;b.removeCls(e.lockedGridCls);b.show();d.el.setStyle(h.view.getOverflowStyle());e.ignoreMousewheel=true}Ext.resumeLayouts(true);return[g,a]},onLockedHeaderAdd:function(){if(!this.ignoreAddLockedColumn){this.syncLockedWidth()}},onLockedHeaderResize:function(){this.syncLockedWidth()},onLockedHeaderHide:function(){this.syncLockedWidth()},onLockedHeaderShow:function(){this.syncLockedWidth()},onLockedHeaderSortChange:function(b,c,a){if(a){this.normalGrid.headerCt.clearOtherSortStates(null,true)}},onNormalHeaderSortChange:function(b,c,a){if(a){this.lockedGrid.headerCt.clearOtherSortStates(null,true)}},lock:function(c,k){var e=this,d=e.normalGrid,b=e.lockedGrid,g=d.headerCt,h=b.headerCt,j,a;c=c||g.getMenu().activeHeader;a=c.ownerCt;if(c.flex){c.width=c.getWidth();delete c.flex}Ext.suspendLayouts();a.remove(c,false);c.locked=true;e.ignoreAddLockedColumn=true;if(Ext.isDefined(k)){h.insert(k,c)}else{h.add(c)}e.ignoreAddLockedColumn=false;j=e.syncLockedWidth();if(j[0]){b.getView().refresh()}if(j[1]){d.getView().refresh()}Ext.resumeLayouts(true);e.fireEvent("lockcolumn",e,c)},unlock:function(b,e){var d=this,g=d.normalGrid,j=d.lockedGrid,h=g.headerCt,c=j.headerCt,a;if(!Ext.isDefined(e)){e=0}b=b||c.getMenu().activeHeader;Ext.suspendLayouts();b.ownerCt.remove(b,false);b.locked=false;h.insert(e,b);a=d.syncLockedWidth();if(a[0]){j.getView().refresh()}if(a[1]){g.getView().refresh()}Ext.resumeLayouts(true);d.fireEvent("unlockcolumn",d,b)},reconfigureLockable:function(a,b){var c=this,g=c.store,e=c.lockedGrid,d=c.normalGrid;Ext.suspendLayouts();if(b){e.headerCt.removeAll();d.headerCt.removeAll();b=c.processColumns(b);c.ignoreAddLockedColumn=true;e.headerCt.add(b.locked.items);c.ignoreAddLockedColumn=false;d.headerCt.add(b.normal.items);c.syncLockedWidth()}if(a&&a!==g){a=Ext.data.StoreManager.lookup(a);c.store=a;e.bindStore(a);d.bindStore(a)}else{e.getView().refresh();d.getView().refresh()}Ext.resumeLayouts(true)},constructLockableFeatures:function(){var e=this.features,c,d,g,h,b=0,a;if(e){g=[];h=[];a=e.length;for(;b<a;b++){c=e[b];if(!c.isFeature){c=Ext.create("feature."+c.ftype,c)}switch(c.lockableScope){case"locked":g.push(c);break;case"normal":h.push(c);break;default:c.lockableScope="both";g.push(c);h.push(d=c.clone());d.lockingPartner=c;c.lockingPartner=d}}}return{normalFeatures:h,lockedFeatures:g}},constructLockablePlugins:function(){var c=this.plugins,g,b,a,j,k,d,e=0,h;if(c){j=[];k=[];d=[];h=c.length;for(;e<h;e++){g=c[e];switch(g.lockableScope){case"both":k.push(a=g.clonePlugin());d.push(b=g.clonePlugin());a.lockingPartner=b;b.lockingPartner=a;Ext.destroy(g);break;case"locked":k.push(g);break;case"normal":d.push(g);break;default:j.push(g)}}}return{topPlugins:j,normalPlugins:d,lockedPlugins:k}},destroyLockable:function(){Ext.destroy(this.view)}},function(){this.borrow(Ext.AbstractComponent,["constructPlugin"])});Ext.define("Ext.tree.View",{extend:Ext.view.Table,alias:"widget.treeview",isTreeView:true,loadingCls:Ext.baseCSSPrefix+"grid-tree-loading",expandedCls:Ext.baseCSSPrefix+"grid-tree-node-expanded",leafCls:Ext.baseCSSPrefix+"grid-tree-node-leaf",expanderSelector:"."+Ext.baseCSSPrefix+"tree-expander",checkboxSelector:"."+Ext.baseCSSPrefix+"tree-checkbox",expanderIconOverCls:Ext.baseCSSPrefix+"tree-expander-over",nodeAnimWrapCls:Ext.baseCSSPrefix+"tree-animator-wrap",blockRefresh:true,loadMask:false,rootVisible:true,deferInitialRefresh:false,expandDuration:250,collapseDuration:250,toggleOnDblClick:true,stripeRows:false,uiFields:["expanded","loaded","checked","expandable","leaf","icon","iconCls","loading","qtip","qtitle"],treeRowTpl:["{%","this.processRowValues(values);","this.nextTpl.applyOut(values, out, parent);","%}",{priority:10,processRowValues:function(d){var b=d.record,a=d.view,e=b.get("qtip"),c=b.get("qttle");d.rowAttr={};if(e){d.rowAttr["data-qtip"]=e}if(c){d.rowAttr["data-qtitle"]=c}if(b.isExpanded()){d.rowClasses.push(a.expandedCls)}if(b.isLeaf()){d.rowClasses.push(a.leafCls)}if(b.isLoading()){d.rowClasses.push(a.loadingCls)}}}],initComponent:function(){var b=this,c=b.panel.getStore(),a=b.store;if(b.initialConfig.animate===undefined){b.animate=Ext.enableFx}if(!a||a===c){b.store=a=new Ext.data.NodeStore({treeStore:c,recursive:true,rootVisible:b.rootVisible})}if(b.node){b.setRootNode(b.node)}b.animQueue={};b.animWraps={};b.addEvents("afteritemexpand","afteritemcollapse","nodedragover");b.callParent(arguments);b.addRowTpl(Ext.XTemplate.getTpl(b,"treeRowTpl"))},onBeforeFill:function(b,a){this.store.suspendEvents()},onFillComplete:function(e,d,b){var c=this,a=c.store,g=a.indexOf(b[0]);a.resumeEvents();d.triggerUIUpdate();if(!b.length||g===-1){return}c.onAdd(c.store,b,g);c.refreshPartner()},onBeforeSort:function(){this.store.suspendEvents()},onSort:function(a){if(a.isStore){this.store.resumeEvents();this.refresh();this.refreshPartner()}},refreshPartner:function(){var a=this.lockingPartner;if(a){a.refresh()}},getMaskStore:function(){return this.panel.getStore()},afterRender:function(){var a=this;a.callParent(arguments);a.el.on({scope:a,delegate:a.expanderSelector,mouseover:a.onExpanderMouseOver,mouseout:a.onExpanderMouseOut,click:{delegate:a.checkboxSelector,fn:a.onCheckboxChange,scope:a}})},afterComponentLayout:function(){this.callParent(arguments);var a=this.stretcher;if(a){a.setWidth(this.getWidth()-Ext.getScrollbarSize().width)}},processUIEvent:function(a){if(a.getTarget("."+this.nodeAnimWrapCls,this.el)){return false}return this.callParent(arguments)},onClear:function(){this.store.removeAll()},setRootNode:function(b){var a=this;a.store.setNode(b);a.node=b},onCheckboxChange:function(d,a){var c=this,b=d.getTarget(c.getItemSelector(),c.getTargetEl());if(b){c.onCheckChange(c.getRecord(b))}},onCheckChange:function(a){var b=a.get("checked");if(Ext.isBoolean(b)){b=!b;a.set("checked",b);this.fireEvent("checkchange",a,b)}},getChecked:function(){var a=[];this.node.cascadeBy(function(b){if(b.get("checked")){a.push(b)}});return a},isItemChecked:function(a){return a.get("checked")},createAnimWrap:function(a,b){var g=this,e=g.getNode(a),d,c,h=[];g.renderColumnSizer(h);c=Ext.get(e);d=c.insertSibling({tag:"tr",html:['<td colspan="'+g.panel.headerCt.getColumnCount()+'">','<div class="'+g.nodeAnimWrapCls+'">','<table class="'+Ext.baseCSSPrefix+g.id+"-table "+Ext.baseCSSPrefix+'grid-table" border="0" cellspacing="0" cellpadding="0">',h.join(""),"<tbody></tbody></table>","</div>","</td>"].join("")},"after");return{record:a,node:e,el:d,expanding:false,collapsing:false,animating:false,animateEl:d.down("div"),targetEl:d.down("tbody")}},getAnimWrap:function(d,a){if(!this.animate){return null}var b=this.animWraps,c=b[d.internalId];if(a!==false){while(!c&&d){d=d.parentNode;if(d){c=b[d.internalId]}}}return c},doAdd:function(c,h){var j=this,a=j.bufferRender(c,h,true),e=c[0],k=e.parentNode,l=j.all,n,d=j.getAnimWrap(k),m,b,g;if(!d||!d.expanding){return j.callParent(arguments)}k=d.record;m=d.targetEl;b=m.dom.childNodes;g=b.length;n=h-j.indexInStore(k)-1;if(!g||n>=g){m.appendChild(a)}else{Ext.fly(b[n]).insertSibling(a,"before",true)}l.insert(h,a);if(d.isAnimating){j.onExpand(k)}},beginBulkUpdate:function(){if(this.rendered){Ext.suspendLayouts()}},endBulkUpdate:function(){if(this.rendered){this.refreshSize();Ext.resumeLayouts(true)}},onRemove:function(g,a,b){var d=this,e,c;if(d.viewReady){e=d.store.getCount()===0;if(e){d.refresh()}else{for(c=b.length-1;c>=0;--c){d.doRemove(a[c],b[c])}}if(d.hasListeners.itemremove){for(c=b.length-1;c>=0;--c){d.fireEvent("itemremove",a[c],b[c])}}}},doRemove:function(a,c){var h=this,d=h.all,b=h.getAnimWrap(a),g=d.item(c),e=g?g.dom:null;if(!e||!b||!b.collapsing){return h.callParent(arguments)}b.targetEl.dom.insertBefore(e,b.targetEl.dom.firstChild);d.removeElement(c)},onBeforeExpand:function(d,b,c){var e=this,a;if(e.rendered&&e.all.getCount()&&e.animate){if(e.getNode(d)){a=e.getAnimWrap(d,false);if(!a){a=e.animWraps[d.internalId]=e.createAnimWrap(d);a.animateEl.setHeight(0)}else{if(a.collapsing){a.targetEl.select(e.itemSelector).remove()}}a.expanding=true;a.collapsing=false}}},onExpand:function(k){var j=this,g=j.animQueue,a=k.getId(),c=j.getNode(k),h=c?j.indexOf(c):-1,e,b,l,d=Ext.isIEQuirks?1:0;if(j.singleExpand){j.ensureSingleExpand(k)}if(h===-1){return}e=j.getAnimWrap(k,false);if(!e){k.isExpandingOrCollapsing=false;j.fireEvent("afteritemexpand",k,h,c);j.refreshSize();return}b=e.animateEl;l=e.targetEl;b.stopAnimation();g[a]=true;b.dom.style.height=d+"px";b.animate({from:{height:d},to:{height:l.getHeight()},duration:j.expandDuration,listeners:{afteranimate:function(){var m=l.query(j.itemSelector);if(m.length){e.el.insertSibling(m,"before",true)}e.el.remove();j.refreshSize();delete j.animWraps[e.record.internalId];delete g[a]}},callback:function(){k.isExpandingOrCollapsing=false;j.fireEvent("afteritemexpand",k,h,c)}});e.isAnimating=true},onBeforeCollapse:function(e,b,c,h,d){var g=this,a;if(g.rendered&&g.all.getCount()){if(g.animate){if(Ext.Array.contains(e.stores,g.store)){a=g.getAnimWrap(e);if(!a){a=g.animWraps[e.internalId]=g.createAnimWrap(e,c)}else{if(a.expanding){a.targetEl.select(this.itemSelector).remove()}}a.expanding=false;a.collapsing=true;a.callback=h;a.scope=d}}else{g.onCollapseCallback=h;g.onCollapseScope=d}}},onCollapse:function(d){var g=this,a=g.animQueue,j=d.getId(),e=g.getNode(d),c=e?g.indexOf(e):-1,b=g.getAnimWrap(d),h;if(!g.all.getCount()||!Ext.Array.contains(d.stores,g.store)){return}if(!b){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);g.refreshSize();Ext.callback(g.onCollapseCallback,g.onCollapseScope);g.onCollapseCallback=g.onCollapseScope=null;return}h=b.animateEl;a[j]=true;h.stopAnimation();h.animate({to:{height:Ext.isIEQuirks?1:0},duration:g.collapseDuration,listeners:{afteranimate:function(){b.el.remove();g.refreshSize();delete g.animWraps[b.record.internalId];delete a[j]}},callback:function(){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);Ext.callback(b.callback,b.scope);b.callback=b.scope=null}});b.isAnimating=true},isAnimating:function(a){return !!this.animQueue[a.getId()]},expand:function(d,c,h,e){var g=this,b=!!g.animate,a;if(!b||!d.isExpandingOrCollapsing){if(!d.isLeaf()){d.isExpandingOrCollapsing=b}Ext.suspendLayouts();a=d.expand(c,h,e);Ext.resumeLayouts(true);return a}},collapse:function(c,b,g,d){var e=this,a=!!e.animate;if(!a||!c.isExpandingOrCollapsing){if(!c.isLeaf()){c.isExpandingOrCollapsing=a}return c.collapse(b,g,d)}},toggle:function(b,a,d,c){if(b.isExpanded()){this.collapse(b,a,d,c)}else{this.expand(b,a,d,c)}},onItemDblClick:function(a,e,c){var d=this,b=d.editingPlugin;d.callParent(arguments);if(d.toggleOnDblClick&&a.isExpandable()&&!(b&&b.clicksToEdit===2)){d.toggle(a)}},onBeforeItemMouseDown:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)){return false}return this.callParent(arguments)},onItemClick:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)&&a.isExpandable()){this.toggle(a,d.ctrlKey);return false}return this.callParent(arguments)},onExpanderMouseOver:function(b,a){b.getTarget(this.cellSelector,10,true).addCls(this.expanderIconOverCls)},onExpanderMouseOut:function(b,a){b.getTarget(this.cellSelector,10,true).removeCls(this.expanderIconOverCls)},getStoreListeners:function(){var b=this,a=b.callParent(arguments);return Ext.apply(a,{beforeexpand:b.onBeforeExpand,expand:b.onExpand,beforecollapse:b.onBeforeCollapse,collapse:b.onCollapse,write:b.onStoreWrite,datachanged:b.onStoreDataChanged})},onBindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mon(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete,beforebulkremove:a.beginBulkUpdate,bulkremovecomplete:a.endBulkUpdate});if(!b.remoteSort){a.mon(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},onUnbindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mun(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete,beforebulkremove:a.beginBulkUpdate,bulkremovecomplete:a.endBulkUpdate});if(!b.remoteSort){a.mun(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},getTreeStore:function(){return this.panel.store},ensureSingleExpand:function(b){var a=b.parentNode;if(a){a.eachChild(function(c){if(c!==b&&c.isExpanded()){c.collapse()}})}},shouldUpdateCell:function(b,e,d){if(d){var c=0,a=d.length;for(;c<a;++c){if(Ext.Array.contains(this.uiFields,d[c])){return true}}}return this.callParent(arguments)},onStoreWrite:function(b,a){var c=this.panel.store;c.fireEvent("write",c,a)},onStoreDataChanged:function(b,a){var c=this.panel.store;c.fireEvent("datachanged",c)}});Ext.define("Ext.grid.plugin.BufferedRendererTreeView",{override:"Ext.tree.View",onRemove:function(b,a,c){if(this.bufferedRenderer){this.onDataRefresh()}else{this.callParent([b,a,c])}}});Ext.define("Ext.grid.plugin.BufferedRenderer",{extend:Ext.AbstractPlugin,alias:"plugin.bufferedrenderer",lockableScope:"both",percentageFromEdge:0.35,variableRowHeight:false,numFromEdge:8,trailingBufferZone:10,leadingBufferZone:20,synchronousRender:true,scrollToLoadBuffer:200,viewSize:0,rowHeight:21,tableStart:0,tableEnd:0,position:0,lastScrollDirection:1,bodyTop:0,init:function(c){var d=this,a=c.view,b={scroll:{fn:d.onViewScroll,element:"el",scope:d},boxready:d.onViewResize,resize:d.onViewResize,refresh:d.onViewRefresh,scope:d,destroyable:true};if(!d.variableRowHeight&&c.ownerLockable){c.ownerLockable.syncRowHeight=false}if(c.isTree||c.ownerLockable&&c.ownerLockable.isTree){a.blockRefresh=false;a.loadMask=true}if(a.positionBody){b.refresh=d.onViewRefresh}d.grid=c;d.view=a;a.bufferedRenderer=d;a.preserveScrollOnRefresh=true;d.bindStore(a.dataSource);a.getViewRange=function(){return d.getViewRange()};d.position=0;d.gridListeners=c.on("reconfigure",d.onReconfigure,d);d.viewListeners=a.on(b)},bindStore:function(a){var b=this;if(b.store){b.unbindStore()}b.storeListeners=a.on({scope:b,clear:b.onStoreClear,destroyable:true});b.store=a;if(b.view.componentLayout.layoutCount){b.onViewResize(b.view,0,b.view.getHeight())}},onReconfigure:function(b,a){if(a&&a!==this.store){this.bindStore(a)}},unbindStore:function(){this.storeListeners.destroy();delete this.view.getStoreListeners;this.store=null},onStoreClear:function(){var a=this;if(a.view.rendered&&!a.store.isDestroyed){if(a.scrollTop!==0){a.ignoreNextScrollEvent=true;a.view.el.dom.scrollTop=a.bodyTop=a.scrollTop=0}a.position=0;delete a.lastScrollDirection;delete a.scrollOffset;delete a.rowHeight}},onViewRefresh:function(){var b=this,a=b.view;if(b.scrollTop!==a.el.dom.scrollTop){b.onViewScroll()}else{b.setBodyTop(b.bodyTop);if(a.all.getCount()){b.viewSize=0;b.onViewResize(a,null,a.getHeight())}}},onViewResize:function(d,g,b,c,j){if(!j||b!==j){var h=this,e,a;if(d.all.getCount()){delete h.rowHeight}a=h.getScrollHeight();e=Math.ceil(b/h.rowHeight)+h.trailingBufferZone+h.leadingBufferZone;h.viewSize=h.setViewSize(e);h.stretchView(d,a)}},stretchView:function(b,a){var e=this,d=e.store.buffered?e.store.getTotalCount():e.store.getCount();if(e.stretcher){e.stretcher.dom.style.marginTop=a-1+"px"}else{var c=b.el;if(b.refreshCounter){b.fixedNodes++}if(d&&e.view.all.endIndex===d-1){a=e.bodyTop+b.body.dom.offsetHeight}this.stretcher=c.createChild({style:{width:"1px",height:"1px",marginTop:a-1+"px",left:0,position:"absolute"}},c.dom.firstChild)}},setViewSize:function(g){if(g!==this.viewSize){this.scrollTop=this.view.el.dom.scrollTop;var d=this,b=d.store,c=d.view.all.getCount(),e,a;d.viewSize=b.viewSize=g;if(c){e=d.view.all.startIndex;a=Math.min(e+g-1,(b.buffered?b.getTotalCount():b.getCount())-1);d.renderRange(e,a)}}return g},getViewRange:function(){var b=this,c=b.view.all,a=b.store;if(a.data.getCount()){return a.getRange(c.startIndex,c.startIndex+(b.viewSize||b.store.defaultViewSize)-1)}else{return[]}},scrollTo:function(k,c,n,p){var g=this,j=g.view,o=j.el.dom,l=g.store,h=l.buffered?l.getTotalCount():l.getCount(),e,b,d,a,m;k=Math.min(Math.max(k,0),h-1);e=Math.max(Math.min(k-(g.leadingBufferZone+g.trailingBufferZone)/2,h-g.viewSize+1),0);m=e*g.rowHeight;b=Math.min(e+g.viewSize-1,h-1);l.getRange(e,b,{callback:function(s,t,q){g.renderRange(t,q,true);d=l.data.getRange(k,k)[0];a=j.getNode(d,false);j.body.dom.style.top=m+"px";g.position=g.scrollTop=o.scrollTop=m=Math.min(Math.max(0,m-j.body.getOffsetsTo(a)[1]),o.scrollHeight-o.clientHeight);if(Ext.isIE){o.scrollTop=m}if(c){j.selModel.select(d)}if(n){n.call(p||g,k,d)}}})},onViewScroll:function(g,a){var c=this,b,h,d=c.view.el.dom.scrollTop;if(c.ignoreNextScrollEvent){c.ignoreNextScrollEvent=false;return}if(!c.disabled){b=d-c.position;h=b>0?1:-1;c.scrollTop=d;if(Math.abs(b)>=20||h!==c.lastScrollDirection){c.position=d;c.lastScrollDirection=h;c.handleViewScroll(c.lastScrollDirection)}}},handleViewScroll:function(h){var e=this,g=e.view.all,b=e.store,j=e.viewSize,a=b.buffered?b.getTotalCount():b.getCount(),d,c;if(a>=j){if(h==-1){if(g.startIndex){if(e.getFirstVisibleRowIndex()-g.startIndex<e.numFromEdge){d=Math.max(0,e.getLastVisibleRowIndex()+e.trailingBufferZone-j)}}}else{if(g.endIndex<a-1){if(g.endIndex-e.getLastVisibleRowIndex()<e.numFromEdge){d=Math.max(0,e.getFirstVisibleRowIndex()-e.trailingBufferZone)}}}if(d!==undefined){c=Math.min(d+j-1,a-1);if(d!==g.startIndex||c!==g.endIndex){e.renderRange(d,c)}}}},renderRange:function(e,a,d){var c=this,b=c.store;if(b.rangeCached(e,a)){c.cancelLoad();if(c.synchronousRender||d){c.onRangeFetched(null,e,a)}else{if(!c.renderTask){c.renderTask=new Ext.util.DelayedTask(c.onRangeFetched,c,null,false)}c.renderTask.delay(1,null,null,[null,e,a])}}else{c.attemptLoad(e,a)}},onRangeFetched:function(g,a,d){var h=this,k=h.view,c,m=k.all,b,l=0,e=a*h.rowHeight,j;if(k.isDestroyed){return}if(!g){g=h.store.getRange(a,d);if(!g){return}}if(a>m.endIndex||d<m.startIndex){m.clear(true);j=e}if(!m.getCount()){k.doAdd(g,a)}else{if(d>m.endIndex){b=Math.max(a-m.startIndex,0);if(h.variableRowHeight){l=m.item(m.startIndex+b,true).offsetTop}m.scroll(Ext.Array.slice(g,m.endIndex+1-a),1,b,a,d);if(h.variableRowHeight){j=h.bodyTop+l}else{j=e}}else{b=Math.max(m.endIndex-d,0);c=m.startIndex;m.scroll(Ext.Array.slice(g,0,m.startIndex-a),-1,b,a,d);if(h.variableRowHeight){j=h.bodyTop-m.item(c,true).offsetTop}else{j=e}}}if(k.positionBody){h.setBodyTop(j,e)}},setBodyTop:function(d,g){var e=this,b=e.view,c=e.store,a=b.body.dom,h;d=Math.floor(d);if(g!==undefined){h=d-g;d=g}a.style.position="absolute";a.style.top=(e.bodyTop=d)+"px";if(h){e.scrollTop=e.position=b.el.dom.scrollTop-=h}if(e.view.all.endIndex===(c.buffered?c.getTotalCount():c.getCount())-1){e.stretchView(b,e.bodyTop+a.offsetHeight)}},getFirstVisibleRowIndex:function(k,c,b,g){var h=this,j=h.view,m=j.all,a=m.elements,d=j.el.dom.clientHeight,e,l;if(m.getCount()&&h.variableRowHeight){if(!arguments.length){k=m.startIndex;c=m.endIndex;b=h.scrollTop;g=b+d;if(h.bodyTop>g||h.bodyTop+j.body.getHeight()<b){return Math.floor(h.scrollTop/h.rowHeight)}e=k+Math.min(h.numFromEdge+(h.lastScrollDirection==-1?h.leadingBufferZone:h.trailingBufferZone),Math.floor((c-k)/2))}else{e=k+Math.floor((c-k)/2)}l=h.bodyTop+a[e].offsetTop;if(l+a[e].offsetHeight<b){return h.getFirstVisibleRowIndex(e+1,c,b,g)}if(l<=b){return e}else{if(e!==k){return h.getFirstVisibleRowIndex(k,e-1,b,g)}}}return Math.floor(h.scrollTop/h.rowHeight)},getLastVisibleRowIndex:function(l,c,b,g){var j=this,k=j.view,n=k.all,a=n.elements,d=k.el.dom.clientHeight,e,m,h;if(n.getCount()&&j.variableRowHeight){if(!arguments.length){l=n.startIndex;c=n.endIndex;b=j.scrollTop;g=b+d;if(j.bodyTop>g||j.bodyTop+k.body.getHeight()<b){return Math.floor(j.scrollTop/j.rowHeight)+Math.ceil(d/j.rowHeight)}e=c-Math.min(j.numFromEdge+(j.lastScrollDirection==1?j.leadingBufferZone:j.trailingBufferZone),Math.floor((c-l)/2))}else{e=l+Math.floor((c-l)/2)}m=j.bodyTop+a[e].offsetTop;if(m>g){return j.getLastVisibleRowIndex(l,e-1,b,g)}h=m+a[e].offsetHeight;if(h>=g){return e}else{if(e!==c){return j.getLastVisibleRowIndex(e+1,c,b,g)}}}return j.getFirstVisibleRowIndex()+Math.ceil(d/j.rowHeight)},getScrollHeight:function(){var d=this,a=d.view,b=d.store,c=!d.hasOwnProperty("rowHeight"),e=d.store.getCount();if(!e){return 0}if(c){if(a.all.getCount()){d.rowHeight=Math.floor(a.body.getHeight()/a.all.getCount())}}return Math.floor((b.buffered?b.getTotalCount():b.getCount())*d.rowHeight)},attemptLoad:function(c,a){var b=this;if(b.scrollToLoadBuffer){if(!b.loadTask){b.loadTask=new Ext.util.DelayedTask(b.doAttemptLoad,b,[])}b.loadTask.delay(b.scrollToLoadBuffer,b.doAttemptLoad,b,[c,a])}else{b.store.getRange(c,a,{callback:b.onRangeFetched,scope:b,fireEvent:false})}},cancelLoad:function(){if(this.loadTask){this.loadTask.cancel()}},doAttemptLoad:function(b,a){this.store.getRange(b,a,{callback:this.onRangeFetched,scope:this,fireEvent:false})},destroy:function(){var b=this,a=b.view;if(a&&a.el){a.el.un("scroll",b.onViewScroll,b)}Ext.destroy(b.viewListeners,b.storeListeners,b.gridListeners)}});Ext.define("Ext.grid.plugin.Editing",{alias:"editing.editing",extend:Ext.AbstractPlugin,mixins:{observable:Ext.util.Observable},clicksToEdit:2,triggerEvent:undefined,relayedEvents:["beforeedit","edit","validateedit","canceledit"],defaultFieldXType:"textfield",editStyle:"",constructor:function(a){var b=this;b.addEvents("beforeedit","edit","validateedit","canceledit");b.callParent(arguments);b.mixins.observable.constructor.call(b);b.on("edit",function(c,d){b.fireEvent("afteredit",c,d)})},init:function(a){var b=this;b.grid=a;b.view=a.view;b.initEvents();b.mon(a,{reconfigure:b.onReconfigure,scope:b,beforerender:{fn:b.onReconfigure,single:true,scope:b}});a.relayEvents(b,b.relayedEvents);if(b.grid.ownerLockable){b.grid.ownerLockable.relayEvents(b,b.relayedEvents)}a.isEditable=true;a.editingPlugin=a.view.editingPlugin=b},onReconfigure:function(){var a=this.grid;a=a.ownerLockable?a.ownerLockable:a;this.initFieldAccessors(a.getView().getGridColumns())},destroy:function(){var b=this,a=b.grid;Ext.destroy(b.keyNav);b.clearListeners();if(a){b.removeFieldAccessors(a.getView().getGridColumns());a.editingPlugin=a.view.editingPlugin=b.grid=b.view=b.editor=b.keyNav=null}},getEditStyle:function(){return this.editStyle},initFieldAccessors:function(a){a=[].concat(a);var d=this,g,e=a.length,b;for(g=0;g<e;g++){b=a[g];Ext.applyIf(b,{getEditor:function(c,h){return d.getColumnField(this,h)},setEditor:function(c){d.setColumnField(this,c)}})}},removeFieldAccessors:function(a){a=[].concat(a);var e,d=a.length,b;for(e=0;e<d;e++){b=a[e];delete b.getEditor;delete b.setEditor}},getColumnField:function(b,a){var c=b.field;if(!c&&b.editor){c=b.editor;delete b.editor}if(!c&&a){c=a}if(c){if(Ext.isString(c)){c={xtype:c}}if(!c.isFormField){c=Ext.ComponentManager.create(c,this.defaultFieldXType)}b.field=c;Ext.apply(c,{name:b.dataIndex});return c}},setColumnField:function(a,b){if(Ext.isObject(b)&&!b.isFormField){b=Ext.ComponentManager.create(b,this.defaultFieldXType)}a.field=b},initEvents:function(){var a=this;a.initEditTriggers();a.initCancelTriggers()},initCancelTriggers:Ext.emptyFn,initEditTriggers:function(){var b=this,a=b.view;if(b.triggerEvent=="cellfocus"){b.mon(a,"cellfocus",b.onCellFocus,b)}else{if(b.triggerEvent=="rowfocus"){b.mon(a,"rowfocus",b.onRowFocus,b)}else{if(a.getSelectionModel().isCellModel){a.onCellFocus=Ext.Function.bind(b.beforeViewCellFocus,b)}b.mon(a,b.triggerEvent||"cell"+(b.clicksToEdit===1?"click":"dblclick"),b.onCellClick,b)}}b.initAddRemoveHeaderEvents();a.on("render",b.initKeyNavHeaderEvents,b,{single:true})},beforeViewCellFocus:function(a){if(this.view.selModel.keyNavigation||!this.editing||!this.isCellEditable||!this.isCellEditable(a.row,a.columnHeader)){this.view.focusCell.apply(this.view,arguments)}},onRowFocus:function(a,c,b){this.startEdit(c,0)},onCellFocus:function(c,b,a){this.startEdit(a.row,a.column)},onCellClick:function(c,a,j,b,h,d,g){if(!c.expanderSelector||!g.getTarget(c.expanderSelector)){this.startEdit(b,c.getHeaderAtIndex(j))}},initAddRemoveHeaderEvents:function(){var a=this;a.mon(a.grid.headerCt,{scope:a,add:a.onColumnAdd,remove:a.onColumnRemove})},initKeyNavHeaderEvents:function(){var a=this;a.keyNav=Ext.create("Ext.util.KeyNav",a.view.el,{enter:a.onEnterKey,esc:a.onEscKey,scope:a})},onColumnAdd:function(a,b){if(b.isHeader){this.initFieldAccessors(b)}},onColumnRemove:function(a,b){if(b.isHeader){this.removeFieldAccessors(b)}},onEnterKey:function(h){var d=this,c=d.grid,b=c.getSelectionModel(),a,j,g=c.headerCt.getHeaderAtIndex(0);if(b.getCurrentPosition){j=b.getCurrentPosition();if(j){a=c.getView().getStore().getAt(j.row);g=c.headerCt.getHeaderAtIndex(j.column)}}else{a=b.getLastSelected()}if(a&&g){d.startEdit(a,g)}},onEscKey:function(a){return this.cancelEdit()},beforeEdit:Ext.emptyFn,startEdit:function(b,e){var d=this,c,a=d.grid.lockable?d.grid:d.view;if(!a.componentLayoutCounter){a.on({boxready:Ext.Function.bind(d.startEdit,d,[b,e]),single:true});return false}if(d.grid.collapsed||!d.grid.view.isVisible(true)){return false}c=d.getEditingContext(b,e);if(c==null||d.beforeEdit(c)===false||d.fireEvent("beforeedit",d,c)===false||c.cancel){return false}d.editing=true;return c},getEditingContext:function(c,h){var g=this,d=g.grid,b=d.getView(),a=b.getNode(c,true),e,j;if(!a){return}h=d.headerCt.getVisibleHeaderClosestToIndex(Ext.isNumber(h)?h:h.getIndex());if(!h){return}j=h.getIndex();if(Ext.isNumber(c)){e=c;c=b.getRecord(a)}else{e=b.indexOf(a)}if(!c){return}return{grid:d,record:c,field:h.dataIndex,value:c.get(h.dataIndex),row:a,column:h,rowIdx:e,colIdx:j}},cancelEdit:function(){var a=this;a.editing=false;a.fireEvent("canceledit",a,a.context)},completeEdit:function(){var a=this;if(a.editing&&a.validateEdit()){a.fireEvent("edit",a,a.context)}a.context=null;a.editing=false},validateEdit:function(){var b=this,a=b.context;return b.fireEvent("validateedit",b,a)!==false&&!a.cancel}});Ext.define("Ext.grid.plugin.CellEditing",{alias:"plugin.cellediting",extend:Ext.grid.plugin.Editing,lockableScope:"both",init:function(a){var c=this,b=c.lockingPartner;c.callParent(arguments);if(b){if(b.editors){c.editors=b.editors;c.editTask=b.editTask}else{c.editors=b.editors=new Ext.util.MixedCollection(false,function(d){return d.editorId});c.editTask=b.editTask=new Ext.util.DelayedTask}}else{c.editors=new Ext.util.MixedCollection(false,function(d){return d.editorId});c.editTask=new Ext.util.DelayedTask}},onReconfigure:function(c,a,b){if(b){this.editors.clear()}this.callParent()},destroy:function(){var a=this;if(a.editors){a.editTask.cancel();a.editors.each(Ext.destroy,Ext);a.editors.clear()}a.callParent(arguments)},onBodyScroll:function(){var c=this,b=c.getActiveEditor(),a=c.view.el.getScroll();if(b&&b.editing&&b.editingPlugin===c){if(a.top!==c.scroll.top){if(b.field){if(b.field.triggerBlur){b.field.triggerBlur()}else{b.field.blur()}}}else{b.realign()}}c.scroll=a},initCancelTriggers:function(){var c=this,b=c.grid,a=b.view;c.mon(a,"bodyscroll",c.onBodyScroll,c);c.mon(b,{columnresize:c.cancelEdit,columnmove:c.cancelEdit,scope:c})},isCellEditable:function(a,d){var c=this,b=c.getEditingContext(a,d);if(c.grid.view.isVisible(true)&&b){d=b.column;a=b.record;if(d&&c.getEditor(a,d)){return true}}},startEdit:function(a,e,c){var d=this,b;c=c||d.callParent(arguments);d.completeEdit();if(c&&d.grid.view.isVisible(true)){d.context=c;a=c.record;e=c.column;if(e&&!e.getEditor(a)){return false}c.originalValue=c.value=a.get(e.dataIndex);if(d.beforeEdit(c)===false||d.fireEvent("beforeedit",d,c)===false||c.cancel){return false}b=d.getEditor(a,e);d.grid.view.cancelFocus();d.view.focusCell({row:c.rowIdx,column:c.colIdx});if(b){d.editTask.delay(15,d.showEditor,d,[b,c,c.value]);return true}return false}},showEditor:function(e,a,h){var g=this,d=a.record,c=a.column,b=g.grid.getSelectionModel(),j=b.getCurrentPosition(),k=j&&j.view;if(k&&k!==g.view){return g.lockingPartner.showEditor(e,g.lockingPartner.getEditingContext(j.record,j.columnHeader),h)}g.setEditingContext(a);g.setActiveEditor(e);g.setActiveRecord(d);g.setActiveColumn(c);if(b.selectByPosition&&(!j||j.column!==a.colIdx||j.row!==a.rowIdx)){b.selectByPosition({row:a.rowIdx,column:a.colIdx,view:g.view})}e.startEdit(g.getCell(d,c),h,a);g.editing=true;g.scroll=g.view.el.getScroll()},completeEdit:function(){var a=this.getActiveEditor();if(a){a.completeEdit();this.editing=false}},setEditingContext:function(a){this.context=a;if(this.lockingPartner){this.lockingPartner.context=a}},setActiveEditor:function(a){this.activeEditor=a;if(this.lockingPartner){this.lockingPartner.activeEditor=a}},getActiveEditor:function(){return this.activeEditor},setActiveColumn:function(a){this.activeColumn=a;if(this.lockingPartner){this.lockingPartner.activeColumn=a}},getActiveColumn:function(){return this.activeColumn},setActiveRecord:function(a){this.activeRecord=a;if(this.lockingPartner){this.lockingPartner.activeRecord=a}},getActiveRecord:function(){return this.activeRecord},getEditor:function(a,e){var h=this,g=h.editors,d=e.getItemId(),c=g.getByKey(d),b=h.grid.ownerLockable||h.grid;if(!c){c=e.getEditor(a);if(!c){return false}if(c instanceof Ext.grid.CellEditor){c.floating=true;c.isForTree=h.grid.isTree}else{c=new Ext.grid.CellEditor({floating:true,editorId:d,field:c,isForTree:h.grid.isTree})}b.add(c);c.on({scope:h,specialkey:h.onSpecialKey,complete:h.onEditComplete,canceledit:h.cancelEdit});e.on("removed",h.cancelActiveEdit,h);g.add(c)}c.editingPlugin=h;return c},cancelActiveEdit:function(b){var a=this.context;if(a&&a.column===b){this.cancelEdit()}},setColumnField:function(b,c){var a=this.editors.getByKey(b.getItemId());Ext.destroy(a,b.field);this.editors.removeAtKey(b.getItemId());this.callParent(arguments)},getCell:function(a,b){return this.grid.getView().getCell(a,b)},onSpecialKey:function(a,c,b){var d;if(b.getKey()===b.TAB){b.stopEvent();if(a){a.onEditorTab(b)}d=a.up("tablepanel").getSelectionModel();if(d.onEditorTab){return d.onEditorTab(a.editingPlugin,b)}}},onEditComplete:function(h,k,d){var j=this,a=j.grid,b=j.getActiveColumn(),e=a.getSelectionModel(),c=j.context,g;if(b){g=c.record;j.setActiveEditor(null);j.setActiveColumn(null);j.setActiveRecord(null);c.value=k;if(!j.validateEdit()){return}if(!g.isEqual(k,d)){g.set(b.dataIndex,k)}if(e.setCurrentPosition){e.setCurrentPosition(e.getCurrentPosition())}else{a.getView().focus()}j.fireEvent("edit",j,c);j.editing=false}},cancelEdit:function(){var c=this,b=c.getActiveEditor(),a=c.grid.getView().getEl(c.getActiveColumn());c.setActiveEditor(null);c.setActiveColumn(null);c.setActiveRecord(null);if(b){b.cancelEdit();a.focus();c.callParent(arguments);return}return true},startEditByPosition:function(a){a.column=this.view.getHeaderCt().getVisibleHeaderClosestToIndex(a.column).getIndex();return this.startEdit(a.row,a.column)}});Ext.define("Ext.grid.plugin.DivRenderer",{alias:"plugin.divrenderer",extend:Ext.AbstractPlugin,tableTpl:['<div id="{view.id}-table" class="'+Ext.baseCSSPrefix+"{view.id}-table "+Ext.baseCSSPrefix+'grid-table" style="{tableStyle}">',"{%","values.view.renderRows(values.rows, values.viewStartIndex, out);","%}","</div>",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'<dl {[values.rowId ? ("id=\\"" + values.rowId + "\\"") : ""]} ','data-boundView="{view.id}" ','data-recordId="{record.internalId}" ','data-recordIndex="{recordIndex}" ','class="{[values.itemClasses.join(" ")]} {[values.rowClasses.join(" ")]}{[dataRowCls]}" ','style="position:relative" ',"{rowAttr:attributes}>",'<tpl for="columns">{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","</tpl>","</dl>",{priority:0}],cellTpl:['<dt class="{tdCls}" {tdAttr} data-cellIndex="{cellIndex}">','<div {unselectableAttr} class="'+Ext.baseCSSPrefix+'grid-cell-inner"','style="text-align:{align};<tpl if="style">{style}</tpl>">{value}</div>',"</dt>",{priority:0}],selectors:{bodySelector:"div",nodeContainerSelector:"div",itemSelector:"dl."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"dl."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"dt."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainerSelector:function(){return this.getBodySelector()},getNodeContainer:function(){return this.el.getById(this.id+"-table",true)}},init:function(b){var a=b.getView();a.tableTpl=Ext.XTemplate.getTpl(this,"tableTpl");a.rowTpl=Ext.XTemplate.getTpl(this,"rowTpl");a.cellTpl=Ext.XTemplate.getTpl(this,"cellTpl");Ext.apply(a,this.selectors)}});Ext.define("Ext.grid.plugin.DragDrop",{extend:Ext.AbstractPlugin,alias:"plugin.gridviewdragdrop",dragText:"{0} selected row{1}",ddGroup:"GridDD",enableDrop:true,enableDrag:true,containerScroll:false,init:function(a){a.on("render",this.onViewRender,this,{single:true})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},enable:function(){var a=this;if(a.dragZone){a.dragZone.unlock()}if(a.dropZone){a.dropZone.unlock()}a.callParent()},disable:function(){var a=this;if(a.dragZone){a.dragZone.lock()}if(a.dropZone){a.dropZone.lock()}a.callParent()},onViewRender:function(a){var b=this,c;if(b.enableDrag){if(b.containerScroll){c=a.getEl()}b.dragZone=new Ext.view.DragZone({view:a,ddGroup:b.dragGroup||b.ddGroup,dragText:b.dragText,containerScroll:b.containerScroll,scrollEl:c})}if(b.enableDrop){b.dropZone=new Ext.grid.ViewDropZone({view:a,ddGroup:b.dropGroup||b.ddGroup})}}});Ext.define("Ext.grid.plugin.RowEditing",{extend:Ext.grid.plugin.Editing,alias:"plugin.rowediting",lockableScope:"top",editStyle:"row",autoCancel:true,errorSummary:true,constructor:function(){var a=this;a.callParent(arguments);if(!a.clicksToMoveEditor){a.clicksToMoveEditor=a.clicksToEdit}a.autoCancel=!!a.autoCancel},destroy:function(){Ext.destroy(this.editor);this.callParent(arguments)},startEdit:function(a,e){var d=this,c=d.getEditor(),b;if(c.beforeEdit()!==false){b=d.callParent(arguments);if(b){d.context=b;if(d.lockingPartner){d.lockingPartner.cancelEdit()}c.startEdit(b.record,b.column,b);return true}}return false},cancelEdit:function(){var a=this;if(a.editing){a.getEditor().cancelEdit();a.callParent(arguments);return}return true},completeEdit:function(){var a=this;if(a.editing&&a.validateEdit()){a.editing=false;a.fireEvent("edit",a,a.context)}},validateEdit:function(){var l=this,h=l.editor,b=l.context,g=b.record,n={},d={},k=h.items.items,j,c=k.length,a,m;for(j=0;j<c;j++){m=k[j];a=m.name;n[a]=m.getValue();d[a]=g.get(a)}Ext.apply(b,{newValues:n,originalValues:d});return l.callParent(arguments)&&l.getEditor().completeEdit()},getEditor:function(){var a=this;if(!a.editor){a.editor=a.initEditor()}return a.editor},initEditor:function(){return new Ext.grid.RowEditor(this.initEditorConfig())},initEditorConfig:function(){var h=this,c=h.grid,j=h.view,d=c.headerCt,e=["saveBtnText","cancelBtnText","errorsText","dirtyText"],k,a=e.length,g={autoCancel:h.autoCancel,errorSummary:h.errorSummary,fields:d.getGridColumns(),hidden:true,view:j,editingPlugin:h},l;for(k=0;k<a;k++){l=e[k];if(Ext.isDefined(h[l])){g[l]=h[l]}}return g},initEditTriggers:function(){var b=this,a=b.view,c=b.clicksToMoveEditor===1?"click":"dblclick";b.callParent(arguments);if(b.clicksToMoveEditor!==b.clicksToEdit){b.mon(a,"cell"+c,b.moveEditorByClick,b)}a.on({render:function(){b.mon(b.grid.headerCt,{scope:b,columnresize:b.onColumnResize,columnhide:b.onColumnHide,columnshow:b.onColumnShow,columnmove:b.onColumnMove})},single:true})},startEditByClick:function(){var a=this;if(!a.editing||a.clicksToMoveEditor===a.clicksToEdit){a.callParent(arguments)}},moveEditorByClick:function(){var a=this;if(a.editing){a.superclass.onCellClick.apply(a,arguments)}},onColumnAdd:function(a,c){if(c.isHeader){var d=this,b;d.initFieldAccessors(c);b=d.editor;if(b&&b.onColumnAdd){b.onColumnAdd(c)}}},onColumnRemove:function(a,c){if(c.isHeader){var d=this,b=d.getEditor();if(b&&b.onColumnRemove){b.onColumnRemove(c)}d.removeFieldAccessors(c)}},onColumnResize:function(a,d,c){if(d.isHeader){var e=this,b=e.getEditor();if(b&&b.onColumnResize){b.onColumnResize(d,c)}}},onColumnHide:function(a,c){var d=this,b=d.getEditor();if(b&&b.onColumnHide){b.onColumnHide(c)}},onColumnShow:function(a,c){var d=this,b=d.getEditor();if(b&&b.onColumnShow){b.onColumnShow(c)}},onColumnMove:function(a,d,c,g){var e=this,b=e.getEditor();if(b&&b.onColumnMove){b.onColumnMove(d,c,g-(g>c?1:0))}},setColumnField:function(b,d){var c=this,a=c.getEditor();a.removeField(b);c.callParent(arguments);c.getEditor().setField(b)}});Ext.define("Ext.grid.plugin.RowExpander",{extend:Ext.AbstractPlugin,lockableScope:"normal",alias:"plugin.rowexpander",rowBodyTpl:null,expandOnEnter:true,expandOnDblClick:true,selectRowOnExpand:false,rowBodyTrSelector:".x-grid-rowbody-tr",rowBodyHiddenCls:"x-grid-row-body-hidden",rowCollapsedCls:"x-grid-row-collapsed",addCollapsedCls:{before:function(a,b){var c=this.rowExpander;if(!c.recordsExpanded[a.record.internalId]){a.itemClasses.push(c.rowCollapsedCls)}},priority:500},setCmp:function(b){var d=this,a,c;d.callParent(arguments);d.recordsExpanded={};d.rowBodyTpl=Ext.XTemplate.getTpl(d,"rowBodyTpl");a=this.rowBodyTpl;c=[{ftype:"rowbody",lockableScope:"normal",recordsExpanded:d.recordsExpanded,rowBodyHiddenCls:d.rowBodyHiddenCls,rowCollapsedCls:d.rowCollapsedCls,setupRowData:d.getRowBodyFeatureData,getRowBodyContents:function(e){return a.applyTemplate(e.getData())}},{ftype:"rowwrap",lockableScope:"normal"}];if(b.features){b.features=Ext.Array.push(c,b.features)}else{b.features=c}},init:function(b){var d=this,a=b,c;d.callParent(arguments);d.grid=b;d.view=b.getView();d.addExpander();d.bindView(d.view);d.view.addRowTpl(d.addCollapsedCls).rowExpander=d;if(b.ownerLockable){a=b.ownerLockable;a.syncRowHeight=false;c=a.lockedGrid.getView();d.bindView(c);c.addRowTpl(d.addCollapsedCls).rowExpander=d;a.mon(a,"columnschanged",d.refreshRowHeights,d);a.mon(a.store,"datachanged",d.refreshRowHeights,d)}a.on("beforereconfigure",d.beforeReconfigure,d)},beforeReconfigure:function(d,a,c,e,b){var g=this.getHeaderConfig();g.locked=true;c.unshift(g)},addExpander:function(){var b=this,a=b.grid,c=b.getHeaderConfig();if(a.ownerLockable){a=a.ownerLockable.lockedGrid;a.width+=c.width}a.headerCt.insert(0,c)},getRowBodyFeatureData:function(b,a,d){var c=this;c.self.prototype.setupRowData.apply(c,arguments);if(!c.grid.ownerLockable){d.rowBodyColspan=d.rowBodyColspan-1}d.rowBody=c.getRowBodyContents(b);d.rowBodyCls=c.recordsExpanded[b.internalId]?"":c.rowBodyHiddenCls},bindView:function(a){if(this.expandOnEnter){a.on("itemkeydown",this.onKeyDown,this)}if(this.expandOnDblClick){a.on("itemdblclick",this.onDblClick,this)}},onKeyDown:function(k,g,l,a,h){if(h.getKey()==h.ENTER){var b=k.store,c=k.getSelectionModel().getSelection(),j=c.length,d=0;for(;d<j;d++){a=b.indexOf(c[d]);this.toggleRow(a,c[d])}}},onDblClick:function(b,a,g,c,d){this.toggleRow(c,a)},toggleRow:function(b,e){var h=this,j=h.view,c=j.getNode(b),l=Ext.fly(c,"_rowExpander"),g=l.down(h.rowBodyTrSelector,true),d=l.hasCls(h.rowCollapsedCls),k=d?"removeCls":"addCls",a;Ext.suspendLayouts();l[k](h.rowCollapsedCls);Ext.fly(g)[k](h.rowBodyHiddenCls);h.recordsExpanded[e.internalId]=d;j.refreshSize();j.fireEvent(d?"expandbody":"collapsebody",l.dom,e,g);if(h.grid.ownerLockable){j=h.grid.ownerLockable.lockedGrid.view;a=l.getHeight();l=Ext.fly(j.getNode(b),"_rowExpander");l.setHeight(a);l[k](h.rowCollapsedCls);j.refreshSize()}Ext.resumeLayouts(true)},refreshRowHeights:function(){Ext.globalEvents.on({idle:this.doRefreshRowHeights,scope:this,single:true})},doRefreshRowHeights:function(){var h=this,k=h.recordsExpanded,j,e,l=h.grid.ownerLockable.lockedGrid.view,a=h.grid.ownerLockable.normalGrid.view,c,d,g,b;for(j in k){if(k.hasOwnProperty(j)){e=this.view.store.data.get(j);d=l.getNode(e,false);c=a.getNode(e,false);d.style.height=c.style.height="";g=d.offsetHeight;b=c.offsetHeight;if(b>g){d.style.height=b+"px"}else{if(g>b){c.style.height=g+"px"}}}}},getHeaderConfig:function(){var a=this;return{width:24,lockable:false,sortable:false,resizable:false,draggable:false,hideable:false,menuDisabled:true,tdCls:Ext.baseCSSPrefix+"grid-cell-special",renderer:function(c,b){if(!a.grid.ownerLockable){b.tdAttr+=' rowspan="2"'}return'<div class="'+Ext.baseCSSPrefix+'grid-row-expander">&#160;</div>'},processEvent:function(h,d,b,k,g,j,c){if(h=="mousedown"&&j.getTarget(".x-grid-row-expander")){a.toggleRow(k,c);return a.selectRowOnExpand}}}}});Ext.define("Ext.grid.property.Grid",{extend:Ext.grid.Panel,alias:"widget.propertygrid",alternateClassName:"Ext.grid.PropertyGrid",valueField:"value",nameField:"name",inferTypes:true,enableColumnMove:false,columnLines:true,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,gridCls:Ext.baseCSSPrefix+"property-grid",initComponent:function(){var a=this;a.source=a.source||{};a.addCls(a.gridCls);a.plugins=a.plugins||[];a.plugins.push(new Ext.grid.plugin.CellEditing({clicksToEdit:a.clicksToEdit,startEdit:function(b,c){return this.self.prototype.startEdit.call(this,b,a.headerCt.child("#"+a.valueField))}}));a.selModel={selType:"cellmodel",onCellSelect:function(b){if(b.column!=1){b.column=1}return this.self.prototype.onCellSelect.call(this,b)}};a.sourceConfig=Ext.apply({},a.sourceConfig);if(!a.store){a.propStore=a.store=new Ext.grid.property.Store(a,a.source)}a.configure(a.sourceConfig);if(a.sortableColumns){a.store.sort("name","ASC")}a.columns=new Ext.grid.property.HeaderContainer(a,a.store);a.addEvents("beforepropertychange","propertychange");a.callParent();a.getView().walkCells=this.walkCells;a.editors={date:new Ext.grid.CellEditor({field:new Ext.form.field.Date({selectOnFocus:true})}),string:new Ext.grid.CellEditor({field:new Ext.form.field.Text({selectOnFocus:true})}),number:new Ext.grid.CellEditor({field:new Ext.form.field.Number({selectOnFocus:true})}),"boolean":new Ext.grid.CellEditor({field:new Ext.form.field.ComboBox({editable:false,store:[[true,a.headerCt.trueText],[false,a.headerCt.falseText]]})})};a.store.on("update",a.onUpdate,a)},configure:function(b){var h=this,k=h.store,d=0,e=h.store.getCount(),l=h.nameField,m=h.valueField,a,j,c,g;h.configureLegacy(b);if(h.inferTypes){for(;d<e;++d){c=k.getAt(d);a=c.get(l);if(!h.getConfig(a,"type")){j=c.get(m);if(Ext.isDate(j)){g="date"}else{if(Ext.isNumber(j)){g="number"}else{if(Ext.isBoolean(j)){g="boolean"}else{g="string"}}}h.setConfig(a,"type",g)}}}},getConfig:function(e,d,a){var c=this.sourceConfig[e],b;if(c){b=c[d]}return b||a},setConfig:function(e,b,c){var a=this.sourceConfig,d=a[e];if(!d){d=a[e]={__copied:true}}else{if(!d.__copied){d=Ext.apply({__copied:true},d);a[e]=d}}d[b]=c;return c},configureLegacy:function(a){var c=this,e,b,d;c.copyLegacyObject(a,c.customRenderers,"renderer");c.copyLegacyObject(a,c.customEditors,"editor");c.copyLegacyObject(a,c.propertyNames,"displayName")},copyLegacyObject:function(a,e,c){var b,d;for(b in e){if(e.hasOwnProperty(b)){if(!a[b]){a[b]={}}a[b][c]=e[b]}}},onUpdate:function(d,a,c){var g=this,b,e;if(g.rendered&&c==Ext.data.Model.EDIT){b=a.get(g.valueField);e=a.modified.value;if(g.fireEvent("beforepropertychange",g.source,a.getId(),b,e)!==false){if(g.source){g.source[a.getId()]=b}a.commit();g.fireEvent("propertychange",g.source,a.getId(),b,e)}else{a.reject()}}},walkCells:function(h,g,d,c,a,b){if(g=="left"){g="up"}else{if(g=="right"){g="down"}}h=Ext.view.Table.prototype.walkCells.call(this,h,g,d,c,a,b);if(h&&!h.column){h.column=1}return h},getCellEditor:function(a,d){var g=this,h=a.get(g.nameField),j=a.get(g.valueField),c=g.getConfig(h,"editor"),b=g.getConfig(h,"type"),e=g.editors;if(c){if(!(c instanceof Ext.grid.CellEditor)){if(!(c instanceof Ext.form.field.Base)){c=Ext.ComponentManager.create(c,"textfield")}c=g.setConfig(h,"editor",new Ext.grid.CellEditor({field:c}))}}else{if(b){switch(b){case"date":c=e.date;break;case"number":c=e.number;break;case"boolean":c=g.editors["boolean"];break;default:c=e.string}}else{if(Ext.isDate(j)){c=e.date}else{if(Ext.isNumber(j)){c=e.number}else{if(Ext.isBoolean(j)){c=e["boolean"]}else{c=e.string}}}}}c.editorId=h;return c},beforeDestroy:function(){var a=this;a.callParent();a.destroyEditors(a.editors);a.destroyEditors(a.customEditors);delete a.source},destroyEditors:function(b){for(var a in b){if(b.hasOwnProperty(a)){Ext.destroy(b[a])}}},setSource:function(b,c){var a=this;a.source=b;if(c!==undefined){a.sourceConfig=Ext.apply({},c);a.configure(a.sourceConfig)}a.propStore.setSource(b)},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.define("Ext.grid.property.HeaderContainer",{extend:Ext.grid.header.Container,alternateClassName:"Ext.grid.PropertyColumnModel",nameWidth:115,nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",trueText:"true",falseText:"false",nameColumnCls:Ext.baseCSSPrefix+"grid-property-name",constructor:function(b,a){var c=this;c.grid=b;c.store=a;c.callParent([{enableColumnResize:Ext.isDefined(b.enableColumnResize)?b.enableColumnResize:c.enableColumnResize,enableColumnMove:Ext.isDefined(b.enableColumnMove)?b.enableColumnMove:c.enableColumnMove,items:[{header:c.nameText,width:b.nameColumnWidth||c.nameWidth,sortable:b.sortableColumns,dataIndex:b.nameField,renderer:Ext.Function.bind(c.renderProp,c),itemId:b.nameField,menuDisabled:true,tdCls:c.nameColumnCls},{header:c.valueText,renderer:Ext.Function.bind(c.renderCell,c),getEditor:Ext.Function.bind(c.getCellEditor,c),sortable:b.sortableColumns,flex:1,fixed:true,dataIndex:b.valueField,itemId:b.valueField,menuDisabled:true}]}])},getCellEditor:function(a){return this.grid.getCellEditor(a,this)},renderProp:function(a){return this.getPropertyName(a)},renderCell:function(h,e,g){var c=this,b=c.grid,d=b.getConfig(g.get(b.nameField),"renderer"),a=h;if(d){return d.apply(c,arguments)}if(Ext.isDate(h)){a=c.renderDate(h)}else{if(Ext.isBoolean(h)){a=c.renderBool(h)}}return Ext.util.Format.htmlEncode(a)},renderDate:Ext.util.Format.date,renderBool:function(a){return this[a?"trueText":"falseText"]},getPropertyName:function(a){return this.grid.getConfig(a,"displayName",a)}});Ext.define("Ext.grid.property.Property",{extend:Ext.data.Model,alternateClassName:"Ext.PropGridProperty",fields:[{name:"name",type:"string"},{name:"value"}],idProperty:"name"});Ext.define("Ext.grid.property.Store",{extend:Ext.data.Store,alternateClassName:"Ext.grid.PropertyStore",sortOnLoad:false,constructor:function(a,c){var b=this;b.grid=a;b.source=c;b.callParent([{data:c,model:Ext.grid.property.Property,proxy:b.getProxy()}])},getProxy:function(){if(!this.proxy){Ext.grid.property.Store.prototype.proxy=new Ext.data.proxy.Memory({model:Ext.grid.property.Property,reader:this.getReader()})}return this.proxy},getReader:function(){if(!this.reader){Ext.grid.property.Store.prototype.reader=new Ext.data.reader.Reader({model:Ext.grid.property.Property,buildExtractors:Ext.emptyFn,read:function(a){return this.readRecords(a)},readRecords:function(b){var d,c,a={records:[],success:true};for(c in b){if(b.hasOwnProperty(c)){d=b[c];if(this.isEditableValue(d)){a.records.push(new Ext.grid.property.Property({name:c,value:d},c))}}}a.total=a.count=a.records.length;return new Ext.data.ResultSet(a)},isEditableValue:function(a){return Ext.isPrimitive(a)||Ext.isDate(a)||a===null}})}return this.reader},setSource:function(a){var b=this;b.source=a;b.suspendEvents();b.removeAll();b.proxy.data=a;b.load();b.resumeEvents();b.fireEvent("datachanged",b);b.fireEvent("refresh",b)},getProperty:function(a){return Ext.isNumber(a)?this.getAt(a):this.getById(a)},setValue:function(e,c,a){var b=this,d=b.getRec(e);if(d){d.set("value",c);b.source[e]=c}else{if(a){b.source[e]=c;d=new Ext.grid.property.Property({name:e,value:c},e);b.add(d)}}},remove:function(b){var a=this.getRec(b);if(a){this.callParent([a]);delete this.source[b]}},getRec:function(a){return this.getById(a)},getSource:function(){return this.source}});Ext.define("Ext.layout.ClassList",function(){var b=Ext.String.splitWords,a=Ext.Array.toMap;return{dirty:false,constructor:function(c){this.owner=c;this.map=a(this.classes=b(c.el.className))},add:function(c){var d=this;if(!d.map[c]){d.map[c]=true;d.classes.push(c);if(!d.dirty){d.dirty=true;d.owner.markDirty()}}},addMany:function(c){Ext.each(b(c),this.add,this)},contains:function(c){return this.map[c]},flush:function(){this.owner.el.className=this.classes.join(" ");this.dirty=false},remove:function(c){var d=this;if(d.map[c]){delete d.map[c];d.classes=Ext.Array.filter(d.classes,function(e){return e!=c});if(!d.dirty){d.dirty=true;d.owner.markDirty()}}},removeMany:function(d){var e=this,c=a(b(d));e.classes=Ext.Array.filter(e.classes,function(g){if(!c[g]){return true}delete e.map[g];if(!e.dirty){e.dirty=true;e.owner.markDirty()}return false})}}}());Ext.define("Ext.util.Queue",{constructor:function(){this.clear()},add:function(c){var b=this,a=b.getKey(c);if(!b.map[a]){++b.length;b.items.push(c);b.map[a]=c}return c},clear:function(){var b=this,a=b.items;b.items=[];b.map={};b.length=0;return a},contains:function(b){var a=this.getKey(b);return this.map.hasOwnProperty(a)},getCount:function(){return this.length},getKey:function(a){return a.id},remove:function(e){var d=this,c=d.getKey(e),a=d.items,b;if(d.map[c]){b=Ext.Array.indexOf(a,e);Ext.Array.erase(a,b,1);delete d.map[c];--d.length}return e}});Ext.define("Ext.layout.ContextItem",{heightModel:null,widthModel:null,sizeModel:null,optOut:false,ownerSizePolicy:null,boxChildren:null,boxParent:null,isBorderBoxValue:null,children:[],dirty:null,dirtyCount:0,hasRawContent:true,isContextItem:true,isTopLevel:false,consumersContentHeight:0,consumersContentWidth:0,consumersContainerHeight:0,consumersContainerWidth:0,consumersHeight:0,consumersWidth:0,ownerCtContext:null,remainingChildDimensions:0,props:null,state:null,wrapsComponent:false,constructor:function(t){var u=this,q=Ext.layout.SizeModel.sizeModels,l=q.configured,k=q.shrinkWrap,b,s,o,n,g,d,w,e,p,m,c,j,h,a;Ext.apply(u,t);b=u.el;u.id=b.id;u.flushedProps={};u.props=g={};u.styles={};w=u.target;if(!w.isComponent){s=b.lastBox}else{u.wrapsComponent=true;u.framing=w.frameSize||null;u.isComponentChild=w.ownerLayout&&w.ownerLayout.isComponentLayout;s=w.lastBox;o=w.ownerCt;if(o&&(n=u.context.items[o.el.id])){u.ownerCtContext=n}u.sizeModel=d=w.getSizeModel(n&&n.widthModel.pairsByHeightOrdinal[n.heightModel.ordinal]);u.widthModel=j=d.width;u.heightModel=h=d.height;if(s&&s.invalid===false){m=w.width===(e=s.width);c=w.height===(p=s.height);if(j===k&&h===k){a=true}else{if(j===l&&m){a=h===k||h===l&&c}}if(a){u.optOut=true;g.width=e;g.height=p}}}u.lastBox=s},init:function(j,c){var t=this,a=t.props,d=t.dirty,l=t.ownerCtContext,p=t.target.ownerLayout,h=!t.state,u=j||h,e,o,m,q,b,w,x=t.heightModel,g=t.widthModel,k,s;t.dirty=t.invalid=false;t.props={};t.remainingChildDimensions=0;if(t.boxChildren){t.boxChildren.length=0}if(!h){t.clearAllBlocks("blocks");t.clearAllBlocks("domBlocks")}if(!t.wrapsComponent){return u}w=t.target;t.state={};if(h){if(w.beforeLayout&&w.beforeLayout!==Ext.emptyFn){w.beforeLayout()}if(!l&&(q=w.ownerCt)){l=t.context.items[q.el.id]}if(l){t.ownerCtContext=l;t.isBoxParent=w.ownerLayout.isItemBoxParent(t)}else{t.isTopLevel=true}t.frameBodyContext=t.getEl("frameBody")}else{l=t.ownerCtContext;t.isTopLevel=!l;e=t.children;for(o=0,m=e.length;o<m;++o){e[o].init(true)}}t.hasRawContent=!(w.isContainer&&w.items.items.length>0);if(j){t.widthModel=t.heightModel=null;b=w.getSizeModel(l&&l.widthModel.pairsByHeightOrdinal[l.heightModel.ordinal]);if(h){t.sizeModel=b}t.widthModel=b.width;t.heightModel=b.height;if(l&&!t.isComponentChild){l.remainingChildDimensions+=2}}else{if(a){t.recoverProp("x",a,d);t.recoverProp("y",a,d);if(t.widthModel.calculated){t.recoverProp("width",a,d)}if(t.heightModel.calculated){t.recoverProp("height",a,d)}if(l&&!t.isComponentChild){l.remainingChildDimensions+=("width" in a)+("height" in a)}}}if(a&&p&&p.manageMargins){t.recoverProp("margin-top",a,d);t.recoverProp("margin-right",a,d);t.recoverProp("margin-bottom",a,d);t.recoverProp("margin-left",a,d)}if(c){k=c.heightModel;s=c.widthModel;if(s&&k&&g&&x){if(g.shrinkWrap&&x.shrinkWrap){if(s.constrainedMax&&k.constrainedMin){k=null}}}if(s){t.widthModel=s}if(k){t.heightModel=k}if(c.state){Ext.apply(t.state,c.state)}}return u},initContinue:function(e){var g=this,d=g.ownerCtContext,a=g.target,c=g.widthModel,h=a.getHierarchyState(),b;if(c.fixed){h.inShrinkWrapTable=false}else{delete h.inShrinkWrapTable}if(e){if(d&&c.shrinkWrap){b=d.isBoxParent?d:d.boxParent;if(b){b.addBoxChild(g)}}else{if(c.natural){g.boxParent=d}}}return e},initDone:function(d){var b=this,a=b.props,c=b.state;if(b.remainingChildDimensions===0){a.containerChildrenSizeDone=true}if(d){a.containerLayoutDone=true}if(b.boxChildren&&b.boxChildren.length&&b.widthModel.shrinkWrap){b.el.setWidth(10000);c.blocks=(c.blocks||0)+1}},initAnimation:function(){var b=this,c=b.target,a=b.ownerCtContext;if(a&&a.isTopLevel){b.animatePolicy=c.ownerLayout.getAnimatePolicy(b)}else{if(!a&&c.isCollapsingOrExpanding&&c.animCollapse){b.animatePolicy=c.componentLayout.getAnimatePolicy(b)}}if(b.animatePolicy){b.context.queueAnimation(b)}},addCls:function(a){this.getClassList().addMany(a)},removeCls:function(a){this.getClassList().removeMany(a)},addBlock:function(b,d,e){var c=this,g=c[b]||(c[b]={}),a=g[e]||(g[e]={});if(!a[d.id]){a[d.id]=d;++d.blockCount;++c.context.blockCount}},addBoxChild:function(d){var c=this,b,a=d.widthModel;d.boxParent=this;d.measuresBox=a.shrinkWrap?d.hasRawContent:a.natural;if(d.measuresBox){b=c.boxChildren;if(b){b.push(d)}else{c.boxChildren=[d]}}},addPositionStyles:function(d,b){var a=b.x,e=b.y,c=0;if(a!==undefined){d.left=a+"px";++c}if(e!==undefined){d.top=e+"px";++c}return c},addTrigger:function(g,h){var e=this,a=h?"domTriggers":"triggers",j=e[a]||(e[a]={}),b=e.context,d=b.currentLayout,c=j[g]||(j[g]={});if(!c[d.id]){c[d.id]=d;++d.triggerCount;c=b.triggers[h?"dom":"data"];(c[d.id]||(c[d.id]=[])).push({item:this,prop:g});if(e.props[g]!==undefined){if(!h||!(e.dirty&&g in e.dirty)){++d.firedTriggers}}}},boxChildMeasured:function(){var b=this,c=b.state,a=c.boxesMeasured=(c.boxesMeasured||0)+1;if(a==b.boxChildren.length){c.clearBoxWidth=1;++b.context.progressCount;b.markDirty()}},borderNames:["border-top-width","border-right-width","border-bottom-width","border-left-width"],marginNames:["margin-top","margin-right","margin-bottom","margin-left"],paddingNames:["padding-top","padding-right","padding-bottom","padding-left"],trblNames:["top","right","bottom","left"],cacheMissHandlers:{borderInfo:function(a){var b=a.getStyles(a.borderNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},marginInfo:function(a){var b=a.getStyles(a.marginNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},paddingInfo:function(b){var a=b.frameBodyContext||b,c=a.getStyles(b.paddingNames,b.trblNames);c.width=c.left+c.right;c.height=c.top+c.bottom;return c}},checkCache:function(a){return this.cacheMissHandlers[a](this)},clearAllBlocks:function(a){var c=this[a],b;if(c){for(b in c){this.clearBlocks(a,b)}}},clearBlocks:function(c,g){var h=this[c],b=h&&h[g],d,e,a;if(b){delete h[g];d=this.context;for(a in b){e=b[a];--d.blockCount;if(!--e.blockCount&&!e.pending&&!e.done){d.queueLayout(e)}}}},block:function(a,b){this.addBlock("blocks",a,b)},domBlock:function(a,b){this.addBlock("domBlocks",a,b)},fireTriggers:function(b,g){var h=this[b],d=h&&h[g],c=this.context,e,a;if(d){for(a in d){e=d[a];++e.firedTriggers;if(!e.done&&!e.blockCount&&!e.pending){c.queueLayout(e)}}}},flush:function(){var b=this,a=b.dirty,c=b.state,d=b.el;b.dirtyCount=0;if(b.classList&&b.classList.dirty){b.classList.flush()}if("attributes" in b){d.set(b.attributes);delete b.attributes}if("innerHTML" in b){d.innerHTML=b.innerHTML;delete b.innerHTML}if(c&&c.clearBoxWidth){c.clearBoxWidth=0;b.el.setStyle("width",null);if(!--c.blocks){b.context.queueItemLayouts(b)}}if(a){delete b.dirty;b.writeProps(a,true)}},flushAnimations:function(){var p=this,c=p.previousSize,m,o,e,h,g,d,k,n,l,a,b;if(c){m=p.target;o=m.layout&&m.layout.animate;if(o){e=Ext.isNumber(o)?o:o.duration}h=Ext.Object.getKeys(p.animatePolicy);g=Ext.apply({},{from:{},to:{},duration:e||Ext.fx.Anim.prototype.duration},o);for(d=0,k=0,n=h.length;k<n;k++){l=h[k];a=c[l];b=p.peek(l);if(a!=b){l=p.translateProps[l]||l;g.from[l]=a;g.to[l]=b;++d}}if(d){if(p.isCollapsingOrExpanding===1){m.componentLayout.undoLayout(p)}else{p.writeProps(g.from)}p.el.animate(g);Ext.fx.Manager.getFxQueue(p.el.id)[0].on({afteranimate:function(){if(p.isCollapsingOrExpanding===1){m.componentLayout.redoLayout(p);m.afterCollapse(true)}else{if(p.isCollapsingOrExpanding===2){m.afterExpand(true)}}}})}}},getBorderInfo:function(){var a=this,b=a.borderInfo;if(!b){a.borderInfo=b=a.checkCache("borderInfo")}return b},getClassList:function(){return this.classList||(this.classList=new Ext.layout.ClassList(this))},getEl:function(c,a){var e=this,g,d,b;if(c){if(c.dom){d=c}else{g=e.target;if(a){g=a}d=g[c];if(typeof d=="function"){d=d.call(g);if(d===e.el){return this}}}if(d){b=e.context.getEl(e,d)}}return b||null},getFrameInfo:function(){var c=this,d=c.frameInfo,b,a;if(!d){b=c.framing;a=c.getBorderInfo();c.frameInfo=d=b?{top:b.top+a.top,right:b.right+a.right,bottom:b.bottom+a.bottom,left:b.left+a.left,width:b.width+a.width,height:b.height+a.height}:a}return d},getMarginInfo:function(){var d=this,h=d.marginInfo,b,a,g,e,c;if(!h){if(!d.wrapsComponent){h=d.checkCache("marginInfo")}else{b=d.target;e=b.ownerLayout;c=e?e.id:null;a=e&&e.manageMargins;h=b.margin$;if(h&&h.ownerId!==c){h=null}if(!h){h=d.parseMargins(b,b.margin)||d.checkCache("marginInfo");if(a){g=d.parseMargins(b,b.margins,e.defaultMargins);if(g){h={top:h.top+g.top,right:h.right+g.right,bottom:h.bottom+g.bottom,left:h.left+g.left}}d.setProp("margin-top",0);d.setProp("margin-right",0);d.setProp("margin-bottom",0);d.setProp("margin-left",0)}h.ownerId=c;b.margin$=h}h.width=h.left+h.right;h.height=h.top+h.bottom}d.marginInfo=h}return h},clearMarginCache:function(){delete this.marginInfo;delete this.target.margin$},getPaddingInfo:function(){var a=this,b=a.paddingInfo;if(!b){a.paddingInfo=b=a.checkCache("paddingInfo")}return b},getProp:function(c){var b=this,a=b.props[c];b.addTrigger(c);return a},getDomProp:function(c){var b=this,a=b.dirty&&c in b.dirty?undefined:b.props[c];b.addTrigger(c,true);return a},getStyle:function(a){var c=this,b=c.styles,e,d;if(a in b){d=b[a]}else{e=c.styleInfo[a];d=c.el.getStyle(a);if(e&&e.parseInt){d=parseInt(d,10)||0}b[a]=d}return d},getStyles:function(p,b){var m=this,e=m.styles,q={},g=0,d=p.length,k,j,l,a,c,h,s,o;b=b||p;for(k=0;k<d;++k){a=p[k];if(a in e){q[b[k]]=e[a];++g;if(k&&g==1){j=p.slice(0,k);l=b.slice(0,k)}}else{if(g){(j||(j=[])).push(a);(l||(l=[])).push(b[k])}}}if(g<d){j=j||p;l=l||b;h=m.styleInfo;s=m.el.getStyle(j);for(k=j.length;k--;){a=j[k];c=h[a];o=s[a];if(c&&c.parseInt){o=parseInt(o,10)||0}q[l[k]]=o;e[a]=o}}return q},hasProp:function(b){var a=this.getProp(b);return typeof a!="undefined"},hasDomProp:function(b){var a=this.getDomProp(b);return typeof a!="undefined"},invalidate:function(a){this.context.queueInvalidate(this,a)},markDirty:function(){if(++this.dirtyCount==1){this.context.queueFlush(this)}},onBoxMeasured:function(){var a=this.boxParent,b=this.state;if(a&&a.widthModel.shrinkWrap&&!b.boxMeasured&&this.measuresBox){b.boxMeasured=1;a.boxChildMeasured()}},parseMargins:function(a,e,d){if(e===true){e=5}var c=typeof e,b;if(c=="string"||c=="number"){b=a.parseBox(e)}else{if(e||d){b={top:0,right:0,bottom:0,left:0};if(d){Ext.apply(b,this.parseMargins(a,d))}if(e){e=Ext.apply(b,a.parseBox(e))}}}return b},peek:function(a){return this.props[a]},recoverProp:function(g,b,a){var e=this,d=e.props,c;if(g in b){d[g]=b[g];if(a&&g in a){c=e.dirty||(e.dirty={});c[g]=a[g]}}},redo:function(b){var e=this,c,a,d;e.revertProps(e.props);if(b&&e.wrapsComponent){if(e.childItems){for(d=0,c=e.childItems,a=c.length;d<a;d++){c[d].redo(b)}}for(d=0,c=e.children,a=c.length;d<a;d++){c[d].redo()}}},removeEl:function(b,a){var d=this,e,c;if(b){if(b.dom){c=b}else{e=d.target;if(a){e=a}c=e[b];if(typeof c=="function"){c=c.call(e);if(c===d.el){return this}}}if(c){d.context.removeEl(d,c)}}},revertProps:function(d){var a,b=this.flushedProps,c={};for(a in d){if(b.hasOwnProperty(a)){c[a]=d[a]}}this.writeProps(c)},setAttribute:function(a,c){var b=this;if(!b.attributes){b.attributes={}}b.attributes[a]=c;b.markDirty()},setBox:function(b){var a=this;if("left" in b){a.setProp("x",b.left)}if("top" in b){a.setProp("y",b.top)}a.setSize(b.width,b.height)},setContentHeight:function(a,b){if(!b&&this.hasRawContent){return 1}return this.setProp("contentHeight",a)},setContentWidth:function(b,a){if(!a&&this.hasRawContent){return 1}return this.setProp("contentWidth",b)},setContentSize:function(c,a,b){return this.setContentWidth(c,b)+this.setContentHeight(a,b)==2},setProp:function(d,c,a){var b=this,h=typeof c,g,e;if(h=="undefined"||h==="number"&&isNaN(c)){return 0}if(b.props[d]===c){return 1}b.props[d]=c;++b.context.progressCount;if(a===false){b.fireTriggers("domTriggers",d);b.clearBlocks("domBlocks",d)}else{e=b.styleInfo[d];if(e){if(!b.dirty){b.dirty={}}if(d=="width"||d=="height"){g=b.isBorderBoxValue;if(g===null){b.isBorderBoxValue=g=!!b.el.isBorderBox()}if(!g){b.borderInfo||b.getBorderInfo();b.paddingInfo||b.getPaddingInfo()}}b.dirty[d]=c;b.markDirty()}}b.fireTriggers("triggers",d);b.clearBlocks("blocks",d);return 1},setHeight:function(l,a){var g=this,d=g.target,c=g.ownerCtContext,h,e,b,k,j;if(l<0){l=0}if(!g.wrapsComponent){if(!g.setProp("height",l,a)){return NaN}}else{b=g.collapsedVert?0:d.minHeight||0;l=Ext.Number.constrain(l,b,d.maxHeight);k=g.props.height;if(!g.setProp("height",l,a)){return NaN}if(c&&!g.isComponentChild&&isNaN(k)){j=--c.remainingChildDimensions;if(!j){c.setProp("containerChildrenSizeDone",true)}}h=g.frameBodyContext;if(h){e=g.getFrameInfo();h.setHeight(l-e.height,a)}}return l},setWidth:function(b,a){var j=this,g=j.target,e=j.ownerCtContext,k,h,d,c,l;if(b<0){b=0}if(!j.wrapsComponent){if(!j.setProp("width",b,a)){return NaN}}else{d=j.collapsedHorz?0:g.minWidth||0;b=Ext.Number.constrain(b,d,g.maxWidth);c=j.props.width;if(!j.setProp("width",b,a)){return NaN}if(e&&!j.isComponentChild&&isNaN(c)){l=--e.remainingChildDimensions;if(!l){e.setProp("containerChildrenSizeDone",true)}}k=j.frameBodyContext;if(k){h=j.getFrameInfo();k.setWidth(b-h.width,a)}}return b},setSize:function(c,a,b){this.setWidth(c,b);this.setHeight(a,b)},translateProps:{x:"left",y:"top"},undo:function(b){var e=this,c,a,d;e.revertProps(e.lastBox);if(b&&e.wrapsComponent){if(e.childItems){for(d=0,c=e.childItems,a=c.length;d<a;d++){c[d].undo(b)}}for(d=0,c=e.children,a=c.length;d<a;d++){c[d].undo()}}},unsetProp:function(b){var a=this.dirty;delete this.props[b];if(a){delete a[b]}},writeProps:function(e,d){if(!(e&&typeof e=="object")){return}var z=this,c=z.el,j={},h=0,b=z.styleInfo,y,k,o,q=e.width,m=e.height,x=z.isBorderBoxValue,A=z.target,t=Math.max,w=0,l=0,g,a,p,s,u,n;if("displayed" in e){c.setDisplayed(e.displayed)}for(k in e){if(d){z.fireTriggers("domTriggers",k);z.clearBlocks("domBlocks",k);z.flushedProps[k]=1}y=b[k];if(y&&y.dom){if(y.suffix&&(o=parseInt(e[k],10))){j[k]=o+y.suffix}else{j[k]=e[k]}++h}}if("x" in e||"y" in e){if(A.isComponent){A.setPosition(e.x,e.y)}else{h+=z.addPositionStyles(j,e)}}if(!x&&(q>0||m>0)){if(!z.frameBodyContext){w=z.paddingInfo.width;l=z.paddingInfo.height}if(q){q=t(parseInt(q,10)-(z.borderInfo.width+w),0);j.width=q+"px";++h}if(m){m=t(parseInt(m,10)-(z.borderInfo.height+l),0);j.height=m+"px";++h}}if(z.wrapsComponent&&Ext.isIE9&&Ext.isStrict){if((g=q!==undefined&&z.hasOverflowY)||(a=m!==undefined&&z.hasOverflowX)){p=z.isAbsolute;if(p===undefined){p=false;n=z.target.getTargetEl();u=n.getStyle("position");if(u=="absolute"){u=n.getStyle("box-sizing");p=u=="border-box"}z.isAbsolute=p}if(p){s=Ext.getScrollbarSize();if(g){q=parseInt(q,10)+s.width;j.width=q+"px";++h}if(a){m=parseInt(m,10)+s.height;j.height=m+"px";++h}}}}if(h){c.setStyle(j)}}},function(){var c={dom:true,parseInt:true,suffix:"px"},b={dom:true},a={dom:false};this.prototype.styleInfo={containerChildrenSizeDone:a,containerLayoutDone:a,displayed:a,done:a,x:a,y:a,columnWidthsDone:a,left:c,top:c,right:c,bottom:c,width:c,height:c,"border-top-width":c,"border-right-width":c,"border-bottom-width":c,"border-left-width":c,"margin-top":c,"margin-right":c,"margin-bottom":c,"margin-left":c,"padding-top":c,"padding-right":c,"padding-bottom":c,"padding-left":c,"line-height":b,display:b}});Ext.define("Ext.layout.Context",{remainingLayouts:0,state:0,constructor:function(a){var b=this;Ext.apply(b,a);b.items={};b.layouts={};b.blockCount=0;b.cycleCount=0;b.flushCount=0;b.calcCount=0;b.animateQueue=b.newQueue();b.completionQueue=b.newQueue();b.finalizeQueue=b.newQueue();b.finishQueue=b.newQueue();b.flushQueue=b.newQueue();b.invalidateData={};b.layoutQueue=b.newQueue();b.invalidQueue=[];b.triggers={data:{},dom:{}}},callLayout:function(b,a){this.currentLayout=b;b[a](this.getCmp(b.owner))},cancelComponent:function(j,a,m){var p=this,h=j,l=!j.isComponent,b=l?h.length:1,d,c,o,n,g,t,q,s,u,e;for(d=0;d<b;++d){if(l){j=h[d]}if(m&&j.ownerCt){e=this.items[j.ownerCt.el.id];if(e){Ext.Array.remove(e.childItems,p.getCmp(j))}}if(!a){q=p.invalidQueue;o=q.length;if(o){p.invalidQueue=t=[];for(c=0;c<o;++c){s=q[c];u=s.item.target;if(u!=j&&!u.isDescendant(j)){t.push(s)}}}}g=j.componentLayout;p.cancelLayout(g);if(g.getLayoutItems){n=g.getLayoutItems();if(n.length){p.cancelComponent(n,true)}}if(j.isContainer&&!j.collapsed){g=j.layout;p.cancelLayout(g);n=g.getVisibleItems();if(n.length){p.cancelComponent(n,true)}}}},cancelLayout:function(b){var a=this;a.completionQueue.remove(b);a.finalizeQueue.remove(b);a.finishQueue.remove(b);a.layoutQueue.remove(b);if(b.running){a.layoutDone(b)}b.ownerContext=null},clearTriggers:function(g,h){var a=g.id,e=this.triggers[h?"dom":"data"],j=e&&e[a],b=j&&j.length||0,e,d,k,c;for(d=0;d<b;++d){c=j[d];k=c.item;e=h?k.domTriggers:k.triggers;delete e[c.prop][a]}},flush:function(){var d=this,a=d.flushQueue.clear(),c=a.length,b;if(c){++d.flushCount;for(b=0;b<c;++b){a[b].flush()}}},flushAnimations:function(){var d=this,b=d.animateQueue.clear(),a=b.length,c;if(a){for(c=0;c<a;c++){if(b[c].target.animate!==false){b[c].flushAnimations()}}Ext.fx.Manager.runner()}},flushInvalidates:function(){var h=this,a=h.invalidQueue,g=a&&a.length,b,e,d,c;h.invalidQueue=[];if(g){e=[];for(c=0;c<g;++c){b=(d=a[c]).item.target;if(!b.container.isDetachedBody){e.push(b);if(d.options){h.invalidateData[b.id]=d.options}}}h.invalidate(e,null)}},flushLayouts:function(h,a,c){var g=this,j=c?g[h].items:g[h].clear(),e=j.length,b,d;if(e){for(b=0;b<e;++b){d=j[b];if(!d.running){g.callLayout(d,a)}}g.currentLayout=null}},getCmp:function(a){return this.getItem(a,a.el)},getEl:function(b,a){var c=this.getItem(a,a);if(!c.parent){c.parent=b;if(b.children.length){b.children.push(c)}else{b.children=[c]}}return c},getItem:function(d,b){var e=b.id,a=this.items,c=a[e]||(a[e]=new Ext.layout.ContextItem({context:this,target:d,el:b}));return c},handleFailure:function(){var c=this.layouts,b,a;Ext.failedLayouts=(Ext.failedLayouts||0)+1;for(a in c){b=c[a];if(c.hasOwnProperty(a)){b.running=false;b.ownerContext=null}}},invalidate:function(k,n){var p=this,m=!k.isComponent,c,a,g,l,q,o,b,h,j,e,d;for(g=0,b=m?k.length:1;g<b;++g){l=m?k[g]:k;if(l.rendered&&!l.hidden){q=p.getCmp(l);h=l.componentLayout;a=!h.ownerContext;j=l.isContainer&&!l.collapsed?l.layout:null;e=p.invalidateData[q.id];delete p.invalidateData[q.id];d=q.init(n,e);if(e){p.processInvalidate(e,q,"before")}if(h.beforeLayoutCycle){h.beforeLayoutCycle(q)}if(j&&j.beforeLayoutCycle){j.beforeLayoutCycle(q)}d=q.initContinue(d);c=true;if(h.getLayoutItems){h.renderChildren();o=h.getLayoutItems();if(o.length){p.invalidate(o,true)}}if(j){c=false;j.renderChildren();o=j.getVisibleItems();if(o.length){p.invalidate(o,true)}}q.initDone(c);p.resetLayout(h,q,a);if(j){p.resetLayout(j,q,a)}q.initAnimation();if(e){p.processInvalidate(e,q,"after")}}}p.currentLayout=null},layoutDone:function(a){var b=a.ownerContext;a.running=false;if(a.isComponentLayout){if(b.measuresBox){b.onBoxMeasured()}b.setProp("done",true)}else{b.setProp("containerLayoutDone",true)}--this.remainingLayouts;++this.progressCount},newQueue:function(){return new Ext.util.Queue},processInvalidate:function(b,e,a){if(b[a]){var d=this,c=d.currentLayout;d.currentLayout=b.layout||null;b[a](e,b);d.currentLayout=c}},queueAnimation:function(a){this.animateQueue.add(a)},queueCompletion:function(a){this.completionQueue.add(a)},queueFinalize:function(a){this.finalizeQueue.add(a)},queueFlush:function(a){this.flushQueue.add(a)},chainFns:function(a,j,g){var d=this,c=a.layout,e=j.layout,b=a[g],h=j[g];return function(k){var l=d.currentLayout;if(b){d.currentLayout=c;b.call(a.scope||a,k,a)}d.currentLayout=e;h.call(j.scope||j,k,j);d.currentLayout=l}},queueInvalidate:function(l,m){var h=this,k=[],j=h.invalidQueue,g=j.length,d,b,e,a,c;if(l.isComponent){l=h.getCmp(d=l)}else{d=l.target}l.invalid=true;while(g--){b=j[g];e=b.item.target;if(d.isDescendant(e)){return}if(e==d){if(!(a=b.options)){b.options=m}else{if(m){if(m.widthModel){a.widthModel=m.widthModel}if(m.heightModel){a.heightModel=m.heightModel}if(!(c=a.state)){a.state=m.state}else{if(m.state){Ext.apply(c,m.state)}}if(m.before){a.before=h.chainFns(a,m,"before")}if(m.after){a.after=h.chainFns(a,m,"after")}}}return}if(!e.isDescendant(d)){k.push(b)}}k.push({item:l,options:m});h.invalidQueue=k},queueItemLayouts:function(c){var a=c.isComponent?c:c.target,b=a.componentLayout;if(!b.pending&&!b.invalid&&!b.done){this.queueLayout(b)}b=a.layout;if(b&&!b.pending&&!b.invalid&&!b.done){this.queueLayout(b)}},queueLayout:function(a){this.layoutQueue.add(a);a.pending=true},removeEl:function(d,c){var e=c.id,b=d.children,a=this.items;if(b){Ext.Array.remove(b,a[e])}delete a[e]},resetLayout:function(b,c,d){var a=this;a.currentLayout=b;b.done=false;b.pending=true;b.firedTriggers=0;a.layoutQueue.add(b);if(d){a.layouts[b.id]=b;b.running=true;if(b.finishedLayout){a.finishQueue.add(b)}++a.remainingLayouts;++b.layoutCount;b.ownerContext=c;b.beginCount=0;b.blockCount=0;b.calcCount=0;b.triggerCount=0;if(!b.initialized){b.initLayout()}b.beginLayout(c)}else{++b.beginCount;if(!b.running){++a.remainingLayouts;b.running=true;if(b.isComponentLayout){c.unsetProp("done")}a.completionQueue.remove(b);a.finalizeQueue.remove(b)}}b.beginLayoutCycle(c,d)},run:function(){var c=this,b=false,a=100;c.flushInvalidates();c.state=1;c.totalCount=c.layoutQueue.getCount();c.flush();while((c.remainingLayouts||c.invalidQueue.length)&&a--){if(c.invalidQueue.length){c.flushInvalidates()}if(c.runCycle()){b=false}else{if(!b){c.flush();b=true;c.flushLayouts("completionQueue","completeLayout")}else{if(!c.invalidQueue.length){c.state=2;break}}}if(!(c.remainingLayouts||c.invalidQueue.length)){c.flush();c.flushLayouts("completionQueue","completeLayout");c.flushLayouts("finalizeQueue","finalizeLayout")}}return c.runComplete()},runComplete:function(){var a=this;a.state=2;if(a.remainingLayouts){a.handleFailure();return false}a.flush();a.flushLayouts("finishQueue","finishedLayout",true);a.flushLayouts("finishQueue","notifyOwner");a.flush();a.flushAnimations();return true},runCycle:function(){var c=this,d=c.layoutQueue.clear(),b=d.length,a;++c.cycleCount;c.progressCount=0;for(a=0;a<b;++a){c.runLayout(c.currentLayout=d[a])}c.currentLayout=null;return c.progressCount>0},runLayout:function(b){var a=this,c=a.getCmp(b.owner);b.pending=false;if(c.state.blocks){return}b.done=true;++b.calcCount;++a.calcCount;b.calculate(c);if(b.done){a.layoutDone(b);if(b.completeLayout){a.queueCompletion(b)}if(b.finalizeLayout){a.queueFinalize(b)}}else{if(!b.pending&&!b.invalid&&!(b.blockCount+b.triggerCount-b.firedTriggers)){a.queueLayout(b)}}},setItemSize:function(h,g,b){var d=h,a=1,c,e;if(h.isComposite){d=h.elements;a=d.length;h=d[0]}else{if(!h.dom&&!h.el){a=d.length;h=d[0]}}for(e=0;e<a;){c=this.get(h);c.setSize(g,b);h=d[++e]}}});Ext.define("Ext.layout.component.Body",{alias:["layout.body"],extend:Ext.layout.component.Auto,type:"body",beginLayout:function(a){this.callParent(arguments);a.bodyContext=a.getEl("body")},beginLayoutCycle:function(d,b){var c=this,g=c.lastWidthModel,e=c.lastHeightModel,a=c.owner.body;c.callParent(arguments);if(g&&g.fixed&&d.widthModel.shrinkWrap){a.setWidth(null)}if(e&&e.fixed&&d.heightModel.shrinkWrap){a.setHeight(null)}},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(c.targetContext!=c){a+=c.getPaddingInfo().height}return a},calculateOwnerWidthFromContentWidth:function(c,a){var b=this.callParent(arguments);if(c.targetContext!=c){b+=c.getPaddingInfo().width}return b},measureContentWidth:function(a){return a.bodyContext.setWidth(a.bodyContext.el.dom.offsetWidth,false)},measureContentHeight:function(a){return a.bodyContext.setHeight(a.bodyContext.el.dom.offsetHeight,false)},publishInnerHeight:function(c,a){var d=a-c.getFrameInfo().height,b=c.targetContext;if(b!=c){d-=c.getPaddingInfo().height}return c.bodyContext.setHeight(d,!c.heightModel.natural)},publishInnerWidth:function(d,c){var a=c-d.getFrameInfo().width,b=d.targetContext;if(b!=d){a-=d.getPaddingInfo().width}d.bodyContext.setWidth(a,!d.widthModel.natural)}});Ext.define("Ext.layout.component.FieldSet",{extend:Ext.layout.component.Body,alias:["layout.fieldset"],type:"fieldset",defaultCollapsedWidth:100,beforeLayoutCycle:function(a){if(a.target.collapsed){a.heightModel=this.sizeModels.shrinkWrap}},beginLayoutCycle:function(b){var c=b.target,a;this.callParent(arguments);if(c.collapsed){b.setContentHeight(0);b.restoreMinHeight=c.minHeight;delete c.minHeight;if(b.widthModel.shrinkWrap){a=c.lastComponentSize;b.setContentWidth(a&&a.contentWidth||this.defaultCollapsedWidth)}}},finishedLayout:function(c){var a=this.owner,b=c.restoreMinHeight;this.callParent(arguments);if(b){a.minHeight=b}},calculateOwnerHeightFromContentHeight:function(d,c){var a=d.getBorderInfo(),b=d.target.legend;return d.getProp("contentHeight")+d.getPaddingInfo().height+(Ext.isIEQuirks||Ext.isIE8m?d.bodyContext.getPaddingInfo().top:0)+(b?b.getHeight():a.top)+a.bottom},publishInnerHeight:function(c,a){var b=c.target.legend;if(b){a-=b.getHeight()}this.callParent([c,a])},getLayoutItems:function(){var a=this.owner.legend;return a?[a]:[]}});Ext.define("Ext.layout.component.field.Slider",{alias:["layout.sliderfield"],extend:Ext.layout.component.field.Field,type:"sliderfield",beginLayout:function(a){this.callParent(arguments);a.endElContext=a.getEl("endEl");a.innerElContext=a.getEl("innerEl");a.bodyElContext=a.getEl("bodyEl")},publishInnerHeight:function(d,a){var e=a-this.measureLabelErrorHeight(d),c,b;if(this.owner.vertical){c=d.endElContext.getPaddingInfo();b=d.inputContext.getPaddingInfo();d.innerElContext.setHeight(e-b.height-c.height)}else{d.bodyElContext.setHeight(e)}},publishInnerWidth:function(d,c){if(!this.owner.vertical){var b=d.endElContext.getPaddingInfo(),a=d.inputContext.getPaddingInfo();d.innerElContext.setWidth(c-a.left-b.right-d.labelContext.getProp("width"))}},beginLayoutFixed:function(d,a,e){var b=this,c=b.ieInputWidthAdjustment;if(c){b.owner.bodyEl.setStyle("padding-right",c+"px")}b.callParent(arguments)}});Ext.define("Ext.layout.container.Absolute",{alias:"layout.absolute",extend:Ext.layout.container.Anchor,alternateClassName:"Ext.layout.AbsoluteLayout",targetCls:Ext.baseCSSPrefix+"abs-layout-ct",itemCls:Ext.baseCSSPrefix+"abs-layout-item",ignoreOnContentChange:true,type:"absolute",adjustWidthAnchor:function(c,b){var d=this.targetPadding,a=b.getStyle("left");return c-a+d.left},adjustHeightAnchor:function(b,a){var c=this.targetPadding,d=a.getStyle("top");return b-d+c.top},isItemLayoutRoot:function(a){return this.ignoreOnContentChange||this.callParent(arguments)},isItemShrinkWrap:function(a){return true},beginLayout:function(b){var a=this,c=a.getTarget();a.callParent(arguments);if(c.dom!==document.body){c.position()}a.targetPadding=b.targetContext.getPaddingInfo()},isItemBoxParent:function(a){return true},onContentChange:function(){if(this.ignoreOnContentChange){return false}return this.callParent(arguments)},calculateContentSize:function(m,k){var w=this,d=(k||0)|(m.widthModel.shrinkWrap?1:0)|(m.heightModel.shrinkWrap?2:0),c=d&1||undefined,h=d&2||undefined,b=m.childItems,g=b.length,s=0,p=0,l=0,e=m.props,u,j,n,o,t,a,q;if(c){if(isNaN(e.contentWidth)){++l}else{c=undefined}}if(h){if(isNaN(e.contentHeight)){++l}else{h=undefined}}if(l){for(t=0;t<g;++t){n=b[t];j=n.target;o=h&&n.getProp("height");q=c&&n.getProp("width");a=n.getMarginInfo();o+=a.bottom;q+=a.right;s=Math.max(s,(j.y||0)+o);p=Math.max(p,(j.x||0)+q);if(isNaN(s)&&isNaN(p)){w.done=false;return}}if(c||h){u=m.targetContext.getPaddingInfo()}if(c&&!m.setContentWidth(p+u.width)){w.done=false}if(h&&!m.setContentHeight(s+u.height)){w.done=false}}}});Ext.define("Ext.layout.container.Accordion",{extend:Ext.layout.container.VBox,alias:["layout.accordion"],alternateClassName:"Ext.layout.AccordionLayout",targetCls:Ext.baseCSSPrefix+"accordion-layout-ct",itemCls:[Ext.baseCSSPrefix+"box-item",Ext.baseCSSPrefix+"accordion-item"],align:"stretch",fill:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:undefined,animate:true,activeOnTop:false,multi:false,defaultAnimatePolicy:{y:true,height:true},constructor:function(){var a=this;a.callParent(arguments);if(!a.multi&&a.animate){a.animatePolicy=Ext.apply({},a.defaultAnimatePolicy)}else{a.animatePolicy=null}},beforeRenderItems:function(h){var j=this,g=h.length,c=0,b=j.owner,k=j.collapseFirst,a=Ext.isDefined(k),l=j.getExpanded(true)[0],e=j.multi,d;for(;c<g;c++){d=h[c];if(!d.rendered){if(!e||d.collapsible!==false){d.collapsible=true}if(d.collapsible){if(a){d.collapseFirst=k}if(j.hideCollapseTool){d.hideCollapseTool=j.hideCollapseTool;d.titleCollapse=true}else{if(j.titleCollapse&&d.titleCollapse===undefined){d.titleCollapse=j.titleCollapse}}}delete d.hideHeader;delete d.width;d.title=d.title||"&#160;";d.addBodyCls(Ext.baseCSSPrefix+"accordion-body");if(!e){if(l){d.collapsed=l!==d}else{if(d.hasOwnProperty("collapsed")&&d.collapsed===false){l=d}else{d.collapsed=true}}b.mon(d,{show:j.onComponentShow,beforeexpand:j.onComponentExpand,beforecollapse:j.onComponentCollapse,scope:j})}b.mon(d,"beforecollapse",j.onComponentCollapse,j);d.headerOverCls=Ext.baseCSSPrefix+"accordion-hd-over"}}if(!e){if(!l){if(g){h[0].collapsed=false}}else{if(j.activeOnTop){l.collapsed=false;j.configureItem(l);if(b.items.indexOf(l)>0){b.insert(0,l)}}}}},getItemsRenderTree:function(a){this.beforeRenderItems(a);return this.callParent(arguments)},renderItems:function(a,b){this.beforeRenderItems(a);this.callParent(arguments)},configureItem:function(a){this.callParent(arguments);a.animCollapse=a.border=false;if(this.fill){a.flex=1}},beginLayout:function(a){this.callParent(arguments);this.updatePanelClasses(a)},updatePanelClasses:function(e){var c=e.visibleItems,d=c.length,a=true,b,h,g;for(b=0;b<d;b++){h=c[b];g=h.header;g.addCls(Ext.baseCSSPrefix+"accordion-hd");if(a){g.removeCls(Ext.baseCSSPrefix+"accordion-hd-sibling-expanded")}else{g.addCls(Ext.baseCSSPrefix+"accordion-hd-sibling-expanded")}if(b+1==d&&h.collapsed){g.addCls(Ext.baseCSSPrefix+"accordion-hd-last-collapsed")}else{g.removeCls(Ext.baseCSSPrefix+"accordion-hd-last-collapsed")}a=h.collapsed}},onComponentExpand:function(c){var j=this,b=j.owner,g=j.multi,a=j.animate,k=!g&&!j.animate&&j.activeOnTop,h,l,e,d;if(!j.processing){j.processing=true;d=b.deferLayouts;b.deferLayouts=true;h=g?[]:j.getExpanded();l=h.length;for(e=0;e<l;e++){h[e].collapse()}if(k){Ext.suspendLayouts();b.insert(0,c);Ext.resumeLayouts()}b.deferLayouts=d;j.processing=false}},onComponentCollapse:function(d){var e=this,a=e.owner,g,c,b;if(e.owner.items.getCount()===1){return false}if(!e.processing){e.processing=true;b=a.deferLayouts;a.deferLayouts=true;g=d.next()||d.prev();if(e.multi){c=e.getExpanded();if(c.length===1){g.expand()}}else{if(g){g.expand()}}a.deferLayouts=b;e.processing=false}},onComponentShow:function(a){this.onComponentExpand(a)},getExpanded:function(h){var b=this.owner.items.items,a=b.length,d=0,c=[],g,e;for(;d<a;++d){e=b[d];if(h){g=e.hasOwnProperty("collapsed")&&e.collapsed===false}else{g=!e.collapsed}if(g){c.push(e)}}return c}});Ext.define("Ext.resizer.Splitter",{extend:Ext.Component,alias:"widget.splitter",childEls:["collapseEl"],renderTpl:['<tpl if="collapsible===true">','<div id="{id}-collapseEl" class="',Ext.baseCSSPrefix,"collapse-el ",Ext.baseCSSPrefix,'layout-split-{collapseDir}{childElCls}">&#160;',"</div>","</tpl>"],baseCls:Ext.baseCSSPrefix+"splitter",collapsedClsInternal:Ext.baseCSSPrefix+"splitter-collapsed",canResize:true,collapsible:false,collapseOnDblClick:true,defaultSplitMin:40,defaultSplitMax:1000,collapseTarget:"next",horizontal:false,vertical:false,size:5,getTrackerConfig:function(){return{xclass:"Ext.resizer.SplitterTracker",el:this.el,splitter:this}},beforeRender:function(){var d=this,e=d.getCollapseTarget(),g=d.getCollapseDirection(),c=d.vertical,b=c?"width":"height",h=c?"height":"width",a;d.callParent();if(!d.hasOwnProperty(h)){d[h]="100%"}if(!d.hasOwnProperty(b)){d[b]=d.size}if(e.collapsed){d.addCls(d.collapsedClsInternal)}a=d.baseCls+"-"+d.orientation;d.addCls(a);if(!d.canResize){d.addCls(a+"-noresize")}Ext.applyIf(d.renderData,{collapseDir:g,collapsible:d.collapsible||e.collapsible});d.protoEl.unselectable()},onRender:function(){var a=this;a.callParent(arguments);if(a.performCollapse!==false){if(a.renderData.collapsible){a.mon(a.collapseEl,"click",a.toggleTargetCmp,a)}if(a.collapseOnDblClick){a.mon(a.el,"dblclick",a.toggleTargetCmp,a)}}a.mon(a.getCollapseTarget(),{collapse:a.onTargetCollapse,expand:a.onTargetExpand,beforeexpand:a.onBeforeTargetExpand,beforecollapse:a.onBeforeTargetCollapse,scope:a});if(a.canResize){a.tracker=Ext.create(a.getTrackerConfig());a.relayEvents(a.tracker,["beforedragstart","dragstart","dragend"])}},getCollapseDirection:function(){var g=this,c=g.collapseDirection,e,a,b,d;if(!c){e=g.collapseTarget;if(e.isComponent){c=e.collapseDirection}if(!c){d=g.ownerCt.layout.type;if(e.isComponent){b=g.ownerCt.items;a=Number(b.indexOf(e)==b.indexOf(g)-1)<<1|Number(d=="hbox")}else{a=Number(g.collapseTarget=="prev")<<1|Number(d=="hbox")}c=["bottom","right","top","left"][a]}g.collapseDirection=c}g.orientation=c=="top"||c=="bottom"?"horizontal":"vertical";g[g.orientation]=true;return c},getCollapseTarget:function(){var a=this;return a.collapseTarget.isComponent?a.collapseTarget:a.collapseTarget=="prev"?a.previousSibling():a.nextSibling()},setCollapseEl:function(b){var a=this.collapseEl;if(a){a.setDisplayed(b)}},onBeforeTargetExpand:function(a){this.setCollapseEl("none")},onBeforeTargetCollapse:function(){this.setCollapseEl("none")},onTargetCollapse:function(a){this.el.addCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},onTargetExpand:function(a){this.el.removeCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},toggleTargetCmp:function(d,b){var c=this.getCollapseTarget(),g=c.placeholder,a;if(Ext.isFunction(c.expand)&&Ext.isFunction(c.collapse)){if(g&&!g.hidden){a=true}else{a=!c.hidden}if(a){if(c.collapsed){c.expand()}else{if(c.collapseDirection){c.collapse()}else{c.collapse(this.renderData.collapseDir)}}}}},setSize:function(){var a=this;a.callParent(arguments);if(Ext.isIE&&a.el){a.el.repaint()}},beforeDestroy:function(){Ext.destroy(this.tracker);this.callParent()}});Ext.define("Ext.resizer.BorderSplitter",{extend:Ext.resizer.Splitter,alias:"widget.bordersplitter",collapseTarget:null,getTrackerConfig:function(){var a=this.callParent();a.xclass="Ext.resizer.BorderSplitterTracker";return a}});Ext.define("Ext.layout.container.Border",{alias:"layout.border",extend:Ext.layout.container.Container,alternateClassName:"Ext.layout.BorderLayout",targetCls:Ext.baseCSSPrefix+"border-layout-ct",itemCls:[Ext.baseCSSPrefix+"border-item",Ext.baseCSSPrefix+"box-item"],type:"border",padding:undefined,percentageRe:/(\d+)%/,axisProps:{horz:{borderBegin:"west",borderEnd:"east",horizontal:true,posProp:"x",sizeProp:"width",sizePropCap:"Width"},vert:{borderBegin:"north",borderEnd:"south",horizontal:false,posProp:"y",sizeProp:"height",sizePropCap:"Height"}},centerRegion:null,collapseDirections:{north:"top",south:"bottom",east:"right",west:"left"},manageMargins:true,panelCollapseAnimate:true,panelCollapseMode:"placeholder",regionWeights:{north:20,south:10,center:0,west:-10,east:-20},beginAxis:function(m,b,y){var w=this,c=w.axisProps[y],s=!c.horizontal,l=c.sizeProp,p=0,a=m.childItems,g=a.length,u,q,o,h,t,e,k,n,d,x,j;for(q=0;q<g;++q){o=a[q];t=o.target;o.layoutPos={};if(t.region){o.region=e=t.region;o.isCenter=t.isCenter;o.isHorz=t.isHorz;o.isVert=t.isVert;o.weight=t.weight||w.regionWeights[e]||0;b[t.id]=o;if(t.isCenter){u=o;h=t.flex;m.centerRegion=u;continue}if(s!==o.isVert){continue}o.reverseWeighting=e==c.borderEnd;n=t[l];d=typeof n;if(!t.collapsed){if(d=="string"&&(k=w.percentageRe.exec(n))){o.percentage=parseInt(k[1],10)}else{if(t.flex){p+=o.flex=t.flex}}}}}if(u){x=u.target;if(j=x.placeholderFor){if(!h&&s===j.collapsedVertical()){h=0;u.collapseAxis=y}}else{if(x.collapsed&&s===x.collapsedVertical()){h=0;u.collapseAxis=y}}}if(h==null){h=1}p+=h;return Ext.apply({before:s?"top":"left",totalFlex:p},c)},beginLayout:function(d){var l=this,k=l.getLayoutItems(),e=l.padding,m=typeof e,p=false,q,o,b,h,g,a,c,j,n;if(e){if(m=="string"||m=="number"){e=Ext.util.Format.parseBox(e)}}else{e=d.getEl("getTargetEl").getPaddingInfo();p=true}d.outerPad=e;d.padOnContainer=p;for(h=0,b=k.length;h<b;++h){o=k[h];a=l.getSplitterTarget(o);if(a){c=undefined;j=!!o.hidden;if(!a.split){if(a.isCollapsingOrExpanding){c=!!a.collapsed}}else{if(j!==a.hidden){c=!a.hidden}}if(c===true){o.show()}else{if(c===false){o.hide()}}}}l.callParent(arguments);k=d.childItems;b=k.length;g={};d.borderAxisHorz=l.beginAxis(d,g,"horz");d.borderAxisVert=l.beginAxis(d,g,"vert");for(h=0;h<b;++h){q=k[h];a=l.getSplitterTarget(q.target);if(a){n=g[a.id];if(!n){n=d.getEl(a.el,l);n.region=a.region}q.collapseTarget=a=n;q.weight=a.weight;q.reverseWeighting=a.reverseWeighting;a.splitter=q;q.isHorz=a.isHorz;q.isVert=a.isVert}}l.sortWeightedItems(k,"reverseWeighting");l.setupSplitterNeighbors(k)},calculate:function(d){var m=this,a=m.getContainerSize(d),j=d.childItems,c=j.length,b=d.borderAxisHorz,k=d.borderAxisVert,e=d.outerPad,o=d.padOnContainer,h,q,l,p,n,g;b.begin=e.left;k.begin=e.top;n=b.end=b.flexSpace=a.width+(o?e.left:-e.right);g=k.end=k.flexSpace=a.height+(o?e.top:-e.bottom);for(h=0;h<c;++h){q=j[h];l=q.getMarginInfo();if(q.isHorz||q.isCenter){b.addUnflexed(l.width);n-=l.width}if(q.isVert||q.isCenter){k.addUnflexed(l.height);g-=l.height}if(!q.flex&&!q.percentage){if(q.isHorz||q.isCenter&&q.collapseAxis==="horz"){p=q.getProp("width");b.addUnflexed(p);if(q.collapseTarget){n-=p}}else{if(q.isVert||q.isCenter&&q.collapseAxis==="vert"){p=q.getProp("height");k.addUnflexed(p);if(q.collapseTarget){g-=p}}}}}for(h=0;h<c;++h){q=j[h];l=q.getMarginInfo();if(q.percentage){if(q.isHorz){p=Math.ceil(n*q.percentage/100);p=q.setWidth(p);b.addUnflexed(p)}else{if(q.isVert){p=Math.ceil(g*q.percentage/100);p=q.setHeight(p);k.addUnflexed(p)}}}}for(h=0;h<c;++h){q=j[h];if(!q.isCenter){m.calculateChildAxis(q,b);m.calculateChildAxis(q,k)}}if(m.finishAxis(d,k)+m.finishAxis(d,b)<2){m.done=false}else{m.finishPositions(j)}},calculateChildAxis:function(m,c){var a=m.collapseTarget,h="set"+c.sizePropCap,e=c.sizeProp,d=m.getMarginInfo()[e],k,b,g,j,l;if(a){k=a.region}else{k=m.region;g=m.flex}b=k==c.borderBegin;if(!b&&k!=c.borderEnd){m[h](c.end-c.begin-d);j=c.begin}else{if(g){l=Math.ceil(c.flexSpace*(g/c.totalFlex));l=m[h](l)}else{if(m.percentage){l=m.peek(e)}else{l=m.getProp(e)}}l+=d;if(b){j=c.begin;c.begin+=l}else{c.end=j=c.end-l}}m.layoutPos[c.posProp]=j},finishAxis:function(d,c){var b=c.end-c.begin,a=d.centerRegion;if(a){a["set"+c.sizePropCap](b-a.getMarginInfo()[c.sizeProp]);a.layoutPos[c.posProp]=c.begin}return Ext.isNumber(b)?1:0},finishPositions:function(d){var c=d.length,b,a;for(b=0;b<c;++b){a=d[b];a.setProp("x",a.layoutPos.x+a.marginInfo.left);a.setProp("y",a.layoutPos.y+a.marginInfo.top)}},getLayoutItems:function(){var a=this.owner,e=a&&a.items&&a.items.items||[],d=e.length,b=[],c=0,g,h;for(;c<d;c++){g=e[c];h=g.placeholderFor;if(g.hidden||(!g.floated||g.isCollapsingOrExpanding===2)&&!(h&&h.isCollapsingOrExpanding===2)){b.push(g)}}return b},getPlaceholder:function(a){return a.getPlaceholder&&a.getPlaceholder()},getSplitterTarget:function(b){var a=b.collapseTarget;if(a&&a.collapsed){return a.placeholder||a}return a},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},insertSplitter:function(c,b,e){var g=c.region,d={xtype:"bordersplitter",collapseTarget:c,id:c.id+"-splitter",hidden:e,canResize:c.splitterResize!==false},a=b+(g=="south"||g=="east"?0:1);if(c.isHorz){d.height=null}else{d.width=null}if(c.collapseMode=="mini"){d.collapsedCls=c.collapsedCls}c.splitter=this.owner.add(a,d)},onAdd:function(d,a){var c=this,h=d.placeholderFor,g=d.region,b,e;c.callParent(arguments);if(g){Ext.apply(d,c.regionFlags[g]);if(g=="center"){c.centerRegion=d}else{d.collapseDirection=this.collapseDirections[g];b=d.split;e=!!d.hidden;if((d.isHorz||d.isVert)&&(b||d.collapseMode=="mini")){c.insertSplitter(d,a,e||!b)}}if(!d.hasOwnProperty("collapseMode")){d.collapseMode=c.panelCollapseMode}if(!d.hasOwnProperty("animCollapse")){if(d.collapseMode!="placeholder"){d.animCollapse=false}else{d.animCollapse=c.panelCollapseAnimate}}}else{if(h){Ext.apply(d,c.regionFlags[h.region]);d.region=h.region;d.weight=h.weight}}},onDestroy:function(){this.centerRegion=null;this.callParent()},onRemove:function(b){var a=this,d=b.region,c=b.splitter;if(d){if(b.isCenter){a.centerRegion=null}delete b.isCenter;delete b.isHorz;delete b.isVert;if(c){a.owner.doRemove(c,true);delete b.splitter}}a.callParent(arguments)},regionFlags:{center:{isCenter:true,isHorz:false,isVert:false},north:{isCenter:false,isHorz:false,isVert:true},south:{isCenter:false,isHorz:false,isVert:true},west:{isCenter:false,isHorz:true,isVert:false},east:{isCenter:false,isHorz:true,isVert:false}},setupSplitterNeighbors:function(m){var p={},e=m.length,o=this.touchedRegions,h,g,a,l,d,k,n,b,c;for(h=0;h<e;++h){k=m[h].target;n=k.region;if(k.isCenter){a=k}else{if(n){c=o[n];for(g=0,l=c.length;g<l;++g){d=p[c[g]];if(d){d.neighbors.push(k)}}if(k.placeholderFor){b=k.placeholderFor.splitter}else{b=k.splitter}if(b){b.neighbors=[]}p[n]=b}}}if(a){c=o.center;for(g=0,l=c.length;g<l;++g){d=p[c[g]];if(d){d.neighbors.push(a)}}}},touchedRegions:{center:["north","south","east","west"],north:["north","east","west"],south:["south","east","west"],east:["east","north","south"],west:["west","north","south"]},sizePolicies:{vert:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},horz:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},flexAll:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}},getItemSizePolicy:function(e){var d=this,a=this.sizePolicies,c,b,g,h;if(e.isCenter){h=e.placeholderFor;if(h){if(h.collapsedVertical()){return a.vert}return a.horz}if(e.collapsed){if(e.collapsedVertical()){return a.vert}return a.horz}return a.flexAll}c=e.collapseTarget;if(c){return c.isVert?a.vert:a.horz}if(e.region){if(e.isVert){b=e.height;g=a.vert}else{b=e.width;g=a.horz}if(e.flex||typeof b=="string"&&d.percentageRe.test(b)){return a.flexAll}return g}return d.autoSizePolicy}},function(){var a={addUnflexed:function(c){this.flexSpace=Math.max(this.flexSpace-c,0)}},b=this.prototype.axisProps;Ext.apply(b.horz,a);Ext.apply(b.vert,a)});Ext.define("Ext.layout.container.Card",{extend:Ext.layout.container.Fit,alternateClassName:"Ext.layout.CardLayout",alias:"layout.card",type:"card",hideInactive:true,deferredRender:false,getRenderTree:function(){var a=this,b=a.getActiveItem();if(b){if(b.hasListeners.beforeactivate&&b.fireEvent("beforeactivate",b)===false){b=a.activeItem=a.owner.activeItem=null}else{if(b.hasListeners.activate){b.on({boxready:function(){b.fireEvent("activate",b)},single:true})}}if(a.deferredRender){if(b){return a.getItemsRenderTree([b])}}else{return a.callParent(arguments)}}},renderChildren:function(){var a=this,b=a.getActiveItem();if(!a.deferredRender){a.callParent()}else{if(b){a.renderItems([b],a.getRenderTarget())}}},isValidParent:function(c,d,a){var b=c.el?c.el.dom:Ext.getDom(c);return b&&b.parentNode===(d.dom||d)||false},getActiveItem:function(){var b=this,a=b.parseActiveItem(b.activeItem||b.owner&&b.owner.activeItem);if(a&&b.owner.items.indexOf(a)!=-1){b.activeItem=a}else{b.activeItem=null}return b.activeItem},parseActiveItem:function(a){if(a&&a.isComponent){return a}else{if(typeof a=="number"||a===undefined){return this.getLayoutItems()[a||0]}else{return this.owner.getComponent(a)}}},configureItem:function(a){if(a===this.getActiveItem()){a.hidden=false}else{a.hidden=true}this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.activeItem){b.activeItem=null}},getAnimation:function(b,a){var c=(b||{}).cardSwitchAnimation;if(c===false){return false}return c||a.cardSwitchAnimation},getNext:function(){var c=arguments[0],a=this.getLayoutItems(),b=Ext.Array.indexOf(a,this.activeItem);return a[b+1]||(c?a[0]:false)},next:function(){var b=arguments[0],a=arguments[1];return this.setActiveItem(this.getNext(a),b)},getPrev:function(){var c=arguments[0],a=this.getLayoutItems(),b=Ext.Array.indexOf(a,this.activeItem);return a[b-1]||(c?a[a.length-1]:false)},prev:function(){var b=arguments[0],a=arguments[1];return this.setActiveItem(this.getPrev(a),b)},setActiveItem:function(b){var e=this,a=e.owner,d=e.activeItem,g=a.rendered,c;b=e.parseActiveItem(b);c=a.items.indexOf(b);if(c==-1){c=a.items.items.length;Ext.suspendLayouts();b=a.add(b);Ext.resumeLayouts()}if(b&&d!=b){if(b.fireEvent("beforeactivate",b,d)===false){return false}if(d&&d.fireEvent("beforedeactivate",d,b)===false){return false}if(g){Ext.suspendLayouts();if(!b.rendered){e.renderItem(b,e.getRenderTarget(),a.items.length)}if(d){if(e.hideInactive){d.hide();d.hiddenByLayout=true}d.fireEvent("deactivate",d,b)}if(b.hidden){b.show()}if(!b.hidden){e.activeItem=b}Ext.resumeLayouts(true)}else{e.activeItem=b}b.fireEvent("activate",b,d);return e.activeItem}return false}});Ext.define("Ext.layout.container.Column",{extend:Ext.layout.container.Auto,alias:["layout.column"],alternateClassName:"Ext.layout.ColumnLayout",type:"column",itemCls:Ext.baseCSSPrefix+"column",targetCls:Ext.baseCSSPrefix+"column-layout-ct",columnWidthSizePolicy:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},createsInnerCt:true,manageOverflow:true,isItemShrinkWrap:function(a){return true},getItemSizePolicy:function(a,b){if(a.columnWidth){if(!b){b=this.owner.getSizeModel()}if(!b.width.shrinkWrap){return this.columnWidthSizePolicy}}return this.autoSizePolicy},calculateItems:function(d,a){var o=this,e=d.targetContext,n=d.childItems,l=n.length,b=0,g=a.gotWidth,j,p,h,c,k,m;if(g===false){e.domBlock(o,"width");j=true}else{if(g){p=a.width}else{return true}}for(h=0;h<l;++h){c=n[h];k=c.getMarginInfo().width;if(!c.widthModel.calculated){m=c.getProp("width");if(typeof m!="number"){c.block(o,"width");j=true}b+=m+k}}if(!j){p=p<b?0:p-b;for(h=0;h<l;++h){c=n[h];if(c.widthModel.calculated){k=c.marginInfo.width;m=c.target.columnWidth;m=Math.floor(m*p)-k;m=c.setWidth(m);b+=m+k}}d.setContentWidth(b+d.paddingContext.getPaddingInfo().width)}return !j},setCtSizeIfNeeded:function(b,d){var a=this,c=b.paddingContext.getPaddingInfo();a.callParent(arguments);if((Ext.isIEQuirks||Ext.isIE7m)&&a.isShrinkWrapTpl&&c.right){b.outerCtContext.setProp("width",d.width+c.left)}}});Ext.define("Ext.layout.container.Form",{alias:"layout.form",extend:Ext.layout.container.Container,alternateClassName:"Ext.layout.FormLayout",tableCls:Ext.baseCSSPrefix+"form-layout-table",type:"form",createsInnerCt:true,manageOverflow:true,lastOverflowAdjust:{width:0,height:0},childEls:["formTable"],padRow:'<tr><td class="'+Ext.baseCSSPrefix+'form-item-pad" colspan="3"></td></tr>',renderTpl:['<table id="{ownerId}-formTable" class="{tableCls}" style="width:100%" cellpadding="0">',"{%this.renderBody(out,values)%}","</table>","{%this.renderPadder(out,values)%}"],getRenderData:function(){var a=this.callParent();a.tableCls=this.tableCls;return a},calculate:function(g){var e=this,j=e.getContainerSize(g,true),a,h,b=0,d,c=g.sizeModel.height.shrinkWrap;if(c){if(g.hasDomProp("containerChildrenSizeDone")){g.setProp("contentHeight",e.formTable.dom.offsetHeight+g.targetContext.getPaddingInfo().height)}else{e.done=false}}if(j.gotWidth){a=e.formTable.dom.offsetWidth;h=g.childItems;for(d=h.length;b<d;++b){h[b].setWidth(a,false)}}else{e.done=false}},getRenderTarget:function(){return this.formTable},getRenderTree:function(){var d=this,b=d.callParent(arguments),c,a;for(c=0,a=b.length;c<a;c++){b[c]=d.transformItemRenderTree(b[c])}return b},transformItemRenderTree:function(a){if(a.tag&&a.tag=="table"){a.tag="tbody";delete a.cellspacing;delete a.cellpadding;if(Ext.isIE6){a.cn=this.padRow}return a}return{tag:"tbody",cn:{tag:"tr",cn:{tag:"td",colspan:3,style:"width:100%",cn:a}}}},isValidParent:function(b,c,a){return true},isItemShrinkWrap:function(a){return(a.shrinkWrap===true?3:a.shrinkWrap||0)&2},getItemSizePolicy:function(a){return{setsWidth:1,setsHeight:0}},beginLayoutCycle:function(b,a){var c=this.overflowPadderEl;if(c){c.setStyle("display","none")}if(!b.state.overflowAdjust){b.state.overflowAdjust=this.lastOverflowAdjust}},calculateOverflow:function(o,t,g){var y=this,n=o.targetContext,l=y.manageOverflow,c=o.state,m=c.overflowAdjust,e,k,b,p,a,u,j,s,d,q,w,h,x;if(l&&!c.secondPass&&!y.reserveScrollbar){h=y.getOverflowXStyle(o)==="auto";x=y.getOverflowYStyle(o)==="auto";if(!t.gotWidth){h=false}if(!t.gotHeight){x=false}if(h||x){u=Ext.getScrollbarSize();j=o.peek("contentWidth");s=o.peek("contentHeight");p=n.getPaddingInfo();j-=p.width;s-=p.height;d=t.width;q=t.height;w=y.getScrollbarsNeeded(d,q,j,s);c.overflowState=w;if(typeof g=="number"){w&=~g}m={width:h&&w&2?u.width:0,height:x&&w&1?u.height:0};if(m.width!==y.lastOverflowAdjust.width||m.height!==y.lastOverflowAdjust.height){y.done=false;o.invalidate({state:{overflowAdjust:m,overflowState:c.overflowState,secondPass:true}})}}}if(!y.done){return}b=o.padElContext||(o.padElContext=o.getEl("overflowPadderEl",y));if(b){w=c.overflowState;e=o.peek("contentWidth");k=1;if(w){p=n.getPaddingInfo();a=y.scrollRangeFlags;if(w&2&&a&1){k+=p.bottom}if(w&1&&a&4){e+=p.right}b.setProp("display","");b.setSize(e,k)}else{b.setProp("display","none")}}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},doRenderPadder:function(b,d){var c=d.$layout,a=c.owner,e=c.getScrollRangeFlags();if(c.manageOverflow){if(e&5){b.push('<div id="',a.id,'-overflowPadderEl" ','style="font-size: 1px; height: 1px; margin-top: -1px; position: relative; z-index: -99999');b.push('"></div>');c.scrollRangeFlags=e}}},getContainerSize:function(d,j,b){var e=d.targetContext,h=e.getFrameInfo(),m=e.getPaddingInfo(),l=0,n=0,a=b?null:d.state.overflowAdjust,g,k,c,o;if(!d.widthModel.shrinkWrap){++n;c=j?e.getDomProp("width"):e.getProp("width");g=typeof c=="number";if(g){++l;c-=h.width+m.width;if(a){c-=a.width}}}if(!d.heightModel.shrinkWrap){++n;o=j?e.getDomProp("height"):e.getProp("height");k=typeof o=="number";if(k){++l;o-=h.height+m.height;if(a){o-=a.height}}}return{width:c,height:o,needed:n,got:l,gotAll:l==n,gotWidth:g,gotHeight:k}},getOverflowXStyle:function(b){var a=this;return a.overflowXStyle||(a.overflowXStyle=a.owner.scrollFlags.overflowX||b.targetContext.getStyle("overflow-x"))},getOverflowYStyle:function(b){var a=this;return a.overflowYStyle||(a.overflowYStyle=a.owner.scrollFlags.overflowY||b.targetContext.getStyle("overflow-y"))},getScrollRangeFlags:function(){var a=-1;return function(){if(a<0){var g=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"border-box",style:{width:"100px",height:"100px",padding:"10px",overflow:"auto"},children:[{style:{border:"1px solid red",width:"150px",height:"150px",margin:"0 5px 5px 0"}}]}),d=g.dom.scrollHeight,c=g.dom.scrollWidth,e={175:0,165:1,170:2,160:3},b={175:0,165:4,170:8,160:12};a=(e[d]||0)|(b[c]||0);g.remove()}return a}}(),initLayout:function(){var b=this,a=Ext.getScrollbarSize().width;b.callParent();if(a&&b.manageOverflow&&!b.hasOwnProperty("lastOverflowAdjust")){if(b.owner.scrollFlags.y||b.reserveScrollbar){b.lastOverflowAdjust={width:a,height:0}}}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadder=this.doRenderPadder}});Ext.define("Ext.menu.Item",{extend:Ext.Component,alias:"widget.menuitem",alternateClassName:"Ext.menu.TextItem",activeCls:Ext.baseCSSPrefix+"menu-item-active",ariaRole:"menuitem",canActivate:true,clickHideDelay:1,destroyMenu:true,disabledCls:Ext.baseCSSPrefix+"menu-item-disabled",hideOnClick:true,isMenuItem:true,menuAlign:"tl-tr?",menuExpandDelay:200,menuHideDelay:200,tooltipType:"qtip",arrowCls:Ext.baseCSSPrefix+"menu-item-arrow",childEls:["itemEl","iconEl","textEl","arrowEl"],renderTpl:['<tpl if="plain">',"{text}","<tpl else>",'<a id="{id}-itemEl"',' class="'+Ext.baseCSSPrefix+'menu-item-link{childElCls}"',' href="{href}"','<tpl if="hrefTarget"> target="{hrefTarget}"</tpl>',' hidefocus="true"',' unselectable="on"','<tpl if="tabIndex">',' tabIndex="{tabIndex}"',"</tpl>",">",'<div role="img" id="{id}-iconEl" class="'+Ext.baseCSSPrefix+"menu-item-icon {iconCls}",'{childElCls} {glyphCls}" style="<tpl if="icon">background-image:url({icon});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl>',"</div>",'<span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'menu-item-text" unselectable="on">{text}</span>','<img id="{id}-arrowEl" src="{blank}" class="{arrowCls}','{childElCls}"/>',"</a>","</tpl>"],maskOnDisable:false,activate:function(){var a=this;if(!a.activated&&a.canActivate&&a.rendered&&!a.isDisabled()&&a.isVisible()){a.el.addCls(a.activeCls);a.focus();a.activated=true;a.fireEvent("activate",a)}},getFocusEl:function(){return this.itemEl},deactivate:function(){var a=this;if(a.activated){a.el.removeCls(a.activeCls);a.blur();a.hideMenu();a.activated=false;a.fireEvent("deactivate",a)}},deferHideMenu:function(){if(this.menu.isVisible()){this.menu.hide()}},cancelDeferHide:function(){clearTimeout(this.hideMenuTimer)},deferHideParentMenus:function(){var a;Ext.menu.Manager.hideAll();if(!Ext.Element.getActiveElement()){a=this.up(":not([hidden])");if(a){a.focus()}}},expandMenu:function(a){var b=this;if(b.menu){b.cancelDeferHide();if(a===0){b.doExpandMenu()}else{clearTimeout(b.expandMenuTimer);b.expandMenuTimer=Ext.defer(b.doExpandMenu,Ext.isNumber(a)?a:b.menuExpandDelay,b)}}},doExpandMenu:function(){var a=this,b=a.menu;if(a.activated&&(!b.rendered||!b.isVisible())){a.parentMenu.activeChild=b;b.parentItem=a;b.parentMenu=a.parentMenu;b.showBy(a,a.menuAlign)}},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},hideMenu:function(a){var b=this;if(b.menu){clearTimeout(b.expandMenuTimer);b.hideMenuTimer=Ext.defer(b.deferHideMenu,Ext.isNumber(a)?a:b.menuHideDelay,b)}},initComponent:function(){var b=this,c=Ext.baseCSSPrefix,a=[c+"menu-item"],d;b.addEvents("activate","click","deactivate","textchange","iconchange");if(b.plain){a.push(c+"menu-item-plain")}if(b.cls){a.push(b.cls)}b.cls=a.join(" ");if(b.menu){d=b.menu;delete b.menu;b.setMenu(d)}b.callParent(arguments)},onClick:function(b){var a=this;if(!a.href){b.stopEvent()}if(a.disabled){return}if(a.hideOnClick){a.deferHideParentMenusTimer=Ext.defer(a.deferHideParentMenus,a.clickHideDelay,a)}Ext.callback(a.handler,a.scope||a,[a,b]);a.fireEvent("click",a,b);if(!a.hideOnClick){a.focus()}},onRemoved:function(){var a=this;if(a.activated&&a.parentMenu.activeItem===a){a.parentMenu.deactivateActiveItem()}a.callParent(arguments);a.parentMenu=a.ownerButton=null},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}a.callParent()},onDestroy:function(){var a=this;clearTimeout(a.expandMenuTimer);a.cancelDeferHide();clearTimeout(a.deferHideParentMenusTimer);a.setMenu(null);a.callParent(arguments)},beforeRender:function(){var d=this,h=Ext.BLANK_IMAGE_URL,c=d.glyph,g=Ext._glyphFontFamily,b,a,e;d.callParent();if(d.iconAlign==="right"){a=d.checkChangeDisabled?d.disabledCls:"";e=Ext.baseCSSPrefix+"menu-item-icon-right "+d.iconCls}else{a=(d.iconCls||"")+(d.checkChangeDisabled?" "+d.disabledCls:"");e=d.menu?d.arrowCls:""}if(typeof c==="string"){b=c.split("@");c=b[0];g=b[1]}Ext.applyIf(d.renderData,{href:d.href||"#",hrefTarget:d.hrefTarget,icon:d.icon,iconCls:a,glyph:c,glyphCls:c?Ext.baseCSSPrefix+"menu-item-glyph":undefined,glyphFontFamily:g,hasIcon:!!(d.icon||d.iconCls||c),iconAlign:d.iconAlign,plain:d.plain,text:d.text,arrowCls:e,blank:h,tabIndex:d.tabIndex})},onRender:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.setTooltip(a.tooltip,true)}},setMenu:function(e,d){var c=this,b=c.menu,a=c.arrowEl;if(b){delete b.parentItem;delete b.parentMenu;delete b.ownerItem;if(d===true||d!==false&&c.destroyMenu){Ext.destroy(b)}}if(e){c.menu=Ext.menu.Manager.get(e);c.menu.ownerItem=c}else{c.menu=null}if(c.rendered&&!c.destroying&&a){a[c.menu?"addCls":"removeCls"](c.arrowCls)}},setHandler:function(b,a){this.handler=b||null;this.scope=a},setIcon:function(b){var a=this.iconEl,c=this.icon;if(a){a.src=b||Ext.BLANK_IMAGE_URL}this.icon=b;this.fireEvent("iconchange",this,c,b)},setIconCls:function(b){var d=this,a=d.iconEl,c=d.iconCls;if(a){if(d.iconCls){a.removeCls(d.iconCls)}if(b){a.addCls(b)}}d.iconCls=b;d.fireEvent("iconchange",d,c,b)},setText:function(d){var c=this,b=c.textEl||c.el,a=c.text;c.text=d;if(c.rendered){b.update(d||"");c.ownerCt.updateLayout()}c.fireEvent("textchange",c,a,d)},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},clearTip:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.itemEl)}},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a){b.clearTip()}if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.itemEl.id},c));b.tooltip=c}else{b.itemEl.dom.setAttribute(b.getTipAttr(),c)}}else{b.tooltip=c}return b}});Ext.define("Ext.menu.CheckItem",{extend:Ext.menu.Item,alias:"widget.menucheckitem",checkedCls:Ext.baseCSSPrefix+"menu-item-checked",uncheckedCls:Ext.baseCSSPrefix+"menu-item-unchecked",groupCls:Ext.baseCSSPrefix+"menu-group-icon",hideOnClick:false,checkChangeDisabled:false,childEls:["itemEl","iconEl","textEl","checkEl"],showCheckbox:true,renderTpl:['<tpl if="plain">',"{text}","<tpl else>","{%var showCheckbox = values.showCheckbox,",'      rightCheckbox = showCheckbox && values.hasIcon && (values.iconAlign !== "left"), textCls = rightCheckbox ? "'+Ext.baseCSSPrefix+'right-check-item-text" : "";%}','<a id="{id}-itemEl" class="'+Ext.baseCSSPrefix+'menu-item-link{childElCls}" href="{href}" <tpl if="hrefTarget">target="{hrefTarget}"</tpl> hidefocus="true" unselectable="on"','<tpl if="tabIndex">',' tabIndex="{tabIndex}"',"</tpl>",">",'{%if (values.hasIcon && (values.iconAlign !== "left")) {%}','<div role="img" id="{id}-iconEl" class="'+Ext.baseCSSPrefix+"menu-item-icon {iconCls}",'{childElCls} {glyphCls}" style="<tpl if="icon">background-image:url({icon});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl>',"</div>","{%} else if (showCheckbox){%}",'<img id="{id}-checkEl" src="{blank}" class="'+Ext.baseCSSPrefix+'menu-item-icon{childElCls}" />',"{%}%}",'<span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'menu-item-text {[textCls]}{childElCls}" <tpl if="arrowCls">style="margin-right: 17px;"</tpl> >{text}</span>',"{%if (rightCheckbox) {%}",'<img id="{id}-checkEl" src="{blank}" class="'+Ext.baseCSSPrefix+'menu-item-icon-right{childElCls}" />',"{%} else if (values.arrowCls) {%}",'<img id="{id}-arrowEl" src="{blank}" class="{arrowCls}{childElCls}"/>',"{%}%}","</a>","</tpl>"],initComponent:function(){var a=this;a.checked=!!a.checked;a.addEvents("beforecheckchange","checkchange");a.callParent(arguments);Ext.menu.Manager.registerCheckable(a);if(a.group){if(!(a.iconCls||a.icon||a.glyph)){a.iconCls=a.groupCls}if(a.initialConfig.hideOnClick!==false){a.hideOnClick=true}}},beforeRender:function(){this.callParent();this.renderData.showCheckbox=this.showCheckbox},afterRender:function(){var a=this;a.callParent();a.checked=!a.checked;a.setChecked(!a.checked,true);if(a.checkChangeDisabled){a.disableCheckChange()}},disableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.addCls(b.disabledCls)}if(!(Ext.isIE10p||Ext.isIE9&&Ext.isStrict)&&b.rendered){b.el.repaint()}b.checkChangeDisabled=true},enableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.removeCls(b.disabledCls)}b.checkChangeDisabled=false},onClick:function(b){var a=this;if(!a.disabled&&!a.checkChangeDisabled&&!(a.checked&&a.group)){a.setChecked(!a.checked)}this.callParent([b])},onDestroy:function(){Ext.menu.Manager.unregisterCheckable(this);this.callParent(arguments)},setChecked:function(c,a){var b=this;if(b.checked!==c&&(a||b.fireEvent("beforecheckchange",b,c)!==false)){if(b.el){b.el[c?"addCls":"removeCls"](b.checkedCls)[!c?"addCls":"removeCls"](b.uncheckedCls)}b.checked=c;Ext.menu.Manager.onCheckChange(b,c);if(!a){Ext.callback(b.checkHandler,b.scope,[b,c]);b.fireEvent("checkchange",b,c)}}}});Ext.define("Ext.menu.KeyNav",{extend:Ext.util.KeyNav,constructor:function(a){var b=this;b.menu=a.target;b.callParent([Ext.apply({down:b.down,enter:b.enter,esc:b.escape,left:b.left,right:b.right,space:b.enter,tab:b.tab,up:b.up},a)])},down:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.DOWN&&a.isWhitelisted(c)){return true}a.focusNextItem(1)},enter:function(b){var c=this.menu,a=c.focusedItem;if(c.activeItem){c.onClick(b)}else{if(a&&a.isFormField){return true}}},escape:function(a){Ext.menu.Manager.hideAll()},focusNextItem:function(b){var a=this.menu,e=a.items,h=a.focusedItem,g=h?e.indexOf(h):-1,j=g+b,d=e.length,c=0,k;while(c<d&&j!==g){if(j<0){j=d-1}else{if(j>=d){j=0}}k=e.getAt(j);if(a.canActivateItem(k)){a.setActiveItem(k);break}j+=b;++c}},isWhitelisted:function(a){return Ext.FocusManager.isWhitelisted(a)},left:function(a){var b=this.menu,c=b.focusedItem;if(c&&this.isWhitelisted(c)){return true}b.hide();if(b.parentMenu){b.parentMenu.focus()}},right:function(c){var d=this.menu,g=d.focusedItem,a=d.activeItem,b;if(g&&this.isWhitelisted(g)){return true}if(a){b=d.activeItem.menu;if(b){a.expandMenu(0);b.setActiveItem(b.child(":focusable"))}}},tab:function(b){var a=this;if(b.shiftKey){a.up(b)}else{a.down(b)}},up:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.UP&&a.isWhitelisted(c)){return true}a.focusNextItem(-1)}});Ext.define("Ext.menu.Separator",{extend:Ext.menu.Item,alias:"widget.menuseparator",canActivate:false,focusable:false,hideOnClick:false,plain:true,separatorCls:Ext.baseCSSPrefix+"menu-item-separator",text:"&#160;",beforeRender:function(a,c){var b=this;b.callParent();b.addCls(b.separatorCls)}});Ext.define("Ext.menu.Menu",{extend:Ext.panel.Panel,alias:"widget.menu",enableKeyNav:true,allowOtherMenus:false,ariaRole:"menu",floating:true,constrain:true,hidden:true,hideMode:"visibility",ignoreParentClicks:false,isMenu:true,showSeparator:true,minWidth:undefined,defaultMinWidth:120,initComponent:function(){var b=this,d=Ext.baseCSSPrefix,a=[d+"menu"],c=b.bodyCls?[b.bodyCls]:[],e=b.floating!==false;b.addEvents("click","mouseenter","mouseleave","mouseover");Ext.menu.Manager.register(b);if(b.plain){a.push(d+"menu-plain")}b.cls=a.join(" ");c.push(d+"menu-body",Ext.dom.Element.unselectableCls);b.bodyCls=c.join(" ");if(!b.layout){b.layout={type:"vbox",align:"stretchmax",overflowHandler:"Scroller"}}if(e){if(b.minWidth===undefined){b.minWidth=b.defaultMinWidth}}else{b.hidden=!!b.initialConfig.hidden}b.callParent(arguments)},registerWithOwnerCt:function(){if(this.floating){this.ownerCt=null;Ext.WindowManager.register(this)}},initHierarchyEvents:Ext.emptyFn,isVisible:function(){return this.callParent()},getHierarchyState:function(){var a=this.callParent();a.hidden=this.hidden;return a},beforeRender:function(){this.callParent(arguments);if(!this.getSizeModel().width.shrinkWrap){this.layout.align="stretch"}},onBoxReady:function(){var a=this;a.callParent(arguments);if(a.showSeparator){a.iconSepEl=a.layout.getElementTarget().insertFirst({cls:Ext.baseCSSPrefix+"menu-icon-separator",html:"&#160;"})}a.mon(a.el,{click:a.onClick,mouseover:a.onMouseOver,scope:a});a.mouseMonitor=a.el.monitorMouseLeave(100,a.onMouseLeave,a);if(a.enableKeyNav){a.keyNav=new Ext.menu.KeyNav({target:a,keyMap:a.getKeyMap()})}},getRefOwner:function(){return this.parentMenu||this.ownerButton||this.callParent(arguments)},canActivateItem:function(a){return a&&!a.isDisabled()&&a.isVisible()&&(a.canActivate||a.getXTypes().indexOf("menuitem")<0)},deactivateActiveItem:function(b){var c=this,d=c.activeItem,a=c.focusedItem;if(d){d.deactivate();if(!d.activated){delete c.activeItem}}if(a&&b){a.blur();delete c.focusedItem}},getFocusEl:function(){return this.focusedItem||this.el},hide:function(){this.deactivateActiveItem(true);this.callParent(arguments)},getItemFromEvent:function(a){return this.getChildByElement(a.getTarget())},lookupComponent:function(b){var a=this;if(typeof b=="string"){b=a.lookupItemFromString(b)}else{if(Ext.isObject(b)){b=a.lookupItemFromObject(b)}}b.minWidth=b.minWidth||a.minWidth;return b},lookupItemFromObject:function(c){var b=this,d=Ext.baseCSSPrefix,a;if(!c.isComponent){if(!c.xtype){c=Ext.create("Ext.menu."+(Ext.isBoolean(c.checked)?"Check":"")+"Item",c)}else{c=Ext.ComponentManager.create(c,c.xtype)}}if(c.isMenuItem){c.parentMenu=b}if(!c.isMenuItem&&!c.dock){a=[d+"menu-item-cmp"];if(!b.plain&&(c.indent!==false||c.iconCls==="no-icon")){a.push(d+"menu-item-indent")}if(c.rendered){c.el.addCls(a)}else{c.cls=(c.cls||"")+" "+a.join(" ")}}return c},lookupItemFromString:function(a){return a=="separator"||a=="-"?new Ext.menu.Separator:new Ext.menu.Item({canActivate:false,hideOnClick:false,plain:true,text:a})},onClick:function(c){var b=this,a;if(b.disabled){c.stopEvent();return}a=c.type==="click"?b.getItemFromEvent(c):b.activeItem;if(a&&a.isMenuItem){if(!a.menu||!b.ignoreParentClicks){a.onClick(c)}else{c.stopEvent()}}if(!a||a.disabled){a=undefined}b.fireEvent("click",b,a,c)},onDestroy:function(){var a=this;Ext.menu.Manager.unregister(a);a.parentMenu=a.ownerButton=null;if(a.rendered){a.el.un(a.mouseMonitor);Ext.destroy(a.keyNav);a.keyNav=null}a.callParent(arguments)},onMouseLeave:function(b){var a=this;a.deactivateActiveItem();if(a.disabled){return}a.fireEvent("mouseleave",a,b)},onMouseOver:function(h){var g=this,j=h.getRelatedTarget(),b=!g.el.contains(j),d=g.getItemFromEvent(h),c=g.parentMenu,a=g.parentItem;if(b&&c){c.setActiveItem(a);a.cancelDeferHide();c.mouseMonitor.mouseenter()}if(g.disabled){return}if(d&&!d.activated){g.setActiveItem(d);if(d.activated&&d.expandMenu){d.expandMenu()}}if(b){g.fireEvent("mouseenter",g,h)}g.fireEvent("mouseover",g,d,h)},setActiveItem:function(b){var a=this;if(b&&b!=a.activeItem){a.deactivateActiveItem();if(a.canActivateItem(b)){if(b.activate){b.activate();if(b.activated){a.activeItem=b;a.focusedItem=b;a.focus()}}else{b.focus();a.focusedItem=b}}b.el.scrollIntoView(a.layout.getRenderTarget())}},showBy:function(b,d,c){var a=this;a.callParent(arguments);if(!a.hidden){a.setVerticalPosition()}return a},show:function(){var c=this,b,a,d=c.maxHeight;if(!c.rendered){c.doAutoRender()}if(c.floating){b=c.el.parent();a=b.getViewSize().height;c.maxHeight=Math.min(d||a,a)}c.callParent(arguments);c.maxHeight=d;return c},setVerticalPosition:function(){var d=this,g,e=d.getY(),h=e,k=d.getHeight(),b=Ext.Element.getViewportHeight().height,c=d.el.parent(),a=c.getViewSize().height,j=e-c.getScroll().top;c=null;if(d.floating){g=d.maxHeight?d.maxHeight:a-j;if(k>a){h=e-j}else{if(g<k){h=e-(k-g)}else{if(e+k>b){h=b-k}}}}d.setY(h)}});Ext.define("Ext.menu.ColorPicker",{extend:Ext.menu.Menu,alias:"widget.colormenu",hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{plain:true,showSeparator:false,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-color-item",id:b.pickerId,xtype:"colorpicker"},a)});b.callParent(arguments);b.picker=b.down("colorpicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}});Ext.define("Ext.menu.DatePicker",{extend:Ext.menu.Menu,alias:"widget.datemenu",hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{showSeparator:false,plain:true,border:false,bodyPadding:0,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-date-item",id:b.pickerId,xtype:"datepicker"},a)});b.callParent(arguments);b.picker=b.down("datepicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}});Ext.define("Ext.panel.Tool",{extend:Ext.Component,alias:"widget.tool",isTool:true,baseCls:Ext.baseCSSPrefix+"tool",disabledCls:Ext.baseCSSPrefix+"tool-disabled",toolPressedCls:Ext.baseCSSPrefix+"tool-pressed",toolOverCls:Ext.baseCSSPrefix+"tool-over",ariaRole:"button",childEls:["toolEl"],renderTpl:['<img id="{id}-toolEl" src="{blank}" class="{baseCls}-img {baseCls}-{type}{childElCls}" role="presentation"/>'],tooltipType:"qtip",stopEvent:true,height:15,width:15,initComponent:function(){var a=this;a.addEvents("click");a.type=a.type||a.id;Ext.applyIf(a.renderData,{baseCls:a.baseCls,blank:Ext.BLANK_IMAGE_URL,type:a.type});a.tooltip=a.tooltip||a.qtip;a.callParent()},afterRender:function(){var b=this,a;b.callParent(arguments);b.el.on({click:b.onClick,mousedown:b.onMouseDown,mouseover:b.onMouseOver,mouseout:b.onMouseOut,scope:b});if(b.tooltip){if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.id},b.tooltip))}else{a=b.tooltipType=="qtip"?"data-qtip":"title";b.el.dom.setAttribute(a,b.tooltip)}}},getFocusEl:function(){return this.el},setType:function(a){var b=this,c=b.type;b.type=a;if(b.rendered){if(c){b.toolEl.removeCls(b.baseCls+"-"+c)}b.toolEl.addCls(b.baseCls+"-"+a)}else{b.renderData.type=a}return b},onClick:function(c,b){var a=this;if(a.disabled){return false}a.el.removeCls(a.toolPressedCls);a.el.removeCls(a.toolOverCls);if(a.stopEvent!==false){c.stopEvent()}Ext.callback(a.handler,a.scope||a,[c,b,a.ownerCt,a]);a.fireEvent("click",a,c);return true},onDestroy:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.id)}this.callParent()},onMouseDown:function(){if(this.disabled){return false}this.el.addCls(this.toolPressedCls)},onMouseOver:function(){if(this.disabled){return false}this.el.addCls(this.toolOverCls)},onMouseOut:function(){this.el.removeCls(this.toolOverCls)}});Ext.define("Ext.resizer.SplitterTracker",{extend:Ext.dd.DragTracker,enabled:true,overlayCls:Ext.baseCSSPrefix+"resizable-overlay",createDragOverlay:function(){var a;a=this.overlay=Ext.getBody().createChild({cls:this.overlayCls,html:"&#160;"});a.unselectable();a.setSize(Ext.Element.getViewWidth(true),Ext.Element.getViewHeight(true));a.show()},getPrevCmp:function(){var a=this.getSplitter();return a.previousSibling(":not([hidden])")},getNextCmp:function(){var a=this.getSplitter();return a.nextSibling(":not([hidden])")},onBeforeStart:function(j){var d=this,g=d.getPrevCmp(),a=d.getNextCmp(),c=d.getSplitter().collapseEl,h=j.getTarget(),b;if(!g||!a){return false}if(c&&h===d.getSplitter().collapseEl.dom){return false}if(a.collapsed||g.collapsed){return false}d.prevBox=g.getEl().getBox();d.nextBox=a.getEl().getBox();d.constrainTo=b=d.calculateConstrainRegion();if(!b){return false}return b},onStart:function(b){var a=this.getSplitter();this.createDragOverlay();a.addCls(a.baseCls+"-active")},calculateConstrainRegion:function(){var h=this,a=h.getSplitter(),j=a.getWidth(),k=a.defaultSplitMin,b=a.orientation,e=h.prevBox,l=h.getPrevCmp(),c=h.nextBox,g=h.getNextCmp(),n,m,d;if(b==="vertical"){d={prevCmp:l,nextCmp:g,prevBox:e,nextBox:c,defaultMin:k,splitWidth:j};n=new Ext.util.Region(e.y,h.getVertPrevConstrainRight(d),e.bottom,h.getVertPrevConstrainLeft(d));m=new Ext.util.Region(c.y,h.getVertNextConstrainRight(d),c.bottom,h.getVertNextConstrainLeft(d))}else{n=new Ext.util.Region(e.y+(l.minHeight||k),e.right,(l.maxHeight?e.y+l.maxHeight:c.bottom-(g.minHeight||k))+j,e.x);m=new Ext.util.Region((g.maxHeight?c.bottom-g.maxHeight:e.y+(l.minHeight||k))-j,c.right,c.bottom-(g.minHeight||k),c.x)}return n.intersect(m)},performResize:function(n,h){var p=this,a=p.getSplitter(),j=a.orientation,q=p.getPrevCmp(),o=p.getNextCmp(),b=a.ownerCt,l=b.query(">[flex]"),m=l.length,c=j==="vertical",k=0,g=c?"width":"height",d=0,s,t;for(;k<m;k++){s=l[k];t=c?s.getWidth():s.getHeight();d+=t;s.flex=t}h=c?h[0]:h[1];if(q){t=p.prevBox[g]+h;if(q.flex){q.flex=t}else{q[g]=t}}if(o){t=p.nextBox[g]-h;if(o.flex){o.flex=t}else{o[g]=t}}b.updateLayout()},endDrag:function(){var a=this;if(a.overlay){a.overlay.remove();delete a.overlay}a.callParent(arguments)},onEnd:function(c){var a=this,b=a.getSplitter();b.removeCls(b.baseCls+"-active");a.performResize(c,a.getResizeOffset())},onDrag:function(g){var c=this,h=c.getOffset("dragTarget"),d=c.getSplitter(),b=d.getEl(),a=d.orientation;if(a==="vertical"){b.setX(c.startRegion.left+h[0])}else{b.setY(c.startRegion.top+h[1])}},getSplitter:function(){return this.splitter},getVertPrevConstrainRight:function(a){return(a.prevCmp.maxWidth?a.prevBox.x+a.prevCmp.maxWidth:a.nextBox.right-(a.nextCmp.minWidth||a.defaultMin))+a.splitWidth},getVertPrevConstrainLeft:function(a){return a.prevBox.x+(a.prevCmp.minWidth||a.defaultMin)},getVertNextConstrainRight:function(a){return a.nextBox.right-(a.nextCmp.minWidth||a.defaultMin)},getVertNextConstrainLeft:function(a){return(a.nextCmp.maxWidth?a.nextBox.right-a.nextCmp.maxWidth:a.prevBox.x+(a.prevBox.minWidth||a.defaultMin))-a.splitWidth},getResizeOffset:function(){return this.getOffset("dragTarget")}});Ext.define("Ext.resizer.BorderSplitterTracker",{extend:Ext.resizer.SplitterTracker,getPrevCmp:null,getNextCmp:null,calculateConstrainRegion:function(){var A=this,a=A.splitter,o=a.collapseTarget,d=a.defaultSplitMin,h=a.vertical?"Width":"Height",c="min"+h,w="max"+h,j="get"+h,u=a.neighbors,e=u.length,n=o.el.getBox(),g=n.x,p=n.y,z=n.right,k=n.bottom,s=a.vertical?z-g:k-p,y,l,m,x,t,q,b;m=(o[c]||Math.min(s,d))-s;x=o[w];if(!x){x=1000000000}else{x-=s}b=s;for(y=0;y<e;++y){l=u[y];s=l[j]();t=s-l[w];q=s-(l[c]||Math.min(s,d));if(!isNaN(t)){if(m<t){m=t}}if(x>q){x=q}}if(x-m<2){return null}n=new Ext.util.Region(p,z,k,g);A.constraintAdjusters[A.getCollapseDirection()](n,m,x,a);A.dragInfo={minRange:m,maxRange:x,targetSize:b};return n},constraintAdjusters:{left:function(c,a,b,d){c[0]=c.x=c.left=c.right+a;c.right+=b+d.getWidth()},top:function(c,a,b,d){c[1]=c.y=c.top=c.bottom+a;c.bottom+=b+d.getHeight()},bottom:function(c,a,b,d){c.bottom=c.top-a;c.top-=b+d.getHeight()},right:function(c,a,b,d){c.right=c.left-a;c[0]=c.x=c.left=c.x-b+d.getWidth()}},onBeforeStart:function(h){var k=this,b=k.splitter,a=b.collapseTarget,m=b.neighbors,d=k.getSplitter().collapseEl,j=h.getTarget(),c=m.length,g,l;if(d&&j===b.collapseEl.dom){return false}if(a.collapsed){return false}for(g=0;g<c;++g){l=m[g];if(l.collapsed&&l.isHorz===a.isHorz){return false}}if(!(k.constrainTo=k.calculateConstrainRegion())){return false}return true},performResize:function(k,j){var l=this,b=l.splitter,h=b.collapseDirection,a=b.collapseTarget,g=l.splitAdjusters[b.vertical?"horz":"vert"],m=j[g.index],d=l.dragInfo,c;if(h=="right"||h=="bottom"){m=-m}m=Math.min(Math.max(d.minRange,m),d.maxRange);if(m){(c=b.ownerCt).suspendLayouts();g.adjustTarget(a,d.targetSize,m);c.resumeLayouts(true)}},splitAdjusters:{horz:{index:0,adjustTarget:function(b,a,c){b.flex=null;b.setSize(a+c)}},vert:{index:1,adjustTarget:function(b,a,c){b.flex=null;b.setSize(undefined,a+c)}}},getCollapseDirection:function(){return this.splitter.collapseDirection}});Ext.define("Ext.resizer.Handle",{extend:Ext.Component,handleCls:"",baseHandleCls:Ext.baseCSSPrefix+"resizable-handle",region:"",beforeRender:function(){var a=this;a.callParent();a.protoEl.unselectable();a.addCls(a.baseHandleCls,a.baseHandleCls+"-"+a.region,a.handleCls)}});Ext.define("Ext.resizer.ResizeTracker",{extend:Ext.dd.DragTracker,dynamic:true,preserveRatio:false,constrainTo:null,proxyCls:Ext.baseCSSPrefix+"resizable-proxy",constructor:function(b){var d=this,c,a,e;if(!b.el){if(b.target.isComponent){d.el=b.target.getEl()}else{d.el=b.target}}this.callParent(arguments);if(d.preserveRatio&&d.minWidth&&d.minHeight){c=d.minWidth/d.el.getWidth();a=d.minHeight/d.el.getHeight();if(a>c){d.minWidth=d.el.getWidth()*a}else{d.minHeight=d.el.getHeight()*c}}if(d.throttle){e=Ext.Function.createThrottled(function(){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)},d.throttle);d.resize=function(h,j,g){if(g){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)}else{e.apply(null,arguments)}}}},onBeforeStart:function(a){this.startBox=this.target.getBox()},getDynamicTarget:function(){var a=this,b=a.target;if(a.dynamic){return b}else{if(!a.proxy){a.proxy=a.createProxy(b)}}a.proxy.show();return a.proxy},createProxy:function(c){var b,a=this.proxyCls;if(c.isComponent){b=c.getProxy().addCls(a)}else{b=c.createProxy({tag:"div",cls:a,id:c.id+"-rzproxy"},Ext.getBody())}b.removeCls(Ext.baseCSSPrefix+"proxy-el");return b},onStart:function(a){this.activeResizeHandle=Ext.get(this.getDragTarget().id);if(!this.dynamic){this.resize(this.startBox,{horizontal:"none",vertical:"none"})}},onDrag:function(a){if(this.dynamic||this.proxy){this.updateDimensions(a)}},updateDimensions:function(u,n){var w=this,c=w.activeResizeHandle.region,g=w.getOffset(w.constrainTo?"dragTarget":null),l=w.startBox,h,q=0,x=0,k,s,a=0,z=0,y,o=g[0]<0?"right":"left",t=g[1]<0?"down":"up",j,b,d,p,m;c=w.convertRegionName(c);switch(c){case"south":x=g[1];b=2;break;case"north":x=-g[1];z=-x;b=2;break;case"east":q=g[0];b=1;break;case"west":q=-g[0];a=-q;b=1;break;case"northeast":x=-g[1];z=-x;q=g[0];j=[l.x,l.y+l.height];b=3;break;case"southeast":x=g[1];q=g[0];j=[l.x,l.y];b=3;break;case"southwest":q=-g[0];a=-q;x=g[1];j=[l.x+l.width,l.y];b=3;break;case"northwest":x=-g[1];z=-x;q=-g[0];a=-q;j=[l.x+l.width,l.y+l.height];b=3;break}d={width:l.width+q,height:l.height+x,x:l.x+a,y:l.y+z};k=Ext.Number.snap(d.width,w.widthIncrement);s=Ext.Number.snap(d.height,w.heightIncrement);if(k!=d.width||s!=d.height){switch(c){case"northeast":d.y-=s-d.height;break;case"north":d.y-=s-d.height;break;case"southwest":d.x-=k-d.width;break;case"west":d.x-=k-d.width;break;case"northwest":d.x-=k-d.width;d.y-=s-d.height}d.width=k;d.height=s}if(d.width<w.minWidth||d.width>w.maxWidth){d.width=Ext.Number.constrain(d.width,w.minWidth,w.maxWidth);if(a){d.x=l.x+(l.width-d.width)}}else{w.lastX=d.x}if(d.height<w.minHeight||d.height>w.maxHeight){d.height=Ext.Number.constrain(d.height,w.minHeight,w.maxHeight);if(z){d.y=l.y+(l.height-d.height)}}else{w.lastY=d.y}if(w.preserveRatio||u.shiftKey){h=w.startBox.width/w.startBox.height;p=Math.min(Math.max(w.minHeight,d.width/h),w.maxHeight);m=Math.min(Math.max(w.minWidth,d.height*h),w.maxWidth);if(b==1){d.height=p}else{if(b==2){d.width=m}else{y=Math.abs(j[0]-this.lastXY[0])/Math.abs(j[1]-this.lastXY[1]);if(y>h){d.height=p}else{d.width=m}if(c=="northeast"){d.y=l.y-(d.height-l.height)}else{if(c=="northwest"){d.y=l.y-(d.height-l.height);d.x=l.x-(d.width-l.width)}else{if(c=="southwest"){d.x=l.x-(d.width-l.width)}}}}}}if(x===0){t="none"}if(q===0){o="none"}w.resize(d,{horizontal:o,vertical:t},n)},getResizeTarget:function(a){return a?this.target:this.getDynamicTarget()},resize:function(c,e,a){var b=this,d=b.getResizeTarget(a);d.setBox(c);if(b.originalTarget&&(b.dynamic||a)){b.originalTarget.setBox(c)}},onEnd:function(a){this.updateDimensions(a,true);if(this.proxy){this.proxy.hide()}},convertRegionName:function(a){return a}});Ext.define("Ext.resizer.Resizer",{mixins:{observable:Ext.util.Observable},alternateClassName:"Ext.Resizable",handleCls:Ext.baseCSSPrefix+"resizable-handle",pinnedCls:Ext.baseCSSPrefix+"resizable-pinned",overCls:Ext.baseCSSPrefix+"resizable-over",wrapCls:Ext.baseCSSPrefix+"resizable-wrap",delimiterRe:/(?:\s*[,;]\s*)|\s+/,dynamic:true,handles:"s e se",height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:20,minWidth:20,maxHeight:10000,maxWidth:10000,pinned:false,preserveRatio:false,transparent:false,possiblePositions:{n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"},constructor:function(b){var m=this,j,q,t,s=m.handles,c,p,g,d=0,o,n=[],h,a,e,l,k=Ext.dom.Element.unselectableCls;m.addEvents("beforeresize","resizedrag","resize");if(Ext.isString(b)||Ext.isElement(b)||b.dom){j=b;b=arguments[1]||{};b.target=j}m.mixins.observable.constructor.call(m,b);j=m.target;if(j){if(j.isComponent){j.addClsWithUI("resizable");m.el=j.getEl();if(j.minWidth){m.minWidth=j.minWidth}if(j.minHeight){m.minHeight=j.minHeight}if(j.maxWidth){m.maxWidth=j.maxWidth}if(j.maxHeight){m.maxHeight=j.maxHeight}if(j.floating){if(!m.hasOwnProperty("handles")){m.handles="n ne e se s sw w nw"}}}else{m.el=m.target=Ext.get(j)}}else{m.target=m.el=Ext.get(m.el)}t=m.el.dom.tagName.toUpperCase();if(t=="TEXTAREA"||t=="IMG"||t=="TABLE"){m.originalTarget=m.target;q=m.el;e=q.getBox();m.target=m.el=m.el.wrap({cls:m.wrapCls,id:m.el.id+"-rzwrap",style:q.getStyles("margin-top","margin-bottom")});m.el.setPositioning(q.getPositioning());q.clearPositioning();m.el.setBox(e);q.setStyle("position","absolute")}m.el.position();if(m.pinned){m.el.addCls(m.pinnedCls)}m.resizeTracker=new Ext.resizer.ResizeTracker({disabled:m.disabled,target:m.target,constrainTo:m.constrainTo,overCls:m.overCls,throttle:m.throttle,originalTarget:m.originalTarget,delegate:"."+m.handleCls,dynamic:m.dynamic,preserveRatio:m.preserveRatio,heightIncrement:m.heightIncrement,widthIncrement:m.widthIncrement,minHeight:m.minHeight,maxHeight:m.maxHeight,minWidth:m.minWidth,maxWidth:m.maxWidth});m.resizeTracker.on({mousedown:m.onBeforeResize,drag:m.onResize,dragend:m.onResizeEnd,scope:m});if(m.handles=="all"){m.handles="n s e w ne nw se sw"}s=m.handles=m.handles.split(m.delimiterRe);p=m.possiblePositions;g=s.length;c=m.handleCls+" "+m.handleCls+"-{0}";if(m.target.isComponent){l=m.target.baseCls;c+=" "+l+"-handle "+l+"-handle-{0}";if(Ext.supports.CSS3BorderRadius){c+=" "+l+"-handle-{0}-br"}}h=Ext.isIE6?' style="height:'+m.el.getHeight()+'px"':"";for(;d<g;d++){if(s[d]&&p[s[d]]){o=p[s[d]];if(o==="east"||o==="west"){a=h}else{a=""}n.push('<div id="',m.el.id,"-",o,'-handle"',' class="',Ext.String.format(c,o)," ",k,'"',' unselectable="on"',a,"></div>")}}Ext.DomHelper.append(m.el,n.join(""));for(d=0;d<g;d++){if(s[d]&&p[s[d]]){o=p[s[d]];m[o]=m.el.getById(m.el.id+"-"+o+"-handle");m[o].region=o;if(m.transparent){m[o].setOpacity(0)}}}if(Ext.isNumber(m.width)){m.width=Ext.Number.constrain(m.width,m.minWidth,m.maxWidth)}if(Ext.isNumber(m.height)){m.height=Ext.Number.constrain(m.height,m.minHeight,m.maxHeight)}if(m.width!==null||m.height!==null){if(m.originalTarget){m.originalTarget.setWidth(m.width);m.originalTarget.setHeight(m.height)}m.resizeTo(m.width,m.height)}m.forceHandlesHeight()},disable:function(){this.resizeTracker.disable()},enable:function(){this.resizeTracker.enable()},onBeforeResize:function(b,c){var a=this.el.getBox();return this.fireEvent("beforeresize",this,a.width,a.height,c)},onResize:function(c,d){var b=this,a=b.el.getBox();b.forceHandlesHeight();return b.fireEvent("resizedrag",b,a.width,a.height,d)},onResizeEnd:function(c,d){var b=this,a=b.el.getBox();b.forceHandlesHeight();return b.fireEvent("resize",b,a.width,a.height,d)},resizeTo:function(b,a){var c=this;c.target.setSize(b,a);c.fireEvent("resize",c,b,a,null)},getEl:function(){return this.el},getTarget:function(){return this.target},destroy:function(){var e=this,d,c=e.handles,a=c.length,b=e.possiblePositions,g;e.resizeTracker.destroy();for(d=0;d<a;d++){if(g=e[b[c[d]]]){g.remove()}}},forceHandlesHeight:function(){var a=this,b;if(Ext.isIE6){b=a.east;if(b){b.setHeight(a.el.getHeight())}b=a.west;if(b){b.setHeight(a.el.getHeight())}a.el.repaint()}}});Ext.define("Ext.slider.Thumb",{topZIndex:10000,constructor:function(a){var b=this;Ext.apply(b,a||{},{cls:Ext.baseCSSPrefix+"slider-thumb",constrain:false});b.callParent([a])},render:function(){var a=this;a.el=a.slider.innerEl.insertFirst(a.getElConfig());a.onRender()},onRender:function(){if(this.disabled){this.disable()}this.initEvents()},getElConfig:function(){var c=this,b=c.slider,a={};a[b.vertical?"bottom":b.horizontalProp]=b.calculateThumbPosition(b.normalizeValue(c.value))+"%";return{style:a,id:this.id,cls:this.cls}},move:function(c,b){var g=this,d=g.el,e=g.slider,a=e.vertical?"bottom":e.horizontalProp,j,h;c+="%";if(!b){d.dom.style[a]=c}else{j={};j[a]=c;if(!Ext.supports.GetPositionPercentage){h={};h[a]=d.dom.style[a]}new Ext.fx.Anim({target:d,duration:350,from:h,to:j})}},bringToFront:function(){this.el.setStyle("zIndex",this.topZIndex)},sendToBack:function(){this.el.setStyle("zIndex","")},enable:function(){var a=this;a.disabled=false;if(a.el){a.el.removeCls(a.slider.disabledCls)}},disable:function(){var a=this;a.disabled=true;if(a.el){a.el.addCls(a.slider.disabledCls)}},initEvents:function(){var b=this,a=b.el;b.tracker=new Ext.dd.DragTracker({onBeforeStart:Ext.Function.bind(b.onBeforeDragStart,b),onStart:Ext.Function.bind(b.onDragStart,b),onDrag:Ext.Function.bind(b.onDrag,b),onEnd:Ext.Function.bind(b.onDragEnd,b),tolerance:3,autoStart:300,overCls:Ext.baseCSSPrefix+"slider-thumb-over"});b.tracker.initEl(a)},onBeforeDragStart:function(a){if(this.disabled){return false}else{this.slider.promoteThumb(this);return true}},onDragStart:function(c){var b=this,a=b.slider;a.onDragStart(b,c);b.el.addCls(Ext.baseCSSPrefix+"slider-thumb-drag");b.dragging=b.slider.dragging=true;b.dragStartValue=b.value;a.fireEvent("dragstart",a,c,b)},onDrag:function(h){var d=this,c=d.slider,b=d.index,g=d.getValueFromTracker(),a,j;if(g!==undefined){if(d.constrain){a=c.thumbs[b+1];j=c.thumbs[b-1];if(j!==undefined&&g<=j.value){g=j.value}if(a!==undefined&&g>=a.value){g=a.value}}c.setValue(b,g,false);c.fireEvent("drag",c,h,d)}},getValueFromTracker:function(){var a=this.slider,b=a.getTrackpoint(this.tracker.getXY());if(b!==undefined){return a.reversePixelValue(b)}},onDragEnd:function(d){var b=this,a=b.slider,c=b.value;a.onDragEnd(b,d);b.el.removeCls(Ext.baseCSSPrefix+"slider-thumb-drag");b.dragging=a.dragging=false;a.fireEvent("dragend",a,d);if(b.dragStartValue!=c){a.fireEvent("changecomplete",a,c,b)}},destroy:function(){Ext.destroy(this.tracker)}});Ext.define("Ext.slider.Tip",{extend:Ext.tip.Tip,minWidth:10,alias:"widget.slidertip",offsets:null,align:null,position:"",defaultVerticalPosition:"left",defaultHorizontalPosition:"top",isSliderTip:true,init:function(c){var b=this,d,a;if(!b.position){b.position=c.vertical?b.defaultVerticalPosition:b.defaultHorizontalPosition}switch(b.position){case"top":a=[0,-10];d="b-t?";break;case"bottom":a=[0,10];d="t-b?";break;case"left":a=[-10,0];d="r-l?";break;case"right":a=[10,0];d="l-r?"}if(!b.align){b.align=d}if(!b.offsets){b.offsets=a}c.on({scope:b,dragstart:b.onSlide,drag:b.onSlide,dragend:b.hide,destroy:b.destroy})},onSlide:function(c,d,a){var b=this;b.show();b.update(b.getText(a));b.el.alignTo(a.el,b.align,b.offsets)},getText:function(a){return String(a.value)}});Ext.define("Ext.slider.Multi",{extend:Ext.form.field.Base,alias:"widget.multislider",alternateClassName:"Ext.slider.MultiSlider",childEls:["endEl","innerEl"],fieldSubTpl:['<div id="{id}" class="'+Ext.baseCSSPrefix+"slider {fieldCls} {vertical}","{childElCls}",'" aria-valuemin="{minValue}" aria-valuemax="{maxValue}" aria-valuenow="{value}" aria-valuetext="{value}">','<div id="{cmpId}-endEl" class="'+Ext.baseCSSPrefix+'slider-end" role="presentation">','<div id="{cmpId}-innerEl" class="'+Ext.baseCSSPrefix+'slider-inner" role="presentation">',"{%this.renderThumbs(out, values)%}","</div>","</div>","</div>",{renderThumbs:function(g,e){var j=e.$comp,h=0,c=j.thumbs,b=c.length,d,a;for(;h<b;h++){d=c[h];a=d.getElConfig();a.id=j.id+"-thumb-"+h;Ext.DomHelper.generateMarkup(a,g)}},disableFormats:true}],horizontalProp:"left",vertical:false,minValue:0,maxValue:100,decimalPrecision:0,keyIncrement:1,increment:0,clickRange:[5,15],clickToChange:true,animate:true,dragging:false,constrainThumbs:true,componentLayout:"sliderfield",useTips:true,tipText:null,ariaRole:"slider",initValue:function(){var e=this,c=Ext.value,b=c(e.values,[c(e.value,c(e.minValue,0))]),d=0,a=b.length;e.originalValue=b;for(;d<a;d++){e.addThumb(b[d])}},initComponent:function(){var e=this,c,d,g,b,a;e.thumbs=[];e.keyIncrement=Math.max(e.increment,e.keyIncrement);e.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");if(e.increment){e.maxValue=Ext.Number.snapInRange(e.maxValue,e.increment,e.minValue);e.value=e.normalizeValue(e.value)}e.callParent();if(e.useTips){if(Ext.isObject(e.useTips)){c=Ext.apply({},e.useTips)}else{c=e.tipText?{getText:e.tipText}:{}}a=e.plugins=e.plugins||[];b=a.length;for(g=0;g<b;g++){if(a[g].isSliderTip){d=true;break}}if(!d){e.plugins.push(new Ext.slider.Tip(c))}}},addThumb:function(c){var b=this,a=new Ext.slider.Thumb({ownerCt:b,ownerLayout:b.getComponentLayout(),value:c,slider:b,index:b.thumbs.length,constrain:b.constrainThumbs,disabled:!!b.readOnly});b.thumbs.push(a);if(b.rendered){a.render()}return a},promoteThumb:function(c){var a=this.thumbs,e=a.length,g,b,d;for(d=0;d<e;d++){b=a[d];if(b==c){b.bringToFront()}else{b.sendToBack()}}},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{$comp:a,vertical:a.vertical?Ext.baseCSSPrefix+"slider-vert":Ext.baseCSSPrefix+"slider-horz",minValue:a.minValue,maxValue:a.maxValue,value:a.value,childElCls:""})},onRender:function(){var e=this,b=e.thumbs,a=b.length,d=0,c;e.callParent(arguments);for(d=0;d<a;d++){c=b[d];c.el=e.el.getById(e.id+"-thumb-"+d);c.onRender()}},initEvents:function(){var a=this;a.mon(a.el,{scope:a,mousedown:a.onMouseDown,keydown:a.onKeyDown})},onDragStart:Ext.emptyFn,onDragEnd:Ext.emptyFn,getTrackpoint:function(h){var g=this,d=g.vertical,c=g.innerEl,b,a,e;if(d){e="top";b=c.getHeight()}else{e=g.horizontalProp;b=c.getWidth()}h=g.transformTrackPoints(c.translatePoints(h));a=Ext.Number.constrain(h[e],0,b);return d?b-a:a},transformTrackPoints:Ext.identityFn,onMouseDown:function(j){var d=this,h=false,c=0,b=d.thumbs,a=b.length,g;if(d.disabled){return}for(;c<a;c++){h=h||j.target==b[c].el.dom}if(d.clickToChange&&!h){g=d.getTrackpoint(j.getXY());if(g!==undefined){d.onClickChange(g)}}d.focus()},onClickChange:function(d){var c=this,a,b;a=c.getNearest(d);if(!a.disabled){b=a.index;c.setValue(b,Ext.util.Format.round(c.reversePixelValue(d),c.decimalPrecision),undefined,true)}},getNearest:function(j){var k=this,g=k.reversePixelValue(j),l=k.getRange()+5,b=null,e=k.thumbs,c=0,d=e.length,a,m,h;for(;c<d;c++){a=k.thumbs[c];m=a.value;h=Math.abs(m-g);if(Math.abs(h<=l)){b=a;l=h}}return b},onKeyDown:function(c){var b=this,a,d;if(b.disabled||b.thumbs.length!==1){c.preventDefault();return}a=c.getKey();switch(a){case c.UP:case c.RIGHT:c.stopEvent();d=c.ctrlKey?b.maxValue:b.getValue(0)+b.keyIncrement;b.setValue(0,d,undefined,true);break;case c.DOWN:case c.LEFT:c.stopEvent();d=c.ctrlKey?b.minValue:b.getValue(0)-b.keyIncrement;b.setValue(0,d,undefined,true);break;default:c.preventDefault()}},normalizeValue:function(b){var c=this,d=Ext.Number,a=d[c.zeroBasedSnapping?"snap":"snapInRange"];b=a.call(d,b,c.increment,c.minValue,c.maxValue);b=Ext.util.Format.round(b,c.decimalPrecision);b=Ext.Number.constrain(b,c.minValue,c.maxValue);return b},setMinValue:function(g){var e=this,d=0,b=e.thumbs,a=b.length,c;e.minValue=g;if(e.rendered){e.inputEl.dom.setAttribute("aria-valuemin",g)}for(;d<a;++d){c=b[d];c.value=c.value<g?g:c.value}e.syncThumbs()},setMaxValue:function(g){var e=this,d=0,b=e.thumbs,a=b.length,c;e.maxValue=g;if(e.rendered){e.inputEl.dom.setAttribute("aria-valuemax",g)}for(;d<a;++d){c=b[d];c.value=c.value>g?g:c.value}e.syncThumbs()},setValue:function(e,k,b,d){var j=this,h=j.thumbs,a,g,c,l;if(Ext.isArray(e)){l=e;b=k;for(c=0,g=l.length;c<g;++c){a=h[c];if(a){j.setValue(c,l[c],b)}}return j}a=j.thumbs[e];k=j.normalizeValue(k);if(k!==a.value&&j.fireEvent("beforechange",j,k,a.value,a)!==false){a.value=k;if(j.rendered){j.inputEl.set({"aria-valuenow":k,"aria-valuetext":k});a.move(j.calculateThumbPosition(k),Ext.isDefined(b)?b!==false:j.animate);j.fireEvent("change",j,k,a);j.checkDirty();if(d){j.fireEvent("changecomplete",j,k,a)}}}return j},calculateThumbPosition:function(a){var b=this,c=b.minValue,d=(a-c)/b.getRange()*100;if(isNaN(d)){d=c}return d},getRatio:function(){var b=this,d=b.innerEl,a=b.vertical?d.getHeight():d.getWidth(),c=b.getRange();return c===0?a:a/c},getRange:function(){return this.maxValue-this.minValue},reversePixelValue:function(a){return this.minValue+a/this.getRatio()},reversePercentageValue:function(a){return this.minValue+this.getRange()*(a/100)},onDisable:function(){var g=this,d=0,b=g.thumbs,a=b.length,c,e,h;g.callParent();for(;d<a;d++){c=b[d];e=c.el;c.disable();if(Ext.isIE){h=e.getXY();e.hide();g.innerEl.addCls(g.disabledCls).dom.disabled=true;if(!g.thumbHolder){g.thumbHolder=g.endEl.createChild({cls:Ext.baseCSSPrefix+"slider-thumb "+g.disabledCls})}g.thumbHolder.show().setXY(h)}}},onEnable:function(){var g=this,d=0,b=g.thumbs,a=b.length,c,e;this.callParent();for(;d<a;d++){c=b[d];e=c.el;c.enable();if(Ext.isIE){g.innerEl.removeCls(g.disabledCls).dom.disabled=false;if(g.thumbHolder){g.thumbHolder.hide()}e.show();g.syncThumbs()}}},syncThumbs:function(){if(this.rendered){var a=this.thumbs,c=a.length,b=0;for(;b<c;b++){a[b].move(this.calculateThumbPosition(a[b].value))}}},getValue:function(a){return Ext.isNumber(a)?this.thumbs[a].value:this.getValues()},getValues:function(){var c=[],d=0,b=this.thumbs,a=b.length;for(;d<a;d++){c.push(b[d].value)}return c},getSubmitValue:function(){var a=this;return a.disabled||!a.submitValue?null:a.getValue()},reset:function(){var e=this,b=[].concat(e.originalValue),c=0,d=b.length,g;for(;c<d;c++){g=b[c];e.setValue(c,g)}e.clearInvalid();delete e.wasValid},setReadOnly:function(e){var d=this,b=d.thumbs,a=b.length,c=0;d.callParent(arguments);e=d.readOnly;for(;c<a;++c){if(e){b[c].disable()}else{b[c].enable()}}},beforeDestroy:function(){var e=this,b=e.thumbs,d=0,a=b.length,c;Ext.destroy(e.innerEl,e.endEl,e.focusEl);for(;d<a;d++){c=b[d];Ext.destroy(c)}e.callParent()}});Ext.define("Ext.tab.Tab",{extend:Ext.button.Button,alias:"widget.tab",isTab:true,baseCls:Ext.baseCSSPrefix+"tab",activeCls:"active",closableCls:"closable",closable:true,closeText:"Close Tab",active:false,childEls:["closeEl"],scale:false,position:"top",initComponent:function(){var a=this;a.addEvents("activate","deactivate","beforeclose","close");a.callParent(arguments);if(a.card){a.setCard(a.card)}a.overCls=["over",a.position+"-over"]},getTemplateArgs:function(){var b=this,a=b.callParent();a.closable=b.closable;a.closeText=b.closeText;return a},beforeRender:function(){var b=this,a=b.up("tabbar"),c=b.up("tabpanel");b.callParent();b.addClsWithUI(b.position);if(b.active){b.addClsWithUI([b.activeCls,b.position+"-"+b.activeCls])}b.syncClosableUI();if(!b.minWidth){b.minWidth=a?a.minTabWidth:b.minWidth;if(!b.minWidth&&c){b.minWidth=c.minTabWidth}if(b.minWidth&&b.iconCls){b.minWidth+=25}}if(!b.maxWidth){b.maxWidth=a?a.maxTabWidth:b.maxWidth;if(!b.maxWidth&&c){b.maxWidth=c.maxTabWidth}}},onRender:function(){var a=this;a.setElOrientation();a.callParent(arguments);a.keyNav=new Ext.util.KeyNav(a.el,{enter:a.onEnterKey,del:a.onDeleteKey,scope:a})},setElOrientation:function(){var a=this.position;if(a==="left"||a==="right"){this.el.setVertical(a==="right"?90:270)}},enable:function(a){var b=this;b.callParent(arguments);b.removeClsWithUI(b.position+"-disabled");return b},disable:function(a){var b=this;b.callParent(arguments);b.addClsWithUI(b.position+"-disabled");return b},onDestroy:function(){var a=this;Ext.destroy(a.keyNav);delete a.keyNav;a.callParent(arguments)},setClosable:function(a){var b=this;a=!arguments.length||!!a;if(b.closable!=a){b.closable=a;if(b.card){b.card.closable=a}b.syncClosableUI();if(b.rendered){b.syncClosableElements();b.updateLayout()}}},syncClosableElements:function(){var a=this,b=a.closeEl;if(a.closable){if(!b){a.closeEl=a.btnWrap.insertSibling({tag:"a",cls:a.baseCls+"-close-btn",href:"#",title:a.closeText},"after")}}else{if(b){b.remove();delete a.closeEl}}},syncClosableUI:function(){var b=this,a=[b.closableCls,b.closableCls+"-"+b.position];if(b.closable){b.addClsWithUI(a)}else{b.removeClsWithUI(a)}},setCard:function(a){var b=this;b.card=a;b.setText(b.title||a.title);b.setIconCls(b.iconCls||a.iconCls);b.setIcon(b.icon||a.icon);b.setGlyph(b.glyph||a.glyph)},onCloseClick:function(){var a=this;if(a.fireEvent("beforeclose",a)!==false){if(a.tabBar){if(a.tabBar.closeTab(a)===false){return}}else{a.fireClose()}}},fireClose:function(){this.fireEvent("close",this)},onEnterKey:function(b){var a=this;if(a.tabBar){a.tabBar.onClick(b,a.el)}},onDeleteKey:function(a){if(this.closable){this.onCloseClick()}},activate:function(b){var a=this;a.active=true;a.addClsWithUI([a.activeCls,a.position+"-"+a.activeCls]);if(b!==true){a.fireEvent("activate",a)}},deactivate:function(b){var a=this;a.active=false;a.removeClsWithUI([a.activeCls,a.position+"-"+a.activeCls]);if(b!==true){a.fireEvent("deactivate",a)}}});Ext.define("Ext.util.Point",{extend:Ext.util.Region,statics:{fromEvent:function(a){a=a.browserEvent||a;a=a.changedTouches&&a.changedTouches.length>0?a.changedTouches[0]:a;return new this(a.pageX,a.pageY)}},constructor:function(a,b){this.callParent([b,a,b,a])},toString:function(){return"Point["+this.x+","+this.y+"]"},equals:function(a){return this.x==a.x&&this.y==a.y},isWithin:function(b,a){if(!Ext.isObject(a)){a={x:a,y:a}}return this.x<=b.x+a.x&&this.x>=b.x-a.x&&this.y<=b.y+a.y&&this.y>=b.y-a.y},isContainedBy:function(a){if(!(a instanceof Ext.util.Region)){a=Ext.get(a.el||a).getRegion()}return a.contains(this)},roundedEquals:function(a){return Math.round(this.x)==Math.round(a.x)&&Math.round(this.y)==Math.round(a.y)}},function(){this.prototype.translate=Ext.util.Region.prototype.translateBy});Ext.define("Ext.tab.Bar",{extend:Ext.panel.Header,alias:"widget.tabbar",baseCls:Ext.baseCSSPrefix+"tab-bar",isTabBar:true,defaultType:"tab",plain:false,childEls:["body","strip"],renderTpl:['<div id="{id}-body" class="{baseCls}-body {bodyCls} {bodyTargetCls}<tpl if="ui"> {baseCls}-body-{ui}<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl></tpl>"<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values)%}","</div>",'<div id="{id}-strip" class="{baseCls}-strip {baseCls}-strip-{dock}','<tpl if="ui"> {baseCls}-strip-{ui}','<tpl for="uiCls"> {parent.baseCls}-strip-{parent.ui}-{.}</tpl>','</tpl>">',"</div>"],_reverseDockNames:{left:"right",right:"left"},initComponent:function(){var a=this;if(a.plain){a.addCls(a.baseCls+"-plain")}a.addClsWithUI(a.orientation);a.addEvents("change");a.callParent(arguments);Ext.merge(a.layout,a.initialConfig.layout);a.layout.align=a.orientation=="vertical"?"left":"top";a.layout.overflowHandler=new Ext.layout.container.boxOverflow.Scroller(a.layout);a.remove(a.titleCmp);delete a.titleCmp;Ext.apply(a.renderData,{bodyCls:a.bodyCls,dock:a.dock})},onRender:function(){var a=this;a.callParent();if(a.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a.el.on({mousemove:a.onMouseMove,scope:a})}},afterRender:function(){var a=this.layout;this.callParent();if(Ext.isIE9&&Ext.isStrict&&this.orientation==="vertical"){a.innerCt.on("scroll",function(){a.innerCt.dom.scrollLeft=0})}},afterLayout:function(){this.adjustTabPositions();this.callParent(arguments)},adjustTabPositions:function(){var a=this.items.items,b=a.length,c;if(!Ext.isIE9m){if(this.dock==="right"){while(b--){c=a[b];c.el.setStyle("left",c.lastBox.width+"px")}}else{if(this.dock==="left"){while(b--){c=a[b];c.el.setStyle("left",-c.lastBox.height+"px")}}}}},getLayout:function(){var a=this;a.layout.type=a.orientation==="horizontal"?"hbox":"vbox";return a.callParent(arguments)},onAdd:function(a){a.position=this.dock;this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.previousTab){b.previousTab=null}b.callParent(arguments)},afterComponentLayout:function(b){var c=this,a=c.needsScroll;c.callParent(arguments);if(a){c.layout.overflowHandler.scrollToItem(c.activeTab)}delete c.needsScroll},onClick:function(h,g){var d=this,k=d.tabPanel,j,c,b,a;if(h.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}if(d.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a=d.getTabInfoFromPoint(h.getXY());c=a.tab;b=a.close}else{j=h.getTarget("."+Ext.tab.Tab.prototype.baseCls);c=j&&Ext.getCmp(j.id);b=c&&c.closeEl&&g===c.closeEl.dom}if(b){h.preventDefault()}if(c&&c.isDisabled&&!c.isDisabled()){if(c.closable&&b){c.onCloseClick()}else{if(k){k.setActiveTab(c.card)}else{d.setActiveTab(c)}c.focus()}}},onMouseMove:function(g){var d=this,b=d._overTab,a,c;if(g.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}a=d.getTabInfoFromPoint(g.getXY());c=a.tab;if(c!==b){if(b&&b.rendered){b.onMouseLeave(g);d._overTab=null}if(c){c.onMouseEnter(g);d._overTab=c;if(!c.disabled){d.el.setStyle("cursor","pointer")}}else{d.el.setStyle("cursor","default")}}},onMouseLeave:function(b){var a=this._overTab;if(a&&a.rendered){a.onMouseLeave(b)}},getTabInfoFromPoint:function(g){var C=this,y=C.items.items,e=y.length,o=C.layout.innerCt,w=o.getXY(),u=new Ext.util.Point(g[0],g[1]),x=0,z,b,a,p,A,j,h,d,s,l,k,n,m,t,q,B,c;for(;x<e;x++){z=y[x].lastBox;l=w[0]+z.x;k=w[1]-o.dom.scrollTop+z.y;n=z.width;m=z.height;b=new Ext.util.Region(k,l+n,k+m,l);if(b.contains(u)){c=y[x];a=c.closeEl;if(a){A=a.getXY();d=a.getWidth();s=a.getHeight();if(C._isTabReversed===undefined){C._isTabReversed=q=c.btnWrap.dom.currentStyle.filter.indexOf("rotation=2")!==-1}B=q?this._reverseDockNames[C.dock]:C.dock;if(B==="right"){j=l+n-(A[1]-k+a.getHeight());h=k+(A[0]-l)}else{j=l+(A[1]-k);h=k+l+m-A[0]-a.getWidth()}t=new Ext.util.Region(h,j+d,h+s,j);p=t.contains(u)}break}}return{tab:c,close:p}},closeTab:function(c){var d=this,b=c.card,e=d.tabPanel,a;if(b&&b.fireEvent("beforeclose",b)===false){return false}a=d.findNextActivatable(c);Ext.suspendLayouts();if(e&&b){delete c.ownerCt;b.fireEvent("close",b);e.remove(b);if(!e.getComponent(b)){c.fireClose();d.remove(c)}else{c.ownerCt=d;Ext.resumeLayouts(true);return false}}if(a){if(e){e.setActiveTab(a.card)}else{d.setActiveTab(a)}a.focus()}Ext.resumeLayouts(true)},findNextActivatable:function(a){var b=this;if(a.active&&b.items.getCount()>1){return b.previousTab&&b.previousTab!==a&&!b.previousTab.disabled?b.previousTab:a.next("tab[disabled=false]")||a.prev("tab[disabled=false]")}},setActiveTab:function(b,a){var c=this;if(!b.disabled&&b!==c.activeTab){if(c.activeTab){if(c.activeTab.isDestroyed){c.previousTab=null}else{c.previousTab=c.activeTab;c.activeTab.deactivate()}}b.activate();c.activeTab=b;c.needsScroll=true;if(!a){c.fireEvent("change",c,b,b.card);c.updateLayout()}}}});Ext.define("Ext.tree.Column",{extend:Ext.grid.column.Column,alias:"widget.treecolumn",tdCls:Ext.baseCSSPrefix+"grid-cell-treecolumn",autoLock:true,lockable:false,draggable:false,hideable:false,treePrefix:Ext.baseCSSPrefix+"tree-",elbowPrefix:Ext.baseCSSPrefix+"tree-elbow-",expanderCls:Ext.baseCSSPrefix+"tree-expander",imgText:'<img src="{1}" class="{0}" />',checkboxText:'<input type="button" role="checkbox" class="{0}" {1} />',initComponent:function(){var a=this;a.origRenderer=a.renderer||a.defaultRenderer;a.origScope=a.scope||window;a.renderer=a.treeRenderer;a.scope=a;a.callParent()},treeRenderer:function(n,p,c,b,m,e,l){var w=this,u=[],s=Ext.String.format,y=c.getDepth(),t=w.treePrefix,d=w.elbowPrefix,o=w.expanderCls,j=w.imgText,z=w.checkboxText,h=w.origRenderer.apply(w.origScope,arguments),g=Ext.BLANK_IMAGE_URL,q=c.get("href"),x=c.get("hrefTarget"),a=c.get("cls"),k=w.getChildCls?w.getChildCls()+" ":"";while(c){if(!c.isRoot()||c.isRoot()&&l.rootVisible){if(c.getDepth()===y){u.unshift(s(j,k+t+"icon "+t+"icon"+(c.get("icon")?"-inline ":c.isLeaf()?"-leaf ":"-parent ")+(c.get("iconCls")||""),c.get("icon")||g));if(c.get("checked")!==null){u.unshift(s(z,k+(t+"checkbox")+(c.get("checked")?" "+t+"checkbox-checked":""),c.get("checked")?'aria-checked="true"':""));if(c.get("checked")){p.tdCls+=" "+t+"checked"}}if(c.isLast()){if(c.isExpandable()){u.unshift(s(j,k+d+"end-plus "+o,g))}else{u.unshift(s(j,k+d+"end",g))}}else{if(c.isExpandable()){u.unshift(s(j,k+d+"plus "+o,g))}else{u.unshift(s(j,k+t+"elbow",g))}}}else{if(c.isLast()||c.getDepth()===0){u.unshift(s(j,k+d+"empty",g))}else{if(c.getDepth()!==0){u.unshift(s(j,k+d+"line",g))}}}}c=c.parentNode}if(q){u.push('<a class="'+Ext.baseCSSPrefix+'tree-node-text" href="',q,'" target="',x,'">')}else{u.push('<span class="'+Ext.baseCSSPrefix+'tree-node-text">')}u.push(h);if(q){u.push("</a>")}else{u.push("</span>")}if(a){p.tdCls+=" "+a}return u.join("")},defaultRenderer:Ext.identityFn});Ext.define("Ext.selection.CellModel",{extend:Ext.selection.Model,alias:"selection.cellmodel",isCellModel:true,enableKeyNav:true,preventWrap:false,noSelection:{row:-1,column:-1},constructor:function(){this.addEvents("deselect","select");this.callParent(arguments)},bindComponent:function(a){var c=this,b=a.ownerCt;c.primaryView=a;c.views=c.views||[];c.views.push(a);c.bindStore(a.getStore(),true);a.on({cellmousedown:c.onMouseDown,refresh:c.onViewRefresh,scope:c});if(b.optimizedColumnMove!==false){b.on("columnmove",c.onColumnMove,c)}if(c.enableKeyNav){c.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a.el,ignoreInputFields:true,up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,tab:b.onKeyTab,scope:b})},getHeaderCt:function(){var b=this.getCurrentPosition(),a=b?b.view:this.primaryView;return a.headerCt},onKeyUp:function(b,a){this.doMove("up",b)},onKeyDown:function(b,a){this.doMove("down",b)},onKeyLeft:function(b,a){this.doMove("left",b)},onKeyRight:function(b,a){this.doMove("right",b)},doMove:function(b,a){this.keyNavigation=true;this.move(b,a);this.keyNavigation=false},move:function(a,d){var c=this,g=c.getCurrentPosition(),b;if(g){b=g.view.walkCells(g,a,d,c.preventWrap);if(b){b.view=g.view;return c.setCurrentPosition(b)}}},getCurrentPosition:function(){return this.selecting?this.nextSelection:this.selection},setCurrentPosition:function(c){var b=this,a=b.selection;b.lastSelection=a;if(a){if(c&&c.row===a.row&&c.column===a.column&&c.view===a.view){c=null}else{b.onCellDeselect(b.selection)}}if(c){b.nextSelection=new b.Selection(b);b.nextSelection.setPosition(c);b.selecting=true;b.onCellSelect(b.nextSelection);b.selecting=false;return b.selection=b.nextSelection}},isCellSelected:function(a,e,c){var d=this,b,g=d.getCurrentPosition();if(g&&g.view===a){b=new this.Selection(d);b.setPosition({view:a,row:e,column:c});return b.record===g.record&&b.columnHeader===g.columnHeader}},onStoreRemove:function(k,b,e){var h=this,j=h.getCurrentPosition(),c,a=b.length,g,d=0;h.callParent(arguments);if(j){if(e[0]>j.row){return}for(c=0;c<a;c++){g=e[c];if(g<j.row){d++}else{break}}if(d){j.setRow(j.row-d)}}},onMouseDown:function(c,a,g,b,j,d,h){if(d!==-1){this.setCurrentPosition({view:c,row:j,column:g})}},onCellSelect:function(a,b){if(a&&a.row!==undefined&&a.row>-1){this.doSelect(a.record,false,b)}},onCellDeselect:function(a,b){if(a&&a.row!==undefined){this.doDeselect(a.record,b)}},onSelectChange:function(b,e,d,h){var g=this,j,c,a;if(e){j=g.nextSelection;c="select"}else{j=g.lastSelection||g.noSelection;c="deselect"}a=j.view||g.primaryView;if((d||g.fireEvent("before"+c,g,b,j.row,j.column))!==false&&h()!==false){if(e){a.onCellSelect(j);a.onCellFocus(j)}else{a.onCellDeselect(j);delete g.selection}if(!d){g.fireEvent(c,g,b,j.row,j.column)}}},onKeyTab:function(d,b){var c=this,g=c.getCurrentPosition(),a;if(g){a=g.view.editingPlugin;if(a&&c.wasEditing){c.onEditorTab(a,d)}else{c.move(d.shiftKey?"left":"right",d)}}},onEditorTab:function(b,g){var c=this,d=g.shiftKey?"left":"right",a=c.move(d,g);if(a){if(b.startEdit(a.row,a.column)){c.wasEditing=false}else{c.wasEditing=true;if(!a.columnHeader.dataIndex){c.onEditorTab(b,g)}}}},refresh:function(){var b=this.getCurrentPosition(),a;if(b&&(a=this.store.indexOf(this.selected.last()))!==-1){b.row=a}},onColumnMove:function(d,e,b,c){var a=d.up("tablepanel");if(a){this.onViewRefresh(a.view)}},onUpdate:function(a){var b=this,c;if(b.isSelected(a)){c=b.selecting?b.nextSelection:b.selection;b.view.onCellSelect(c)}},onViewRefresh:function(b){var c=this,g=c.getCurrentPosition(),e=b.headerCt,a,d;if(g&&g.view===b){a=g.record;d=g.columnHeader;if(!d.isDescendantOf(e)){d=e.queryById(d.id)||e.down('[text="'+d.text+'"]')||e.down('[dataIndex="'+d.dataIndex+'"]')}if(d&&b.store.indexOfId(a.getId())!==-1){c.setCurrentPosition({row:a,column:d,view:b})}}},selectByPosition:function(a){this.setCurrentPosition(a)}},function(){var a=this.prototype.Selection=function(b){this.model=b;this.view=b.primaryView};a.prototype.setPosition=function(d,b){var c=this;if(arguments.length===1){if(d.view){c.view=d.view}b=d.column;d=d.row}c.setRow(d);c.setColumn(b);return c};a.prototype.setRow=function(c){var b=this;if(c!==undefined){if(typeof c==="number"){b.row=Math.max(Math.min(c,b.view.store.getCount()-1),0);b.record=b.view.store.getAt(c)}else{if(c.isModel){b.record=c;b.row=b.view.indexOf(c)}else{if(c.tagName){b.record=b.view.getRecord(c);b.row=b.view.indexOf(b.record)}}}}};a.prototype.setColumn=function(b){var c=this;if(b!==undefined){if(typeof b==="number"){c.column=b;c.columnHeader=c.view.getHeaderAtIndex(b)}else{if(b.isHeader){c.columnHeader=b;c.column=b.getIndex()}}}}});Ext.define("Ext.selection.RowModel",{extend:Ext.selection.Model,alias:"selection.rowmodel",deltaScroll:5,enableKeyNav:true,ignoreRightMouseSelection:false,constructor:function(){this.addEvents("beforedeselect","beforeselect","deselect","select");this.views=[];this.callParent(arguments)},bindComponent:function(a){var b=this;b.views=b.views||[];b.views.push(a);b.bindStore(a.getStore(),true);a.on({itemmousedown:b.onRowMouseDown,itemclick:b.onRowClick,scope:b});if(b.enableKeyNav){b.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a,ignoreInputFields:true,eventName:"itemkeydown",processEvent:function(d,c,h,e,g){g.record=c;g.recordIndex=e;return g},up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,pageDown:b.onKeyPageDown,pageUp:b.onKeyPageUp,home:b.onKeyHome,end:b.onKeyEnd,space:b.onKeySpace,enter:b.onKeyEnter,scope:b})},onUpdate:function(b){var d=this,a=d.view,c;if(a&&d.isSelected(b)){c=a.indexOf(b);a.onRowSelect(c);if(b===d.lastFocused){a.onRowFocus(c,true)}}},getRowsVisible:function(){var e=false,a=this.views[0],d=a.all.first(),b,c;if(d){b=d.getHeight();c=a.el.getHeight();e=Math.floor(c/b)}return e},onKeyEnd:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(b.store.getCount()-1,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(a.all.getCount()-1))}},onKeyHome:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(0,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(0))}},onKeyPageUp:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.max(g.recordIndex-h,0);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl)).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,-h);d.afterKeyNavigate(g,b)}}},onKeyPageDown:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.min(g.recordIndex+h,d.store.getCount()-1);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl)).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,h);d.afterKeyNavigate(g,b)}}},onKeySpace:function(b){var a=this.lastFocused;if(a){this.afterKeyNavigate(b,a)}},onKeyEnter:Ext.emptyFn,onKeyUp:function(b){var a=this.views[0].walkRecs(b.record,-1);if(a){this.afterKeyNavigate(b,a)}},onKeyDown:function(b){var a=this.views[0].walkRecs(b.record,1);if(a){this.afterKeyNavigate(b,a)}},afterBufferedScrollTo:function(b,a){this.afterKeyNavigate(this.lastKeyEvent,a)},scrollByDeltaX:function(d){var a=this.views[0],c=a.up(),b=c.horizontalScroller;if(b){b.scrollByDeltaX(d)}},onKeyLeft:function(a){this.scrollByDeltaX(-this.deltaScroll)},onKeyRight:function(a){this.scrollByDeltaX(this.deltaScroll)},onRowMouseDown:function(b,a,g,c,h){var d=this;if(c!==-1){if(!d.allowRightMouseSelection(h)){return}if(!d.isSelected(a)){d.mousedownAction=true;d.processSelection(b,a,g,c,h)}else{d.mousedownAction=false}}},processSelection:function(b,a,d,c,g){this.selectWithEvent(a,g)},onRowClick:function(b,a,d,c,g){if(this.mousedownAction){this.mousedownAction=false}else{this.processSelection(b,a,d,c,g)}},allowRightMouseSelection:function(a){var b=this.ignoreRightMouseSelection&&a.button!==0;if(b){b=this.hasSelection()}return !b},onSelectChange:function(g,c,k,a){var j=this,l=j.views,d=l.length,b=l[0].indexOf(g),h=c?"select":"deselect",e=0;if((k||j.fireEvent("before"+h,j,g,b))!==false&&a()!==false){for(;e<d;e++){if(c){l[e].onRowSelect(b,k)}else{l[e].onRowDeselect(b,k)}}if(!k){j.fireEvent(h,j,g,b)}}},onLastFocusChanged:function(h,c,b){var a=this.views,g=a.length,e,d=0;if(h){e=a[0].indexOf(h);if(e!=-1){for(;d<g;d++){a[d].onRowFocus(e,false)}}}if(c){e=a[0].indexOf(c);if(e!=-1){for(d=0;d<g;d++){a[d].onRowFocus(e,true,b)}}}this.callParent(arguments)},onEditorTab:function(d,j){var g=this,c=g.views[0],b=d.getActiveRecord(),k=d.getActiveColumn(),a=c.getPosition(b,k),h=j.shiftKey?"left":"right";do{a=c.walkCells(a,h,j,g.preventWrap)}while(a&&(!c.headerCt.getHeaderAtIndex(a.column).getEditor(b)||!d.startEditByPosition(a)))},getCurrentPosition:function(){var a=this.selected.items[0];if(a){return{row:this.store.indexOf(a),column:0}}},selectByPosition:function(a){var b=this.store.getAt(a.row);this.select(b)},selectNext:function(h,c){var g=this,b=g.store,e=g.getSelection(),a=e[e.length-1],d=g.views[0].indexOf(a)+1,j;if(d===b.getCount()||d===0){j=false}else{g.doSelect(d,h,c);j=true}return j},selectPrevious:function(g,b){var e=this,d=e.getSelection(),a=d[0],c=e.views[0].indexOf(a)-1,h;if(c<0){h=false}else{e.doSelect(c,g,b);h=true}return h},isRowSelected:function(a,b){return this.isSelected(a)}});Ext.define("Ext.selection.CheckboxModel",{alias:"selection.checkboxmodel",extend:Ext.selection.RowModel,mode:"MULTI",injectCheckbox:0,checkOnly:false,showHeaderCheckbox:undefined,checkSelector:"."+Ext.baseCSSPrefix+"grid-row-checker",headerWidth:24,checkerOnCls:Ext.baseCSSPrefix+"grid-hd-checker-on",constructor:function(){var a=this;a.callParent(arguments);if(a.mode==="SINGLE"&&a.showHeaderCheckbox!==true){a.showHeaderCheckbox=false}},beforeViewRender:function(c){var d=this,b=d.views,a;d.callParent(arguments);if(Ext.Array.indexOf(b,c)===-1){b.push(c)}if(!d.hasLockedHeader()||c.headerCt.lockedCt){if(d.showHeaderCheckbox!==false){c.headerCt.on("headerclick",d.onHeaderClick,d)}d.addCheckbox(c,true);a=c.ownerCt;if(c.headerCt.lockedCt){a=a.ownerCt}d.mon(a,"reconfigure",d.onReconfigure,d)}},bindComponent:function(a){var b=this;b.sortable=false;b.callParent(arguments)},hasLockedHeader:function(){var a=this.views,c=a.length,b;for(b=0;b<c;b++){if(a[b].headerCt.lockedCt){return true}}return false},addCheckbox:function(a,b){var c=this,d=c.injectCheckbox,e=a.headerCt;if(d!==false){if(d=="first"){d=0}else{if(d=="last"){d=e.getColumnCount()}}Ext.suspendLayouts();if(a.getStore().buffered){c.showHeaderCheckbox=false}e.add(d,c.getHeaderConfig());Ext.resumeLayouts()}if(b!==true){a.refresh()}},onReconfigure:function(c,a,b){if(b){this.addCheckbox(this.views[0])}},toggleUiHeader:function(e){var b=this.views[0],d=b.headerCt,c=d.child("gridcolumn[isCheckerHd]"),a=this.checkerOnCls;if(c){if(e){c.addCls(a)}else{c.removeCls(a)}}},onHeaderClick:function(c,g,b){if(g.isCheckerHd){b.stopEvent();var a=this,d=g.el.hasCls(Ext.baseCSSPrefix+"grid-hd-checker-on");a.preventFocus=true;if(d){a.deselectAll()}else{a.selectAll()}delete a.preventFocus}},getHeaderConfig:function(){var a=this,b=a.showHeaderCheckbox!==false;return{isCheckerHd:b,text:"&#160;",width:a.headerWidth,sortable:false,draggable:false,resizable:false,hideable:false,menuDisabled:true,dataIndex:"",cls:b?Ext.baseCSSPrefix+"column-header-checkbox ":"",renderer:Ext.Function.bind(a.renderer,a),editRenderer:a.editRenderer||a.renderEmpty,locked:a.hasLockedHeader()}},renderEmpty:function(){return"&#160;"},refresh:function(){this.callParent(arguments);this.updateHeaderState()},renderer:function(h,c,b,j,e,d,a){var g=Ext.baseCSSPrefix;c.tdCls=g+"grid-cell-special "+g+"grid-cell-row-checker";return'<div class="'+g+'grid-row-checker">&#160;</div>'},processSelection:function(b,a,h,d,j){var g=this,c=j.getTarget(g.checkSelector),k;if(g.checkOnly&&!c){return}if(c){k=g.getSelectionMode();if(k!=="SINGLE"){g.setSelectionMode("SIMPLE")}g.selectWithEvent(a,j);g.setSelectionMode(k)}else{g.selectWithEvent(a,j)}},onSelectChange:function(){this.callParent(arguments);if(!this.bulkChange){this.updateHeaderState()}},onStoreLoad:function(){this.callParent(arguments);this.updateHeaderState()},onStoreAdd:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRemove:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRefresh:function(){this.callParent(arguments);this.updateHeaderState()},maybeFireSelectionChange:function(a){if(a&&!this.bulkChange){this.updateHeaderState()}this.callParent(arguments)},updateHeaderState:function(){var g=this,h=g.store,e=h.getCount(),j=g.views,k=false,a=0,b,d,c;if(!h.buffered&&e>0){b=g.selected;k=true;for(c=0,d=b.getCount();c<d;++c){if(!g.storeHasSelected(b.getAt(c))){break}++a}k=e===a}if(j&&j.length){g.toggleUiHeader(k)}}});Ext.define("Ext.selection.TreeModel",{extend:Ext.selection.RowModel,alias:"selection.treemodel",constructor:function(a){this.callParent(arguments);if(this.pruneRemoved){this.pruneRemoved=false;this.pruneRemovedNodes=true}},bindStore:function(a,b){var c=this;c.callParent(arguments);if(c.pruneRemovedNodes){c.view.mon(c.treeStore,{remove:c.onNodeRemove,scope:c})}},onNodeRemove:function(b,c,a){if(!a){this.deselectDeletedRecords([c])}},onKeyRight:function(d,b){var c=this.getLastFocused(),a=this.view;if(c){if(c.isExpanded()){this.onKeyDown(d,b)}else{if(c.isExpandable()){if(!a.isTreeView){a=a.lockingPartner}a.expand(c)}}}},onKeyLeft:function(h,c){var d=this,g=this.getLastFocused(),b=this.view,a;if(g){a=g.parentNode;if(g.isExpanded()){if(!b.isTreeView){b=b.lockingPartner}b.collapse(g)}else{if(a&&!a.isRoot()){if(h.shiftKey){d.selectRange(a,g,h.ctrlKey,"up");d.setLastFocused(a)}else{if(h.ctrlKey){d.setLastFocused(a)}else{d.select(a)}}}}}},onKeySpace:function(b,a){if(b.record.data.checked!=null){this.toggleCheck(b)}else{this.callParent(arguments)}},onKeyEnter:function(b,a){if(b.record.data.checked!=null){this.toggleCheck(b)}else{this.callParent(arguments)}},toggleCheck:function(c){var a=this.view,b=this.getLastSelected();c.stopEvent();if(b){if(!a.isTreeView){a=a.lockingPartner}a.onCheckChange(b)}}});Ext.define("Ext.slider.Single",{extend:Ext.slider.Multi,alias:["widget.slider","widget.sliderfield"],alternateClassName:["Ext.Slider","Ext.form.SliderField","Ext.slider.SingleSlider","Ext.slider.Slider"],getValue:function(){return this.callParent([0])},setValue:function(d,b){var c=arguments,a=c.length;if(a==1||a<=3&&typeof c[1]!="number"){c=Ext.toArray(c);c.unshift(0)}return this.callParent(c)},getNearest:function(){return this.thumbs[0]}});Ext.define("Ext.state.CookieProvider",{extend:Ext.state.Provider,constructor:function(a){var b=this;b.path="/";b.expires=new Date((new Date).getTime()+1000*60*60*24*7);b.domain=null;b.secure=false;b.callParent(arguments);b.state=b.readCookies()},set:function(a,c){var b=this;if(typeof c=="undefined"||c===null){b.clear(a);return}b.setCookie(a,c);b.callParent(arguments)},clear:function(a){this.clearCookie(a);this.callParent(arguments)},readCookies:function(){var e={},k=document.cookie+";",d=/\s?(.*?)=(.*?);/g,j=this.prefix,a=j.length,h,b,g;while((h=d.exec(k))!=null){b=h[1];g=h[2];if(b&&b.substring(0,a)==j){e[b.substr(a)]=this.decodeValue(g)}}return e},setCookie:function(a,c){var b=this;document.cookie=b.prefix+a+"="+b.encodeValue(c)+(b.expires==null?"":"; expires="+b.expires.toGMTString())+(b.path==null?"":"; path="+b.path)+(b.domain==null?"":"; domain="+b.domain)+(b.secure==true?"; secure":"")},clearCookie:function(a){var b=this;document.cookie=b.prefix+a+"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"+(b.path==null?"":"; path="+b.path)+(b.domain==null?"":"; domain="+b.domain)+(b.secure==true?"; secure":"")}});Ext.define("Ext.state.LocalStorageProvider",{extend:Ext.state.Provider,alias:"state.localstorage",constructor:function(){var a=this;a.callParent(arguments);a.store=a.getStorageObject();if(a.store){a.state=a.readLocalStorage()}else{a.state={}}},readLocalStorage:function(){var c=this.store,e=0,a=c.length,h=this.prefix,b=h.length,g={},d;for(;e<a;++e){d=c.key(e);if(d.substring(0,b)==h){g[d.substr(b)]=this.decodeValue(c.getItem(d))}}return g},set:function(a,c){var b=this;b.clear(a);if(typeof c=="undefined"||c===null){return}b.store.setItem(b.prefix+a,b.encodeValue(c));b.callParent(arguments)},clear:function(a){this.store.removeItem(this.prefix+a);this.callParent(arguments)},getStorageObject:function(){if(Ext.supports.LocalStorage){return window.localStorage}return false}});Ext.define("Ext.tab.Panel",{extend:Ext.panel.Panel,alias:"widget.tabpanel",alternateClassName:["Ext.TabPanel"],tabPosition:"top",removePanelHeader:true,plain:false,itemCls:Ext.baseCSSPrefix+"tabpanel-child",minTabWidth:undefined,maxTabWidth:undefined,deferredRender:true,initComponent:function(){var d=this,c=[].concat(d.dockedItems||[]),a=d.activeTab||(d.activeTab=0),b=d.tabPosition;d.layout=new Ext.layout.container.Card(Ext.apply({owner:d,deferredRender:d.deferredRender,itemCls:d.itemCls,activeItem:a},d.layout));d.tabBar=new Ext.tab.Bar(Ext.apply({dock:d.tabPosition,orientation:b=="top"||b=="bottom"?"horizontal":"vertical",plain:d.plain,cardLayout:d.layout,tabPanel:d},d.tabBar));c.push(d.tabBar);d.dockedItems=c;d.addEvents("beforetabchange","tabchange");d.callParent(arguments);a=d.activeTab=d.getComponent(a);if(a){d.tabBar.setActiveTab(a.tab,true)}},setActiveTab:function(a){var c=this,b;a=c.getComponent(a);if(a){b=c.getActiveTab();if(b!==a&&c.fireEvent("beforetabchange",c,a,b)===false){return false}if(!a.isComponent){Ext.suspendLayouts();a=c.add(a);Ext.resumeLayouts()}c.activeTab=a;Ext.suspendLayouts();c.layout.setActiveItem(a);a=c.activeTab=c.layout.getActiveItem();if(a&&a!==b){c.tabBar.setActiveTab(a.tab);Ext.resumeLayouts(true);if(b!==a){c.fireEvent("tabchange",c,a,b)}}else{Ext.resumeLayouts(true)}return a}},getActiveTab:function(){var b=this,a=b.getComponent(b.activeTab);if(a&&b.items.indexOf(a)!=-1){b.activeTab=a}else{b.activeTab=null}return b.activeTab},getTabBar:function(){return this.tabBar},onAdd:function(e,c){var d=this,b=e.tabConfig||{},a={xtype:"tab",card:e,disabled:e.disabled,closable:e.closable,hidden:e.hidden&&!e.hiddenByLayout,tooltip:e.tooltip,tabBar:d.tabBar,position:d.tabPosition,closeText:e.closeText};b=Ext.applyIf(b,a);e.tab=d.tabBar.insert(c,b);e.on({scope:d,enable:d.onItemEnable,disable:d.onItemDisable,beforeshow:d.onItemBeforeShow,iconchange:d.onItemIconChange,iconclschange:d.onItemIconClsChange,titlechange:d.onItemTitleChange});if(e.isPanel){if(d.removePanelHeader){if(e.rendered){if(e.header){e.header.hide()}}else{e.header=false}}if(e.isPanel&&d.border){e.setBorder(false)}}},onItemEnable:function(a){a.tab.enable()},onItemDisable:function(a){a.tab.disable()},onItemBeforeShow:function(a){if(a!==this.activeTab){this.setActiveTab(a);return false}},onItemIconChange:function(b,a){b.tab.setIcon(a)},onItemIconClsChange:function(b,a){b.tab.setIconCls(a)},onItemTitleChange:function(a,b){a.tab.setText(b)},doRemove:function(d,b){var c=this,a;if(c.destroying||c.items.getCount()==1){c.activeTab=null}else{if((a=c.tabBar.items.indexOf(c.tabBar.findNextActivatable(d.tab)))!==-1){c.setActiveTab(a)}}this.callParent(arguments);delete d.tab.card;delete d.tab},onRemove:function(b,c){var a=this;b.un({scope:a,enable:a.onItemEnable,disable:a.onItemDisable,beforeshow:a.onItemBeforeShow});if(!a.destroying&&b.tab.ownerCt===a.tabBar){a.tabBar.remove(b.tab)}}});Ext.define("Ext.toolbar.Spacer",{extend:Ext.Component,alias:"widget.tbspacer",alternateClassName:"Ext.Toolbar.Spacer",baseCls:Ext.baseCSSPrefix+"toolbar-spacer",focusable:false});Ext.define("Ext.tree.Panel",{extend:Ext.panel.Table,alias:"widget.treepanel",alternateClassName:["Ext.tree.TreePanel","Ext.TreePanel"],viewType:"treeview",selType:"treemodel",treeCls:Ext.baseCSSPrefix+"tree-panel",deferRowRender:false,rowLines:false,lines:true,useArrows:false,singleExpand:false,ddConfig:{enableDrag:true,enableDrop:true},rootVisible:true,displayField:"text",root:null,normalCfgCopy:["displayField","root","singleExpand","useArrows","lines","rootVisible","scroll"],lockedCfgCopy:["displayField","root","singleExpand","useArrows","lines","rootVisible"],isTree:true,arrowCls:Ext.baseCSSPrefix+"tree-arrows",linesCls:Ext.baseCSSPrefix+"tree-lines",noLinesCls:Ext.baseCSSPrefix+"tree-no-lines",autoWidthCls:Ext.baseCSSPrefix+"autowidth-table",constructor:function(a){a=a||{};if(a.animate===undefined){a.animate=Ext.isDefined(this.animate)?this.animate:Ext.enableFx}this.enableAnimations=a.animate;delete a.animate;this.callParent([a])},initComponent:function(){var d=this,b=[d.treeCls],c=d.store,a;if(d.useArrows){b.push(d.arrowCls);d.lines=false}if(d.lines){b.push(d.linesCls)}else{if(!d.useArrows){b.push(d.noLinesCls)}}if(Ext.isString(c)){c=d.store=Ext.StoreMgr.lookup(c)}else{if(!c||Ext.isObject(c)&&!c.isStore){c=d.store=new Ext.data.TreeStore(Ext.apply({root:d.root,fields:d.fields,model:d.model,folderSort:d.folderSort},c))}else{if(d.root){c=d.store=Ext.data.StoreManager.lookup(c);c.setRootNode(d.root);if(d.folderSort!==undefined){c.folderSort=d.folderSort;c.sort()}}}}d.viewConfig=Ext.apply({rootVisible:d.rootVisible,animate:d.enableAnimations,singleExpand:d.singleExpand,node:c.getRootNode(),hideHeaders:d.hideHeaders},d.viewConfig);if(!d.columns){if(d.initialConfig.hideHeaders===undefined){d.hideHeaders=true}d.addCls(d.autoWidthCls);d.columns=[{xtype:"treecolumn",text:"Name",width:Ext.isIE6?"100%":10000,dataIndex:d.displayField}]}if(d.cls){b.push(d.cls)}d.cls=b.join(" ");d.callParent();d.selModel.treeStore=d.store;a=d.getView();d.relayEvents(a,["checkchange","afteritemexpand","afteritemcollapse"]);if(!a.isLockingView){if(!a.rootVisible&&!d.getRootNode()){d.setRootNode({expanded:true})}}},bindStore:function(a){var b=this;b.store=a;b.storeListeners=b.mon(a,{destroyable:true,load:b.onStoreLoad,rootchange:b.onRootChange,clear:b.onClear,scope:b});b.storeRelayers=b.relayEvents(a,["beforeload","load"]);b.storeRelayers1=b.mon(a,{destroyable:true,append:b.createRelayer("itemappend"),remove:b.createRelayer("itemremove"),move:b.createRelayer("itemmove",[0,4]),insert:b.createRelayer("iteminsert"),beforeappend:b.createRelayer("beforeitemappend"),beforeremove:b.createRelayer("beforeitemremove"),beforemove:b.createRelayer("beforeitemmove"),beforeinsert:b.createRelayer("beforeiteminsert"),expand:b.createRelayer("itemexpand",[0,1]),collapse:b.createRelayer("itemcollapse",[0,1]),beforeexpand:b.createRelayer("beforeitemexpand",[0,1]),beforecollapse:b.createRelayer("beforeitemcollapse",[0,1])});a.ownerTree=b},unbindStore:function(){var b=this,a=b.store;if(a){Ext.destroy(b.storeListeners,b.storeRelayers,b.storeRelayers1);delete a.ownerTree}},onClear:function(){this.view.onClear()},setRootNode:function(){return this.store.setRootNode.apply(this.store,arguments)},getRootNode:function(){return this.store.getRootNode()},onRootChange:function(a){this.view.setRootNode(a)},getChecked:function(){return this.getView().getChecked()},isItemChecked:function(a){return a.get("checked")},expandNode:function(b,a,d,c){return this.getView().expand(b,a,d,c||this)},collapseNode:function(b,a,d,c){return this.getView().collapse(b,a,d,c||this)},expandAll:function(e,c){var d=this,a=d.getRootNode(),b=d.enableAnimations;if(a){if(!b){Ext.suspendLayouts()}a.expand(true,e,c||d);if(!b){Ext.resumeLayouts(true)}}},collapseAll:function(g,d){var e=this,b=e.getRootNode(),c=e.enableAnimations,a=e.getView();if(b){if(!c){Ext.suspendLayouts()}d=d||e;if(a.rootVisible){b.collapse(true,g,d)}else{b.collapseChildren(true,g,d)}if(!c){Ext.resumeLayouts(true)}}},expandPath:function(m,g,a,h,l){var d=this,c=d.getRootNode(),b=1,e=d.getView(),k,j;g=g||d.getRootNode().idProperty;a=a||"/";if(Ext.isEmpty(m)){Ext.callback(h,l||d,[false,null]);return}k=m.split(a);if(c.get(g)!=k[1]){Ext.callback(h,l||d,[false,c]);return}j=function(){if(++b===k.length){Ext.callback(h,l||d,[true,c]);return}var n=c.findChild(g,k[b]);if(!n){Ext.callback(h,l||d,[false,c]);return}c=n;c.expand(false,j)};c.expand(false,j)},selectPath:function(k,d,a,g,j){var b=this,c,h,e;d=d||b.getRootNode().idProperty;a=a||"/";h=k.split(a);e=h.pop();if(h.length>1){b.expandPath(h.join(a),d,a,function(n,m){var l=m;if(n&&m){m=m.findChild(d,e);if(m){b.getSelectionModel().select(m);Ext.callback(g,j||b,[true,m]);return}}Ext.callback(g,j||b,[false,l])},b)}else{c=b.getRootNode();if(c.getId()===e){b.getSelectionModel().select(c);Ext.callback(g,j||b,[true,c])}else{Ext.callback(g,j||b,[false,null])}}}});Ext.define("Ext.view.DragZone",{extend:Ext.dd.DragZone,containerScroll:false,constructor:function(b){var e=this,a,d,c;Ext.apply(e,b);if(!e.ddGroup){e.ddGroup="view-dd-zone-"+e.view.id}a=e.view;d=a.ownerCt;if(d){c=d.getTargetEl().dom}else{c=a.el.dom.parentNode}e.callParent([c]);e.ddel=Ext.get(document.createElement("div"));e.ddel.addCls(Ext.baseCSSPrefix+"grid-dd-wrap")},init:function(c,a,b){this.initTarget(c,a,b);this.view.mon(this.view,{itemmousedown:this.onItemMouseDown,scope:this})},onValidDrop:function(b,a,c){this.callParent();b.el.focus()},onItemMouseDown:function(b,a,d,c,g){if(!this.isPreventDrag(g,a,d,c)){this.view.focus();this.handleMouseDown(g)}},isPreventDrag:function(a){return false},getDragData:function(c){var a=this.view,b=c.getTarget(a.getItemSelector());if(b){return{copy:a.copy||a.allowCopy&&c.ctrlKey,event:new Ext.EventObjectImpl(c),view:a,ddel:this.ddel,item:b,records:a.getSelectionModel().getSelection(),fromPosition:Ext.fly(b).getXY()}}},onInitDrag:function(b,h){var e=this,g=e.dragData,d=g.view,a=d.getSelectionModel(),c=d.getRecord(g.item);if(!a.isSelected(c)){a.select(c,true)}g.records=a.getSelection();e.ddel.update(e.getDragText());e.proxy.update(e.ddel.dom);e.onStartDrag(b,h);return true},getDragText:function(){var a=this.dragData.records.length;return Ext.String.format(this.dragText,a,a==1?"":"s")},getRepairXY:function(b,a){return a?a.fromPosition:false}});Ext.define("Ext.tree.ViewDragZone",{extend:Ext.view.DragZone,isPreventDrag:function(b,a){return a.get("allowDrag")===false||!!b.getTarget(this.view.expanderSelector)},getDragText:function(){var a=this.dragData.records,b=a.length,d=a[0].get(this.displayField),c="s";if(b===1&&d){return d}else{if(!d){c=""}}return Ext.String.format(this.dragText,b,c)},afterRepair:function(){var h=this,a=h.view,j=a.selectedItemCls,b=h.dragData.records,g,e=b.length,c=Ext.fly,d;if(Ext.enableFx&&h.repairHighlight){for(g=0;g<e;g++){d=a.getNode(b[g]);c(d.firstChild).highlight(h.repairHighlightColor,{listeners:{beforeanimate:function(){if(a.isSelected(d)){c(d).removeCls(j)}},afteranimate:function(){if(a.isSelected(d)){c(d).addCls(j)}}}})}}h.dragging=false}});Ext.define("Ext.tree.ViewDropZone",{extend:Ext.view.DropZone,allowParentInserts:false,allowContainerDrops:false,appendOnly:false,expandDelay:500,indicatorCls:Ext.baseCSSPrefix+"tree-ddindicator",expandNode:function(b){var a=this.view;this.expandProcId=false;if(!b.isLeaf()&&!b.isExpanded()){a.expand(b);this.expandProcId=false}},queueExpand:function(a){this.expandProcId=Ext.Function.defer(this.expandNode,this.expandDelay,this,[a])},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false}},getPosition:function(g,b){var k=this.view,c=k.getRecord(b),h=g.getPageY(),l=c.isLeaf(),a=false,j=Ext.fly(b).getRegion(),d;if(c.isRoot()){return"append"}if(this.appendOnly){return l?false:"append"}if(!this.allowParentInserts){a=c.hasChildNodes()&&c.isExpanded()}d=(j.bottom-j.top)/(l?2:3);if(h>=j.top&&h<j.top+d){return"before"}else{if(!a&&(l||h>=j.bottom-d&&h<=j.bottom)){return"after"}else{return"append"}}},isValidDropPoint:function(b,j,n,k,g){if(!b||!g.item){return false}var o=this.view,l=o.getRecord(b),d=g.records,a=d.length,m=d.length,c,h;if(!(l&&j&&a)){return false}for(c=0;c<m;c++){h=d[c];if(h.isNode&&h.contains(l)){return false}}if(j==="append"&&l.get("allowDrop")===false){return false}else{if(j!="append"&&l.parentNode.get("allowDrop")===false){return false}}if(Ext.Array.contains(d,l)){return false}return o.fireEvent("nodedragover",l,j,g,k)!==false},onNodeOver:function(a,j,g,c){var d=this.getPosition(g,a),b=this.dropNotAllowed,k=this.view,h=k.getRecord(a),l=this.getIndicator(),m=0;this.cancelExpand();if(d=="append"&&!this.expandProcId&&!Ext.Array.contains(c.records,h)&&!h.isLeaf()&&!h.isExpanded()){this.queueExpand(h)}if(this.isValidDropPoint(a,d,j,g,c)){this.valid=true;this.currentPosition=d;this.overRecord=h;l.setWidth(Ext.fly(a).getWidth());m=Ext.fly(a).getY()-Ext.fly(k.el).getY()-1;if(d=="before"){b=h.isFirst()?Ext.baseCSSPrefix+"tree-drop-ok-above":Ext.baseCSSPrefix+"tree-drop-ok-between";l.showAt(0,m);j.proxy.show()}else{if(d=="after"){b=h.isLast()?Ext.baseCSSPrefix+"tree-drop-ok-below":Ext.baseCSSPrefix+"tree-drop-ok-between";m+=Ext.fly(a).getHeight();l.showAt(0,m);j.proxy.show()}else{b=Ext.baseCSSPrefix+"tree-drop-ok-append";l.hide()}}}else{this.valid=false}this.currentCls=b;return b},onNodeOut:function(d,a,c,b){this.valid=false;this.getIndicator().hide()},onContainerOver:function(a,c,b){return c.getTarget("."+this.indicatorCls)?this.currentCls:this.dropNotAllowed},notifyOut:function(){this.callParent(arguments);this.cancelExpand()},handleNodeDrop:function(g,n,j){var p=this,a=p.view,k=n?n.parentNode:a.panel.getRootNode(),b=a.getStore().treeStore.model,c,e,m,h,d,l,o,q;if(g.copy){c=g.records;g.records=[];for(e=0,m=c.length;e<m;e++){h=c[e];if(h.isNode){g.records.push(h.copy(undefined,true))}else{g.records.push(new b(h[h.persistenceProperty],h.getId()))}}}p.cancelExpand();if(j=="before"){d=k.insertBefore;l=[null,n];n=k}else{if(j=="after"){if(n.nextSibling){d=k.insertBefore;l=[null,n.nextSibling]}else{d=k.appendChild;l=[null]}n=k}else{if(!(n.isExpanded()||n.isLoading())){o=true}d=n.appendChild;l=[null]}}q=function(){var s,t;Ext.suspendLayouts();a.getSelectionModel().clearSelections();for(e=0,m=g.records.length;e<m;e++){l[0]=g.records[e];d.apply(n,l)}if(p.sortOnDrop){n.sort(n.getOwnerTree().store.generateComparator())}Ext.resumeLayouts(true);if(Ext.enableFx&&p.dropHighlight){s=p.dropHighlightColor;for(e=0;e<m;e++){t=a.getNode(g.records[e]);if(t){Ext.fly(t).highlight(s)}}}};if(o){n.expand(false,q)}else{if(n.isLoading()){n.on({expand:q,delay:1,single:true})}else{q()}}}});Ext.define("Ext.tree.plugin.TreeViewDragDrop",{extend:Ext.AbstractPlugin,alias:"plugin.treeviewdragdrop",dragText:"{0} selected node{1}",allowParentInserts:false,allowContainerDrops:false,appendOnly:false,ddGroup:"TreeDD",containerScroll:false,expandDelay:1000,enableDrop:true,enableDrag:true,nodeHighlightColor:"c3daf9",nodeHighlightOnDrop:Ext.enableFx,nodeHighlightOnRepair:Ext.enableFx,displayField:"text",init:function(a){a.on("render",this.onViewRender,this,{single:true})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onViewRender:function(a){var b=this,c;if(b.enableDrag){if(b.containerScroll){c=a.getEl()}b.dragZone=new Ext.tree.ViewDragZone({view:a,ddGroup:b.dragGroup||b.ddGroup,dragText:b.dragText,displayField:b.displayField,repairHighlightColor:b.nodeHighlightColor,repairHighlight:b.nodeHighlightOnRepair,scrollEl:c})}if(b.enableDrop){b.dropZone=new Ext.tree.ViewDropZone({view:a,ddGroup:b.dropGroup||b.ddGroup,allowContainerDrops:b.allowContainerDrops,appendOnly:b.appendOnly,allowParentInserts:b.allowParentInserts,expandDelay:b.expandDelay,dropHighlightColor:b.nodeHighlightColor,dropHighlight:b.nodeHighlightOnDrop,sortOnDrop:b.sortOnDrop,containerScroll:b.containerScroll})}}},function(){var a=this.prototype;a.nodeHighlightOnDrop=a.nodeHighlightOnRepair=Ext.enableFx});Ext.define("Ext.util.Cookies",{singleton:true,set:function(c,e){var a=arguments,j=arguments.length,b=j>2?a[2]:null,h=j>3?a[3]:"/",d=j>4?a[4]:null,g=j>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+"=",g=b.length,a=document.cookie.length,e=0,c=0;while(e<a){c=e+g;if(document.cookie.substring(e,c)==b){return this.getCookieVal(c)}e=document.cookie.indexOf(" ",e)+1;if(e===0){break}}return null},clear:function(a,b){if(this.get(a)){b=b||"/";document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT; path="+b}},getCookieVal:function(b){var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}return unescape(document.cookie.substring(b,a))}});Ext.define("Ext.util.Grouper",{extend:Ext.util.Sorter,isGrouper:true,getGroupString:function(a){return a.get(this.property)}});Ext.define("Ext.util.History",{singleton:true,alternateClassName:"Ext.History",mixins:{observable:Ext.util.Observable},useTopWindow:true,fieldId:Ext.baseCSSPrefix+"history-field",iframeId:Ext.baseCSSPrefix+"history-frame",constructor:function(){var a=this;a.oldIEMode=Ext.isIE7m||!Ext.isStrict&&Ext.isIE8;a.iframe=null;a.hiddenField=null;a.ready=false;a.currentToken=null;a.mixins.observable.constructor.call(a)},getHash:function(){var a=window.location.href,b=a.indexOf("#");return b>=0?a.substr(b+1):null},setHash:function(d){var a=this,c=a.useTopWindow?window.top:window;try{c.location.hash=d}catch(b){}},doSave:function(){this.hiddenField.value=this.currentToken},handleStateChange:function(a){this.currentToken=a;this.fireEvent("change",a)},updateIFrame:function(b){var a='<html><body><div id="state">'+Ext.util.Format.htmlEncode(b)+"</div></body></html>",d;try{d=this.iframe.contentWindow.document;d.open();d.write(a);d.close();return true}catch(c){return false}},checkIFrame:function(){var d=this,b=d.iframe.contentWindow,e,c,a,g;if(!b||!b.document){Ext.Function.defer(this.checkIFrame,10,this);return}e=b.document;c=e.getElementById("state");a=c?c.innerText:null;g=d.getHash();Ext.TaskManager.start({run:function(){var l=b.document,k=l.getElementById("state"),h=k?k.innerText:null,j=d.getHash();if(h!==a){a=h;d.handleStateChange(h);d.setHash(h);g=h;d.doSave()}else{if(j!==g){g=j;d.updateIFrame(j)}}},interval:50,scope:d});d.ready=true;d.fireEvent("ready",d)},startUp:function(){var a=this,b;a.currentToken=a.hiddenField.value||this.getHash();if(a.oldIEMode){a.checkIFrame()}else{b=a.getHash();Ext.TaskManager.start({run:function(){var c=a.getHash();if(c!==b){b=c;a.handleStateChange(b);a.doSave()}},interval:50,scope:a});a.ready=true;a.fireEvent("ready",a)}},init:function(d,b){var c=this,a=Ext.DomHelper;if(c.ready){Ext.callback(d,b,[c]);return}if(!Ext.isReady){Ext.onReady(function(){c.init(d,b)});return}c.hiddenField=Ext.getDom(c.fieldId);if(!c.hiddenField){c.hiddenField=Ext.getBody().createChild({id:Ext.id(),tag:"form",cls:Ext.baseCSSPrefix+"hide-display",children:[{tag:"input",type:"hidden",id:c.fieldId}]},false,true).firstChild}if(c.oldIEMode){c.iframe=Ext.getDom(c.iframeId);if(!c.iframe){c.iframe=a.append(c.hiddenField.parentNode,{tag:"iframe",id:c.iframeId,src:Ext.SSL_SECURE_URL})}}c.addEvents("ready","change");if(d){c.on("ready",d,b,{single:true})}c.startUp()},add:function(a,c){var b=this;if(c!==false){if(b.getToken()===a){return true}}if(b.oldIEMode){return b.updateIFrame(a)}else{b.setHash(a);return true}},back:function(){window.history.go(-1)},forward:function(){window.history.go(1)},getToken:function(){return this.ready?this.currentToken:this.getHash()}});window.FT_I18N=window.FT_I18N||{};window.FT_I18N.MESSAGES=window.FT_I18N.MESSAGES||{};Ext.define("FT.intl",{singleton:true,debugAddPlaceholders:window.FT_I18N.DEBUG_TRANSLATIONS||false,debugMissingTranslations:window.FT_I18N.DEBUG_TRANSLATIONS||false,_getMessageFormat:function(a){return ftrackSparkLegacy.i18n.getMessageFormat(a,ftrackSparkLegacy.i18n.LOCALES)},_getDateTimeFormat:function(a){return ftrackSparkLegacy.i18n.getDateTimeFormat(ftrackSparkLegacy.i18n.LOCALES,a)},_getNumberFormat:function(a){return ftrackSparkLegacy.i18n.getNumberFormat(ftrackSparkLegacy.i18n.LOCALES,a)},_getRelativeFormat:function(a){return ftrackSparkLegacy.i18n.getRelativeFormat(ftrackSparkLegacy.i18n.LOCALES,a)},_debugTranslation:function(a){if(FT.intl.debugAddPlaceholders){return"\u2248"+a+"\u2248"}return a},message:function(c,b){if(!window.Intl){return c}b=b||{};if(!b.id){b.id=c}var d=FT_I18N.MESSAGES[b.id];if(FT.intl.debugMissingTranslations&&!d){console.warn("Missing translation for",b.id)}d=d||c||"";var e=FT.intl._getMessageFormat(d);var a=e.format(b.values);return FT.intl._debugTranslation(a)},formatDateTime:function(c,d){if(!window.Intl||!window.Intl.DateTimeFormat){return c.toString()}d=d||{};var b=FT.intl._getDateTimeFormat(d);var a=b.format(c);return FT.intl._debugTranslation(a)}});FT.i18n=FT.intl.message;Ext.define("FT.locale.Gnt.Tooltip",{override:"Gnt.Tooltip",startText:FT.i18n("Start"),endText:FT.i18n("End"),durationText:FT.i18n("Duration")});Ext.define("FT.locale.Gnt.feature.DependencyDragDrop",{override:"Gnt.feature.DependencyDragDrop",fromText:FT.i18n("From:")+" <strong>{0}</strong> {1}<br/>",toText:FT.i18n("To:")+" <strong>{0}</strong> {1}",startText:FT.i18n("Start"),endText:FT.i18n("End")});Ext.define("FT.locale.Gnt.plugin.DependencyEditorp",{override:"Gnt.plugin.DependencyEditor",fromText:FT.i18n("From"),toText:FT.i18n("To"),typeText:FT.i18n("Type"),lagText:FT.i18n("Lag"),endToStartText:FT.i18n("Finish-To-Start"),startToStartText:FT.i18n("Start-To-Start"),endToEndText:FT.i18n("Finish-To-Finish"),startToEndText:FT.i18n("Start-To-Finish")});(function(){if(window.FT_I18N.EXTJS_LOCALE!=="zh"){return}Ext.onReady(function(){var a=Ext.ClassManager,b=Ext.Function.bind(a.get,a),c;if(Ext.Updater){Ext.Updater.defaults.indicatorText='<div class="loading-indicator">\u52a0\u8f7d\u4e2d...</div>'}if(Ext.Date){Ext.Date.monthNames=["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"];Ext.Date.dayNames=["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"];Ext.Date.formatCodes.a="(this.getHours() < 12 ? '\u4e0a\u5348' : '\u4e0b\u5348')";Ext.Date.formatCodes.A="(this.getHours() < 12 ? '\u4e0a\u5348' : '\u4e0b\u5348')";c={g:1,c:"if (/(\u4e0a\u5348)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(\u4e0a\u5348|\u4e0b\u5348)",calcAtEnd:true};Ext.Date.parseCodes.a=Ext.Date.parseCodes.A=c}if(Ext.MessageBox){Ext.MessageBox.buttonText={ok:"\u786e\u5b9a",cancel:"\u53d6\u6d88",yes:"\u662f",no:"\u5426"}}if(b("Ext.util.Format")){Ext.apply(Ext.util.Format,{thousandSeparator:",",decimalSeparator:".",currencySign:"\u00a5",dateFormat:"y\u5e74m\u6708d\u65e5"})}if(b("Ext.form.field.VTypes")){Ext.apply(Ext.form.field.VTypes,{emailText:'\u8be5\u8f93\u5165\u9879\u5fc5\u987b\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740\uff0c\u683c\u5f0f\u5982\uff1a "user@example.com"',urlText:'\u8be5\u8f93\u5165\u9879\u5fc5\u987b\u662fURL\u5730\u5740\uff0c\u683c\u5f0f\u5982\uff1a "http://www.example.com"',alphaText:"\u8be5\u8f93\u5165\u9879\u53ea\u80fd\u5305\u542b\u534a\u89d2\u5b57\u6bcd\u548c_",alphanumText:"\u8be5\u8f93\u5165\u9879\u53ea\u80fd\u5305\u542b\u534a\u89d2\u5b57\u6bcd,\u6570\u5b57\u548c_"})}Ext.define("Ext.locale.zh_CN.view.View",{override:"Ext.view.View",emptyText:""});Ext.define("Ext.locale.zh_CN.grid.plugin.DragDrop",{override:"Ext.grid.plugin.DragDrop",dragText:"\u9009\u62e9\u4e86 {0} \u884c"});Ext.define("Ext.locale.zh_CN.TabPanelItem",{override:"Ext.TabPanelItem",closeText:"\u5173\u95ed\u6b64\u6807\u7b7e"});Ext.define("Ext.locale.zh_CN.form.field.Base",{override:"Ext.form.field.Base",invalidText:"\u8f93\u5165\u503c\u975e\u6cd5"});Ext.define("Ext.locale.zh_CN.view.AbstractView",{override:"Ext.view.AbstractView",msg:"\u8b80\u53d6\u4e2d..."});Ext.define("Ext.locale.zh_CN.picker.Date",{override:"Ext.picker.Date",todayText:"\u4eca\u5929",minText:"\u65e5\u671f\u5fc5\u987b\u5927\u4e8e\u6700\u5c0f\u5141\u8bb8\u65e5\u671f",maxText:"\u65e5\u671f\u5fc5\u987b\u5c0f\u4e8e\u6700\u5927\u5141\u8bb8\u65e5\u671f",disabledDaysText:"",disabledDatesText:"",monthNames:Ext.Date.monthNames,dayNames:Ext.Date.dayNames,nextText:"\u4e0b\u4e2a\u6708 (Ctrl+Right)",prevText:"\u4e0a\u4e2a\u6708 (Ctrl+Left)",monthYearText:"\u9009\u62e9\u4e00\u4e2a\u6708 (Control+Up/Down \u6765\u6539\u53d8\u5e74\u4efd)",todayTip:"{0} (\u7a7a\u683c\u952e\u9009\u62e9)",format:"y\u5e74m\u6708d\u65e5",ariaTitle:"{0}",ariaTitleDateFormat:"Y\u5e74m\u6708d\u65e5",longDayFormat:"Y\u5e74m\u6708d\u65e5",monthYearFormat:"Y\u5e74m\u6708",getDayInitial:function(d){return d.substr(d.length-1)}});Ext.define("Ext.locale.zh_CN.picker.Month",{override:"Ext.picker.Month",okText:"\u786e\u5b9a",cancelText:"\u53d6\u6d88"});Ext.define("Ext.locale.zh_CN.toolbar.Paging",{override:"Ext.PagingToolbar",beforePageText:"\u7b2c",afterPageText:"\u9875,\u5171 {0} \u9875",firstText:"\u7b2c\u4e00\u9875",prevText:"\u4e0a\u4e00\u9875",nextText:"\u4e0b\u4e00\u9875",lastText:"\u6700\u540e\u9875",refreshText:"\u5237\u65b0",displayMsg:"\u663e\u793a {0} - {1}\u6761\uff0c\u5171 {2} \u6761",emptyMsg:"\u6ca1\u6709\u6570\u636e"});Ext.define("Ext.locale.zh_CN.form.field.Text",{override:"Ext.form.field.Text",minLengthText:"\u8be5\u8f93\u5165\u9879\u7684\u6700\u5c0f\u957f\u5ea6\u662f {0} \u4e2a\u5b57\u7b26",maxLengthText:"\u8be5\u8f93\u5165\u9879\u7684\u6700\u5927\u957f\u5ea6\u662f {0} \u4e2a\u5b57\u7b26",blankText:"\u8be5\u8f93\u5165\u9879\u4e3a\u5fc5\u8f93\u9879",regexText:"",emptyText:null});Ext.define("Ext.locale.zh_CN.form.field.Number",{override:"Ext.form.field.Number",minText:"\u8be5\u8f93\u5165\u9879\u7684\u6700\u5c0f\u503c\u662f {0}",maxText:"\u8be5\u8f93\u5165\u9879\u7684\u6700\u5927\u503c\u662f {0}",nanText:"{0} \u4e0d\u662f\u6709\u6548\u6570\u503c"});Ext.define("Ext.locale.zh_CN.form.field.Date",{override:"Ext.form.field.Date",disabledDaysText:"\u7981\u7528",disabledDatesText:"\u7981\u7528",minText:"\u8be5\u8f93\u5165\u9879\u7684\u65e5\u671f\u5fc5\u987b\u5728 {0} \u4e4b\u540e",maxText:"\u8be5\u8f93\u5165\u9879\u7684\u65e5\u671f\u5fc5\u987b\u5728 {0} \u4e4b\u524d",invalidText:"{0} \u662f\u65e0\u6548\u7684\u65e5\u671f - \u5fc5\u987b\u7b26\u5408\u683c\u5f0f\uff1a {1}",format:"y\u5e74m\u6708d\u65e5"});Ext.define("Ext.locale.zh_CN.form.field.ComboBox",{override:"Ext.form.field.ComboBox",valueNotFoundText:undefined},function(){Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig,{loadingText:"\u52a0\u8f7d\u4e2d..."})});Ext.define("Ext.locale.zh_CN.form.field.HtmlEditor",{override:"Ext.form.field.HtmlEditor",createLinkText:"\u6dfb\u52a0\u8d85\u7ea7\u94fe\u63a5:"},function(){Ext.apply(Ext.form.field.HtmlEditor.prototype,{buttonTips:{bold:{title:"\u7c97\u4f53 (Ctrl+B)",text:"\u5c06\u9009\u4e2d\u7684\u6587\u5b57\u8bbe\u7f6e\u4e3a\u7c97\u4f53",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"\u659c\u4f53 (Ctrl+I)",text:"\u5c06\u9009\u4e2d\u7684\u6587\u5b57\u8bbe\u7f6e\u4e3a\u659c\u4f53",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"\u4e0b\u5212\u7ebf (Ctrl+U)",text:"\u7ed9\u6240\u9009\u6587\u5b57\u52a0\u4e0b\u5212\u7ebf",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"\u589e\u5927\u5b57\u4f53",text:"\u589e\u5927\u5b57\u53f7",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"\u7f29\u5c0f\u5b57\u4f53",text:"\u51cf\u5c0f\u5b57\u53f7",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"\u4ee5\u4e0d\u540c\u989c\u8272\u7a81\u51fa\u663e\u793a\u6587\u672c",text:"\u4f7f\u6587\u5b57\u770b\u4e0a\u53bb\u50cf\u662f\u7528\u8367\u5149\u7b14\u505a\u4e86\u6807\u8bb0\u4e00\u6837",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"\u5b57\u4f53\u989c\u8272",text:"\u66f4\u6539\u5b57\u4f53\u989c\u8272",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"\u5de6\u5bf9\u9f50",text:"\u5c06\u6587\u5b57\u5de6\u5bf9\u9f50",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"\u5c45\u4e2d",text:"\u5c06\u6587\u5b57\u5c45\u4e2d\u5bf9\u9f50",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"\u53f3\u5bf9\u9f50",text:"\u5c06\u6587\u5b57\u53f3\u5bf9\u9f50",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"\u9879\u76ee\u7b26\u53f7",text:"\u5f00\u59cb\u521b\u5efa\u9879\u76ee\u7b26\u53f7\u5217\u8868",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"\u7f16\u53f7",text:"\u5f00\u59cb\u521b\u5efa\u7f16\u53f7\u5217\u8868",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"\u8f6c\u6210\u8d85\u7ea7\u94fe\u63a5",text:"\u5c06\u6240\u9009\u6587\u672c\u8f6c\u6362\u6210\u8d85\u7ea7\u94fe\u63a5",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"\u4ee3\u7801\u89c6\u56fe",text:"\u4ee5\u4ee3\u7801\u7684\u5f62\u5f0f\u5c55\u73b0\u6587\u672c",cls:Ext.baseCSSPrefix+"html-editor-tip"}}})});Ext.define("Ext.locale.zh_CN.grid.header.Container",{override:"Ext.grid.header.Container",sortAscText:"\u6b63\u5e8f",sortDescText:"\u5012\u5e8f",lockText:"\u9501\u5b9a\u5217",unlockText:"\u89e3\u9664\u9501\u5b9a",columnsText:"\u5217"});Ext.define("Ext.locale.zh_CN.grid.PropertyColumnModel",{override:"Ext.grid.PropertyColumnModel",nameText:"\u540d\u79f0",valueText:"\u503c",dateFormat:"y\u5e74m\u6708d\u65e5"})})})();(function(){if(window.FT_I18N.EXTJS_LOCALE!=="ja"){return}Ext.onReady(function(){var a=Ext.ClassManager,b=Ext.Function.bind(a.get,a),c;if(Ext.Updater){Ext.Updater.defaults.indicatorText='<div class="loading-indicator">\u8aad\u307f\u8fbc\u307f\u4e2d...</div>'}if(Ext.Date){Ext.Date.monthNames=["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"];Ext.Date.getShortMonthName=function(d){return""+(d+1)};Ext.Date.monthNumbers={"1":0,"2":1,"3":2,"4":3,"5":4,"6":5,"7":6,"8":7,"9":8,"10":9,"11":10,"12":11};Ext.Date.getMonthNumber=function(d){return Ext.Date.monthNumbers[d.substring(0,d.length-1)]};Ext.Date.dayNames=["\u65e5\u66dc\u65e5","\u6708\u66dc\u65e5","\u706b\u66dc\u65e5","\u6c34\u66dc\u65e5","\u6728\u66dc\u65e5","\u91d1\u66dc\u65e5","\u571f\u66dc\u65e5"];Ext.Date.getShortDayName=function(d){return Ext.Date.dayNames[d].substring(0,1)};Ext.Date.formatCodes.a="(this.getHours() < 12 ? '\u5348\u524d' : '\u5348\u5f8c')";Ext.Date.formatCodes.A="(this.getHours() < 12 ? '\u5348\u524d' : '\u5348\u5f8c')";c={g:1,c:"if (/(\u5348\u524d)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(\u5348\u524d|\u5348\u5f8c)",calcAtEnd:true};Ext.Date.parseCodes.a=Ext.Date.parseCodes.A=c}if(Ext.MessageBox){Ext.MessageBox.buttonText={ok:"OK",cancel:"\u30ad\u30e3\u30f3\u30bb\u30eb",yes:"\u306f\u3044",no:"\u3044\u3044\u3048"}}if(b("Ext.util.Format")){Ext.apply(Ext.util.Format,{thousandSeparator:",",decimalSeparator:".",currencySign:"\u00a5",dateFormat:"Y/m/d"})}if(b("Ext.form.field.VTypes")){Ext.apply(Ext.form.field.VTypes,{emailText:'\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092"user@example.com"\u306e\u5f62\u5f0f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002',urlText:'URL\u3092"http://www.example.com"\u306e\u5f62\u5f0f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002',alphaText:'\u534a\u89d2\u82f1\u5b57\u3068"_"\u306e\u307f\u3067\u3059\u3002',alphanumText:'\u534a\u89d2\u82f1\u6570\u3068"_"\u306e\u307f\u3067\u3059\u3002'})}Ext.define("Ext.locale.ja.view.View",{override:"Ext.view.View",emptyText:""});Ext.define("Ext.locale.ja.grid.plugin.DragDrop",{override:"Ext.grid.plugin.DragDrop",dragText:"{0} \u884c\u9078\u629e"});Ext.define("Ext.locale.ja.view.AbstractView",{override:"Ext.view.AbstractView",msg:"\u8aad\u307f\u8fbc\u307f\u4e2d..."});Ext.define("Ext.locale.ja.picker.Date",{override:"Ext.picker.Date",todayText:"\u4eca\u65e5",minText:"\u9078\u629e\u3057\u305f\u65e5\u4ed8\u306f\u6700\u5c0f\u5024\u4ee5\u4e0b\u3067\u3059\u3002",maxText:"\u9078\u629e\u3057\u305f\u65e5\u4ed8\u306f\u6700\u5927\u5024\u4ee5\u4e0a\u3067\u3059\u3002",disabledDaysText:"",disabledDatesText:"",monthNames:Ext.Date.monthNames,dayNames:Ext.Date.dayNames,nextText:"\u6b21\u6708\u3078 (\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb+\u53f3)",prevText:"\u524d\u6708\u3078 (\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb+\u5de6)",monthYearText:"\u6708\u9078\u629e (\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb+\u4e0a/\u4e0b\u3067\u5e74\u79fb\u52d5)",todayTip:"{0} (\u30b9\u30da\u30fc\u30b9\u30ad\u30fc)",format:"Y/m/d",startDay:0,ariaTitle:"{0}",ariaTitleDateFormat:"Y\u5e74m\u6708d\u65e5",longDayFormat:"Y\u5e74m\u6708d\u65e5",monthYearFormat:"Y\u5e74m\u6708"});Ext.define("Ext.locale.ja.picker.Month",{override:"Ext.picker.Month",okText:"&#160;OK&#160;",cancelText:"\u30ad\u30e3\u30f3\u30bb\u30eb"});Ext.define("Ext.locale.ja.toolbar.Paging",{override:"Ext.PagingToolbar",beforePageText:"\u30da\u30fc\u30b8",afterPageText:"/ {0}",firstText:"\u6700\u521d\u306e\u30da\u30fc\u30b8",prevText:"\u524d\u306e\u30da\u30fc\u30b8",nextText:"\u6b21\u306e\u30da\u30fc\u30b8",lastText:"\u6700\u5f8c\u306e\u30da\u30fc\u30b8",refreshText:"\u66f4\u65b0",displayMsg:"{2} \u4ef6\u4e2d {0} - {1} \u3092\u8868\u793a",emptyMsg:"\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093\u3002"});Ext.define("Ext.locale.ja.form.field.Base",{override:"Ext.form.field.Base",invalidText:"\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u5024\u304c\u4e0d\u6b63\u3067\u3059\u3002"});Ext.define("Ext.locale.ja.form.field.Text",{override:"Ext.form.field.Text",minLengthText:"\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6700\u5c0f\u5024\u306f {0} \u3067\u3059\u3002",maxLengthText:"\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6700\u5927\u5024\u306f {0} \u3067\u3059\u3002",blankText:"\u5fc5\u9808\u9805\u76ee\u3067\u3059\u3002",regexText:"",emptyText:null});Ext.define("Ext.locale.ja.form.field.Number",{override:"Ext.form.field.Number",decimalSeparator:".",decimalPrecision:2,minText:"\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6700\u5c0f\u5024\u306f {0} \u3067\u3059\u3002",maxText:"\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6700\u5927\u5024\u306f {0} \u3067\u3059\u3002",nanText:"{0} \u306f\u6570\u5024\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"});Ext.define("Ext.locale.ja.form.field.Date",{override:"Ext.form.field.Date",disabledDaysText:"\u7121\u52b9",disabledDatesText:"\u7121\u52b9",minText:"\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u65e5\u4ed8\u306f\u3001 {0} \u4ee5\u964d\u306e\u65e5\u4ed8\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002",maxText:"\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u65e5\u4ed8\u306f\u3001 {0} \u4ee5\u524d\u306e\u65e5\u4ed8\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002",invalidText:"{0} \u306f\u9593\u9055\u3063\u305f\u65e5\u4ed8\u5165\u529b\u3067\u3059\u3002 - \u5165\u529b\u5f62\u5f0f\u306f\u300c{1}\u300d\u3067\u3059\u3002",format:"Y/m/d",altFormats:"y/m/d|m/d/y|m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d"});Ext.define("Ext.locale.ja.form.field.ComboBox",{override:"Ext.form.field.ComboBox",valueNotFoundText:undefined},function(){Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig,{loadingText:"\u8aad\u307f\u8fbc\u307f\u4e2d..."})});Ext.define("Ext.locale.ja.form.field.HtmlEditor",{override:"Ext.form.field.HtmlEditor",createLinkText:"\u30ea\u30f3\u30af\u306eURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044:"},function(){Ext.apply(Ext.form.field.HtmlEditor.prototype,{buttonTips:{bold:{title:"\u592a\u5b57 (\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb+B)",text:"\u9078\u629e\u30c6\u30ad\u30b9\u30c8\u3092\u592a\u5b57\u306b\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"\u659c\u4f53 (\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb+I)",text:"\u9078\u629e\u30c6\u30ad\u30b9\u30c8\u3092\u659c\u4f53\u306b\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"\u4e0b\u7dda (\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb+U)",text:"\u9078\u629e\u30c6\u30ad\u30b9\u30c8\u306b\u4e0b\u7dda\u3092\u5f15\u304d\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"\u6587\u5b57\u3092\u5927\u304d\u304f",text:"\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba\u3092\u5927\u304d\u304f\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"\u6587\u5b57\u3092\u5c0f\u3055\u304f",text:"\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba\u3092\u5c0f\u3055\u304f\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"\u6587\u5b57\u306e\u30cf\u30a4\u30e9\u30a4\u30c8",text:"\u9078\u629e\u30c6\u30ad\u30b9\u30c8\u306e\u80cc\u666f\u8272\u3092\u5909\u66f4\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"\u6587\u5b57\u306e\u8272",text:"\u9078\u629e\u30c6\u30ad\u30b9\u30c8\u306e\u8272\u3092\u5909\u66f4\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"\u5de6\u63c3\u3048",text:"\u30c6\u30ad\u30b9\u30c8\u3092\u5de6\u63c3\u3048\u306b\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"\u4e2d\u592e\u63c3\u3048",text:"\u30c6\u30ad\u30b9\u30c8\u3092\u4e2d\u592e\u63c3\u3048\u306b\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"\u53f3\u63c3\u3048",text:"\u30c6\u30ad\u30b9\u30c8\u3092\u53f3\u63c3\u3048\u306b\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"\u756a\u53f7\u306a\u3057\u7b87\u6761\u66f8\u304d",text:"\u756a\u53f7\u306a\u3057\u7b87\u6761\u66f8\u304d\u3092\u958b\u59cb\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"\u756a\u53f7\u4ed8\u304d\u7b87\u6761\u66f8\u304d",text:"\u756a\u53f7\u4ed8\u304d\u7b87\u6761\u66f8\u304d\u3092\u958b\u59cb\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"\u30cf\u30a4\u30d1\u30fc\u30ea\u30f3\u30af",text:"\u9078\u629e\u30c6\u30ad\u30b9\u30c8\u3092\u30cf\u30a4\u30d1\u30fc\u30ea\u30f3\u30af\u306b\u3057\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"\u30bd\u30fc\u30b9\u7de8\u96c6",text:"\u30bd\u30fc\u30b9\u7de8\u96c6\u30e2\u30fc\u30c9\u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u3002",cls:Ext.baseCSSPrefix+"html-editor-tip"}}})});Ext.define("Ext.locale.ja.grid.header.Container",{override:"Ext.grid.header.Container",sortAscText:"\u6607\u9806",sortDescText:"\u964d\u9806",columnsText:"\u30ab\u30e9\u30e0"});Ext.define("Ext.locale.ja.grid.GroupingFeature",{override:"Ext.grid.GroupingFeature",emptyGroupText:"(\u306a\u3057)",groupByText:"\u3053\u306e\u30ab\u30e9\u30e0\u3067\u30b0\u30eb\u30fc\u30d4\u30f3\u30b0",showGroupsText:"\u30b0\u30eb\u30fc\u30d4\u30f3\u30b0"});Ext.define("Ext.locale.ja.grid.PropertyColumnModel",{override:"Ext.grid.PropertyColumnModel",nameText:"\u540d\u79f0",valueText:"\u5024",dateFormat:"Y/m/d"});Ext.define("Ext.locale.ja.form.field.Time",{override:"Ext.form.field.Time",minText:"\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6642\u523b\u306f\u3001 {0} \u4ee5\u964d\u306e\u6642\u523b\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002",maxText:"\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6642\u523b\u306f\u3001 {0} \u4ee5\u524d\u306e\u6642\u523b\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002",invalidText:"{0} \u306f\u9593\u9055\u3063\u305f\u6642\u523b\u5165\u529b\u3067\u3059\u3002",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"});Ext.define("Ext.locale.ja.form.CheckboxGroup",{override:"Ext.form.CheckboxGroup",blankText:"\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u304b\u3089\u6700\u4f4e\uff11\u3064\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"});Ext.define("Ext.locale.ja.form.RadioGroup",{override:"Ext.form.RadioGroup",blankText:"\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u304b\u3089\uff11\u3064\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"});Ext.define("Ext.locale.ja.Component",{override:"Ext.Component"})})})();(function(){if(window.FT_I18N.EXTJS_LOCALE!=="es"){return}Ext.onReady(function(){var a=Ext.ClassManager,b=Ext.Function.bind(a.get,a);if(Ext.Updater){Ext.Updater.defaults.indicatorText='<div class="loading-indicator">Cargando...</div>'}if(Ext.Date){Ext.Date.monthNames=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"];Ext.Date.getShortMonthName=function(c){return Ext.Date.monthNames[c].substring(0,3)};Ext.Date.monthNumbers={Ene:0,Feb:1,Mar:2,Abr:3,May:4,Jun:5,Jul:6,Ago:7,Sep:8,Oct:9,Nov:10,Dic:11};Ext.Date.getMonthNumber=function(c){return Ext.Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]};Ext.Date.dayNames=["Domingo","Lunes","Martes","Mi\u00e9rcoles","Jueves","Viernes","S\u00e1bado"];Ext.Date.getShortDayName=function(c){if(c==3){return"Mi\u00e9"}if(c==6){return"S\u00e1b"}return Ext.Date.dayNames[c].substring(0,3)};Ext.Date.parseCodes.S.s="(?:st|nd|rd|th)"}if(Ext.MessageBox){Ext.MessageBox.buttonText={ok:"Aceptar",cancel:"Cancelar",yes:"S\u00ed",no:"No"}}if(b("Ext.util.Format")){Ext.apply(Ext.util.Format,{thousandSeparator:".",decimalSeparator:",",currencySign:"\u20ac",dateFormat:"d/m/Y"})}if(b("Ext.form.field.VTypes")){Ext.apply(Ext.form.field.VTypes,{emailText:'Este campo debe ser una direcci\u00f3n de correo electr\u00f3nico con el formato "usuario@dominio.com"',urlText:'Este campo debe ser una URL con el formato "http://www.dominio.com"',alphaText:"Este campo s\u00f3lo debe contener letras y _",alphanumText:"Este campo s\u00f3lo debe contener letras, n\u00fameros y _"})}Ext.define("Ext.locale.es.view.View",{override:"Ext.view.View",emptyText:""});Ext.define("Ext.locale.es.grid.plugin.DragDrop",{override:"Ext.grid.plugin.DragDrop",dragText:"{0} fila(s) seleccionada(s)"});Ext.define("Ext.locale.es.view.AbstractView",{override:"Ext.view.AbstractView",msg:"Cargando..."});Ext.define("Ext.locale.es.picker.Date",{override:"Ext.picker.Date",todayText:"Hoy",minText:"Esta fecha es anterior a la fecha m\u00ednima",maxText:"Esta fecha es posterior a la fecha m\u00e1xima",disabledDaysText:"",disabledDatesText:"",monthNames:Ext.Date.monthNames,dayNames:Ext.Date.dayNames,nextText:"Mes Siguiente (Control+Right)",prevText:"Mes Anterior (Control+Left)",monthYearText:"Seleccione un mes (Control+Up/Down para desplazar el a\u00f1o)",todayTip:"{0} (Barra espaciadora)",format:"d/m/Y",startDay:1});Ext.define("Ext.locale.es.picker.Month",{override:"Ext.picker.Month",okText:"&#160;Aceptar&#160;",cancelText:"Cancelar"});Ext.define("Ext.locale.es.toolbar.Paging",{override:"Ext.PagingToolbar",beforePageText:"P\u00e1gina",afterPageText:"de {0}",firstText:"Primera p\u00e1gina",prevText:"P\u00e1gina anterior",nextText:"P\u00e1gina siguiente",lastText:"\u00daltima p\u00e1gina",refreshText:"Actualizar",displayMsg:"Mostrando {0} - {1} de {2}",emptyMsg:"Sin datos para mostrar"});Ext.define("Ext.locale.es.form.field.Base",{override:"Ext.form.field.Base",invalidText:"El valor en este campo es inv\u00e1lido"});Ext.define("Ext.locale.es.form.field.Text",{override:"Ext.form.field.Text",minLengthText:"El tama\u00f1o m\u00ednimo para este campo es de {0}",maxLengthText:"El tama\u00f1o m\u00e1ximo para este campo es de {0}",blankText:"Este campo es obligatorio",regexText:"",emptyText:null});Ext.define("Ext.locale.es.form.field.Number",{override:"Ext.form.field.Number",decimalSeparator:",",decimalPrecision:2,minText:"El valor m\u00ednimo para este campo es de {0}",maxText:"El valor m\u00e1ximo para este campo es de {0}",nanText:"{0} no es un n\u00famero v\u00e1lido"});Ext.define("Ext.locale.es.form.field.File",{override:"Ext.form.field.File",buttonText:"Examinar..."});Ext.define("Ext.locale.es.form.field.Date",{override:"Ext.form.field.Date",disabledDaysText:"Deshabilitado",disabledDatesText:"Deshabilitado",minText:"La fecha para este campo debe ser posterior a {0}",maxText:"La fecha para este campo debe ser anterior a {0}",invalidText:"{0} no es una fecha v\u00e1lida - debe tener el formato {1}",format:"d/m/Y",altFormats:"d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"});Ext.define("Ext.locale.es.form.field.ComboBox",{override:"Ext.form.field.ComboBox",valueNotFoundText:undefined},function(){Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig,{loadingText:"Cargando..."})});Ext.define("Ext.locale.es.form.field.HtmlEditor",{override:"Ext.form.field.HtmlEditor",createLinkText:"Por favor proporcione la URL para el enlace:"},function(){Ext.apply(Ext.form.field.HtmlEditor.prototype,{buttonTips:{bold:{title:"Negritas (Ctrl+B)",text:"Transforma el texto seleccionado en Negritas.",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"It\u00e1lica (Ctrl+I)",text:"Transforma el texto seleccionado en It\u00e1licas.",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"Subrayado (Ctrl+U)",text:"Subraya el texto seleccionado.",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"Aumentar la fuente",text:"Aumenta el tama\u00f1o de la fuente",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"Reducir la fuente",text:"Reduce el tama\u00f1o de la fuente.",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"Color de fondo",text:"Modifica el color de fondo del texto seleccionado.",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"Color de la fuente",text:"Modifica el color del texto seleccionado.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"Alinear a la izquierda",text:"Alinea el texto a la izquierda.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"Centrar",text:"Centrar el texto.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"Alinear a la derecha",text:"Alinea el texto a la derecha.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"Lista de vi\u00f1etas",text:"Inicia una lista con vi\u00f1etas.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"Lista numerada",text:"Inicia una lista numerada.",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"Enlace",text:"Inserta un enlace de hipertexto.",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"C\u00f3digo Fuente",text:"Pasar al modo de edici\u00f3n de c\u00f3digo fuente.",cls:Ext.baseCSSPrefix+"html-editor-tip"}}})});Ext.define("Ext.locale.es.grid.header.Container",{override:"Ext.grid.header.Container",sortAscText:"Ordenar en forma ascendente",sortDescText:"Ordenar en forma descendente",columnsText:"Columnas"});Ext.define("Ext.locale.es.grid.GroupingFeature",{override:"Ext.grid.GroupingFeature",emptyGroupText:"(Ninguno)",groupByText:"Agrupar por este campo",showGroupsText:"Mostrar en grupos"});Ext.define("Ext.locale.es.grid.PropertyColumnModel",{override:"Ext.grid.PropertyColumnModel",nameText:"Nombre",valueText:"Valor",dateFormat:"j/m/Y"});Ext.define("Ext.locale.es.form.field.Time",{override:"Ext.form.field.Time",minText:"La hora en este campo debe ser igual o posterior a {0}",maxText:"La hora en este campo debe ser igual o anterior a {0}",invalidText:"{0} no es una hora v\u00e1lida",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"});Ext.define("Ext.locale.es.form.CheckboxGroup",{override:"Ext.form.CheckboxGroup",blankText:"Debe seleccionar al menos un \u00e9tem de este grupo"});Ext.define("Ext.locale.es.form.RadioGroup",{override:"Ext.form.RadioGroup",blankText:"Debe seleccionar un \u00e9tem de este grupo"});Ext.define("Ext.locale.es.Component",{override:"Ext.Component"})})})();(function(){if(window.FT_I18N.EXTJS_LOCALE!=="ru"){return}Ext.onReady(function(){var a=Ext.ClassManager,b=Ext.Function.bind(a.get,a);if(Ext.Updater){Ext.Updater.defaults.indicatorText='<div class="loading-indicator">\u0418\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430...</div>'}if(Ext.Date){Ext.Date.monthNames=["\u042f\u043d\u0432\u0430\u0440\u044c","\u0424\u0435\u0432\u0440\u0430\u043b\u044c","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0435\u043b\u044c","\u041c\u0430\u0439","\u0418\u044e\u043d\u044c","\u0418\u044e\u043b\u044c","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c","\u041e\u043a\u0442\u044f\u0431\u0440\u044c","\u041d\u043e\u044f\u0431\u0440\u044c","\u0414\u0435\u043a\u0430\u0431\u0440\u044c"];Ext.Date.shortMonthNames=["\u042f\u043d\u0432","\u0424\u0435\u0432\u0440","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440","\u041c\u0430\u0439","\u0418\u044e\u043d\u044c","\u0418\u044e\u043b\u044c","\u0410\u0432\u0433","\u0421\u0435\u043d\u0442","\u041e\u043a\u0442","\u041d\u043e\u044f\u0431","\u0414\u0435\u043a"];Ext.Date.getShortMonthName=function(c){return Ext.Date.shortMonthNames[c]};Ext.Date.monthNumbers={"\u042f\u043d\u0432":0,"\u0424\u0435\u0432":1,"\u041c\u0430\u0440":2,"\u0410\u043f\u0440":3,"\u041c\u0430\u0439":4,"\u0418\u044e\u043d":5,"\u0418\u044e\u043b":6,"\u0410\u0432\u0433":7,"\u0421\u0435\u043d":8,"\u041e\u043a\u0442":9,"\u041d\u043e\u044f":10,"\u0414\u0435\u043a":11};Ext.Date.getMonthNumber=function(c){return Ext.Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]};Ext.Date.dayNames=["\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0412\u0442\u043e\u0440\u043d\u0438\u043a","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041f\u044f\u0442\u043d\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043e\u0442\u0430"];Ext.Date.getShortDayName=function(c){return Ext.Date.dayNames[c].substring(0,3)}}if(Ext.MessageBox){Ext.MessageBox.buttonText={ok:"OK",cancel:"\u041e\u0442\u043c\u0435\u043d\u0430",yes:"\u0414\u0430",no:"\u041d\u0435\u0442"}}if(b("Ext.util.Format")){Ext.apply(Ext.util.Format,{thousandSeparator:".",decimalSeparator:",",currencySign:"\u0440\u0443\u0431",dateFormat:"d.m.Y"})}if(b("Ext.form.field.VTypes")){Ext.apply(Ext.form.field.VTypes,{emailText:'\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 "user@example.com"',urlText:'\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c URL \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 "http://www.example.com"',alphaText:'\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b \u0438 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f "_"',alphanumText:'\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b, \u0446\u0438\u0444\u0440\u044b \u0438 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f "_"'})}});Ext.define("Ext.locale.ru.view.View",{override:"Ext.view.View",emptyText:""});Ext.define("Ext.locale.ru.grid.plugin.DragDrop",{override:"Ext.grid.plugin.DragDrop",dragText:"{0} \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a"});Ext.define("Ext.locale.ru.TabPanelItem",{override:"Ext.TabPanelItem",closeText:"\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u0443 \u0432\u043a\u043b\u0430\u0434\u043a\u0443"});Ext.define("Ext.locale.ru.form.field.Base",{override:"Ext.form.field.Base",invalidText:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u0435 \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435"});Ext.define("Ext.locale.ru.view.AbstractView",{override:"Ext.view.AbstractView",msg:"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430..."});Ext.define("Ext.locale.ru.picker.Date",{override:"Ext.picker.Date",todayText:"\u0421\u0435\u0433\u043e\u0434\u043d\u044f",minText:"\u042d\u0442\u0430 \u0434\u0430\u0442\u0430 \u0440\u0430\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u0430\u0442\u044b",maxText:"\u042d\u0442\u0430 \u0434\u0430\u0442\u0430 \u043f\u043e\u0437\u0436\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u0430\u0442\u044b",disabledDaysText:"",disabledDatesText:"",monthNames:Ext.Date.monthNames,dayNames:Ext.Date.dayNames,nextText:"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0441\u044f\u0446 (Control+\u0412\u043f\u0440\u0430\u0432\u043e)",prevText:"\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043c\u0435\u0441\u044f\u0446 (Control+\u0412\u043b\u0435\u0432\u043e)",monthYearText:"\u0412\u044b\u0431\u043e\u0440 \u043c\u0435\u0441\u044f\u0446\u0430 (Control+\u0412\u0432\u0435\u0440\u0445/\u0412\u043d\u0438\u0437 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0433\u043e\u0434\u0430)",todayTip:"{0} (\u041f\u0440\u043e\u0431\u0435\u043b)",format:"d.m.y",startDay:1});Ext.define("Ext.locale.ru.picker.Month",{override:"Ext.picker.Month",okText:"&#160;OK&#160;",cancelText:"\u041e\u0442\u043c\u0435\u043d\u0430"});Ext.define("Ext.locale.ru.toolbar.Paging",{override:"Ext.PagingToolbar",beforePageText:"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430",afterPageText:"\u0438\u0437 {0}",firstText:"\u041f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",prevText:"\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",nextText:"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",lastText:"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",refreshText:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c",displayMsg:"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 {0} \u043f\u043e {1}, \u0432\u0441\u0435\u0433\u043e {2}",emptyMsg:"\u041d\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f"});Ext.define("Ext.locale.ru.form.field.Text",{override:"Ext.form.field.Text",minLengthText:"\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f {0}",maxLengthText:"\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f {0}",blankText:"\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f",regexText:"",emptyText:null});Ext.define("Ext.locale.ru.form.field.Number",{override:"Ext.form.field.Number",minText:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 {0}",maxText:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 {0}",nanText:"{0} \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e\u043c",negativeText:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c"});Ext.define("Ext.locale.ru.form.field.Date",{override:"Ext.form.field.Date",disabledDaysText:"\u041d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e",disabledDatesText:"\u041d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e",minText:"\u0414\u0430\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u043e\u0437\u0434\u0435 {0}",maxText:"\u0414\u0430\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435 {0}",invalidText:"{0} \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0434\u0430\u0442\u043e\u0439 - \u0434\u0430\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 {1}",format:"d.m.y",altFormats:"d.m.y|d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"});Ext.define("Ext.locale.ru.form.field.ComboBox",{override:"Ext.form.field.ComboBox",valueNotFoundText:undefined},function(){Ext.apply(Ext.form.field.ComboBox.prototype.defaultListConfig,{loadingText:"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430..."})});Ext.define("Ext.locale.ru.form.field.HtmlEditor",{override:"Ext.form.field.HtmlEditor",createLinkText:"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441:"},function(){Ext.apply(Ext.form.field.HtmlEditor.prototype,{buttonTips:{bold:{title:"\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439 (Ctrl+B)",text:"\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u043e\u0433\u043e \u043d\u0430\u0447\u0435\u0440\u0442\u0430\u043d\u0438\u044f \u043a \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0442\u0435\u043a\u0441\u0442\u0443.",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)",text:"\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0433\u043e \u043d\u0430\u0447\u0435\u0440\u0442\u0430\u043d\u0438\u044f \u043a \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0442\u0435\u043a\u0441\u0442\u0443.",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"\u041f\u043e\u0434\u0447\u0451\u0440\u043a\u043d\u0443\u0442\u044b\u0439 (Ctrl+U)",text:"\u041f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430.",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440",text:"\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430.",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440",text:"\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430.",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"\u0417\u0430\u043b\u0438\u0432\u043a\u0430",text:"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0444\u043e\u043d\u0430 \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0430\u0431\u0437\u0430\u0446\u0430.",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430",text:"\u0418\u0437\u043c\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",text:"\u0412\u044b\u0440\u043e\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",text:"\u0412\u044b\u0440\u043e\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",text:"\u0412\u044b\u0440\u043e\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"\u041c\u0430\u0440\u043a\u0435\u0440\u044b",text:"\u041d\u0430\u0447\u0430\u0442\u044c \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"\u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f",text:"\u041d\u0430\u0447\u0430\u0442\u044c \u043d\u0443\u043c\u0435\u0440\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a.",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0438\u043f\u0435\u0440\u0441\u0441\u044b\u043b\u043a\u0443",text:"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u0437 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430.",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434",text:"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434.",cls:Ext.baseCSSPrefix+"html-editor-tip"}}})});Ext.define("Ext.locale.ru.form.Basic",{override:"Ext.form.Basic",waitTitle:"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435..."});Ext.define("Ext.locale.ru.grid.header.Container",{override:"Ext.grid.header.Container",sortAscText:"\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e",sortDescText:"\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e",lockText:"\u0417\u0430\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446",unlockText:"\u0421\u043d\u044f\u0442\u044c \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u0430",columnsText:"\u0421\u0442\u043e\u043b\u0431\u0446\u044b"});Ext.define("Ext.locale.ru.grid.GroupingFeature",{override:"Ext.grid.GroupingFeature",emptyGroupText:"(\u041f\u0443\u0441\u0442\u043e)",groupByText:"\u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044e",showGroupsText:"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u043e \u0433\u0440\u0443\u043f\u043f\u0430\u043c"});Ext.define("Ext.locale.ru.grid.PropertyColumnModel",{override:"Ext.grid.PropertyColumnModel",nameText:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",valueText:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435",dateFormat:"d.m.Y"});Ext.define("Ext.locale.ru.SplitLayoutRegion",{override:"Ext.SplitLayoutRegion",splitTip:"\u0422\u044f\u043d\u0438\u0442\u0435 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430.",collapsibleSplitTip:"\u0422\u044f\u043d\u0438\u0442\u0435 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u0414\u0432\u043e\u0439\u043d\u043e\u0439 \u0449\u0435\u043b\u0447\u043e\u043a \u0441\u043f\u0440\u044f\u0447\u0435\u0442 \u043f\u0430\u043d\u0435\u043b\u044c."});Ext.define("Ext.locale.ru.Component",{override:"Ext.Component"})})();Ext.define("ExtThemeNeptune.Component",{override:"Ext.Component",initComponent:function(){this.callParent();if(this.dock&&this.border===undefined){this.border=false}},initStyles:function(){var c=this,d=c.border;if(c.dock){c.border=null}c.callParent(arguments);c.border=d}});Ext.define("FtrackThemeBase.LoadMask",{override:"Ext.LoadMask",msg:"",renderTpl:['<div id="{id}-msgEl" class="loadmask__message {[values.$comp.msgCls]} ',Ext.baseCSSPrefix,'mask-msg-inner{childElCls}">','<div class="loader">{childElCls}</div>','<div id="{id}-msgTextEl" class="',Ext.baseCSSPrefix,"mask-msg-text",'{childElCls}"></div>',"</div>"]});Ext.define("ExtThemeNeptune.toolbar.Toolbar",{override:"Ext.toolbar.Toolbar",usePlainButtons:false,border:false});Ext.define("ExtThemeNeptune.layout.component.Dock",{override:"Ext.layout.component.Dock",noBorderClassTable:[0,Ext.baseCSSPrefix+"noborder-l",Ext.baseCSSPrefix+"noborder-b",Ext.baseCSSPrefix+"noborder-bl",Ext.baseCSSPrefix+"noborder-r",Ext.baseCSSPrefix+"noborder-rl",Ext.baseCSSPrefix+"noborder-rb",Ext.baseCSSPrefix+"noborder-rbl",Ext.baseCSSPrefix+"noborder-t",Ext.baseCSSPrefix+"noborder-tl",Ext.baseCSSPrefix+"noborder-tb",Ext.baseCSSPrefix+"noborder-tbl",Ext.baseCSSPrefix+"noborder-tr",Ext.baseCSSPrefix+"noborder-trl",Ext.baseCSSPrefix+"noborder-trb",Ext.baseCSSPrefix+"noborder-trbl"],edgeMasks:{top:8,right:4,bottom:2,left:1},handleItemBorders:function(){var B=this,U=0,b=8,K=4,P=2,V=1,Y=B.owner,H=Y.bodyBorder,N=Y.border,R=B.collapsed,L=B.edgeMasks,Q=B.noBorderClassTable,C=Y.dockedItems.generation,D,W,E,S,I,O,F,M,T,J,G,X;if(B.initializedBorders===C){return}G=[];X=[];W=B.getBorderCollapseTable();Q=B.getBorderClassTable?B.getBorderClassTable():Q;B.initializedBorders=C;B.collapsed=false;E=B.getDockedItems();B.collapsed=R;for(I=0,O=E.length;I<O;I++){F=E[I];if(F.ignoreBorderManagement){continue}M=F.dock;J=S=0;G.length=0;X.length=0;if(M!=="bottom"){if(U&b){D=F.border}else{D=N;if(D!==false){S+=b}}if(D===false){J+=b}}if(M!=="left"){if(U&K){D=F.border}else{D=N;if(D!==false){S+=K}}if(D===false){J+=K}}if(M!=="top"){if(U&P){D=F.border}else{D=N;if(D!==false){S+=P}}if(D===false){J+=P}}if(M!=="right"){if(U&V){D=F.border}else{D=N;if(D!==false){S+=V}}if(D===false){J+=V}}if((T=F.lastBorderMask)!==J){F.lastBorderMask=J;if(T){X[0]=Q[T]}if(J){G[0]=Q[J]}}if((T=F.lastBorderCollapse)!==S){F.lastBorderCollapse=S;if(T){X[X.length]=W[T]}if(S){G[G.length]=W[S]}}if(X.length){F.removeCls(X)}if(G.length){F.addCls(G)}U|=L[M]}J=S=0;G.length=0;X.length=0;if(U&b){D=H}else{D=N;if(D!==false){S+=b}}if(D===false){J+=b}if(U&K){D=H}else{D=N;if(D!==false){S+=K}}if(D===false){J+=K}if(U&P){D=H}else{D=N;if(D!==false){S+=P}}if(D===false){J+=P}if(U&V){D=H}else{D=N;if(D!==false){S+=V}}if(D===false){J+=V}if((T=B.lastBodyBorderMask)!==J){B.lastBodyBorderMask=J;if(T){X[0]=Q[T]}if(J){G[0]=Q[J]}}if((T=B.lastBodyBorderCollapse)!==S){B.lastBodyBorderCollapse=S;if(T){X[X.length]=W[T]}if(S){G[G.length]=W[S]}}if(X.length){Y.removeBodyCls(X)}if(G.length){Y.addBodyCls(G)}},onRemove:function(c){var d=c.lastBorderMask;if(!c.isDestroyed&&!c.ignoreBorderManagement&&d){c.lastBorderMask=0;c.removeCls(this.noBorderClassTable[d])}this.callParent([c])}});Ext.define("ExtThemeNeptune.panel.Panel",{override:"Ext.panel.Panel",border:false,bodyBorder:false,initBorderProps:Ext.emptyFn,initBodyBorder:function(){if(this.bodyBorder!==true){this.callParent()}}});Ext.define("ExtThemeNeptune.container.ButtonGroup",{override:"Ext.container.ButtonGroup",usePlainButtons:false});Ext.define("FtrackThemeBase.form.field.Base",{override:"Ext.form.field.Base",labelSeparator:""});Ext.define("FtrackThemeBase.form.FieldContainer",{override:"Ext.form.FieldContainer",labelSeparator:""});Ext.define("FtrackThemeBase.form.Panel",{override:"Ext.form.Panel",border:false});Ext.define("FtrackThemeBase.view.View",{override:"Ext.view.View",loadingText:""});Ext.define("ExtThemeNeptune.toolbar.Paging",{override:"Ext.toolbar.Paging",defaultButtonUI:"plain-toolbar"});Ext.define("ExtThemeNeptune.picker.Month",{override:"Ext.picker.Month",measureMaxHeight:36});Ext.define("ExtThemeNeptune.form.field.HtmlEditor",{override:"Ext.form.field.HtmlEditor",defaultButtonUI:"plain-toolbar"});Ext.define("ExtThemeNeptune.panel.Table",{override:"Ext.panel.Table",bodyBorder:true});Ext.define("FtrackThemeBase.grid.View",{override:"Ext.grid.View",trackOver:false});Ext.define("ExtThemeNeptune.grid.RowEditor",{override:"Ext.grid.RowEditor",buttonUI:"default-toolbar"});Ext.define("ExtThemeNeptune.resizer.Splitter",{override:"Ext.resizer.Splitter",size:8});Ext.define("ExtThemeNeptune.menu.Separator",{override:"Ext.menu.Separator",border:true});Ext.define("ExtThemeNeptune.menu.Menu",{override:"Ext.menu.Menu",showSeparator:false});Ext.define("ExtThemeNeptune.panel.Tool",{override:"Ext.panel.Tool",height:16,width:16});Ext.define("ExtThemeNeptune.tab.Tab",{override:"Ext.tab.Tab",border:false});Ext.define("FtrackThemeBase.tab.Tab",{override:"Ext.tab.Tab",border:true});var Markdown;if(typeof exports==="object"&&typeof require==="function"){Markdown=exports}else{Markdown={}}(function(){function c(e){return e}function d(e){return false}function b(){}b.prototype={chain:function(h,g){var e=this[h];if(!e){throw new Error("unknown hook "+h)}if(e===c){this[h]=g}else{this[h]=function(k){var j=Array.prototype.slice.call(arguments,0);j[0]=e.apply(null,j);return g.apply(null,j)}}},set:function(g,e){if(!this[g]){throw new Error("unknown hook "+g)}this[g]=e},addNoop:function(e){this[e]=c},addFalse:function(e){this[e]=d}};Markdown.HookCollection=b;function a(){}a.prototype={set:function(e,g){this["s_"+e]=g},get:function(e){return this["s_"+e]}};Markdown.Converter=function(){var n=this.hooks=new b;n.addNoop("plainLinkText");n.addNoop("preConversion");n.addNoop("postNormalization");n.addNoop("preBlockGamut");n.addNoop("postBlockGamut");n.addNoop("preSpanGamut");n.addNoop("postSpanGamut");n.addNoop("postConversion");var C;var s;var e;var G;this.makeHtml=function(Z){if(C){throw new Error("Recursive call to converter.makeHtml")}C=new a;s=new a;e=[];G=0;Z=n.preConversion(Z);Z=Z.replace(/~/g,"~T");Z=Z.replace(/\$/g,"~D");Z=Z.replace(/\r\n/g,"\n");Z=Z.replace(/\r/g,"\n");Z="\n\n"+Z+"\n\n";Z=R(Z);Z=Z.replace(/^[ \t]+$/mg,"");Z=n.postNormalization(Z);Z=t(Z);Z=q(Z);Z=j(Z);Z=U(Z);Z=Z.replace(/~D/g,"$$");Z=Z.replace(/~T/g,"~");Z=n.postConversion(Z);e=s=C=null;return Z};function q(Z){Z=Z.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?(?=\s|$)[ \t]*\n?[ \t]*((\n*)["(](.+?)[")][ \t]*)?(?:\n+)/gm,function(ac,ae,ad,ab,aa,af){ae=ae.toLowerCase();C.set(ae,J(ad));if(aa){return ab}else{if(af){s.set(ae,af.replace(/"/g,"&quot;"))}}return""});return Z}function t(ab){var aa="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del";var Z="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math";ab=ab.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,X);ab=ab.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,X);ab=ab.replace(/\n[ ]{0,3}((<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,X);ab=ab.replace(/\n\n[ ]{0,3}(<!(--(?:|(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>[ \t]*(?=\n{2,}))/g,X);ab=ab.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,X);return ab}function X(Z,aa){var ab=aa;ab=ab.replace(/^\n+/,"");ab=ab.replace(/\n+$/g,"");ab="\n\n~K"+(e.push(ab)-1)+"K\n\n";return ab}var h=function(Z){return j(Z)};function j(ab,aa){ab=n.preBlockGamut(ab,h);ab=m(ab);var Z="<hr />\n";ab=ab.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,Z);ab=ab.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,Z);ab=ab.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,Z);ab=T(ab);ab=w(ab);ab=k(ab);ab=n.postBlockGamut(ab,h);ab=t(ab);ab=Q(ab,aa);return ab}function o(Z){Z=n.preSpanGamut(Z);Z=x(Z);Z=B(Z);Z=O(Z);Z=K(Z);Z=L(Z);Z=S(Z);Z=Z.replace(/~P/g,"://");Z=J(Z);Z=E(Z);Z=Z.replace(/  +\n/g," <br>\n");Z=n.postSpanGamut(Z);return Z}function B(aa){var Z=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--(?:|(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi;aa=aa.replace(Z,function(ac){var ab=ac.replace(/(.)<\/?code>(?=.)/g,"$1`");ab=F(ab,ac.charAt(1)=="!"?"\\`*_/":"\\`*_");return ab});return aa}function L(Z){Z=Z.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,l);Z=Z.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?((?:\([^)]*\)|[^()\s])*?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,l);Z=Z.replace(/(\[([^\[\]]+)\])()()()()()/g,l);return Z}function l(af,al,ak,aj,ai,ah,ae,ad){if(ad==undefined){ad=""}var ac=al;var aa=ak.replace(/:\/\//g,"~P");var ab=aj.toLowerCase();var Z=ai;var ag=ad;if(Z==""){if(ab==""){ab=aa.toLowerCase().replace(/ ?\n/g," ")}Z="#"+ab;if(C.get(ab)!=undefined){Z=C.get(ab);if(s.get(ab)!=undefined){ag=s.get(ab)}}else{if(ac.search(/\(\s*\)$/m)>-1){Z=""}else{return ac}}}Z=H(Z);Z=F(Z,"*_");var am='<a href="'+Z+'"';if(ag!=""){ag=N(ag);ag=F(ag,"*_");am+=' title="'+ag+'"'}am+=">"+aa+"</a>";return am}function K(Z){Z=Z.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,M);Z=Z.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,M);return Z}function N(Z){return Z.replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;")}function M(af,al,ak,aj,ai,ah,ae,ad){var ac=al;var ab=ak;var aa=aj.toLowerCase();var Z=ai;var ag=ad;if(!ag){ag=""}if(Z==""){if(aa==""){aa=ab.toLowerCase().replace(/ ?\n/g," ")}Z="#"+aa;if(C.get(aa)!=undefined){Z=C.get(aa);if(s.get(aa)!=undefined){ag=s.get(aa)}}else{return ac}}ab=F(N(ab),"*_[]()");Z=F(Z,"*_");var am='<img src="'+Z+'" alt="'+ab+'"';ag=N(ag);ag=F(ag,"*_");am+=' title="'+ag+'"';am+=" />";return am}function m(Z){Z=Z.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(aa,ab){return"<h1>"+o(ab)+"</h1>\n\n"});Z=Z.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(ab,aa){return"<h2>"+o(aa)+"</h2>\n\n"});Z=Z.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(aa,ad,ac){var ab=ad.length;return"<h"+ab+">"+o(ac)+"</h"+ab+">\n\n"});return Z}function T(ab,Z){ab+="~0";var aa=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;if(G){ab=ab.replace(aa,function(ad,ag,af){var ah=ag;var ae=af.search(/[*+-]/g)>-1?"ul":"ol";var ac=p(ah,ae,Z);ac=ac.replace(/\s+$/,"");ac="<"+ae+">"+ac+"</"+ae+">\n";return ac})}else{aa=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;ab=ab.replace(aa,function(ae,ai,ag,ad){var ah=ai;var aj=ag;var af=ad.search(/[*+-]/g)>-1?"ul":"ol";var ac=p(aj,af);ac=ah+"<"+af+">\n"+ac+"</"+af+">\n";return ac})}ab=ab.replace(/~0/,"");return ab}var u={ol:"\\d+[.]",ul:"[*+-]"};function p(ab,aa,ae){G++;ab=ab.replace(/\n{2,}$/,"\n");ab+="~0";var Z=u[aa];var ac=new RegExp("(^[ \\t]*)("+Z+")[ \\t]+([^\\r]+?(\\n+))(?=(~0|\\1("+Z+")[ \\t]+))","gm");var ad=false;ab=ab.replace(ac,function(ag,ai,ah,af){var al=af;var am=ai;var ak=/\n\n$/.test(al);var aj=ak||al.search(/\n{2,}/)>-1;if(aj||ad){al=j(z(al),true)}else{al=T(z(al),true);al=al.replace(/\n$/,"");if(!ae){al=o(al)}}ad=ak;return"<li>"+al+"</li>\n"});ab=ab.replace(/~0/g,"");G--;return ab}function w(Z){Z+="~0";Z=Z.replace(/(?:\n\n|^\n?)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(aa,ac,ab){var ad=ac;var ae=ab;ad=I(z(ad));ad=R(ad);ad=ad.replace(/^\n+/g,"");ad=ad.replace(/\n+$/g,"");ad="<pre><code>"+ad+"\n</code></pre>";return"\n\n"+ad+"\n\n"+ae});Z=Z.replace(/~0/,"");return Z}function W(Z){Z=Z.replace(/(^\n+|\n+$)/g,"");return"\n\n~K"+(e.push(Z)-1)+"K\n\n"}function x(Z){Z=Z.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(ac,ae,ad,ab,aa){var af=ab;af=af.replace(/^([ \t]*)/g,"");af=af.replace(/[ \t]*$/g,"");af=I(af);af=af.replace(/:\/\//g,"~P");return ae+"<code>"+af+"</code>"});return Z}function I(Z){Z=Z.replace(/&/g,"&amp;");Z=Z.replace(/</g,"&lt;");Z=Z.replace(/>/g,"&gt;");Z=F(Z,"*_{}[]\\",false);return Z}function E(Z){Z=Z.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g,"$1<strong>$3</strong>$4");Z=Z.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g,"$1<em>$3</em>$4");return Z}function k(Z){Z=Z.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(aa,ab){var ac=ab;ac=ac.replace(/^[ \t]*>[ \t]?/gm,"~0");ac=ac.replace(/~0/g,"");ac=ac.replace(/^[ \t]+$/gm,"");ac=j(ac);ac=ac.replace(/(^|\n)/g,"$1  ");ac=ac.replace(/(\s*<pre>[^\r]+?<\/pre>)/gm,function(ad,ae){var af=ae;af=af.replace(/^  /mg,"~0");af=af.replace(/~0/g,"");return af});return W("<blockquote>\n"+ac+"\n</blockquote>")});return Z}function Q(ag,Z){ag=ag.replace(/^\n+/g,"");ag=ag.replace(/\n+$/g,"");var ah=ag.split(/\n{2,}/g);var ae=[];var aa=/~K(\d+)K/;var ab=ah.length;for(var ac=0;ac<ab;ac++){var ad=ah[ac];if(aa.test(ad)){ae.push(ad)}else{if(/\S/.test(ad)){ad=o(ad);ad=ad.replace(/^([ \t]*)/g,"<p>");ad+="</p>";ae.push(ad)}}}if(!Z){ab=ae.length;for(var ac=0;ac<ab;ac++){var af=true;while(af){af=false;ae[ac]=ae[ac].replace(/~K(\d+)K/g,function(ai,aj){af=true;return e[aj]})}}}return ae.join("\n\n")}function J(Z){Z=Z.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&amp;");Z=Z.replace(/<(?![a-z\/?!]|~D)/gi,"&lt;");return Z}function O(Z){Z=Z.replace(/\\(\\)/g,y);Z=Z.replace(/\\([`*_{}\[\]()>#+-.!])/g,y);return Z}var D="[-A-Z0-9+&@#/%?=~_|[\\]()!:,.;]",Y="[-A-Z0-9+&@#/%=~_|[\\])]",P=new RegExp('(="|<)?\\b(https?|ftp|rvlink|file)(://'+D+"*"+Y+")(?=$|\\W)","gi"),V=new RegExp(Y,"i");function g(ad,ag,ai,ac){if(ag){return ad}if(ac.charAt(ac.length-1)!==")"){return"<"+ai+ac+">"}var ae=ac.match(/[()]/g);var Z=0;for(var aa=0;aa<ae.length;aa++){if(ae[aa]==="("){if(Z<=0){Z=1}else{Z++}}else{Z--}}var ab="";if(Z<0){var ah=new RegExp("\\){1,"+-Z+"}$");ac=ac.replace(ah,function(aj){ab=aj;return""})}if(ab){var af=ac.charAt(ac.length-1);if(!V.test(af)){ab=af+ab;ac=ac.substr(0,ac.length-1)}}return"<"+ai+ac+">"+ab}function S(aa){aa=aa.replace(P,g);var Z=function(ac,ab){return'<a target="_blank" href="'+ab+'">'+n.plainLinkText(ab)+"</a>"};aa=aa.replace(/<((https?|ftp|rvlink|file):[^'">\s]+)>/gi,Z);return aa}function U(Z){Z=Z.replace(/~E(\d+)E/g,function(aa,ac){var ab=parseInt(ac);return String.fromCharCode(ab)});return Z}function z(Z){Z=Z.replace(/^(\t|[ ]{1,4})/gm,"~0");Z=Z.replace(/~0/g,"");return Z}function R(ac){if(!/\t/.test(ac)){return ac}var ab=["    ","   ","  "," "],aa=0,Z;return ac.replace(/[\n\t]/g,function(ad,ae){if(ad==="\n"){aa=ae+1;return ad}Z=(ae-aa)%4;aa=ae+1;return ab[Z]})}var A=/(?:["'*()[\]:]|~D)/g;function H(aa){if(!aa){return""}var Z=aa.length;return aa.replace(A,function(ab,ac){if(ab=="~D"){return"%24"}if(ab==":"){if(ac==Z-1||/[0-9\/]/.test(aa.charAt(ac+1))){return":"}}return"%"+ab.charCodeAt(0).toString(16)})}function F(ad,aa,ab){var Z="(["+aa.replace(/([\[\]\\])/g,"\\$1")+"])";if(ab){Z="\\\\"+Z}var ac=new RegExp(Z,"g");ad=ad.replace(ac,y);return ad}function y(Z,ab){var aa=ab.charCodeAt(0);return"~E"+aa+"E"}}})();(function(){var a,d;if(typeof exports==="object"&&typeof require==="function"){a=exports;d=require("./Markdown.Converter").Converter}else{a=window.Markdown;d=a.Converter}a.getSanitizingConverter=function(){var k=new d;k.hooks.chain("postConversion",c);k.hooks.chain("postConversion",b);return k};function c(k){return k.replace(/<[^>]*>?/gi,e)}var g=/^(<\/?(b|blockquote|code|del|dd|dl|dt|em|h1|h2|h3|i|kbd|li|ol|p|pre|s|sup|sub|strong|strike|ul)>|<(br|hr)\s?\/?>)$/i;var h=/^(<a(\starget="[^"<>]+")?\shref="((https?|ftp|rvlink|file):\/\/|\/)[-A-Za-z0-9+&@#\/%?=~_|!:,.;\(\)]+"(\stitle="[^"<>]+")?\s?>|<\/a>)$/i;var j=/^(<img\ssrc="(https?:\/\/|\/)[-A-Za-z0-9+&@#\/%?=~_|!:,.;\(\)]+"(\swidth="\d{1,3}")?(\sheight="\d{1,3}")?(\salt="[^"<>]*")?(\stitle="[^"<>]*")?\s?\/?>)$/i;function e(k){if(k.match(g)||k.match(h)||k.match(j)){return k}else{return""}}function b(o){if(o==""){return""}var w=/<\/?\w+[^>]*(\s|$|>)/g;var x=o.toLowerCase().match(w);var u=(x||[]).length;if(u==0){return o}var t,y;var s="<p><img><br><li><hr>";var p;var q=[];var l=[];var n=false;for(var k=0;k<u;k++){t=x[k].replace(/<\/?(\w+).*/,"$1");if(q[k]||s.search("<"+t+">")>-1){continue}y=x[k];p=-1;if(!/^<\//.test(y)){for(var m=k+1;m<u;m++){if(!q[m]&&x[m]=="</"+t+">"){p=m;break}}}if(p==-1){n=l[k]=true}else{q[p]=true}}if(!n){return o}var k=0;o=o.replace(w,function(z){var A=l[k]?"":z;k++;return A});return o}})();Ext.define("Ext.ux.form.field.DateTime",{extend:"Ext.form.FieldContainer",mixins:{field:"Ext.form.field.Field"},alias:"widget.datetimefield",layout:"fit",timePosition:"right",dateCfg:{},timeCfg:{},allowBlank:true,initComponent:function(){var a=this;a.buildField();a.callParent();this.dateField=this.down("datefield");this.timeField=this.down("timefield");a.initField()},buildField:function(){var a;var b={};if(this.timePosition=="below"){a={type:"anchor"};b={anchor:"100%"}}else{a={type:"hbox",align:"middle"}}this.items={xtype:"container",layout:a,defaults:b,items:[Ext.apply({xtype:"datefield",format:"Y-m-d",width:this.timePosition!="below"?100:undefined,allowBlank:this.allowBlank,ignoreMonitorTab:true,emptyText:"date",listeners:{specialkey:this.onSpecialKey,blur:this.onBlur,scope:this},isFormField:false},this.dateCfg),Ext.apply({xtype:"timefield",format:"H:i",submitFormat:"H:i:s",emptyText:"time",margin:this.timePosition!="below"?"0 0 0 3":0,width:this.timePosition!="below"?80:undefined,allowBlank:this.allowBlank,listeners:{specialkey:this.onSpecialKey,blur:this.onBlur,scope:this},isFormField:false},this.timeCfg)]}},onBlur:function(a,b){if(b&&b.within(this.el)){return}if(this.timeField.hasFocus||this.dateField.hasFocus){return}this.callParent(arguments)},focus:function(){this.callParent();this.dateField.focus(false,100)},onSpecialKey:function(b,c){var a=c.getKey();if(a===c.TAB){if(b==this.dateField){if(c.shiftKey){this.fireEvent("specialkey",this,c)}}if(b==this.timeField){if(!c.shiftKey){this.fireEvent("specialkey",this,c)}}}else{if(this.inEditor){this.fireEvent("specialkey",this,c)}}},getValue:function(){var b,a=this.dateField.getSubmitValue(),d=this.timeField.getSubmitValue();if(!a&&d){}if(a){if(d){var c=this.getFormat();b=Ext.Date.parse(a+"T"+d,c)}else{b=this.dateField.getValue()}}return b},setValue:function(a){this.dateField.setValue(a);this.timeField.setValue(a)},getSubmitData:function(){var b=this.getValue(),c=this.getFormat(),a=null;b=b?Ext.Date.format(b,c):null;if(!this.disabled&&b!==null){a={};a[this.getName()]=b}return a},getFormat:function(){return"c"},getErrors:function(){return this.dateField.getErrors().concat(this.timeField.getErrors())},validate:function(){if(this.disabled){return true}else{var b=this.dateField.validate();var a=this.timeField.validate();return b&&a}},reset:function(){this.mixins.field.reset();this.dateField.reset();this.timeField.reset()}});Ext.define("FT.api",{extend:"Ext.Base",singleton:true,_call:function(a,b){Ext.Ajax.request({url:"/api/",headers:{"ftrack-user":FT.apiUser,"ftrack-csrf-token":FT.csrfToken,"Content-Type":"application/json"},method:"POST",jsonData:a,callback:function(c,e,d){b(Ext.decode(d.responseText))}})},query:function(a,b){this._call([{action:"query",expression:a}],function(c){b(c[0])})},update:function(d,e){var b=[],a=0,c=d.length;for(;a<c;a++){b.push(Ext.apply({action:"update"},d[a]))}this._call(b,e)},create:function(d,e){var b=[],a=0,c=d.length;for(;a<c;a++){b.push(Ext.apply({action:"create"},d[a]))}this._call(b,e)},parseQuery:function(a,b){this._call([{action:"parse_query",expression:a}],function(c){b(c[0])})}});log=function(b){if(!FT.debug){return}var c=this.log.caller;var a="";if(c){if(c.$owner){sourceClass=c.$owner.$className;a+=sourceClass}if(c.$name){sourceMethod=c.$name;a+="."+sourceMethod}}if(a!=""){FTrack.debug("LOGGER : "+a,"log")}FTrack.debug(b,"log")};assert=function(a,b){if(!a){throw"Assertion failed: "+b}};softassert=function(a,b){if(!a){log("Assertion failed: "+b);if(console&&console.trace){console.trace()}}};Ext.ns("FT.DebugTools");FT.DebugTools.Collection=[];FT.DebugTools.logCmpEvents=function(a){a=Ext.getCmp(a)||Ext.getCmp(a.id);if(!a){log("No component found")}Ext.util.Observable.capture(a,function(b){if(console&&console.info){console.info(b,arguments)}})};FT.DebugTools.listenToClick=function(a){var b=function(c){if(!c){return}var d=Ext.getCmp(c.id);return d};document.onclick=function(g){g=g||window.event;var h=g.target||g.srcElement;var e,d=[];do{var e=b(h);d.push(h);if(e&&e.itemSelector&&e.store){log("VIEW FOUND");for(var c=0;c<d.length;c++){log(e.getRecord(d[c]))}}if(e){log(e);if(!a){break}}h=(new Ext.Element(h)).parent()}while(h)}};Ext.define("FT.DebugTools.Collector",{basicMsg:"An un-expected error has occured. Please contact the system administrator or your FTrack support consultant.",ignoreError:false,constructor:function(a){Ext.apply(this,a);if(console){Ext.Function.interceptBefore(console,"log",this.insterceptLog,this)}window.onerror=Ext.bind(this.onError,this);this.callParent(arguments)},onError:function(c,a,b){if(!FT.debug){return}if(this.shouldSkip(c)){return}if(!this.errorDialog){this.errorDialog=this.createErrorDialog()}if(!this.ignoreError&&this.errorDialog.isHidden()){this.setErrorMsg(c,a,b);this.errorDialog.show();this.errorDialog.center()}},shouldSkip:function(a){return false},insterceptLog:function(a){},setErrorMsg:function(c,a,b){this.errorDialog.update(this.basicMsg+'<br /><br />Debug message: <span style="color:#EE2222">'+c+'</span><br /><span style="color:#808080;">'+a+" ("+b+")</span>")},createErrorDialog:function(){return Ext.create("FT.window.Modal",{title:"Ooops, sorry!",bodyPadding:20,width:600,html:this.basicMsg,closable:false,height:300,modal:true,closeAction:"hide",bbar:{xtype:"toolbar",ui:"window-docked-bottom-toolbar",items:[{xtype:"ftrack-button",text:"Ignore",handler:this.onIgnore,scope:this},'<span style="color:gray;">This session only</span>',"->",{xtype:"ftrack-button",text:"Reload",action:"save",handler:this.onReload,scope:this},{xtype:"ftrack-button",text:"Close",handler:this.onClose,scope:this}]}})},onIgnore:function(){this.ignoreError=true;this.errorDialog.close()},onReload:function(){window.location.reload()},onClose:function(){this.errorDialog.close()}});Ext.ns("FT");FT.delayOpen=false;FT.isAuth=function(a){var d=FT.Settings.get("currentuser","permissions");for(var b=0;b<d.length;b++){var c=d[b];if(c==a){return true}}return false};FT.getVar=function(d,b){var c=Ext.data.StoreManager.lookup("FT.store.UserSettings");if(!c){return b}var a=c.findExact("key",d);if(a!=-1){var e=c.getAt(a);return e.get("value")}return b};FT.logTime=function(){FT.action.fn.timesheet({entityId:FT.getUserId(),entityType:"user"})};FT.setVar=function(c,e){var b=Ext.data.StoreManager.lookup("FT.store.UserSettings");if(!b){return}var a=b.findExact("key",c);if(a!=-1){var d=b.getAt(a);if(d.get("value")==e){return}d.set("value",e)}else{b.add({key:c,value:e})}Ext.Ajax.request({url:"/settings/saveSetting",params:{data:Ext.encode({key:c,value:e})}})};FT.getUserId=function(){return FT.Settings.get("currentuser","userid")};FT.getThemeStylesheet=function(){var a=Ext.query("link[href*=ftrack-theme]");return a&&a.length&&a[0]};FT.getCurrentTheme=function(a){return a.href.indexOf("ftrack-theme-light")!==-1?"light":"dark"};FT.entityType=function(a){if(a=="assetversion"||a=="asset_version"){return"version"}else{if(a=="show"){return"project"}}return a};FT.isDemo=function(){return FT.Settings.get("ftrack","demo")};FT.tip=function(a){return FT.util.tips.getTip(a)};FT.getIconIds=function(){var a={overview:{y:-16},dashboard:{y:-16},shot:{y:-64},shots:{y:-64},task:{y:-80},tasks:{y:-80},versions:{y:-32},allversions:{y:-32},assetversion:{y:-32},note:{y:-48},notes:{y:-48},list:{y:-96},lists:{y:-96},filebin:{y:-112},addfile:{y:-112},people:{y:-128},user:{y:-128},inbox:{y:-48},log:{y:-208},timereports:{y:-144},logtime:{y:-144},usersoverview:{y:-128},projectsoverview:{y:-160},loggedhours:{y:-144},financialreports:{y:-144},projectbreakdown:{y:-144},userbreakdown:{y:-144},sequence:{y:-176},edit:{y:-224},create:{y:-240},publish:{y:-240},link:{y:-256},show:{y:-192},project:{y:-192},sequence:{y:-176},"asset build":{y:-272},episode:{y:-304},_default:{y:0}};return a};FT.getIcon=function(h,d,a,g){if(!Ext.isDefined(h)){return'<img src="/resources/trans.png" style="width:16px;height:16px;background-image:url(/resources/icons/dashboard-menu-icons.png);" alt="No icon" title="No icon" />'}var c,e,b="";c=FT.getIconIds();e={width:Ext.isDefined(a)&&Ext.isDefined(a.width)?a.width:16,height:Ext.isDefined(a)&&Ext.isDefined(a.height)?a.height:16,xPos:Ext.isDefined(d)&&d=="inverted"?16:0,yPos:c[Ext.isDefined(c[h])?h:"_default"]["y"]};b+="width:"+e.width+"px;height:"+e.height+"px;";b+="background-position:"+e.xPos+"px "+e.yPos+"px;";return'<i style="'+b+'background-image:url(/resources/icons/dashboard-menu-icons.png?noCache=3);"></i>'};FT.getSequenceId=function(){return"e5139355-61da-4c8f-9db4-3abc870166bc"};FT.getShotId=function(){return"bad911de-3bd6-47b9-8b46-3476e237cb36"};FT.getTaskId=function(){return"11c137c0-ee7e-4f9c-91c5-8c77cec22b2c"};FT.getAssetBuildId=function(){return"4be63b64-5010-42fb-bf1f-428af9d638f0"};FT.getAssetGroupId=function(){return"ab77c654-df17-11e2-b2f3-20c9d0831e59"};FT.getMilestoneId=function(){return"01decdd1-51cb-11e3-9d5b-20c9d0831e59"};FT.isExpressionAttributeable=function(a){var b=[FT.getShotId(),FT.getTaskId(),FT.getAssetBuildId()];return b.indexOf(a)!=-1};FT.getAllowedParents=function(c){var b=Ext.data.StoreManager.lookup("FT.store.ObjectType"),a=[];b.each(function(d){if(d.get("children").indexOf(c)!=-1){a.push(d.get("typeid"))}});return a};FT.getObjectType=function(b){var a=Ext.data.StoreManager.lookup("FT.store.ObjectType");return a.getAt(a.find("typeid",b)).get("name")};FT.getObjectTypeIcon=function(c){var b=Ext.data.StoreManager.lookup("FT.store.ObjectType");var a=b.findRecord("typeid",c);return a&&a.get("icon")||"default"};FT.isAllowedParent=function(c,a){var b=FT.getAllowedParents(c);return Ext.Array.contains(b,a)};FT.getFreeFilterText=function(a){filterText={shot:"shot name, description or priority",asset:"version name, type or publisher"};return filterText[a]};FT.stateColor=function(){var a=FT.Settings.get("color","state");return a;return{BLOCKED:"#ff0000",NOT_STARTED:"#4696bf",IN_PROGRESS:"#ffa500",DONE:"#ff6600"}};FT.stateSort=function(){return{BLOCKED:0,NOT_STARTED:1,IN_PROGRESS:2,DONE:3}};FT.glyphIconFromEntity=function(a,b){var c;if(a.type=="task"){c=FT.getObjectTypeIcon(a.objectType)}else{c=a.type}return FT.glyphIcon(c,b)};FT.glyphCodes={"3d-rotation":"21",accessibility:"22","account-balance":"23","account-box":"24",team:"25","account-circle":"26","add-shopping-cart":"27",assessment:"28",assignment:"29","assignment-ind":"2a","assignment-late":"2b","assignment-return":"2c","assignment-returned":"2d","assignment-turned-in":"2e",book2:"2f",bookmark:"30","bookmark-outline":"31","bug-report":"32","credit-card":"33",dashboard:"34","delete":"35",description:"36",dns:"37","done-all":"38",event:"39",explore:"3a",extension:"3b","face-unlock":"3c",favorite:"3d","favorite-outline":"3e","find-in-page":"3f","group-work":"40","help-filled":"41",remove:"42",home:"43",https:"44",info:"45","info-outline":"46",label:"47","label-outline":"48",language:"49",launch:"4a","lock-open":"4b","lock-outline":"4c",loyalty:"4d","markunread-mailbox":"4e","note-add":"4f","open-with":"50",pageview:"51","perm-camera-m":"52","perm-contact-cal":"53","perm-device-info":"54","perm-media":"55","picture-in-picture":"56",print:"57",receipt:"58",room:"59",search:"5a",settings:"5b","settings-applications":"5c",shop:"5d","shop-two":"5e","shopping-basket":"5f","shopping-cart":"60",stars:"61","supervisor-account":"62","swap-vert-circle":"63",tab:"64","tab-unselected":"65",theaters:"66","thumb-down":"67","thumb-up":"68","verified-user":"69","view-blocks":"6a","view-array":"6b","view-carousel":"6c","view-column":"6d","view-day":"6e","view-rows":"6f","view-thumbnails":"70","view-week":"71",visibility:"72","visibility-off":"73",work:"74",warning:"75",album:"76","closed-caption":"77",explicit:"78",loop:"79",mic:"7a",video:"7b","my-library-add":"7c","my-library-books":"7d","my-library-mus":"7e",pause:"140","pause-circle-fill":"141",play:"142","play-circle-fill":"143","play-circle-outline":"144",radio:"145","recent-actors":"146","skip-next":"147","skip-previous":"148",subtitles:"149","video-collection":"14a",videocam:"14b","volume-down":"14c",mute:"14d",volume:"14e",note:"14f",email:"150","live-help":"151","stay-current-landscape":"152","stay-current-portrait":"153",add:"154","add-filled":"155",archive:"156","content-copy":"157","content-cut":"158","content-paste":"159",create:"15a",drafts:"15b",flag:"15c",inbox2:"15d",link:"15e",mail:"15f",redo:"16a",minus:"16b","remove-circle":"a1","remove-circle-outline":"a2",report:"a3",save:"a4",undo:"a5",time:"a6",actions:"a7",devices:"a8",dvr:"a9",widgets:"aa","attach-file":"ab","attach-money":"ac","list-shots":"16c","list-tree":"ae","format-bold":"af","format-ital":"b0",list:"b1","format-list-numbered":"b2","format-paint":"b3","format-quote":"b4","format-size":"b5","insert-chart":"b6",file:"b7",calendar:"b8",image:"b9",pen:"ba",cloud2:"bb","cloud-circle":"bc","cloud-done":"bd","cloud-download":"be","cloud-off":"bf","cloud-queue":"c0","cloud-upload":"c1",folder:"c2","folder-open":"c3","folder-shared":"c4",computer:"c5",headset:"c6","keyboard-alt":"c7",mouse:"c8",speaker:"c9","tablet-mac":"ca",tv:"cb",watch:"cc",audio:"cd",brush:"ce",camera2:"cf",camera:"d0","camera-roll":"d1","color-lens":"d2","control-point":"d3","crop-original":"d4","filter-hdr":"d5","filter-none":"d6","filter-vintage":"d7",healing:"d8",lens:"d9",loupe:"da",nature:"db","nature-people":"dc",view:"dd",straighten:"de",style:"df",cloud:"e0","wb-incandescent":"e1","wb-sunny":"e2",directions:"e3","directions-bike":"e4","directions-bus":"e5","directions-car":"e6","directions-ferry":"e7","directions-subway":"e8","directions-walk":"e9",flight:"ea",hotel:"eb","local-atm":"ec","local-attraction":"ed","local-bar":"ee","local-cafe":"ef","local-drink":"f0","local-florist":"f1","local-gas-station":"f2","local-laundry-service":"f3",book:"f4","local-offer":"f5","local-restaurant":"f6","local-shipping":"f7",map:"f8",traff:"f9",apps:"fa",back:"fb",cancel:"fc",check:"fd",left:"fe",right:"ff",close:"100",up:"101",down:"102",menu:"103",refresh:"104","folder-special":"105","play-download":"106","play-install":"107",cake:"108",domain:"109",notifications:"10a","notifications-none":"10b","party-mode":"10c",user:"10d","user-add":"10e",publ:"10f",school:"110",share:"111",whatshot:"112","check-box-outline-blank":"113","radio-button-off":"114","radio-button-on":"115",star:"116","star-outline":"117",task:"118",filter:"119",help:"11a",project:"11b",asset:"11c",shot_old:"11d",output:"11e",input:"11f",review:"120",sequence:"121",contract:"122",version:"123",bars:"124",chart:"125",move:"126",episode_old:"127",milestone:"128",unlink:"129",feed:"12a",inbox:"12b",expand:"12c",fullscreen:"12d",earth:"12e",todo:"12f",square:"130",arrow:"131",circle:"132",table:"133","file-upload":"134","file-download":"135","pan-tool":"136","zoom-in":"137","zoom-out":"138",iso:"139"};FT.glyphIconAliases={grid:"view-rows",timesheet:"time",mail:"email",maximize:"expand",assetsgroup:"asset","import":"file-download",configure:"settings","export":"file-upload",assetversion:"version",attachment:"attach-file",recipients:"user-add",calendar1:"calendar",show:"project",movie:"video",assetbuild:"asset","asset build":"asset",largerow:"view-blocks",thinrow:"view-rows",hide:"close",activity:"feed",barchart:"bars",date:"calendar",upload:"file-upload",external:"launch",checkmark:"check","expand-left":"view","expand-right":"view",collapse:"close","collapse-right":"close","collapse-left":"close",bubble:"note",format:"help",bold:"format-bold",italic:"format-ital",bulllist:"list",numlist:"format-list-numbered",quote:"format-quote",textsize:"format-size",bubble2:"note",document:"file",smallcards:"view-rows",largecards:"view-blocks",prev:"skip-previous",next:"skip-next",browse:"sequence",error:"warning",incoming:"input",outgoing:"output",thumbs:"apps",timer:"play-circle-outline",job:"loop",reviewsession:"check"};FT._objectTypeIcons={task:"task",milestone:"milestone",shot:"video",episode:"tv",asset_build:"asset",folder:"folder","default":"folder",folder_shared:"folder-shared",folder_special:"folder-special",widgets:"widgets",extension:"extension",audio:"audio",image:"image",tv:"tv",mic:"mic",camera:"camera"};Ext.apply(FT.glyphIconAliases,FT._objectTypeIcons);FT.getGlyphCode=function(b){var a=FT.glyphCodes[b];if(!a){a=FT.glyphCodes[FT.glyphIconAliases[b]]}return a};FT.glyph=function(b){var a=FT.getGlyphCode(b);if(!Ext.isDefined(a)){return false}return"x"+a+"@ftrack"};FT.glyphIcon=function(g,c){c=c||{};var a=FT.getGlyphCode(g),b="ftrack-font-face",d="",e="";if(c.cls){b+=" "+c.cls}if(c.size){d=' style="font-size: '+c.size+';"'}if(c.tooltip){e=Ext.String.format(' data-qtip="{0}"',c.tooltip)}if(a){return'<span class="'+b+'"'+d+e+">&#x"+a+";</span>"}return""};FT.isFullscreen=function(){if(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement){return true}else{return false}};FT.toggleFullscreen=function(a){var c=a.requestFullScreen||a.webkitRequestFullscreen||a.mozRequestFullScreen||a.msRequestFullScreen;var b=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen;if(FT.isFullscreen()){b.call(document)}else{if(c){c.call(a)}}};var fullScreenCallback=function(){var a=FT.isFullscreen();if(FT&&FT.app){FT.app.fireEvent("fullscreen",a)}};document.addEventListener("fullscreenchange",fullScreenCallback,false);document.addEventListener("mozfullscreenchange",fullScreenCallback,false);document.addEventListener("webkitfullscreenchange",fullScreenCallback,false);document.addEventListener("MSFullscreenChange",fullScreenCallback,false);FT.getApi=function(e,a){var c=Ext.direct.Manager.getProvider("Api"),b=FTApi[e],d={};assert(b,"action "+e+" must be defined in FTApi");Ext.iterate(b,function(g,h){var j=function(){c.on("beforecall",function(l,k,m){k.pushToken=a},this,{single:true});h.apply(this,arguments)};j.directCfg=h.directCfg;d[g]=j});return d};FT.getHierarchyName=function(){var a=FT.app.location.getLocation();var b="Shots";Ext.each(a,function(c){if(c.objectType=="ab77c654-df17-11e2-b2f3-20c9d0831e59"){b="Asset builds"}else{if(c.objectType=="show"&&a.length==1){b="Shots/Asset builds"}}},this);return b};FT.getUserTimezoneOffset=function(){return(new Date).getTimezoneOffset()};Ext.define("FT.Location",{mixins:{observable:"Ext.util.Observable"},constructor:function(a){this.addEvents("locationchanged","projectchanged");this.mixins.observable.constructor.call(this);Ext.apply(this,a);this.callParent(arguments)},setLocation:function(b){this._location=Ext.clone(b);this.fireEvent("locationchanged",Ext.clone(this._location));this.setProject(this._location);var a=null;if(Ext.isArray(this._location)&&this._location.length>0){var c=this._location[this._location.length-1];a=c.objectType}this.setObjectType(a)},getLocation:function(){return Ext.clone(this._location)},getObjectType:function(){return this._objectType},setObjectType:function(a){this._objectType=a},setProject:function(b){var a=this._projectId;delete this._projectId;if(b&&b[0]&&b[0].type=="show"){this._projectId=b[0].id}this.fireEvent("projectchanged",this._projectId,a)},getProjectId:function(){return this._projectId}});Ext.define("FT.component.LoadingIndicator",{extend:"Ext.Component",loaderCls:null,scale:"mini",_sizes:{mini:28},initComponent:function(a){this.html=this._getHtml();if(!this.width){this.width=this._sizes[this.scale]}if(!this.height){this.height=this._sizes[this.scale]}this.callParent(arguments)},_getHtml:function(){var a=['<div class="loader'];if(this.scale){a.push(" loader--"+this.scale)}if(this.loaderCls){a.push(" "+this.loaderCls)}a.push('"></div>');return a.join("")}});Ext.define("FT.event.Event",{alternateClassName:"FT.Event",constructor:function(a){Ext.apply(this,a,{id:Ext.data.IdGenerator.get("uuid").generate().replace(/-/g,""),data:{},topic:"",sent:null,source:{},target:"",inReplyToEvent:null})}});Ext.define("FT.event.EventHub",{alternateClassName:"FT.EventHub",mixins:{observable:"Ext.util.Observable"},singleton:true,defaultTimeoutMessage:"No response from event hub",defaultTimeoutMilliseconds:5000,namespace:"ftrack.event",constructor:function(a){this.mixins.observable.constructor.call(this,a);this.hasInitiatedListener=false;this.subscribers=[];Ext.applyIf(this,{id:this._generateUuid()})},_generateUuid:function(){return Ext.data.IdGenerator.get("uuid").generate().replace(/-/g,"")},_bindListener:function(){if(!this.hasInitiatedListener){this.hasInitiatedListener=true;FT.socket.on("connect",Ext.bind(this._onConnect,this));FT.socket.on("ftrack.event",Ext.bind(this.handleEvent,this))}},_onConnect:function(){if(this.open()){this._subscribeToEvents()}},_subscribeToEvents:function(){try{this._addSubscriber("topic=ftrack.meta.reply",Ext.bind(this._handleReply,this),{id:this.id,applicationId:"ftrack.client.web"})}catch(a){}this.subscribers.forEach(function(c,b,d){this._notifyServerAboutSubscriber(c)},this)},open:function(){var a=FT.socket.socket.transport;if(Ext.isDefined(a.websocket)&&a.websocket.readyState!==WebSocket.OPEN){return false}return FT.socket.socket.open},connected:function(){return FT.socket.socket.connected},getSubscriberByIdentifier:function(b){var a=null;Ext.each(this.subscribers,function(d,c,e){if(d.metadata.id==b){a=d;return false}});return a},subscribe:function(c,d,b){this._bindListener();b=this._addSubscriber(c,d,b);try{this._notifyServerAboutSubscriber(b)}catch(a){log("Failed to notify server about new subscriber "+b.metadata.id+" as server not currently reachable.")}return b.metadata.id},_addSubscriber:function(b,d,a){if(!Ext.isDefined(a)){a={}}if(!Ext.isDefined(a.id)){a.id=this._generateUuid()}if(!Ext.isDefined(a.applicationId)){a.applicationId="ftrack.client.web"}if(!Ext.isDefined(a.user)){a.user=this._getUser()}var c=this.getSubscriberByIdentifier(a.id);if(c!==null){throw new Error("Subscriber with identifier "+a.id+" already exists.")}a={subscription:b,callback:d,metadata:a,active:true};this.subscribers.push(a);return a},_notifyServerAboutSubscriber:function(b){var a=Ext.create("FT.Event",{topic:"ftrack.meta.subscribe",data:{subscriber:b.metadata,subscription:b.subscription}});this.publish(a)},_getUser:function(){var b=null,c=null;try{b=FT.Settings.get("currentuser","userid")}catch(a){}try{c=FT.Settings.get("currentuser","username")}catch(a){}return{username:c,id:b}},_prepareEvent:function(a){Ext.merge(a.source,Ext.merge({id:this.id,user:this._getUser()},a.source))},publish:function(b,e,a,d){var c=true;this._bindListener();if(!this.connected()){throw new Error("Cannot publish event as not connected to server.")}if(!this.open()){throw new Error("Cannot publish event as connection is not open.")}this._prepareEvent(b);if(d&&d.single===false){c=false}this.on(b.id,e,a,{single:c});if(d&&d.timeout){this._configureTimeout(b.id,e,a,d)}FT.socket.emit(this.namespace,b)},_configureTimeout:function(e,h,d,g){var a,b,c;a=Ext.value(g.timeoutMessage,this.defaultTimeoutMessage);c=Ext.value(g.timeoutMilliseconds,this.defaultTimeoutMilliseconds);b=function(){if(this.hasListener(e)){this.un(e,h,d);if(g&&g.timeoutCallback){g.timeoutCallback.apply(d)}else{if(!g||g.displayTimeoutMessage!==false){FT.notifyError(a)}}}};Ext.defer(b,c,this)},handleEvent:function(a){a=Ext.create("FT.Event",a);this.subscribers.forEach(function(d,c,e){var b=d.subscription.replace("topic=","");if(a.topic==b){d.callback(a)}})},_handleReply:function(a){if(a.inReplyToEvent!==null){this.fireEvent(a.inReplyToEvent,a)}}});Ext.ns("FT.util.tips");FT.util.tips.getTip=function(a){if(!FT.util.tips._tips){FT.util.tips._tips={};FT.util.tips._tips["toolbar-button-icononly-save"]=FT.i18n("Save (Ctrl+S)");FT.util.tips._tips["toolbar-button-icononly-save-notvisible"]=FT.i18n("Save (all changes not visible)  (Ctrl+S)");FT.util.tips._tips["toolbar-button-icononly-undo"]=FT.i18n("Undo (Ctrl+Z)");FT.util.tips._tips["toolbar-button-icononly-redo"]=FT.i18n("Redo (Ctrl+Shift+Z)");FT.util.tips._tips["toolbar-button-icononly-create"]=FT.i18n("Add");FT.util.tips._tips["toolbar-button-icononly-remove"]=FT.i18n("Remove");FT.util.tips._tips["toolbar-button-icononly-copy"]=FT.i18n("Copy");FT.util.tips._tips["toolbar-button-icononly-paste"]=FT.i18n("Paste");FT.util.tips._tips["toolbar-button-icononly-addtask"]=FT.i18n("Task (Alt+T)");FT.util.tips._tips["toolbar-button-icononly-addsequence"]=FT.i18n("Sequence/Shot");FT.util.tips._tips["toolbar-button-icononly-removewshortcut"]=FT.i18n("Remove");FT.util.tips._tips["toolbar-button-icononly-copywshortcut"]=FT.i18n("Copy (Ctrl+C)");FT.util.tips._tips["toolbar-button-icononly-pastewshortcut"]=FT.i18n("Paste (Ctrl+V)");FT.util.tips._tips["toolbar-button-icononly-export"]=FT.i18n("Export");FT.util.tips._tips["toolbar-button-icononly-configure"]=FT.i18n("Settings");FT.util.tips._tips["toolbar-button-icononly-configure-match"]=FT.i18n("Uses pipeline order to do simple leveling according to bid and connects dependencies.");FT.util.tips._tips["toolbar-button-icononly-configure-match-bid-duration"]=FT.i18n("Make the duration of the task match bid when setting start/end dates using click and drag in the gantt schedule.");FT.util.tips._tips["toolbar-button-icononly-configure-reorder"]=FT.i18n("Reorder objects using drag & drop.");FT.util.tips._tips["toolbar-button-icononly-configure-autosave"]=FT.i18n("Auto save in spreadsheet and gantt chart.");FT.util.tips._tips["toolbar-button-icononly-import"]=FT.i18n("Import");FT.util.tips._tips["toolbar-button-icononly-refreshspreadsheet"]=FT.i18n("Refresh spreadsheet manually.");FT.util.tips._tips["toolbar-button-icononly-connectpublisher"]=FT.i18n("Publish files with connect");FT.util.tips._tips["toolbar-button-icononly-connectpublisher-disabled"]=FT.i18n("Cannot publish on this object");FT.util.tips._tips["toolbar-button-icononly-action-launch"]=FT.i18n("Display available actions for this object");FT.util.tips._tips["toolbar-button-icononly-action-launch-disabled"]=FT.i18n("Cannot launch actions for this object");FT.util.tips._tips["toolbar-button-attributes"]=FT.i18n("Select columns");FT.util.tips._tips["toolbar-button-lists"]=FT.i18n("Lists");FT.util.tips._tips["toolbar-button-views"]=FT.i18n("Views");FT.util.tips._tips["shots-toolbar-viewbutton-grid"]=FT.i18n("Spreadsheet layout");FT.util.tips._tips["shots-toolbar-viewbutton-card"]=FT.i18n("Card layout");FT.util.tips._tips["shots-toolbar-viewbutton-thumb"]=FT.i18n("Thumb layout");FT.util.tips._tips["tasks-toolbar-viewbutton-task"]=FT.i18n("Task");FT.util.tips._tips["tasks-toolbar-viewbutton-gantt"]=FT.i18n("Gantt");FT.util.tips._tips["tasks-toolbar-button-panels"]=FT.i18n("Show/hide panels");FT.util.tips._tips["widget-tools-reload"]=FT.i18n("Reload widget");FT.util.tips._tips["widget-tools-maximize"]=FT.i18n("Maximize widget");FT.util.tips._tips["button-search"]=FT.i18n("Search")+" <span style=\"padding-left:5px;font-family:'Roboto Bold',sans-serif;\">Q</span>";FT.util.tips._tips["transfer-review-session-set-approved"]=FT.i18n('Set status on objects where all invitee feedback given is "approved".');FT.util.tips._tips["transfer-review-session-set-require-changes"]=FT.i18n('Set status on objects where any invitee feedback given is "require changes".')}return FT.util.tips._tips[a]};Ext.ns("FT.util.security");FT.util.security.generateToken=function(b,a){Ext.Ajax.request({url:"/user/token",success:function(c){var d=c.responseText;b(d)}})};Ext.define("FT.util.ComponentPathResolver",{alternateClassName:"FT.ComponentPathResolver",mixins:{observable:"Ext.util.Observable"},singleton:true,constructor:function(a){this.mixins.observable.constructor.call(this,a);this.hasInitiatedListener=false},resolve:function(c,d,g){var b=Ext.isWindows?"Windows":"Linux";var a=FT.Settings.get("ASSET","asset_path_convert");if(a=="windows"){b="Windows"}else{if(a=="linux"){b="Linux"}}var e=Ext.create("FT.Event",{topic:"ftrack.location.request-resolve",data:{locationName:d,componentId:c,platform:b}});FT.EventHub.publish(e,g)}});Ext.define("FT.util.Connect",{alternateClassName:"FT.Connect",mixins:{observable:"Ext.util.Observable"},singleton:true,constructor:function(a){this.mixins.observable.constructor.call(this,a);this.hasInitiatedListener=false},openPublisher:function(b){var c,a,e=FT.i18n("Starting Connect publisher"),d;c=Ext.create("FT.Event",{topic:"ftrack.connect",data:{action:"start",plugin:"publish",entity:b}});a=FT.i18n("Could not launch publisher. Please check Connect is installed and running.");d=Ext.create("FT.window.Message",{header:true,title:e,modal:false,closable:true,defaults:{margin:0}});d.setMessage({message:e,showButton:false});var a=[FT.i18n("Haven't managed to start the Connect publisher yet..."),"<br>",FT.i18n("you might want to check You have Connect running"),"<br><br>",'<a href="https://www.ftrack.com/portfolio/connect" target="_blank">',FT.i18n("Need help using Connect?"),"</a>","<br><br><br><br>",'<a class="button button-primary" href="https://www.ftrack.com/portfolio/connect" target="_blank">',FT.i18n("Download Connect"),"</a>"].join("");FT.EventHub.publish(c,function(g){d.setMessage({message:g.data.message,showButton:false});Ext.defer(d.close,2000,d)},this,{timeout:true,timeoutCallback:function(){d.setMessage({message:a,showButton:false})}})},handleResponse:function(a,b){if(a.data.items){this._showForm(b,a.data);return}if(a.data.type=="widget"){this._showWidget(b,a.data);return}if(a.data.success){FT.notifySuccess(a.data.message)}else{FT.notifyError(a.data.message)}},_showWidget:function(d,e){var a,b,c=[];Ext.each(d.selection,function(g){if(g.entityId&&g.entityType){c.push({id:g.entityId,type:FT.fromLegacyEntityType(g.entityType)})}else{c.push(g)}});b=Ext.create("FT.component.Iframe",{src:e.url,allowPostMessage:true,data:{selection:c}});a=Ext.create("FT.window.Window",{layout:"fit",height:500,width:540,modal:true,title:e.title||d.label,autoShow:true,items:[b]});b.on("close-iframe-window",function(){a.close()},this)},_showForm:function(b,d){var a,c;c=Ext.create("FT.form.Action",{formData:d,actionData:b});a=Ext.create("FT.window.Window",{layout:"fit",height:500,width:540,modal:true,title:d.title||b.label,autoShow:true,items:[c]});c.on("submit-form",function(e){b.values=e;this.launchActionWithoutTimeout(b);a.close()},this)},launchAction:function(d,h,g){var c,a,b=this,e;if(!g){g={timeout:true,timeoutMessage:FT.i18n("Could not launch action.")}}e=function(j){b.handleResponse(j,d)};c=Ext.create("FT.Event",{topic:"ftrack.action.launch",data:d});FT.EventHub.publish(c,h||e,this,g)},launchActionWithoutTimeout:function(a){this.launchAction(a,null,{})},getActions:function(b,e,c){var d,a;d=Ext.create("FT.Event",{topic:"ftrack.action.discover",data:{context:b}});a=FT.i18n("Could not get any available actions.");FT.EventHub.publish(d,e,c,{timeout:true,displayTimeoutMessage:false,timeoutMilliseconds:30000,single:false})}});Ext.define("FT.direct.RemotingProvider",{extend:"Ext.direct.RemotingProvider",alias:"direct.ftremotingprovider",constructor:function(){this.callParent(arguments)},getCallData:function(b){var a=this.callParent([b]);a.pushToken=b.pushToken;return a}});Ext.define("FT.data.proxy.Batch",{extend:"Ext.data.proxy.Ajax",alias:"proxy.batch",statics:{delayedRequest:new Ext.util.DelayedTask(function(){FT.data.proxy.Batch.doDelayedRequest()}),pendingRequests:new Ext.util.MixedCollection,doDelayedRequest:function(){var d=FT.data.proxy.Batch.pendingRequests;var c=[];d.eachKey(function(e){var g=d.get(e);var h={params:g.params,storeId:e};c.push(h)});var b=d.clone();d.clear();var a="/"+FT.app.batchController+"/get";Ext.Ajax.request({url:a,params:{data:Ext.encode(c)},success:function(e){var g=Ext.decode(e.responseText);Ext.iterate(g,function(h,k){var j=b.get(h);j.callback.call(j.scope,null,true,k.data)},this);b.clear()},scope:this})}},constructor:function(a){this.callParent([a])},doRequest:function(a,e,b){if(a.action!="read"){return this.callParent()}var d=this.getWriter(),c=this.buildRequest(a,e,b);if(a.allowWrite()){c=d.write(c)}Ext.apply(c,{headers:this.headers,timeout:this.timeout,scope:this,callback:this.createRequestCallback(c,a,e,b),method:this.getMethod(c),disableCaching:false});FT.data.proxy.Batch.pendingRequests.add("batch-"+Ext.id(),c);FT.data.proxy.Batch.delayedRequest.delay(15);return c}});Ext.define("FT.data.EventHubProxy",{extend:"Ext.data.proxy.Proxy",alias:"proxy.eventhub",singleResponse:true,timeoutMilliseconds:undefined,read:function(e,l,m){var j=this,k,h=e.sorters,g=e.groupers,b=e.filters,c={},d={};d={single:this.singleResponse};if(this.singleResponse===false){e.addRecords=true}if(this.timeoutMilliseconds){Ext.apply(d,{timeout:true,timeoutMilliseconds:this.timeoutMilliseconds,timeoutCallback:function(){e.resultSet=k=j.getReader().read([]);e.setCompleted();e.setSuccessful();Ext.callback(l,m||j,[e]);j.fireEvent("event-timeout",j,e)}})}Ext.apply(c,e.params,j.extraParams);Ext.applyIf(c,{sorters:h,groupers:g,filters:b});var a=Ext.create("FT.Event",{topic:this.topic,data:c});FT.EventHub.publish(a,function(n){e.resultSet=k=j.getReader().read(n.data);e.setCompleted();if(k.success){e.setSuccessful()}else{j.fireEvent("exception",j,null,e)}Ext.callback(l,m||j,[e])},undefined,d)}});Ext.define("FT.data.DirectFType",{extend:"Ext.data.Store",fields:[],constructor:function(b){if(this.idProperty){var a="factory-directftype-model-"+Ext.id();Ext.define(a,{extend:"Ext.data.Model",fields:[],idField:{name:this.idProperty}});this.model=a}this.proxy={type:"direct",reader:{idProperty:this.idProperty,root:"data"}};Ext.apply(this,b);if(Ext.isString(this.method)){this.proxy.directFn=["FTApi.FType",this.type,this.method].join(".")}else{var c={};Ext.iterate(this.method,function(d,e){c[d]=["FTApi.FType",this.type,e].join(".")},this);this.proxy.api=c}this.callParent(arguments)}});Ext.define("FT.data.DirectTaskStatus",{extend:"FT.data.DirectFType",type:"TaskStatus",method:"getByEntity"});Ext.define("FT.data.DirectWorkflow",{extend:"FT.data.DirectFType",type:"WorkflowSchema",idProperty:"schemeid",method:{read:"all",create:"create",update:"update",destroy:"delete"}});Ext.define("FT.data.DirectVersionStatus",{extend:"FT.data.DirectFType",type:"VersionStatus",method:"getByEntity"});Ext.define("FT.data.DirectActiveProjects",{extend:"FT.data.DirectFType",type:"Project",method:"getActive"});Ext.define("FT.data.DirectArbitraryContextStatus",{extend:"FT.data.DirectFType",type:"ArbitraryContextStatus",method:"getBySchemeId"});Ext.define("FT.data.DirectArbitraryContextType",{extend:"FT.data.DirectFType",type:"ArbitraryContextType",method:"getBySchemeId"});Ext.define("FT.data.DirectTaskType",{extend:"FT.data.DirectFType",type:"TaskType",method:"getByEntity"});Ext.define("FT.data.DirectTaskTemplate",{extend:"FT.data.DirectFType",type:"TaskTemplate",method:{read:"getTaskTemplates",create:"create",destroy:"delete"}});Ext.define("FT.data.DirectUsers",{extend:"FT.data.DirectFType",type:"Users",method:"getByEntity"});Ext.define("FT.data.DirectGroups",{extend:"FT.data.DirectFType",type:"Groups",method:"getByEntity"});(function(a,b){var c=a;c.version="0.9.2";c.protocol=1;c.transports=[];c.j=[];c.sockets={};c.connect=function(j,g){var h=c.util.parseUri(j),k,d;if(b&&b.location){h.protocol=h.protocol||b.location.protocol.slice(0,-1);h.host=h.host||(b.document?b.document.domain:b.location.hostname);h.port=h.port||b.location.port}k=c.util.uniqueUri(h);var e={host:h.host,secure:"https"==h.protocol,port:h.port||("https"==h.protocol?443:80),query:h.query||""};c.util.merge(e,g);if(e["force new connection"]||!c.sockets[k]){d=new c.Socket(e)}if(!e["force new connection"]&&d){c.sockets[k]=d}d=d||c.sockets[k];return d.of(h.path.length>1?h.path:"")}})("object"===typeof module?module.exports:(this.io={}),this);(function(b,d){var a=b.util={};var c=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;var e=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];a.parseUri=function(n){var j=c.exec(n||""),l={},k=14;while(k--){l[e[k]]=j[k]||""}return l};a.uniqueUri=function(l){var m=l.protocol,k=l.host,j=l.port;if("document" in d){k=k||document.domain;j=j||(m=="https"&&document.location.protocol!=="https:"?443:document.location.port)}else{k=k||"localhost";if(!j&&m=="https"){j=443}}return(m||"http")+"://"+k+":"+(j||80)};a.query=function(n,j){var m=a.chunkQuery(n||""),l=[];a.merge(m,a.chunkQuery(j||""));for(var k in m){if(m.hasOwnProperty(k)){l.push(k+"="+m[k])}}return l.length?"?"+l.join("&"):""};a.chunkQuery=function(j){var o={},p=j.split("&"),m=0,k=p.length,n;for(;m<k;++m){n=p[m].split("=");if(n[0]){o[n[0]]=n[1]}}return o};var g=false;a.load=function(j){if("document" in d&&document.readyState==="complete"||g){return j()}a.on(d,"load",j,false)};a.on=function(k,m,l,j){if(k.attachEvent){k.attachEvent("on"+m,l)}else{if(k.addEventListener){k.addEventListener(m,l,j)}}};a.request=function(j){if(j&&"undefined"!=typeof XDomainRequest){return new XDomainRequest}if("undefined"!=typeof XMLHttpRequest&&(!j||a.ua.hasCORS)){return new XMLHttpRequest}if(!j){try{return new (window[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(k){}}return null};if("undefined"!=typeof window){a.load(function(){g=true})}a.defer=function(j){if(!a.ua.webkit||"undefined"!=typeof importScripts){return j()}a.load(function(){setTimeout(j,100)})};a.merge=function h(n,j,k,m){var l=m||[],o=typeof k=="undefined"?2:k,p;for(p in j){if(j.hasOwnProperty(p)&&a.indexOf(l,p)<0){if(typeof n[p]!=="object"||!o){n[p]=j[p];l.push(j[p])}else{a.merge(n[p],j[p],o-1,l)}}}return n};a.mixin=function(k,j){a.merge(k.prototype,j.prototype)};a.inherit=function(k,j){function l(){}l.prototype=j.prototype;k.prototype=new l};a.isArray=Array.isArray||function(j){return Object.prototype.toString.call(j)==="[object Array]"};a.intersect=function(j,m){var n=[],p=j.length>m.length?j:m,q=j.length>m.length?m:j;for(var o=0,k=q.length;o<k;o++){if(~a.indexOf(p,q[o])){n.push(q[o])}}return n};a.indexOf=function(k,n,m){for(var l=k.length,m=m<0?m+l<0?0:m+l:m||0;m<l&&k[m]!==n;m++){}return l<=m?-1:m};a.toArray=function(n){var j=[];for(var m=0,k=n.length;m<k;m++){j.push(n[m])}return j};a.ua={};a.ua.hasCORS="undefined"!=typeof XMLHttpRequest&&function(){try{var j=new XMLHttpRequest}catch(k){return false}return j.withCredentials!=undefined}();a.ua.webkit="undefined"!=typeof navigator&&/webkit/i.test(navigator.userAgent)})("undefined"!=typeof io?io:module.exports,this);(function(a,c){a.EventEmitter=b;function b(){}b.prototype.on=function(d,e){if(!this.$events){this.$events={}}if(!this.$events[d]){this.$events[d]=e}else{if(c.util.isArray(this.$events[d])){this.$events[d].push(e)}else{this.$events[d]=[this.$events[d],e]}}return this};b.prototype.addListener=b.prototype.on;b.prototype.once=function(g,h){var e=this;function d(){e.removeListener(g,d);h.apply(this,arguments)}d.listener=h;this.on(g,d);return this};b.prototype.removeListener=function(e,h){if(this.$events&&this.$events[e]){var j=this.$events[e];if(c.util.isArray(j)){var k=-1;for(var g=0,d=j.length;g<d;g++){if(j[g]===h||j[g].listener&&j[g].listener===h){k=g;break}}if(k<0){return this}j.splice(k,1);if(!j.length){delete this.$events[e]}}else{if(j===h||j.listener&&j.listener===h){delete this.$events[e]}}}return this};b.prototype.removeAllListeners=function(d){if(this.$events&&this.$events[d]){this.$events[d]=null}return this};b.prototype.listeners=function(d){if(!this.$events){this.$events={}}if(!this.$events[d]){this.$events[d]=[]}if(!c.util.isArray(this.$events[d])){this.$events[d]=[this.$events[d]]}return this.$events[d]};b.prototype.emit=function(g){if(!this.$events){return false}var k=this.$events[g];if(!k){return false}var e=Array.prototype.slice.call(arguments,1);if("function"==typeof k){k.apply(this,e)}else{if(c.util.isArray(k)){var j=k.slice();for(var h=0,d=j.length;h<d;h++){j[h].apply(this,e)}}else{return false}}return true}})("undefined"!=typeof io?io:module.exports,"undefined"!=typeof io?io:module.parent.exports);(function(exports,nativeJSON){if(nativeJSON&&nativeJSON.parse){return exports.JSON={parse:nativeJSON.parse,stringify:nativeJSON.stringify}}var JSON=exports.JSON={};function f(n){return n<10?"0"+n:n}function date(d,key){return isFinite(d.valueOf())?d.getUTCFullYear()+"-"+f(d.getUTCMonth()+1)+"-"+f(d.getUTCDate())+"T"+f(d.getUTCHours())+":"+f(d.getUTCMinutes())+":"+f(d.getUTCSeconds())+"Z":null}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value instanceof Date){value=date(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==="string"){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})};JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}})("undefined"!=typeof io?io:module.exports,typeof JSON!=="undefined"?JSON:undefined);(function(d,h){var a=d.parser={};var e=a.packets=["disconnect","connect","heartbeat","message","json","event","ack","error","noop"];var b=a.reasons=["transport not supported","client not handshaken","unauthorized"];var c=a.advice=["reconnect"];var k=h.JSON,j=h.util.indexOf;a.encodePacket=function(m){var s=j(e,m.type),l=m.id||"",u=m.endpoint||"",w=m.ack,p=null;switch(m.type){case"error":var q=m.reason?j(b,m.reason):"",n=m.advice?j(c,m.advice):"";if(q!==""||n!==""){p=q+(n!==""?"+"+n:"")}break;case"message":if(m.data!==""){p=m.data}break;case"event":var t={name:m.name};if(m.args&&m.args.length){t.args=m.args}p=k.stringify(t);break;case"json":p=k.stringify(m.data);break;case"connect":if(m.qs){p=m.qs}break;case"ack":p=m.ackId+(m.args&&m.args.length?"+"+k.stringify(m.args):"");break}var o=[s,l+(w=="data"?"+":""),u];if(p!==null&&p!==undefined){o.push(p)}return o.join(":")};a.encodePayload=function(q){var n="";if(q.length==1){return q[0]}for(var o=0,m=q.length;o<m;o++){var p=q[o];n+="\ufffd"+p.length+"\ufffd"+q[o]}return n};var g=/([^:]+):([0-9]+)?(\+)?:([^:]+)?:?([\s\S]*)?/;a.decodePacket=function(n){var m=n.match(g);if(!m){return{}}var q=m[2]||"",n=m[5]||"",p={type:e[m[1]],endpoint:m[4]||""};if(q){p.id=q;if(m[3]){p.ack="data"}else{p.ack=true}}switch(p.type){case"error":var m=n.split("+");p.reason=b[m[0]]||"";p.advice=c[m[1]]||"";break;case"message":p.data=n||"";break;case"event":try{var l=k.parse(n);p.name=l.name;p.args=l.args}catch(o){}p.args=p.args||[];break;case"json":try{p.data=k.parse(n)}catch(o){}break;case"connect":p.qs=n||"";break;case"ack":var m=n.match(/^([0-9]+)(\+)?(.*)/);if(m){p.ackId=m[1];p.args=[];if(m[3]){try{p.args=m[3]?k.parse(m[3]):[]}catch(o){}}}break;case"disconnect":case"heartbeat":break}return p};a.decodePayload=function(o){if(o.charAt(0)=="\ufffd"){var l=[];for(var m=1,n="";m<o.length;m++){if(o.charAt(m)=="\ufffd"){l.push(a.decodePacket(o.substr(m+1).substr(0,n)));m+=Number(n)+1;n=""}else{n+=o.charAt(m)}}return l}else{return[a.decodePacket(o)]}}})("undefined"!=typeof io?io:module.exports,"undefined"!=typeof io?io:module.parent.exports);(function(a,c){a.Transport=b;function b(d,e){this.socket=d;this.sessid=e}c.util.mixin(b,c.EventEmitter);b.prototype.onData=function(h){this.clearCloseTimeout();if(this.socket.connected||this.socket.connecting||this.socket.reconnecting){this.setCloseTimeout()}if(h!==""){var g=c.parser.decodePayload(h);if(g&&g.length){for(var e=0,d=g.length;e<d;e++){this.onPacket(g[e])}}}return this};b.prototype.onPacket=function(d){this.socket.setHeartbeatTimeout();if(d.type=="heartbeat"){return this.onHeartbeat()}if(d.type=="connect"&&d.endpoint==""){this.onConnect()}this.socket.onPacket(d);return this};b.prototype.setCloseTimeout=function(){if(!this.closeTimeout){var d=this;this.closeTimeout=setTimeout(function(){d.onDisconnect()},this.socket.closeTimeout)}};b.prototype.onDisconnect=function(){if(this.close&&this.open){this.close()}this.clearTimeouts();this.socket.onDisconnect();return this};b.prototype.onConnect=function(){this.socket.onConnect();return this};b.prototype.clearCloseTimeout=function(){if(this.closeTimeout){clearTimeout(this.closeTimeout);this.closeTimeout=null}};b.prototype.clearTimeouts=function(){this.clearCloseTimeout();if(this.reopenTimeout){clearTimeout(this.reopenTimeout)}};b.prototype.packet=function(d){this.send(c.parser.encodePacket(d))};b.prototype.onHeartbeat=function(d){this.packet({type:"heartbeat"})};b.prototype.onOpen=function(){this.open=true;this.clearCloseTimeout();this.socket.onOpen()};b.prototype.onClose=function(){var d=this;this.open=false;this.socket.onClose();this.onDisconnect()};b.prototype.prepareUrl=function(){var d=this.socket.options;return this.scheme()+"://"+d.host+":"+d.port+"/"+d.resource+"/"+c.protocol+"/"+this.name+"/"+this.sessid};b.prototype.ready=function(d,e){e.call(this)}})("undefined"!=typeof io?io:module.exports,"undefined"!=typeof io?io:module.parent.exports);(function(b,e,c){b.Socket=a;function a(h){this.options={port:80,secure:false,document:"document" in c?document:false,resource:"socket.io",transports:e.transports,"connect timeout":10000,"try multiple transports":true,reconnect:true,"reconnection delay":500,"reconnection limit":Infinity,"reopen delay":3000,"max reconnection attempts":10,"sync disconnect on unload":true,"auto connect":true,"flash policy port":10843};e.util.merge(this.options,h);this.connected=false;this.open=false;this.connecting=false;this.reconnecting=false;this.namespaces={};this.buffer=[];this.doBuffer=false;if(this.options["sync disconnect on unload"]&&(!this.isXDomain()||e.util.ua.hasCORS)){var g=this;e.util.on(c,"beforeunload",function(){g.disconnectSync()},false)}if(this.options["auto connect"]){this.connect()}}e.util.mixin(a,e.EventEmitter);a.prototype.of=function(g){if(!this.namespaces[g]){this.namespaces[g]=new e.SocketNamespace(this,g);if(g!==""){this.namespaces[g].packet({type:"connect"})}}return this.namespaces[g]};a.prototype.publish=function(){this.emit.apply(this,arguments);var h;for(var g in this.namespaces){if(this.namespaces.hasOwnProperty(g)){h=this.of(g);h.$emit.apply(h,arguments)}}};function d(){}a.prototype.handshake=function(n){var j=this,l=this.options;function g(p){if(p instanceof Error){j.onError(p.message)}else{n.apply(null,p.split(":"))}}var k=["http"+(l.secure?"s":"")+":/",l.host+":"+l.port,l.resource,e.protocol,e.util.query(this.options.query,"t="+ +new Date)].join("/");if(this.isXDomain()&&!e.util.ua.hasCORS){var m=document.getElementsByTagName("script")[0],h=document.createElement("script");h.src=k+"&jsonp="+e.j.length;m.parentNode.insertBefore(h,m);e.j.push(function(p){g(p);h.parentNode.removeChild(h)})}else{var o=e.util.request();o.open("GET",k,true);o.withCredentials=false;o.onreadystatechange=function(){if(o.readyState==4){o.onreadystatechange=d;if(o.status==200){g(o.responseText)}else{!j.reconnecting&&j.onError(o.responseText)}}};o.send(null)}};a.prototype.getTransport=function(k){var g=k||this.transports,h;for(var j=0,l;l=g[j];j++){if(e.Transport[l]&&e.Transport[l].check(this)&&(!this.isXDomain()||e.Transport[l].xdomainCheck())){return new e.Transport[l](this,this.sessionid)}}return null};a.prototype.connect=function(h){if(this.connecting){return this}var g=this;this.handshake(function(j,m,n,l){g.sessionid=j;g.closeTimeout=n*1000;g.heartbeatTimeout=m*1000;g.transports=e.util.intersect(l.split(","),g.options.transports);g.setHeartbeatTimeout();function k(o){if(g.transport){g.transport.clearTimeouts()}g.transport=g.getTransport(o);if(!g.transport){return g.publish("connect_failed")}g.transport.ready(g,function(){g.connecting=true;g.publish("connecting",g.transport.name);g.transport.open();if(g.options["connect timeout"]){g.connectTimeoutTimer=setTimeout(function(){if(!g.connected){g.connecting=false;if(g.options["try multiple transports"]){if(!g.remainingTransports){g.remainingTransports=g.transports.slice(0)}var p=g.remainingTransports;while(p.length>0&&p.splice(0,1)[0]!=g.transport.name){}if(p.length){k(p)}else{g.publish("connect_failed")}}}},g.options["connect timeout"])}})}k(g.options.transports);g.once("connect",function(){clearTimeout(g.connectTimeoutTimer);h&&typeof h=="function"&&h()})});return this};a.prototype.setHeartbeatTimeout=function(){clearTimeout(this.heartbeatTimeoutTimer);var g=this;this.heartbeatTimeoutTimer=setTimeout(function(){g.transport.onClose()},this.heartbeatTimeout)};a.prototype.packet=function(g){if(this.connected&&!this.doBuffer){this.transport.packet(g)}else{this.buffer.push(g)}return this};a.prototype.setBuffer=function(g){this.doBuffer=g;if(!g&&this.connected&&this.buffer.length){this.transport.payload(this.buffer);this.buffer=[]}};a.prototype.disconnect=function(){if(this.connected||this.connecting){if(this.open){this.of("").packet({type:"disconnect"})}this.onDisconnect("booted")}return this};a.prototype.disconnectSync=function(){var h=e.util.request(),g=this.resource+"/"+e.protocol+"/"+this.sessionid;h.open("GET",g,true);this.onDisconnect("booted")};a.prototype.isXDomain=function(){var g=c.location.port||("https:"==c.location.protocol?443:80);return this.options.host!==c.location.hostname||this.options.port!=g};a.prototype.onConnect=function(){if(!this.connected){this.connected=true;this.connecting=false;if(!this.doBuffer){this.setBuffer(false)}this.emit("connect")}};a.prototype.onOpen=function(){this.open=true};a.prototype.onClose=function(){this.open=false;clearTimeout(this.heartbeatTimeoutTimer)};a.prototype.onPacket=function(g){this.of(g.endpoint).onPacket(g)};a.prototype.onError=function(g){if(g&&g.advice){if(g.advice==="reconnect"&&(this.connected||this.connecting)){this.disconnect();if(this.options.reconnect){this.reconnect()}}}this.publish("error",g&&g.reason?g.reason:g)};a.prototype.onDisconnect=function(j){var h=this.connected,g=this.connecting;this.connected=false;this.connecting=false;this.open=false;if(h||g){this.transport.close();this.transport.clearTimeouts();if(h){this.publish("disconnect",j);if("booted"!=j&&this.options.reconnect&&!this.reconnecting){this.reconnect()}}}};a.prototype.reconnect=function(){this.reconnecting=true;this.reconnectionAttempts=0;this.reconnectionDelay=this.options["reconnection delay"];var k=this,j=this.options["max reconnection attempts"],g=this.options["try multiple transports"],h=this.options["reconnection limit"];function l(){if(k.connected){for(var n in k.namespaces){if(k.namespaces.hasOwnProperty(n)&&""!==n){k.namespaces[n].packet({type:"connect"})}}k.publish("reconnect",k.transport.name,k.reconnectionAttempts)}clearTimeout(k.reconnectionTimer);k.removeListener("connect_failed",m);k.removeListener("connect",m);k.reconnecting=false;delete k.reconnectionAttempts;delete k.reconnectionDelay;delete k.reconnectionTimer;delete k.redoTransports;k.options["try multiple transports"]=g}function m(){if(!k.reconnecting){return}if(k.connected){return l()}if(k.connecting&&k.reconnecting){return k.reconnectionTimer=setTimeout(m,1000)}if(k.reconnectionAttempts++>=j){if(!k.redoTransports){k.on("connect_failed",m);k.options["try multiple transports"]=true;k.transport=k.getTransport();k.redoTransports=true;k.connect()}else{k.publish("reconnect_failed");l()}}else{if(k.reconnectionDelay<h){k.reconnectionDelay*=2}k.connect();k.publish("reconnecting",k.reconnectionDelay,k.reconnectionAttempts);k.reconnectionTimer=setTimeout(m,k.reconnectionDelay)}}this.options["try multiple transports"]=false;this.reconnectionTimer=setTimeout(m,this.reconnectionDelay);this.on("connect",m)}})("undefined"!=typeof io?io:module.exports,"undefined"!=typeof io?io:module.parent.exports,this);(function(a,d){a.SocketNamespace=b;function b(e,g){this.socket=e;this.name=g||"";this.flags={};this.json=new c(this,"json");this.ackPackets=0;this.acks={}}d.util.mixin(b,d.EventEmitter);b.prototype.$emit=d.EventEmitter.prototype.emit;b.prototype.of=function(){return this.socket.of.apply(this.socket,arguments)};b.prototype.packet=function(e){e.endpoint=this.name;this.socket.packet(e);this.flags={};return this};b.prototype.send=function(g,e){var h={type:this.flags.json?"json":"message",data:g};if("function"==typeof e){h.id=++this.ackPackets;h.ack=true;this.acks[h.id]=e}return this.packet(h)};b.prototype.emit=function(g){var e=Array.prototype.slice.call(arguments,1),j=e[e.length-1],h={type:"event",name:g};if("function"==typeof j){h.id=++this.ackPackets;h.ack="data";this.acks[h.id]=j;e=e.slice(0,e.length-1)}h.args=e;return this.packet(h)};b.prototype.disconnect=function(){if(this.name===""){this.socket.disconnect()}else{this.packet({type:"disconnect"});this.$emit("disconnect")}return this};b.prototype.onPacket=function(g){var e=this;function j(){e.packet({type:"ack",args:d.util.toArray(arguments),ackId:g.id})}switch(g.type){case"connect":this.$emit("connect");break;case"disconnect":if(this.name===""){this.socket.onDisconnect(g.reason||"booted")}else{this.$emit("disconnect",g.reason)}break;case"message":case"json":var h=["message",g.data];if(g.ack=="data"){h.push(j)}else{if(g.ack){this.packet({type:"ack",ackId:g.id})}}this.$emit.apply(this,h);break;case"event":var h=[g.name].concat(g.args);if(g.ack=="data"){h.push(j)}this.$emit.apply(this,h);break;case"ack":if(this.acks[g.ackId]){this.acks[g.ackId].apply(this,g.args);delete this.acks[g.ackId]}break;case"error":if(g.advice){this.socket.onError(g)}else{if(g.reason=="unauthorized"){this.$emit("connect_failed",g.reason)}else{this.$emit("error",g.reason)}}break}};function c(g,e){this.namespace=g;this.name=e}c.prototype.send=function(){this.namespace.flags[this.name]=true;this.namespace.send.apply(this.namespace,arguments)};c.prototype.emit=function(){this.namespace.flags[this.name]=true;this.namespace.emit.apply(this.namespace,arguments)}})("undefined"!=typeof io?io:module.exports,"undefined"!=typeof io?io:module.parent.exports);(function(b,d,c){b.websocket=a;function a(e){d.Transport.apply(this,arguments)}d.util.inherit(a,d.Transport);a.prototype.name="websocket";a.prototype.open=function(){var h=d.util.query(this.socket.options.query),g=this,e;if(!e){e=c.MozWebSocket||c.WebSocket}this.websocket=new e(this.prepareUrl()+h);this.websocket.onopen=function(){g.onOpen();g.socket.setBuffer(false)};this.websocket.onmessage=function(j){g.onData(j.data)};this.websocket.onclose=function(){g.onClose();g.socket.setBuffer(true)};this.websocket.onerror=function(j){g.onError(j)};return this};a.prototype.send=function(e){this.websocket.send(e);return this};a.prototype.payload=function(e){for(var h=0,g=e.length;h<g;h++){this.packet(e[h])}return this};a.prototype.close=function(){this.websocket.close();return this};a.prototype.onError=function(g){this.socket.onError(g)};a.prototype.scheme=function(){return this.socket.options.secure?"wss":"ws"};a.check=function(){return"WebSocket" in c&&!("__addTask" in WebSocket)||"MozWebSocket" in c};a.xdomainCheck=function(){return true};d.transports.push("websocket")})("undefined"!=typeof io?io.Transport:module.exports,"undefined"!=typeof io?io:module.parent.exports,this);(function(){if("undefined"==typeof window||window.WebSocket){return}var a=window.console;if(!a||!a.log||!a.error){a={log:function(){},error:function(){}}}if(!swfobject.hasFlashPlayerVersion("10.0.0")){a.error("Flash Player >= 10.0.0 is required.");return}if(location.protocol=="file:"){a.error("WARNING: web-socket-js doesn't work in file:///... URL unless you set Flash Security Settings properly. Open the page via Web server i.e. http://...")}WebSocket=function(d,e,c,h,g){var b=this;b.__id=WebSocket.__nextId++;WebSocket.__instances[b.__id]=b;b.readyState=WebSocket.CONNECTING;b.bufferedAmount=0;b.__events={};if(!e){e=[]}else{if(typeof e=="string"){e=[e]}}setTimeout(function(){WebSocket.__addTask(function(){WebSocket.__flash.create(b.__id,d,e,c||null,h||0,g||null)})},0)};WebSocket.prototype.send=function(c){if(this.readyState==WebSocket.CONNECTING){throw"INVALID_STATE_ERR: Web Socket connection has not been established"}var b=WebSocket.__flash.send(this.__id,encodeURIComponent(c));if(b<0){return true}else{this.bufferedAmount+=b;return false}};WebSocket.prototype.close=function(){if(this.readyState==WebSocket.CLOSED||this.readyState==WebSocket.CLOSING){return}this.readyState=WebSocket.CLOSING;WebSocket.__flash.close(this.__id)};WebSocket.prototype.addEventListener=function(c,d,b){if(!(c in this.__events)){this.__events[c]=[]}this.__events[c].push(d)};WebSocket.prototype.removeEventListener=function(e,g,b){if(!(e in this.__events)){return}var d=this.__events[e];for(var c=d.length-1;c>=0;--c){if(d[c]===g){d.splice(c,1);break}}};WebSocket.prototype.dispatchEvent=function(e){var c=this.__events[e.type]||[];for(var b=0;b<c.length;++b){c[b](e)}var d=this["on"+e.type];if(d){d(e)}};WebSocket.prototype.__handleEvent=function(d){if("readyState" in d){this.readyState=d.readyState}if("protocol" in d){this.protocol=d.protocol}var b;if(d.type=="open"||d.type=="error"){b=this.__createSimpleEvent(d.type)}else{if(d.type=="close"){b=this.__createSimpleEvent("close")}else{if(d.type=="message"){var c=decodeURIComponent(d.message);b=this.__createMessageEvent("message",c)}else{throw"unknown event type: "+d.type}}}this.dispatchEvent(b)};WebSocket.prototype.__createSimpleEvent=function(b){if(document.createEvent&&window.Event){var c=document.createEvent("Event");c.initEvent(b,false,false);return c}else{return{type:b,bubbles:false,cancelable:false}}};WebSocket.prototype.__createMessageEvent=function(b,d){if(document.createEvent&&window.MessageEvent&&!window.opera){var c=document.createEvent("MessageEvent");c.initMessageEvent("message",false,false,d,null,null,window,null);return c}else{return{type:b,data:d,bubbles:false,cancelable:false}}};WebSocket.CONNECTING=0;WebSocket.OPEN=1;WebSocket.CLOSING=2;WebSocket.CLOSED=3;WebSocket.__flash=null;WebSocket.__instances={};WebSocket.__tasks=[];WebSocket.__nextId=0;WebSocket.loadFlashPolicyFile=function(b){WebSocket.__addTask(function(){WebSocket.__flash.loadManualPolicyFile(b)})};WebSocket.__initialize=function(){if(WebSocket.__flash){return}if(WebSocket.__swfLocation){window.WEB_SOCKET_SWF_LOCATION=WebSocket.__swfLocation}if(!window.WEB_SOCKET_SWF_LOCATION){a.error("[WebSocket] set WEB_SOCKET_SWF_LOCATION to location of WebSocketMain.swf");return}var b=document.createElement("div");b.id="webSocketContainer";b.style.position="absolute";if(WebSocket.__isFlashLite()){b.style.left="0px";b.style.top="0px"}else{b.style.left="-100px";b.style.top="-100px"}var c=document.createElement("div");c.id="webSocketFlash";b.appendChild(c);document.body.appendChild(b);swfobject.embedSWF(WEB_SOCKET_SWF_LOCATION,"webSocketFlash","1","1","10.0.0",null,null,{hasPriority:true,swliveconnect:true,allowScriptAccess:"always"},null,function(d){if(!d.success){a.error("[WebSocket] swfobject.embedSWF failed")}})};WebSocket.__onFlashInitialized=function(){setTimeout(function(){WebSocket.__flash=document.getElementById("webSocketFlash");WebSocket.__flash.setCallerUrl(location.href);WebSocket.__flash.setDebug(!!window.WEB_SOCKET_DEBUG);for(var b=0;b<WebSocket.__tasks.length;++b){WebSocket.__tasks[b]()}WebSocket.__tasks=[]},0)};WebSocket.__onFlashEvent=function(){setTimeout(function(){try{var c=WebSocket.__flash.receiveEvents();for(var b=0;b<c.length;++b){WebSocket.__instances[c[b].webSocketId].__handleEvent(c[b])}}catch(d){a.error(d)}},0);return true};WebSocket.__log=function(b){a.log(decodeURIComponent(b))};WebSocket.__error=function(b){a.error(decodeURIComponent(b))};WebSocket.__addTask=function(b){if(WebSocket.__flash){b()}else{WebSocket.__tasks.push(b)}};WebSocket.__isFlashLite=function(){if(!window.navigator||!window.navigator.mimeTypes){return false}var b=window.navigator.mimeTypes["application/x-shockwave-flash"];if(!b||!b.enabledPlugin||!b.enabledPlugin.filename){return false}return b.enabledPlugin.filename.match(/flashlite/i)?true:false};if(!window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION){if(window.addEventListener){window.addEventListener("load",function(){WebSocket.__initialize()},false)}else{window.attachEvent("onload",function(){WebSocket.__initialize()})}}})();(function(a,e,c){a.XHR=b;function b(g){if(!g){return}e.Transport.apply(this,arguments);this.sendBuffer=[]}e.util.inherit(b,e.Transport);b.prototype.open=function(){this.socket.setBuffer(false);this.onOpen();this.get();this.setCloseTimeout();return this};b.prototype.payload=function(k){var j=[];for(var h=0,g=k.length;h<g;h++){j.push(e.parser.encodePacket(k[h]))}this.send(e.parser.encodePayload(j))};b.prototype.send=function(g){this.post(g);return this};function d(){}b.prototype.post=function(j){var h=this;this.socket.setBuffer(true);function g(){if(this.readyState==4){this.onreadystatechange=d;h.posting=false;if(this.status==200){h.socket.setBuffer(false)}else{h.onClose()}}}function k(){this.onload=d;h.socket.setBuffer(false)}this.sendXHR=this.request("POST");if(c.XDomainRequest&&this.sendXHR instanceof XDomainRequest){this.sendXHR.onload=this.sendXHR.onerror=k}else{this.sendXHR.onreadystatechange=g}this.sendXHR.send(j)};b.prototype.close=function(){this.onClose();return this};b.prototype.request=function(k){var g=e.util.request(this.socket.isXDomain()),h=e.util.query(this.socket.options.query,"t="+ +new Date);g.open(k||"GET",this.prepareUrl()+h,true);if(k=="POST"){try{if(g.setRequestHeader){g.setRequestHeader("Content-type","text/plain;charset=UTF-8")}else{g.contentType="text/plain"}}catch(j){}}return g};b.prototype.scheme=function(){return this.socket.options.secure?"https":"http"};b.check=function(g,h){try{if(e.util.request(h)){return true}}catch(j){}return false};b.xdomainCheck=function(){return b.check(null,true)}})("undefined"!=typeof io?io.Transport:module.exports,"undefined"!=typeof io?io:module.parent.exports,this);(function(a,c){a.htmlfile=b;function b(d){c.Transport.XHR.apply(this,arguments)}c.util.inherit(b,c.Transport.XHR);b.prototype.name="htmlfile";b.prototype.get=function(){this.doc=new (window[["Active"].concat("Object").join("X")])("htmlfile");this.doc.open();this.doc.write("<html></html>");this.doc.close();this.doc.parentWindow.s=this;var d=this.doc.createElement("div");d.className="socketio";this.doc.body.appendChild(d);this.iframe=this.doc.createElement("iframe");d.appendChild(this.iframe);var e=this,g=c.util.query(this.socket.options.query,"t="+ +new Date);this.iframe.src=this.prepareUrl()+g;c.util.on(window,"unload",function(){e.destroy()})};b.prototype._=function(g,j){this.onData(g);try{var d=j.getElementsByTagName("script")[0];d.parentNode.removeChild(d)}catch(h){}};b.prototype.destroy=function(){if(this.iframe){try{this.iframe.src="about:blank"}catch(d){}this.doc=null;this.iframe.parentNode.removeChild(this.iframe);this.iframe=null;CollectGarbage()}};b.prototype.close=function(){this.destroy();return c.Transport.XHR.prototype.close.call(this)};b.check=function(){if(typeof window!="undefined"&&["Active"].concat("Object").join("X") in window){try{var d=new (window[["Active"].concat("Object").join("X")])("htmlfile");return d&&c.Transport.XHR.check()}catch(g){}}return false};b.xdomainCheck=function(){return false};c.transports.push("htmlfile")})("undefined"!=typeof io?io.Transport:module.exports,"undefined"!=typeof io?io:module.parent.exports);(function(a,e,b){a["xhr-polling"]=d;function d(){e.Transport.XHR.apply(this,arguments)}e.util.inherit(d,e.Transport.XHR);e.util.merge(d,e.Transport.XHR);d.prototype.name="xhr-polling";d.prototype.open=function(){var g=this;e.Transport.XHR.prototype.open.call(g);return false};function c(){}d.prototype.get=function(){if(!this.open){return}var j=this;function h(){if(this.readyState==4){this.onreadystatechange=c;if(this.status==200){j.onData(this.responseText);j.get()}else{j.onClose()}}}function k(){this.onload=c;this.onerror=c;j.onData(this.responseText);j.get()}function g(){j.onClose()}this.xhr=this.request();if(b.XDomainRequest&&this.xhr instanceof XDomainRequest){this.xhr.onload=k;this.xhr.onerror=g}else{this.xhr.onreadystatechange=h}this.xhr.send(null)};d.prototype.onClose=function(){e.Transport.XHR.prototype.onClose.call(this);if(this.xhr){this.xhr.onreadystatechange=this.xhr.onload=this.xhr.onerror=c;try{this.xhr.abort()}catch(g){}this.xhr=null}};d.prototype.ready=function(g,j){var h=this;e.util.defer(function(){j.call(h)})};e.transports.push("xhr-polling")})("undefined"!=typeof io?io.Transport:module.exports,"undefined"!=typeof io?io:module.parent.exports,this);(function(b,e,d){var a=d.document&&"MozAppearance" in d.document.documentElement.style;b["jsonp-polling"]=c;function c(g){e.Transport["xhr-polling"].apply(this,arguments);this.index=e.j.length;var h=this;e.j.push(function(j){h._(j)})}e.util.inherit(c,e.Transport["xhr-polling"]);c.prototype.name="jsonp-polling";c.prototype.post=function(n){var q=this,p=e.util.query(this.socket.options.query,"t="+ +new Date+"&i="+this.index);if(!this.form){var h=document.createElement("form"),j=document.createElement("textarea"),g=this.iframeId="socketio_iframe_"+this.index,m;h.className="socketio";h.style.position="absolute";h.style.top="-1000px";h.style.left="-1000px";h.target=g;h.method="POST";h.setAttribute("accept-charset","utf-8");j.name="d";h.appendChild(j);document.body.appendChild(h);this.form=h;this.area=j}this.form.action=this.prepareUrl()+p;function k(){l();q.socket.setBuffer(false)}function l(){if(q.iframe){q.form.removeChild(q.iframe)}try{m=document.createElement('<iframe name="'+q.iframeId+'">')}catch(s){m=document.createElement("iframe");m.name=q.iframeId}m.id=q.iframeId;q.form.appendChild(m);q.iframe=m}l();this.area.value=e.JSON.stringify(n);try{this.form.submit()}catch(o){}if(this.iframe.attachEvent){m.onreadystatechange=function(){if(q.iframe.readyState=="complete"){k()}}}else{this.iframe.onload=k}this.socket.setBuffer(true)};c.prototype.get=function(){var h=this,g=document.createElement("script"),k=e.util.query(this.socket.options.query,"t="+ +new Date+"&i="+this.index);if(this.script){this.script.parentNode.removeChild(this.script);this.script=null}g.async=true;g.src=this.prepareUrl()+k;g.onerror=function(){h.onClose()};var j=document.getElementsByTagName("script")[0];j.parentNode.insertBefore(g,j);this.script=g;if(a){setTimeout(function(){var l=document.createElement("iframe");document.body.appendChild(l);document.body.removeChild(l)},100)}};c.prototype._=function(g){this.onData(g);if(this.open){this.get()}return this};c.prototype.ready=function(g,j){var h=this;if(!a){return j.call(this)}e.util.load(function(){j.call(h)})};c.check=function(){return"document" in d};c.xdomainCheck=function(){return true};e.transports.push("jsonp-polling")})("undefined"!=typeof io?io.Transport:module.exports,"undefined"!=typeof io?io:module.parent.exports,this);Ext.define("Ext.ux.window.Notification",{extend:"Ext.window.Window",alias:"widget.uxNotification",cls:"notification-window",minHeight:20,padding:6,resizable:false,autoHide:true,minWidth:425,maxWidth:800,draggable:false,shadow:false,focus:Ext.emptyFn,header:false,manager:null,useXAxis:false,position:"br",spacing:6,paddingX:0,paddingY:6,slideInAnimation:"easeIn",slideBackAnimation:"bounceOut",slideInDuration:1500,slideBackDuration:1000,hideDuration:500,autoHideDelay:7000,stickOnClick:true,stickWhileHover:true,isHiding:false,readyToHide:false,xPos:0,yPos:0,statics:{defaultManager:{el:null}},initComponent:function(){var a=this;if(!a.manager){a.manager=a.statics().defaultManager;if(!a.manager.el){a.manager.el=Ext.getBody()}}if(typeof a.manager.notifications=="undefined"){a.manager.notifications={}}this.callParent()},getXposAlignedToManager:function(){var a=this;var b=0;if(a.manager&&a.manager.el&&a.manager.el.dom){if(!a.useXAxis){return a.el.getLeft()}else{if(a.position=="br"||a.position=="tr"||a.position=="r"){b+=a.manager.el.getAnchorXY("r")[0];b-=a.el.getWidth()+a.paddingX}else{b+=a.manager.el.getAnchorXY("l")[0];b+=a.paddingX}}}return b},getYposAlignedToManager:function(){var b=this;var a=0;if(b.manager&&b.manager.el&&b.manager.el.dom){if(b.useXAxis){return b.el.getTop()}else{if(b.position=="br"||b.position=="bl"||b.position=="b"){a+=b.manager.el.getAnchorXY("b")[1];a-=b.el.getHeight()+b.paddingY}else{a+=b.manager.el.getAnchorXY("t")[1];a+=b.paddingY}}}return a},getXposAlignedToSibling:function(a){var b=this;if(b.useXAxis){if(b.position=="tl"||b.position=="bl"||b.position=="l"){return a.xPos+a.el.getWidth()+a.spacing}else{return a.xPos-b.el.getWidth()-b.spacing}}else{return b.el.getLeft()}},getYposAlignedToSibling:function(a){var b=this;if(b.useXAxis){return b.el.getTop()}else{if(b.position=="tr"||b.position=="tl"||b.position=="t"){return a.yPos+a.el.getHeight()+a.spacing}else{return a.yPos-b.el.getHeight()-a.spacing}}},getNotifications:function(b){var a=this;if(!a.manager.notifications[b]){a.manager.notifications[b]=[]}return a.manager.notifications[b]},beforeShow:function(){var b=this;b.removeUIFromElement();if(Ext.isDefined(b.corner)){b.position=b.corner}if(Ext.isDefined(b.slideDownAnimation)){b.slideBackAnimation=b.slideDownAnimation}if(Ext.isDefined(b.autoDestroyDelay)){b.autoHideDelay=b.autoDestroyDelay}if(Ext.isDefined(b.slideInDelay)){b.slideInDuration=b.slideInDelay}if(Ext.isDefined(b.slideDownDelay)){b.slideBackDuration=b.slideDownDelay}if(Ext.isDefined(b.fadeDelay)){b.hideDuration=b.fadeDelay}b.position=b.position.replace(/c/,"");switch(b.position){case"br":b.paddingFactorX=-1;b.paddingFactorY=-1;b.siblingAlignment="br-br";if(b.useXAxis){b.managerAlignment="bl-br"}else{b.managerAlignment="tr-br"}break;case"bl":b.paddingFactorX=1;b.paddingFactorY=-1;b.siblingAlignment="bl-bl";if(b.useXAxis){b.managerAlignment="br-bl"}else{b.managerAlignment="tl-bl"}break;case"tr":b.paddingFactorX=-1;b.paddingFactorY=1;b.siblingAlignment="tr-tr";if(b.useXAxis){b.managerAlignment="tl-tr"}else{b.managerAlignment="br-tr"}break;case"tl":b.paddingFactorX=1;b.paddingFactorY=1;b.siblingAlignment="tl-tl";if(b.useXAxis){b.managerAlignment="tr-tl"}else{b.managerAlignment="bl-tl"}break;case"b":b.paddingFactorX=0;b.paddingFactorY=-1;b.siblingAlignment="b-b";b.useXAxis=0;b.managerAlignment="t-b";break;case"t":b.paddingFactorX=0;b.paddingFactorY=1;b.siblingAlignment="t-t";b.useXAxis=0;b.managerAlignment="b-t";break;case"l":b.paddingFactorX=1;b.paddingFactorY=0;b.siblingAlignment="l-l";b.useXAxis=1;b.managerAlignment="r-l";break;case"r":b.paddingFactorX=-1;b.paddingFactorY=0;b.siblingAlignment="r-r";b.useXAxis=1;b.managerAlignment="l-r";break}if(typeof b.manager=="string"){b.manager=Ext.getCmp(b.manager)}if(!b.manager){b.manager=b.statics().defaultManager;if(!b.manager.el){b.manager.el=Ext.getBody()}}if(typeof b.manager.notifications=="undefined"){b.manager.notifications={}}if(b.stickOnClick){if(b.body&&b.body.dom){Ext.fly(b.body.dom).on("click",function(){b.cancelAutoHide();b.addCls("notification-fixed")},b)}}b.el.hover(function(){b.mouseIsOver=true},function(){b.mouseIsOver=false},b);if(b.autoHide){b.task=new Ext.util.DelayedTask(b.doAutoHide,b);b.task.delay(b.autoHideDelay)}var a=b.getNotifications(b.managerAlignment);if(a.length){b.el.alignTo(a[a.length-1].el,b.siblingAlignment,[0,0]);b.xPos=b.getXposAlignedToSibling(a[a.length-1]);b.yPos=b.getYposAlignedToSibling(a[a.length-1])}else{b.el.alignTo(b.manager.el,b.managerAlignment,[b.paddingX*b.paddingFactorX,b.paddingY*b.paddingFactorY]);b.xPos=b.getXposAlignedToManager();b.yPos=b.getYposAlignedToManager()}Ext.Array.include(a,b);b.stopAnimation();b.el.animate({to:{x:b.xPos,y:b.yPos,opacity:1},easing:b.slideInAnimation,duration:b.slideInDuration,dynamic:true})},slideBack:function(){var c=this;var b=c.getNotifications(c.managerAlignment);var a=Ext.Array.indexOf(b,c);if(!c.isHiding&&c.el&&c.manager&&c.manager.el&&c.manager.el.dom&&c.manager.el.isVisible()){if(a){c.xPos=c.getXposAlignedToSibling(b[a-1]);c.yPos=c.getYposAlignedToSibling(b[a-1])}else{c.xPos=c.getXposAlignedToManager();c.yPos=c.getYposAlignedToManager()}c.stopAnimation();c.el.animate({to:{x:c.xPos,y:c.yPos},easing:c.slideBackAnimation,duration:c.slideBackDuration,dynamic:true})}},cancelAutoHide:function(){var a=this;if(a.autoHide){a.task.cancel();a.autoHide=false}},doAutoHide:function(){var a=this;a.el.hover(function(){},function(){a.hide()},a);if(!(a.stickWhileHover&&a.mouseIsOver)){a.hide()}},hide:function(){var a=this;if(!a.isHiding&&a.el){a.isHiding=true;a.cancelAutoHide();a.stopAnimation();a.el.animate({to:{opacity:0},easing:"easeIn",duration:a.hideDuration,dynamic:false,listeners:{afteranimate:function(){if(a.manager){var c=a.getNotifications(a.managerAlignment);var b=Ext.Array.indexOf(c,a);if(b!=-1){Ext.Array.erase(c,b,1);for(;b<c.length;b++){c[b].slideBack()}}}a.readyToHide=true;a.hide()}}})}if(a.readyToHide){a.isHiding=false;a.readyToHide=false;a.removeCls("notification-fixed");this.callParent(arguments)}}});Ext.ns("FT");Ext.define("FT._Notification",{constructor:function(){this.notifications=[];this.registerWindowListener()},add:function(a){Ext.Array.insert(this.notifications,0,[a])},remove:function(a){Ext.Array.remove(this.notifications,a)},exists:function(a){return Ext.Array.contains(this.notifications,a)},desktopSupport:function(){return Ext.chromeVersion>=23||Ext.safariVersion>=6||Ext.firefoxVersion>=22},sendDesktop:function(d,c,e){if(FT.Notification.desktopSupport()&&!this.windowFocus){var a=this.getPermission();if(a===0){var b=new Notification(d,{body:c,tag:"ftrack-notify",icon:"/resources/logo-ftrack-notification.png"});b.onclick=function(){e();b.close()};return b}}else{return false}},requestPermission:function(){if(FT.Notification.desktopSupport()){if(window.webkitNotifications){window.webkitNotifications.requestPermission()}else{window.Notification.requestPermission()}}},getPermission:function(){if(FT.Notification.desktopSupport()){var a;var b={"default":1,granted:0,denied:2,1:1,0:0,2:2};if(window.Notification&&window.Notification.permissionLevel){a=window.Notification.permissionLevel()}else{if(window.webkitNotifications&&window.webkitNotifications.checkPermission){a=window.webkitNotifications.checkPermission()}else{if(window.Notification&&window.Notification.permission){a=window.Notification.permission}}}return b[a]}else{return -1}},registerWindowListener:function(){var a=this;a.windowFocus=false}},function(){FT.Notification=Ext.create("FT._Notification")});FT.notify=function(c){var b=c.html;if(!FT.Notification.exists(b)){var a={corner:"t",closable:false,title:"",stickOnClick:false,slideInDelay:300,slideDownDelay:100,autoDestroyDelay:5000,slideInAnimation:"easeIn",slideDownAnimation:"easeIn"};Ext.apply(a,c);var d=Ext.create("widget.uxNotification",a);d.on({hide:function(e){FT.Notification.remove(b)},afterrender:function(){Ext.fly(this.body.dom).on("click",function(){d.hide()})}});d.show();FT.Notification.add(b)}};FT.notifyError=function(a){FT.notify({cls:"notification-window-error",html:a})};FT.notifyInfo=function(a){FT.notify({stickWhileHover:false,html:a})};FT.notifySuccess=function(a){FT.notify({stickWhileHover:false,cls:"notification-window-success",html:a})};FT.notifyCommitSuccess=function(a){if(!Ext.isDefined(a.changes)){log("changes was not defined in data...");return}var a=a.changes;if(a.length===0){return}FT.notifySuccess(FT.i18n("Your changes were saved."))};Ext.ns("FTrack");Ext.idSeed=1000000;Ext.AbstractComponent.AUTO_ID=2000000;String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};FTrack.passwordRenderer=function(a){return"********"};FTrack.colorRenderer=function(a){return'<div style="height:100%;width:100%;background-color:'+a+';">&nbsp;</div>'};FTrack.log=function(a){};FTrack.log2=function(a){if(typeof console!=="undefined"&&console!=null){console.log(a)}};FTrack.ajaxResponse=function(c,a,b){if(typeof a.getResponseHeader=="function"&&a.getResponseHeader("X-Debug-URL")!=null){FTrack.log(a.getResponseHeader("X-Debug-URL"));Ext.create("Ext.window.Window",{title:"Debug",height:200,width:400,maximized:true,layout:"fit",html:'<iframe style="height:100%;width:100%;" frameborder="no" src="'+a.getResponseHeader("X-Debug-URL")+'"></iframe>'}).show()}else{if(typeof a.getResponseHeader=="function"&&a.getResponseHeader("INVALID_USER")!=null){window.location.reload(true)}else{if(a.status==0){FT.notifyError(FT.i18n("Unable to connect to the server..."))}else{if(a.status==500){FT.notifyError(FT.i18n("A server error occurred. Please try again or contact support."))}else{if(typeof a.getResponseHeader=="function"&&a.getResponseHeader("FTRACK_ERROR")!=null){FTrack.errorMessage(a.getResponseHeader("FTRACK_ERROR"),5)}}}}}};Ext.Ajax.on("requestexception",FTrack.ajaxResponse,this);FTrack.ajaxRequest=function(b,a){if(!Ext.isDefined(a.params)){a.params={}}if(Ext.isLinux||Ext.isMac){a.params.ftrack_os="unix"}else{if(Ext.isWindows){a.params.ftrack_os="windows"}else{a.params.ftrack_os="undefined"}}a.params.clientToken=FT.clientToken};Ext.Ajax.on("beforerequest",FTrack.ajaxRequest,this);FTrack.alertFTrackUpdateCallback=function(a){if(a=="cancel"){clearTimeout(FTrack.alertFTrackUpdateId);setTimeout(function(){FTrack.alertFTrackUpdate()},10000)}};FTrack.alertFTrackUpdate=function(){var a=FT.Viewport.messageBar;a.setCenterContent(true);a.addCls("pointer");a.getEl().on("click",function(){window.location.reload()});a.setLevel("info");a.setGlyph("refresh");a.setText(FT.i18n("ftrack has been updated. Click to reload and get the newest version."))};FTrack.ajaxRequestComplete=function(c,a,b){if(typeof a.getResponseHeader=="function"&&a.getResponseHeader("FTRACK_ERROR")!=null){FTrack.errorMessage(a.getResponseHeader("FTRACK_ERROR"),5)}if(typeof a.getResponseHeader=="function"&&a.getResponseHeader("FTRACK_MESSAGE")!=null){FTrack.errorMessage(a.getResponseHeader("FTRACK_MESSAGE"),"",5)}if(typeof a.getResponseHeader=="function"&&a.getResponseHeader("FTRACK_VERSION")!=null){requestVersion=a.getResponseHeader("FTRACK_VERSION");if(!Ext.isDefined(FTrack.hasBeenInformedOfUpdate)){FTrack.hasBeenInformedOfUpdate=false}if(Ext.isDefined(FTrack.currentVersion)){if(a.getResponseHeader("FTRACK_VERSION")!=FTrack.currentVersion&&!FTrack.hasBeenInformedOfUpdate){FTrack.hasBeenInformedOfUpdate=true;FTrack.alertFTrackUpdate()}}else{FTrack.debug("Setting version to: "+a.getResponseHeader("FTRACK_VERSION"),"log");FTrack.currentVersion=requestVersion}}};Ext.Ajax.on("requestcomplete",FTrack.ajaxRequestComplete,this);FTrack.errorMessage=function(c,b,a){FT.notifyError(c)};FTrack.fixEndDate=function(a,b,c){idx=0;while(FTrack.calculateWorkDays(a,b)!=c&&idx<10){result=c-FTrack.calculateWorkDays(a,b);b.setHours(b.getHours()+result*24);idx+=1}return b};FT.localstorage=function(){return !!window.localStorage};Ext.ns("FTrack.util");FTrack.validators={};FTrack.validators.name=function(c){var a=true;var b=/[^a-z0-9_]/;if(c==""){a="Name is required.\n"}else{if(c.length<2||c.length>20){a="Wrong length. Must be 2-20. \n"}else{if(b.test(c)){a="The name contains illegal characters. Allowed are a-z 0-9 and _\n"}}}return a};FTrack.validators.number=function(c){var a=true;var b=/[^a-z0-9]/;if(Ext.isNumeric(c)){return true}return"Must be number..."};FTrack.util.InternalLinksCollection={show:[{event:"internalLinkClicked_Event",on:"FTrack.System",text:"Open in Track",icon:"/img/icons/track_icon.png"}],sequence:[{event:"internalLinkClicked_Event",on:"FTrack.System",text:"Open in Track",icon:"/img/icons/track_icon.png"}],shot:[{event:"internalLinkClicked_Event",on:"FTrack.System",text:"Open in Track",icon:"/img/icons/track_icon.png"}],task:[{pluginKey:"ftrack.ui.taskgrid",event:"externallink",on:"FTrack.System",text:"Open in Tab",icon:"/img/icons/tab_icon.png"}],assetversion:[{pluginKey:"ftrack.ui.assetversion",event:"externallink",on:"FTrack.System",text:"Open in Tab",icon:"/img/icons/tab_icon.png"}]};FTrack.util.getInternalLink=function(b){var a=FTrack.util.InternalLinksCollection[b.entityType];Ext.iterate(a,function(e,c,d){e.data=Ext.ux.util.clone(b);if(Ext.isDefined(e.pluginKey)){Ext.apply(e.data,{pluginKey:e.pluginKey})}},this);return a};FTrack.util.delayOpen=function(){if(!FTrack.util.delayOpenTask){FTrack.util.delayOpenTask=new FT.util.DelayedTask(FT.app.internalOpen,FT.app)}if(!FTrack.util.delayOpenTask.isRunning()){FTrack.util.delayOpenTask.delay(425,null,null,arguments)}else{FTrack.util.delayOpenTask.cancel()}};FTrack.util.delayOpenCancel=function(c){if(c&&c.stopPropagation){c.stopPropagation()}var a=Ext.EventObject.setEvent(c);var b=a.getTarget(".x-grid-cell-inner")!=null;if(b==false){return}FT.delayOpen=true;if(FTrack.util.delayOpenTask&&FTrack.util.delayOpenTask.isRunning()){FTrack.util.delayOpenTask.cancel();FTrack.util.backHistorySilent()}};FTrack.util.backHistorySilent=function(){FT.fancyViewport.silentHistory=true;Ext.util.History.back()};FTrack.util.getLinkAction=function(b){var a="";if(b.entityType=="assetversion"){a="&amp;view=null;"}var c="FTrack.util.delayOpen('entityId="+b.entityId+"&amp;entityType="+b.entityType+a+"&amp;itemId=projects');return false;;return false;";return c};FTrack.util.PriorityList=["show","sequence","shot","task","assetversion"];FTrack.visuallyTrim=function(j,d){var k=j.dom.offsetWidth;var b=d.dom.offsetWidth;var c=5;var g=20;if(k>b-g){var h=0;var e=k/b;var a=j.dom.innerHTML.length/e;j.dom.innerHTML=j.dom.innerHTML.substring(0,a);k=j.dom.offsetWidth;while(k>b-g&&h<20){j.dom.innerHTML=j.dom.innerHTML.substring(0,j.dom.innerHTML.length-c);k=j.dom.offsetWidth;h+=1}j.dom.innerHTML+="..."}};FTrack.calculateWorkDays=function(a,b){totalHalfDays=Math.round((b-a)/(1000*60*60*24)*2);removeHalfDays=0;currentDay=a.getDay()*2;if(a.getHours()>1){currentDay+=1}for(i=0;i<totalHalfDays;i++){if(currentDay==13||currentDay==12||currentDay==0||currentDay==1){removeHalfDays++}currentDay++;if(currentDay>13){currentDay=0}}return(totalHalfDays-removeHalfDays)/2};Ext.ns("FTrack.util");FTrack.util.clone=function(d){if(!d||"object"!==typeof d){return d}if("function"===typeof d.clone){return d.clone()}var e="[object Array]"===Object.prototype.toString.call(d)?[]:{};var b,a;for(b in d){if(d.hasOwnProperty(b)){a=d[b];if(a&&"object"===typeof a){e[b]=FTrack.util.clone(a)}else{e[b]=a}}}return e};FTrack.util.showSiblings=function(c,a){a=Ext.isDefined(a)?a:17;var b=c.next();while(b){b.show();b.setHeight(a);b=b.next()}var b=c.prev();while(b){b.show();b.setHeight(a);b=b.prev()}};FTrack.util.hideSiblings=function(b){var a=b.next();while(a){a.hide();a.setHeight(0);a=a.next()}var a=b.prev();while(a){a.hide();a.setHeight(0);a=a.prev()}};FTrack.util.removeWhiteSpace=function(a){return a.split(" ").join("")};FT.util.applyPermissionResult=function(b,a){var c,d;FTApi.Permission.isPermitted(b.permission.name,a,function(e){c=e?"allow":"deny";d=b.permission[c];if(Ext.isFunction(d)){d()}else{b[d]()}})};FT.util.manageComponentPermissions=function(h,b){var g=h.query("{permission}"),d=g.length,a=0,c,e;for(;a<d;a++){c=g[a];e=c.permission.deny;if(Ext.isFunction(e)){e()}else{c[e]()}FT.util.applyPermissionResult(c,b)}};FT.util.preventRightClickIfNecessary=function(){document.body.addEventListener("contextmenu",function(a){if(a.target.closest&&a.target.closest("[data-prevent-right-click-if-necessary]")){a.preventDefault()}})};Ext.ns("FT.util");FT.util.checkInput=function(a){if(!Ext.isDefined(a)||!Ext.isDefined(a.entityId)||!Ext.isDefined(a.entityType)){throw"ftData not valid or undefined."}};FT.util.replaceQuotes=function(b,a){if(a){return b.replace(/"/g,"'")}else{return b.replace(/'/g,'"')}};FT.util.getHelp=function(a,c){var d="",b="margin-left:5px;margin-bottom:-4px;";return'<img src="/resources/icons/question-mark.png" data-qtip="'+a+'" style="'+b+'" class="x-form-item-label-questionmark" />'};Ext.ns("FT.Function");FT.Function.append=function(c,a,b){if(a){a=Ext.Array.from(a)}return function(){return c.apply(b,Ext.Array.toArray(arguments).concat(a))}};Ext.ns("FT.Array");FT.Array.swap=function(e,c,d){var a=e[c];e[c]=e[d];e[d]=a;return e};Ext.ns("FT.Object");FT.Object.isEqual=function(c,b){var a=true;if(Ext.Object.getSize(c)!=Ext.Object.getSize(b)){return false}Ext.iterate(c,function(d,g,e){if(b[d]===undefined&&g!=undefined){a=false;return false}if(c[d]!=b[d]){a=false;return false}},this);return a};FT.util.hexInverse=function(l){var d="0123456789ABCDEF";function b(q){return d.charAt(q>>4&15)+d.charAt(q&15)}function n(q){q=q.toUpperCase();return parseInt(q,16)}var p=l.slice(0,2);var j=l.slice(2,4);var e=l.slice(4,6);var o=16*n(p.slice(0,1));var m=n(p.slice(1,2));p=p+o;var h=16*n(j.slice(0,1));var g=n(j.slice(1,2));j=h+g;var c=16*n(e.slice(0,1));var a=n(e.slice(1,2));e=c+a;var k=b(255-p)+""+b(255-j)+""+b(255-e);return k};FT.util.capitaliseFirstLetter=function(a){assert(Ext.isString(a),"Input is string");return a.charAt(0).toUpperCase()+a.slice(1)};FT.util.replaceToLinks=function(a){return a.replace(FT.util.replaceToLinks.expression,function(b){return'<a target="_blank" href="'+b+'">'+(b.length>50?b.substr(0,50)+"...":b)+"</a>"})};FT.util.replaceToLinks.expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:(?:[^\s()<>.]+[.]?)+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/gi,FT.util.getMondayFromWeekDate=function(c){var a=c.getDay();var b=c.getDate()-a+(a==0?-6:1);return new Date(c.setDate(b))};FT.util.getWeekDates=function(c){var e=[];var a=FT.util.getMondayFromWeekDate(c);for(var d=0;d<7;d++){var b=new Date(a);b.setDate(b.getDate()+d);e.push(b)}return e};FT.util.isAdministrator=function(){assert(false,"this should not be used");return FT.isAuth("CONFIGURE")};FT.util.isManager=function(){assert(false,"this should not be used");return FT.isAuth("SET_ALLPROJECTS")};FT.util.isUser=function(){assert(false,"this should not be used");return true};FT.util.Exception=function(a){throw"FTException: "+a};FT.util.days_between=function(e,d){var g=1000*60*60*24;var c=e.getTime();var b=d.getTime();var a=c-b;return a/g};FT.util.resolvePath=function(a,c,b){Ext.Ajax.request({params:{data:Ext.encode(a)},url:"/main/resolvePath",success:function(d){var e=Ext.decode(d.responseText);c.call(b,e)},scope:this})};FT.util.StopEvent=function(a){if(!a){a=window.event}if(a.cancelBubble){a.cancelBubble=true}else{a.stopPropagation()}};FT.util.columnToField=function(b){var a=undefined;if(b.ftype=="date"||b.ftype=="time"){a={name:b.dataIndex,type:"date",dateFormat:b.dateFormat||"c"}}else{if(b.ftype=="decimal"){a={name:b.dataIndex,type:"float"}}else{if(b.ftype=="boolean"){a={name:b.dataIndex,type:"boolean"}}else{a=b.dataIndex}}}if(Ext.isDefined(b.defaultValue)){if(!Ext.isObject(a)){a={name:a}}a.defaultValue=b.defaultValue}return a};FT.util.isDays=function(){var a=Number(FT.Settings.get("TIME","display_as_days"));return a};FT.util.daysToHours=function(b){var a=Number(FT.Settings.get("TIME","workday_length"))/3600;return b*a};FT.util.hoursToDays=function(a){var b=Number(FT.Settings.get("TIME","workday_length"))/3600;return a/b};FT.util.isModalOpen=function(){if(Ext.isDefined(Ext.getCmp("ftrack_wizard"))||Ext.isDefined(Ext.getCmp("ftrack_edit"))||Ext.isDefined(Ext.getCmp("ftrack_create"))||Ext.isDefined(Ext.getCmp("ftrack_upload"))||Ext.isDefined(Ext.getCmp("ftrack_import"))){return true}return false};FT.util.dateToDay=function(b){var a=b.getDay()-1;a=a<0?6:a;return a};FT.util.dateToWeekRange=function(b){var d=Ext.Date.clone(b);var a=FT.util.dateToDay(b);d=Ext.Date.add(d,Ext.Date.DAY,-a);var g=[d];for(var c=1;c<=6;c++){var h=Ext.Date.clone(g[c-1]);var e=Ext.Date.add(h,Ext.Date.DAY,1);g.push(e)}return g};FT.util.canEdit=function(){if(FT.util.isManager()||FT.util.isAdministrator()){return true}return false};FT.util.canEditThumbnail=function(a){if(a.entityType=="user"&&a.entityId==FT.Settings.get("currentuser","userid")){return true}else{if(a.entityType!="user"&&FT.isAuth("UPDATE_TASK")){return true}}return false};FT.util.verifyEventAction=function(c,d){for(var b=0;b<c.entities.length;b++){var a=c.entities[b];if(a.action==d){return true}}return false};FT.util.verifyEventKeys=function(b,c){for(var a=0;a<b.length;a++){if(c.keys.indexOf(b[a])!=-1){return true}}return false};FT.util.verifyEventScope=function(d,g,c,e){var b,a;for(var b=0;b<d.entities.length;b++){a=d.entities[b];if(g.indexOf(a.entityType)===-1){continue}if(Ext.isArray(c)){if(FT.util.verifyEventKeys(c,a)){return true}}else{if(!Ext.isDefined(e)){return true}if(a.action===e){return true}}}return false};FT.util.verifyEventId=function(c,e,b,d){for(var a=0;a<c.entities.length;a++){if(e.indexOf(c.entities[a].entityId)!=-1){if(Ext.isDefined(b)&&Ext.isArray(b)){return FT.util.verifyEventKeys(b,c.entities[a])}else{if(Ext.isDefined(d)){return c.entities[a].action==d}return true}}}return false};FT.util.verifyParentId=function(b,c){for(var a=0;a<c.length;a++){if(Ext.Array.indexOf(b.parents,c[a])!=-1){return true}}return false};FT.util.getEntityFromEvent=function(c,a){for(var b=0;b<c.entities.length;b++){if(c.entities[b].entityId==a){return c.entities[b]}}return null};FT.util.getEntityIdsFromEvent=function(c){var b=[];for(var a=0;a<c.entities.length;a++){b.push(c.entities[a].entityId)}return b};FT.util.getFirstParentIdsFromEvent=function(d){var c=[];var a;for(var b=0;b<d.entities.length;b++){a=d.entities[b].parents;if(a&&a.length>1){c.push(a[1].entityId)}}return c};FT.util.getCurrentParentIds=function(){var b=[];var a=FT.app.location._location;Ext.each(a,function(c){b.push(c.id)});return Ext.Array.slice(b,0,-1)};FT.util.getDeletedIdsFromEvent=function(d){var c=[];var a;for(var b=0;b<d.entities.length;b++){if(d.entities[b].action=="remove"){c.push(d.entities[b].entityId)}}return c};FT.util.getPushToken=function(a){var b=a.up("RAW.Widget");return b.pushToken};FT.util.DelayedTask=function(d,c,a){var e=this,g,b=function(){clearInterval(g);g=null;d.apply(c,a||[])};this.delay=function(j,l,k,h){e.cancel();d=l||d;c=k||c;a=h||a;g=setInterval(b,j)};this.cancel=function(){if(g){clearInterval(g);g=null}};this.isRunning=function(){return g!=null}};FT.util.sortArrayUsingArray=function(b,c){function a(e,d){var h=c.indexOf(e);var g=c.indexOf(d);if(h==-1){return 1}if(g==-1){return -1}return h-g}b.sort(a)};FT.util.getPreferredView=function(a){if(!a){return}if(a.type=="list"&&a.entity=="task"){return"tasks"}if(a.type=="list"&&a.entity=="assetversion"){return"versions_v1"}};FT.util.canEditWithEditor=function(a){if(Ext.isDefined(a.field)&&Ext.isDefined(a.field.isWritable)&&a.field.isWritable==false){FT.notifyError(FT.i18n("You are not allowed to edit this field"));return false}return true};FT.util.openWidget=function(c){var j=c.itemId;log(j);var e=Ext.create("FT.AbstractModule",{itemId:j});var h=Ext.widget("container",{itemId:j,isEdit:function(){return true}});var g=Ext.create("FT.util.DashboardManager",{widgetCls:"ftr-basewidget",style:{backgroundColor:"transparent"}});g.loadDashboards(h,e.getDashboards());var d=c;if(c.temp){d.temp=c.temp}if(c.view=="launcher_tasks_v1"&&j=="launcher"){d.entityId=FT.Settings.get("currentuser","userid");d.entityType="user"}var b=g.updateDashboard(d,c.view,true);if(c.dm){return g}var a=Ext.create("Ext.container.Viewport",{layout:"fit",items:g});return a};FT.util.string2Code=function(a){if(Ext.isString(a)){a=a.toLowerCase();a=a.split(" ").join("_")}return a};FT.util.min=function(b,a){return b>a?a:b};FT.util.max=function(b,a){return b<a?a:b};FT.util.isUUID=function(a){return Ext.isString(a)&&a.length==36&&a.split("-").length==5};FT.util.getObjectTypeById=function(b){var a=Ext.data.StoreManager.lookup("FT.store.ObjectType");return a.findRecord("typeid",b)};FT.util.hasObjectTypeFeature=function(c,b){var a=FT.util.getObjectTypeById(c);return a&&a.get(b)};FT.util.FieldToObjectTypeFeature={statusid:"isstatusable",typeid:"istypeable",enddate:"isschedulable"};FT.util.recordHasObjectTypeFeature=function(a,d){var b=FT.util.FieldToObjectTypeFeature[d];if(b){var c=a&&a.get("object_typeid");return c&&FT.util.hasObjectTypeFeature(c,b)}else{return true}};FT.util.isRecordStatusable=function(a){return FT.util.recordHasObjectTypeFeature(a,"statusid")};FT.util.isRecordTypeable=function(a){return FT.util.recordHasObjectTypeFeature(a,"typeid")};FT.util.isRecordSchedulable=function(a){return FT.util.recordHasObjectTypeFeature(a,"enddate")};FT.util.canObjectTypeHaveChildren=function(b){var c=FT.util.canObjectTypeHaveChildren._cache;if(!c.hasOwnProperty(b)){var a=FT.util.getObjectTypeById(b);if(a){c[b]=a.get("istaskable")}else{c[b]=true}}return c[b]};FT.util.canObjectTypeHaveChildren._cache={};FT.util.getThumbnailUrl=function(b,a){b=b||"";a=a||300;if(!b){return"/img/thumbnail2.png"}return Ext.String.format("/component/thumbnail?id={0}&size={1}",b,a)};FT.util.getComponentUrl=function(a){a=a||"";return Ext.String.format("/component/get?id={0}",a)};FT.util.intercom=function(a,b){var c=["trackEvent",a];if(window.Intercom){if(b){c.push(b)}Ext.Function.defer(Intercom,100,this,c)}};FT.util.updateIntercomAttributes=function(a){var a=["update",a];if(window.Intercom){Ext.Function.defer(Intercom,100,this,a)}};var _weekdays_setting=null;FT.util.isWeekend=function(a){if(!_weekdays_setting){_weekdays_setting=Ext.decode(FT.Settings.get("TIME","workweek"))}return _weekdays_setting.indexOf(a)===-1};FT.util.getWeekend=function(){var c=Ext.decode(FT.Settings.get("TIME","workweek"));var d=[0,1,2,3,4,5,6];var a=Ext.Array.difference(d,c);var e=null;var b=null;if(a.length>0){e=a[0]}if(a.length>1){b=a[1]}return[e,b]};FT.util.notifyOperationMessage=function(a){a=Ext.Object.merge({successMessage:null,errorMessage:null,defaultSuccessMessage:null,defaultErrorMessage:"An unknown error occurred."},a);return function(d,c,g){var b=g&&!(d&&d.success===false);var h=b?"notifySuccess":"notifyError";var e=d&&d.message;if(b){e=a.successMessage||e||a.defaultSuccessMessage}else{e=a.errorMessage||e||a.defaultErrorMessage}if(e){FT[h](e)}}};FT.util.getServerUrl=function(){var c=window.location.protocol;var b=window.location.hostname;var a=window.location.port;return c+"//"+b+(a?":"+a:"")};Ext.ns("FTrack.grid");FTrack.grid.FuzzyDateColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.FuzzyDateColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.FuzzyDateRenderer}});FTrack.grid.IndicatorColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.IndicatorColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.IndicatorRenderer}});FTrack.grid.UserColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.UserColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.UserRenderer}});FTrack.grid.LinkColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.LinkColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.LinkRenderer}});FTrack.grid.SimpleLinkColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.LinkColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.SimpleLinkRenderer}});FTrack.grid.TextColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.LinkColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.TextRenderer}});FTrack.grid.IconColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.IconColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.IconRenderer}});FTrack.grid.StatusColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.StatusColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.StatusRenderer}});FTrack.grid.NegativeAlertColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.NegativeAlertColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.NegativeAlertRenderer}});FTrack.grid.SummaryProgressColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.NegativeAlertColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.SummaryProgressRenderer}});FTrack.grid.ShotStatusColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){FTrack.grid.ShotStatusColumn.superclass.constructor.call(this,a);this.renderer=FTrack.grid.ShotStatusRenderer}});FTrack.grid.PercentageRenderer=function(a){a=a||0;return Ext.String.format("{0}%",Ext.util.Format.round(a*100,1))};FTrack.grid._booleanRenderer=function(a){if(a){return'<div class="boolean-renderer boolean-renderer--checked"></div>'}else{return'<div class="boolean-renderer boolean-renderer--unchecked"></div>'}};FTrack.grid.BooleanRenderer=function(d){var c=[true,1,"on","true","1"];var b=[false,0,"off","false","0"];var a="";if(c.indexOf(d)!==-1){a=FTrack.grid._booleanRenderer(true)}else{if(b.indexOf(d)!==-1){a=FTrack.grid._booleanRenderer(false)}}return a};FTrack.grid.TitleRenderer=function(b,a){if(a){a.tdAttr=' data-qtip="'+b.replace(/"/g,"&quot;").replace(/'/g,"&rsquo;")+'"'}return b};FTrack.grid.RollupRenderer=function(b){var a=[];if(!b){return""}var c={};Ext.each(b,function(h){if(h.link){var e;if(h.link){var g=h.link[h.link.length-1];if(g.type=="AssetVersion"){g.type="assetversion"}else{if(g.type=="TypedContext"){g.type="task"}}e=FTrack.grid.SimpleLinkRenderer(h.link)}if(h.status){if(!c[h.status.id]){c[h.status.id]=h.status}var d=c[h.status.id];e=Ext.String.format('<span class="status-renderer-small" style="background-color: {0};" data-qtip="{1}">&#160;</span>',d.color,d.name)+e}a.push(Ext.String.format('<span class="rollup-item">{0}</span>',e))}});return a.join(", ")};FTrack.grid.SafeRenderer=function(){var a=arguments[arguments.length-1];try{return a.apply(this,arguments)}catch(c){var b=arguments[1];b.style=FTrack.util.getAlertCss();return'<div title="A rendering problem occured, please contact support.">Ooops, sorry!</div>'}};FTrack.util.getAlertCss=function(){return"width:100%;height:100%;display:table;background-color:#d44040;color:#fff;font-weight:bold;"};FTrack.grid.NegativeAlertRenderer=function(g,h,e,j,d,c,a){var g=Ext.isString(g)?parseFloat(g):g,b="";if(g<0){b=FTrack.util.getAlertCss()}else{if(e&&e.get&&e.get("object_typeid")!="11c137c0-ee7e-4f9c-91c5-8c77cec22b2c"){b="color:#999;"}}g=g.toFixed(2);if(!Ext.isDefined(h)){return'<span style="'+b+'">'+g+"</span>"}else{h.style=b}return'<span style="display:table-cell;vertical-align:middle;">'+g+"</span>"};FTrack.grid.AlertPastRenderer=function(e,g,d){var b=new Date;var a=e&&e<b?FTrack.util.getAlertCss():"";var c=FTrack.grid.dateRenderer;e=c(e);if(!Ext.isDefined(g)){return'<span style="'+a+'">'+e+"</span>"}else{g.style=a}return'<span style="display:table-cell;vertical-align:middle;">'+e+"</span>"};FTrack.grid.StripHtmlRenderer=function(b,c,a){if(Ext.isString(b)){b=b.replace(/"/gm,"&quot;").replace(/'/g,"&rsquo;").replace(/<(?:.|\n)*?>/gm,"")}if(Ext.isDefined(c)&&Ext.isDefined(b)&&Ext.isString(b)&&!Ext.isEmpty(b)){c.tdAttr='data-qtip="'+b+'" data-qalign="bottom"'}return b};FTrack.grid.StatusTypeRenderer=function(e,g,d){var b=Ext.data.StoreManager.lookup("FT.store.StatusType");var a=b.findRecord("short",e);var c="";if(a){c=a.get("name")}return c};FTrack.grid.StatusRenderer=function(j,c,a){if(Ext.isArray(j)){var h=arguments;var e=[];Ext.each(j,function(n,l,m){h[0]=n;e.push(FTrack.grid.StatusRenderer.apply(this,h))},this);return e.join("<div style='margin-top:3px;'></div>")}if(j==null||j==""){return""}var k=Ext.data.StoreManager.lookup("FT.store.TaskStatus");var g=k.findRecord("statusid",j);var d="#383838";var b="Unknown";if(g){d=g.get("color");b=g.get("name")}return'<div class="status-renderer text-ellipsis" style="background-color:'+d+";color:"+FT.util.Format.textColorFromColor(d)+'">'+b+"</div>"};FTrack.grid.PriorityRenderer=function(j,c,a){if(Ext.isArray(j)){var h=arguments;var e=[];Ext.each(j,function(n,l,m){h[0]=n;e.push(FTrack.grid.PriorityRenderer.apply(this,h))},this);return e.join("<div style='margin-top:3px;'></div>")}if(j==null||j==""){return""}var k=Ext.data.StoreManager.lookup("FT.store.PriorityType");var g=k.findRecord("priorityid",j);var d="#383838";var b="Unknown";if(g){d=g.get("color");b=g.get("name")}return'<div class="status-renderer" style="color:'+FT.util.Format.textColorFromColor(d)+";background-color:"+d+';text-overflow:ellipsis;overflow:hidden;white-space:nowrap;">'+b+"</div>"};FTrack.grid.PriorityRendererPrint=function(d,e,c){if(d==null){return""}var a=Ext.data.StoreManager.lookup("FT.store.PriorityType");var b=a.findRecord("priorityid",d);if(b){return b.get("name")}else{return"Unknown"}};FTrack.grid.StatusRendererPrint=function(d,e,c){if(d==null){return""}var b=Ext.data.StoreManager.lookup("FT.store.TaskStatus");var a=b.findRecord("statusid",d);if(a){return a.get("name")}else{return"Unknown"}};FTrack.grid.TextRenderer=function(b,c,a){return b};FTrack.grid.LabelRenderer=function(b,c,a){return c+": "+b};FTrack.ShotStatusStyle=function(a){switch(a){case"Normal":return"color:#999;border:1px solid #999;background-color:#fafafa;";case"On Hold":return"color:#fff;background-color:#ad2323;";case"Omitted":return"color:#000;background-color:#ffff00;"}};FTrack.grid.ShotStatusRenderer=function(b,c,a){return'<div class="status-renderer" style="'+FTrack.ShotStatusStyle(b)+'">'+b+"</div>"};FTrack.grid.TreeRenderer=function(c,d,b){var a=b.get("colors");if(!Ext.isEmpty(a)){return'<span style="'+a+'" class="ft-treerenderer">'+c+"</span>"}else{return c}};FTrack.grid.AssetTypeRenderer=function(d,e,c){if(d==null){return""}d=Ext.isString(d)?d.split(", "):d;d=Ext.isArray(d)?d:[d];var b=[];var a=Ext.data.StoreManager.lookup("FT.store.AssetType");Ext.each(d,function(h,g,j){type=a.findRecord("typeid",h);if(type!=null){b.push(type.get("name"))}},this);return b.join(", ")};FTrack.grid.TaskTypeSummaryRenderer=function(b,c,a){if(Ext.isDefined(a.getEntityType)&&a.getEntityType()!="task"){if(a.getEntityType()=="shot"){return"TEST"}else{b=a.getEntityType();return FT.util.capitaliseFirstLetter(FT.entityType(b))}}return FTrack.grid.TaskTypeRenderer(b,c,a)};FTrack.grid.ShotTypeRenderer=function(d,e,c){var a=Ext.data.StoreManager.lookup("FT.store.ObjectType"),b=d;type=a.findRecord("typeid",b);if(type!=null){return'<span style="color:#999;">'+type.get("name")+"</span>"}return""};FTrack.grid._getTypeFromData=function(h){var k,l=null,g=Ext.data.StoreManager.lookup("FT.store.ObjectType"),e=h.entityType||"task",d=h.object_typeid,b,c,a=h.typeid,j={show:"project"};if(e!=="task"){return[Ext.String.capitalize(j[e]||e),null]}if(d){b=g.findRecord("typeid",d);if(b){k=b.get("name");if(a&&b.get("istypeable")){c=Ext.data.StoreManager.lookup("FT.store.TaskType");taskType=c.findRecord("typeid",a);if(taskType){l=taskType.get("name")}}}}return[k,l]};FTrack.grid.typeRendererSingleline=function(e,g,b){var a="",c=b&&b.data?b.data:b,d;if(!c){return FTrack.grid.TaskTypeRenderer(e)}d=FTrack.grid._getTypeFromData(c);a+='<span class="text-faded">'+d[0]+"</span>";if(d[1]){a+='<span class="text-faded">&nbsp;('+d[1]+")</span>"}return a};FTrack.grid.typeRendererMultiline=function(e,g,b){var a="",c=b&&b.data?b.data:b,d;if(!c){return FTrack.grid.TaskTypeRenderer(e)}d=FTrack.grid._getTypeFromData(c);a+="<div>"+d[0]+"</div>";if(d[1]){a+='<div class="text-faded">'+d[1]+"</div>"}return a};FTrack.grid.TaskTypeRenderer=function(d,e,c){if(d==null){return""}if(c&&(Ext.isDefined(c.getEntityType)&&c.getEntityType()=="shot"||Ext.isDefined(c.get)&&c.get("entityType")==="shot")){return FTrack.grid.ShotTypeRenderer(d,e,c)}d=Ext.isString(d)?d.split(", "):d;d=Ext.isArray(d)?d:[d];var b=[];var a=Ext.data.StoreManager.lookup("FT.store.TaskType");Ext.each(d,function(h,g,j){type=a.findRecord("typeid",h);if(type!=null){b.push(type.get("name"))}},this);return'<span class="text-faded">'+b.join(", ")+"</span>"};FTrack.grid.AssetTypeRenderer=function(d,e,c){if(d==null){return""}d=Ext.isString(d)?d.split(", "):d;d=Ext.isArray(d)?d:[d];var b=[];var a=Ext.data.StoreManager.lookup("FT.store.AssetType");Ext.each(d,function(h,g,j){type=a.findRecord("typeid",h);if(type!=null){b.push(type.get("name"))}},this);return b.join(", ")};FTrack.grid.TaskColumnRenderer=function(g,j,h,b){if(Ext.isFunction(b.get)){var d=b.get("fulltaskstatusids")}else{var d=b.fulltaskstatusids}var c=Ext.data.StoreManager.lookup("FT.store.TaskStatus");var a=Ext.Array.pluck(d,"typeid");var e=[];Ext.each(a,function(n,k,m){if(n==g){var l=c.findRecord("statusid",d[k].statusid);tmp=FTrack.grid.UserRenderer(d[k].users);e.push("<span style='padding-left:2px;-moz-border-radius:2px;-webkit-border-radius:2px;color:#ABABAB;height:14px;background-color:"+l.get("color")+";width:14px;'>&#160;&#160;&#160;&#160;</span>&#160;"+tmp)}},this);return e.join("<br /><br />")};FTrack.grid.NotesRenderer=function(j,k,h,g,e,m,l){if(j>0){k.tdCls+=" ft-hasnotes"}return""};FTrack.grid.AttachmentsRenderer=function(j,k,h,g,e,m,l){if(j>0){k.tdCls+=" ft-hasattachment"}return""};FTrack.grid.NotesListTpl=new Ext.XTemplate('<tpl for=".">','<div style="padding-bottom:1px;">','<div style="width:25px;float:left;">','<div class="toolbar-text-color text-ellipsis">{[FTrack.grid.UserImageRenderer({id:values.userid},{size:"xtiny"})]}</div>',"</div>",'<div class="toolbar-text-color text-ellipsis" style="width:75px;float:right;">','{[FTrack.grid.FuzzyDateRenderer(values.date.replace("T", " "))]}',"</div>",'<div style="overflow: hidden;">','<div data-qtip="{[Ext.String.htmlEncode(values.text)]}" class="text-ellipsis">{[Ext.String.htmlEncode(values.text)]}</div>',"</div>",'<div style="clear:both;"></div>',"</div>","</tpl>");FTrack.grid.NotesListRenderer=function(h,j,e){j.style="height: inherit;";var a=arguments[arguments.length-1];if(!Ext.isNumber(a)){a=1}var g=h.data;if(!g){return""}var d=0;var b=new Array;for(;d<a;d++){if(g&&g[d]!=undefined){b.push(g[d])}}var c=FTrack.grid.NotesListTpl.apply(b);return c};FTrack.util.link=function(o,m,g,s){if(!Ext.isArray(o)||!o.length){return[]}var d=o.length,k=0,u=[],c,a,n=g?"color: #3c79d5;":"color: #3c79d5;",p,l="ftrack-link";var p=null;var j=[];for(;k<d;k++){p=o[k];if(s&&k<d-1){continue}j.push(p.name)}var b="";if(g){var w=p.id;var q=p.type;if(q=="user"){l+=" text-faded"}var x={};x.slideEntityId=p.id;x.slideEntityType=p.type;var e=FT.app.getCfg();if(Ext.isDefined(e.view)){x.view=e.view}if(Ext.isDefined(e.itemId)){x.itemId=e.itemId}if(Ext.isDefined(e.entityId)&&Ext.isDefined(e.entityType)){x.entityId=e.entityId;x.entityType=e.entityType}if(p.type==="reviewsession"){x.entityId=p.id;x.entityType=p.type;delete x.slideEntityId;delete x.slideEntityType}var h=Ext.Object.toQueryString(x);var t="#"+h;c='<a class="'+l+' delay-open-cancel" href="'+t+'">'+j.join(" / ")+"</a>"}else{if(!m){c=j.join(" / ")}else{c='<span style="'+n+'">'+p.name+"</span>"}}u.push(c);return u};FTrack.grid.ListRenderer=function(c){var a=arguments[arguments.length-1]||"";if(c.length===0){return a}var b=[];if(!Ext.isArray(c)){c=[c]}Ext.each(c,function(d){b.push(FTrack.grid.LinkRenderer(d))});return b.join(", ")};FTrack.grid.NoLinkRenderer=function(c,d,b){var a=FTrack.util.link(c,true,false);return a.join(" / ")};FTrack.grid.LinkRenderer=function(c,d,b){var a=FTrack.util.link(c,true,true).join(" / ");var e=FTrack.util.link(c,false,false).join(" / ");return"<span title='"+e.replace(/'/g,"&#39;")+"'>"+a+"</span>"};FTrack.grid.TextLinkRenderer=function(c,d,a){var b="ftrack-link";if(a){b=Ext.String.format("{0} {1}",b,a)}return Ext.String.format('<span title={2}><a class="{0} delay-open-cancel" href="{1}">{2}</a></span>',b,c,d)};FTrack.grid.SplitLinkRenderer=function(e,g,d){if(!Ext.isArray(e)){return""}var b=[],c=e.length,a=0;for(;a<c;a++){b.push(FTrack.grid.LinkRenderer([e[a]]))}return b.join(" / ")};FTrack.grid.EmbeddedLinkRenderer=function(c){var d=c;var g=d.search("\\[ftracklink:{");var b=d.search("}/]");if(g!=-1&&b!=-1){var e=d.substr(g+13,b-(g+13));var a=Ext.decode("{"+e+"}");link=FTrack.grid.LinkRenderer(a)}else{return d}return d.substr(0,g)+link+d.substr(b+3,d.length)};FTrack.grid.NoteCategoryRenderer=function(g){var c=Ext.data.StoreManager.lookup("FT.store.NoteCategory");if(Ext.isArray(g)){var a=g.reduce(function(h,k){var j=c.findExact("categoryid",k);if(j!==-1){h.push(c.getAt(j))}return h},[]);a=a.sort(function(j,h){return j.get("name").localeCompare(h.get("name"))});a=a.map(function(h){return FTrack.grid.NoteCategoryRenderer(h.get("categoryid"))});return a.join("")}var e=c.findRecord("categoryid",g);if(e){var b=FT.util.Format.stringToColor(e.get("color"),"#CCC");var d=FT.util.Format.textColorFromColor(b);b=b.toString();return"<div class='ftrack-notes-category' style='margin-left:4px;color: "+d+";background-color:"+b+";'>"+e.get("name")+"</div>"}else{return""}};FTrack.grid.ListCategoryRenderer=function(c){var b=Ext.data.StoreManager.lookup("FT.store.ListType");var a=b.findRecord("typeid",c);if(a){return a.get("name")}else{return""}};FTrack.grid.LinkRendererPrint=function(k,l,j,g,e,n,m){var h=FTrack.util.link(k,false,false);return h.join(" / ")};FTrack.grid.SimpleLinkRenderer=function(c,d,b){if(c){var a=FTrack.util.link(c,true,true,true);if(a.length==0){return""}a=a[a.length-1];var e=FTrack.util.link(c,false,false);if(e.length==0){return""}e=e[e.length-1];return Ext.String.format("<span title='{0}'>{1}</span>",e.replace(/'/g,"&#39;"),a)}return""};FTrack.grid.NoProjectLinkRenderer=function(c,d,b){var a=c;if(c&&c.length>=2){a=c.slice(1)}return FTrack.grid.LinkRenderer(a,d,b)};FTrack.grid.ArrayRenderer=function(m,k,t,g,e,q,o,n,l){if(!Ext.isArray(t)){return""}var s=0,h=t.length,j=[];for(;s<h;s++){j.push(m.call(this,t[s],g,e,q,o,n,l))}return j.join(k)};FTrack.grid.IndicatorRenderer=function(b,c,a){return Ext.isBoolean(b)&&b||!Ext.isBoolean(b)&&b=="1"?'<span style="color: #911111;height:10px;line-height:10px;font-size: 20px;margin-left: 3px;width: 8px;">&#8226;</span>':"&#160;"};FTrack.grid.FileRenderer=function(o,g,e,n,m,l,k,h){var q=Ext.decode(o);var j="";Ext.each(q,function(c,a,b){if(c.fn!=null){j+='<a target="_blank" style="margin-right:5px;" href="javascript:'+c.fn+"('"+c.path+"',{'title':'"+c.name+"'})\">"+c.text+"</a>"}else{j+='<a target="_blank" style="margin-right:5px;" href="'+c.path+'">'+c.text+"</a>"}},this);return j};FTrack.grid.IconRendererCompute=function(x,k,e,w,u,s,q,o){var t=null;var m=null;var l=null;var j=null;o=Ext.clone(o);if(!Ext.isDefined(x)){return""}var y=20;var h="auto";if(Ext.isString(x)){var g=x}else{var n=x;if(Ext.isDefined(o)){Ext.apply(n,o)}var g=n.thumbUrl;var y=Ext.isDefined(n.size)?n.size.y:y;if(Ext.isDefined(n.size)&&Ext.isDefined(n.size.x)){h=n.size.x}if(Ext.isDefined(n.link)&&n.link){t=n.link.path}if(Ext.isDefined(n.action)){m=n.action}j=n.attachmentid;if(Ext.isDefined(n.textOnly)){l=n.textOnly}}return{attachmentid:j,height:y,width:h,url:g,link:t,action:m,textOnly:l,overlayIcon:n&&n.overlayIcon||"play-overlay"}};FTrack.grid.IconRenderer=function(){var a=FTrack.grid.IconRendererCompute.apply(this,arguments);var b;if(a.action&&a.attachmentid){var c='<div class="ft-iconrenderer-'+a.overlayIcon+'"></div>';b='<div style="position:relative;" class="on-thumbnail-click" attachmentid="'+a.attachmentid+'" action="'+a.action+'">'+c+'<img class="ft-iconrenderer-thumbnail" src="'+a.url+'" height="'+a.height+'" width="'+a.width+'" /></div>'}else{b='<img class="ft-iconrenderer-thumbnail" src="'+a.url+'" height="'+a.height+'" width="'+a.width+'" />';if(a.link!=null){return'<a href="'+a.link+'">'+b+"</a>"}}if(a.textOnly){b='<a href="" class="on-thumbnail-click" attachmentid="'+a.attachmentid+'">(preview)</a>'}return b};FTrack.grid.IconRendererFit=function(){if(Ext.isEmpty(arguments[0])){return""}var e=arguments;var c=0;if(Ext.isDefined(arguments[0])&&Ext.isDefined(arguments[0][1])&&arguments[0][1]=="withFrame"){var e=arguments[0];c=16}var b=FTrack.grid.IconRendererCompute.apply(this,e),h=b.width,a=b.height;if(Ext.isNumber(h)){h-=c;h+="px"}if(Ext.isNumber(a)){a+="px"}var d='<div class="icon-renderer-fit" style="height:'+a+";width:auto;";d+="background-image: url('"+b.url+"');\"></div>";if(b.action&&b.attachmentid){var g='<div class="ft-iconrenderer-'+b.overlayIcon+'" style="height:'+a+';"></div>';return'<div style="position:relative;float:left;width:100%;" class="on-thumbnail-click" attachmentid="'+b.attachmentid+'" action="'+b.action+'">'+g+"<div>"+d+"</div></div>"}else{if(b.link!=null){return'<a href="'+b.link+'">'+d+"</a>"}}return d};FTrack.grid.IconRendererFitFrame=function(){var a=new Array;a.push(arguments[0]);a.push("withFrame");return'<div style="border:1px solid #d8d8d8;padding:8px;background-color:white;overflow:hidden;">'+FTrack.grid.IconRendererFit.call(this,a)+"</div>"};FTrack.grid._getInitialsFromString=function(a){return a.split(" ").map(function(b){return b.charAt(0)}).join("").slice(0,2).toUpperCase()};FTrack.grid.UserImageRenderer=function(d,m){d=d||{};m=m||{};var l=m.size?"ft-user-image ft-user-image-"+m.size:"ft-user-image",b="ft-user-image-inner",j="",h="",c="&nbsp;",k,g,e=d.id||d.userid||null;if(Ext.isString(d)){e=d;d={}}if(!d.name&&e){d.name=FTrack.grid.UserRendererPrint(e)}k=Ext.data.StoreManager.lookup("FT.store.User");g=k.findRecord("userid",e);if(g){d.thumbId=g.get("thumbid")}j=d.name||"";if(d.thumbId&&d.thumbId.length){var a=FT.util.getThumbnailUrl(d.thumbId);h="background-image: url("+a+");";b+=" ft-user-image-inner-image"}else{if(Ext.isString(d.name)&&d.name.length){c=FTrack.grid._getInitialsFromString(j)}}return Ext.String.format('<div title="{0}" class="{1}"><span class="{2}" style="{3}">{4}</span></div>',j,l,b,h,c)};FTrack.grid.ResourceImageRenderer=function(d,b){var a="",c="ft-user-image-inner",e="&nbsp;";if(d.type==="user"){return FTrack.grid.UserImageRenderer(d,b)}a=b.size?"ft-user-image ft-user-image-"+b.size:"ft-user-image";if(b.cls){a=a+Ext.String.format(" {0}",b.cls)}e=FTrack.grid._getInitialsFromString(d.name);return Ext.String.format('<div title="{0}" class="{1}"><span class="{2}">{3}</span></div>',d.name,a,c,e)};FTrack.grid.UserImageRendererSmall=function(a,b){b=b||{};b.size="small";return FTrack.grid.UserImageRenderer(a,b)};FTrack.grid.ParentImageRenderer=function(b,d){d=d||{};var a=d.size?"ft-parent-image ft-parent-image-"+d.size:"ft-parent-image";var g=FT.util.getThumbnailUrl(b);var c="background-color: white; background-image: url("+g+");";var e='<div class="'+a+'" style="'+c+'">&nbsp;</div>';return e};FTrack.grid.ParentImageRendererSmall=function(a,b){b=b||{};b.size="small";return FTrack.grid.ParentImageRenderer(a,b)};FTrack.grid.SummaryProgressRenderer=function(g,h,e,c){var b={};var d=0;var a=Ext.data.StoreManager.lookup("FT.store.TaskStatus");Ext.each(g,function(l,j,m){var n=Ext.isObject(l)?l.id:l;var k=a.findRecord("statusid",n);if(k==null){return}if(!Ext.isDefined(b[k.get("statusid")])){b[k.get("statusid")]={amount:0,color:k.get("color"),sort:k.get("sort")}}b[k.get("statusid")].amount+=1;d+=1},this);return FTrack.grid.ProgressRenderer(b,d)};FTrack.grid.SummaryProgressRenderer_new=function(k,b,a){var e={},h=0,l=Ext.data.StoreManager.lookup("FT.store.TaskStatus"),g=FT.stateColor(),d=FT.stateSort(),c={BLOCKED:0,NOT_STARTED:0,IN_PROGRESS:0,DONE:0},m=typeof arguments[arguments.length-1]=="boolean"?arguments[arguments.length-1]:false;Ext.each(a.get("progress"),function(p,n,q){var s=Ext.isObject(p)?p.statusid:undefined;var o=l.findRecord("statusid",s);if(o==null){return}if(FT.Settings.get("color","status_progress")&&!m){if(!Ext.isDefined(e[o.get("statusid")])){e[o.get("statusid")]={amount:0,color:o.get("color"),sort:o.get("sort")}}e[s].amount=p.count;h+=p.count}else{if(!Ext.isDefined(e[o.get("state_short")])){e[o.get("state_short")]={amount:0,color:g[o.get("state_short")],sort:d[o.get("state_short")]}}e[o.get("state_short")].amount+=p.count;c[o.get("state_short")]+=p.count;h+=p.count}},this);if(m){var j=undefined;if(h==0){}else{if(c.DONE==h){j="DONE"}else{if(c.NOT_STARTED==h){j="NOT_STARTED"}else{j="IN_PROGRESS"}}}}return FTrack.grid.ProgressRenderer(e,h,j)};FTrack.grid.ProgressRenderer=function(b,e,g){var a="";if(g){return'<div style="display:inline-block;width:10px;height:10px;background-color:'+FT.stateColor()[g]+';"></div>'}var d=0;var c=[];Ext.iterate(b,function(h,k,j){c.push(k)},this);c.sort(function(j,h){return j.sort<h.sort?-1:1});Ext.each(c,function(l,h,j){var k=100*(l.amount/e);a+='<div class="progress-renderer__block" style="width:'+k+"%;background-color:"+l.color+';"></div>';d+=l.amount},this);return a};FTrack.grid.BoldRenderer=function(b,c,a){return'<span style="font-weight:bold;">'+b+"</span>"};FTrack.grid.FuzzyDateRenderer=function(b,c,a){if(b==null){return""}if(!Ext.isString(b)){var b=Ext.Date.format(new Date(b),"Y-m-d H:i:s")}if(Ext.isDefined(c)){c.style="text-overflow: clip;"}return FTrack.fuzzyFyDate(b)};FTrack.grid.getUserRendererData=function(l,c,b){if(Ext.isString(l)&&!FT.util.isUUID(l)){try{l=Ext.decode(l)}catch(g){}}var d=null;if(l==""||!l||!Ext.isDefined(l)||Ext.isArray(l)&&l.length==0){return null}l=Ext.isString(l)?l.split(", "):l;var m=Ext.isArray(l)?l:[l],n=Ext.data.StoreManager.lookup("FT.store.Resources"),k=[],o=[],a=[],j,q,h;for(h=0;h<m.length;h++){q=m[h];if(Ext.isString(q)){j=q}else{if(q){j=q.userid}}if(j!==null&&a.indexOf(j)===-1){a.push(j)}}var e=[];for(h=0;h<a.length;h++){j=a[h];record=n.findRecord("id",j);if(record!==null){resource_type=record.get("resource_type");if(resource_type==="user"){name=record.get("firstname")+" "+record.get("lastname");e.push({link:FTrack.util.link([{id:j,type:resource_type,name:name}],true,true),name:name})}else{e.push({link:FTrack.util.link(record.get("link"),false,false),name:Ext.pluck(record.get("link"),"name").join(" / ")})}}}e.sort(function(s,p){if(s.name===p.name){return 0}return s.name<p.name?-1:1});return{names:Ext.pluck(e,"name"),links:Ext.pluck(e,"link")}};FTrack.grid.UserRenderer=function(c,d,a){var b=FTrack.grid.getUserRendererData(c,d,a);if(!b){return""}if(b.links.length!==0){return'<span title="'+b.names.join(", ")+'">'+b.links.join(", ")+"</span>"}else{return""}};FTrack.grid.ResourceRendererPrint=function(c,d,a){var b=FTrack.grid.getUserRendererData(c,d,a);if(!b){return""}if(b.names.length!==0){return b.names.join(", ")}else{return""}};FTrack.grid.UserRendererDefault=function(b,c){var a=FTrack.grid.UserRenderer(b);return a===""?c:a};FTrack.grid.UserRendererPrint=function(e,h,d){e=Ext.isString(e)?e.split(", "):e;var c=Ext.isArray(e)?e:[e];var g=[];if(e==""||!e||!Ext.isDefined(e)||e==""||Ext.isArray(e)&&e.length==0){name="";g.push(name)}var b=Ext.data.StoreManager.lookup("FT.store.User"),a;Ext.each(c,function(n,j,m){if(n==""){return true}var k=null;var l=null;if(Ext.isString(n)){k=n;a=b.findRecord("userid",k);if(a){l=a.get("name");g.push(l)}else{l="";g.push(l)}}},this);return g.join(", ")};FTrack.grid.AttachmentRenderer=function(c,d,b){var a=[];if(!c||c.length==0){return}Ext.each(c,function(h,e,g){var j=h.icon?FTrack.grid.IconRenderer(h.icon,null,null,null,null,null,null,{textOnly:true}):"";j=Ext.Array.indexOf(["gif","png","jpeg","jpg","tiff"],h.extension.toLowerCase())!=-1?j:"";a.push('<a style="margin-left:5px;font-size:12px;" href="'+h.link+'">'+h.filename+"</a> "+j)},this);return a.join("<br />")};FTrack.grid.ProgressBarRenderer=function(e,g,d){var c=e*100;var b=Ext.util.Format.round(c,0)+"%";var a='<div class="progressbar">';if(e==-1){a+='<div style="font-size:10px;color:#666;text-align:center;">No tasks</div>'}else{a+='<div style="width:'+c+'%;" class="progressbarpart1">'+(c>20?b:"")+"</div>";a+='<div class="progressbarpart2">'+(c==0||c<20?c==0?"0%":b:"")+"</div>"}a+="</div>";return a};FTrack.grid.ObjectTypeRenderer=function(c){c=Ext.isArray(c)?c:[c];var b=[];var a=Ext.data.StoreManager.lookup("FT.store.ObjectType");Ext.each(c,function(e,d,g){type=a.findRecord("typeid",e);if(type!=null){b.push(type.get("name"))}},this);return b.join(", ")};FTrack.grid.MetaDataRendererTpl=new Ext.XTemplate('<table style="overflow:hidden;" >',"{[this.getEmptyRow(values)]}",'<tpl for=".">',"<tr>",'<td style="font-size:12px;padding-right:10px;"><strong>{variable}</strong></td>','<td style="max-width:400px;font-size:12px;">{[Ext.String.htmlEncode(values.value)]}</td>',"</tr>","</tpl>","</table>",{getEmptyRow:function(a){if(a&&a.length==0){return'<tr><td style="font-size:12px;">'+FT.i18n("No metadata")+"</td></tr>"}return""}});FTrack.grid.MetaDataRenderer=function(a){if(!Ext.isArray(a)){return""}return FTrack.grid.MetaDataRendererTpl.apply(a)};FTrack.grid.AssetVersionRenderer=function(c,d,b){var a=FT.Settings.get("FORMAT","version_number_padding");return Ext.util.Format.leftPad(c,a,"0")};Ext.define("FT.grid.column.ComboColumn",{extend:"Ext.grid.column.Column",alias:["widget.ft-combocolumn"],constructor:function(a){this.callParent(arguments);var d=a.editor.store.data;var c=a.editor.displayField;var b=a.editor.valueField;this.renderer=function(g){var e=Ext.pluck(d,b).indexOf(g);return d[e][c]}}});Ext.define("FT.grid.column.EnumuratorColumn",{extend:"Ext.grid.column.Column",alias:["widget.ft-enumcolumn"],constructor:function(a){this.callParent(arguments);var d=Ext.decode(a.editor.data),c="menu",b="value";this.renderer=function(k){if(!k||k.length==0){return}k=k.split(", ");var h=k.length,e=0,g=[],j=-1;for(;e<h;e++){j=Ext.pluck(d,b).indexOf(k[e]);if(j!=-1){g.push(d[j][c])}}return g.join(", ")}}});FTrack.grid.enumRenderer=function(c,h){if(!h||h.length==0){return""}try{c=Ext.decode(c)}catch(d){log("Error decoding attribute data.");return"Render error"}var g="menu";var k="value";if(Ext.isString(h)){h=h.split(", ")}var a=h.length,j=0,b=[],l=-1;for(;j<a;j++){l=Ext.pluck(c,k).indexOf(h[j]);if(l!=-1){b.push(c[l][g])}}return b.sort().join(", ")};FTrack.grid.WarningRenderer=function(n,g,e,m,l,k,j,h){if(n==false){return""}var o=Ext.isDefined(h)?h:n;return'<span style="display:inline-block;width:20px;height:20px;background-image:url(/resources/icons/warning2.png);background-size:contain;" data-qtip="'+o+'"></span>'};FTrack.grid.WorkflowIconRenderer=function(o,g,e,n,m,k,j,h){if(o==false){return""}var l=o.icon;var q=o.text;return'<span style="display:inline-block;width:20px;height:20px;background-image:url('+l+');background-size:contain;" data-qtip="'+q+'"></span>'};FTrack.grid.ScopeRenderer=function(c){if(Ext.isString(c)&&!Ext.isEmpty(c)){c=c.split(", ")}var g=[],d=0,b=Ext.data.StoreManager.lookup("FT.store.Scope"),e=c.length||0,a;for(;d<e;d++){a=b.findRecord("id",c[d]);if(a){g.push(a.get("name"))}else{g.push("Unknown")}}return g.join(", ")};FTrack.grid.DurationRendererTotal=function(b){console.debug(b);if(b===null){return""}var a=moment.duration(b,"seconds");return a.humanize(true)};FTrack.grid.DurationRenderer=function(b){if(b===0||b==null){return""}var a=moment.duration(b,"seconds");return a.format("H:mm:ss",{trim:false})};FTrack.grid.DurationRendererSimple=function(b){if(!b){return""}var a=moment.duration(b,"seconds");return a.format("H[h] m[m]",{trim:false})};FTrack.grid.LinkRendererMultiline=function(c){var b,a;b=function(d){if(d.length>1){return FTrack.grid.LinkRenderer(d.slice(0,-1))}else{return"&nbsp;"}};a=function(d){if(d.length>1){return FTrack.grid.LinkRenderer(d.slice(-1))}else{return"&nbsp;"}};return Ext.String.format('<div><div class="entity-link">{0}</div><div class="entity-path">{1}</div></div>',a(c),b(c))};FTrack.grid.markdownRenderer=function(e,g,b,h,d,c,a){if(a&&a.isMarkdownSupported===false){return FTrack.grid.StripHtmlRenderer(e,g,b)}if(!FTrack.grid.markdownRenderer.converter){FTrack.grid.markdownRenderer.converter=Markdown.getSanitizingConverter()}e=FTrack.grid.markdownRenderer.converter.makeHtml(e);e=e||"";return e};FTrack.grid.markdownRenderer.converter=null;FTrack.grid.getConditionalRenderer=function(c,a,b){var d=function(l,h,g){var j=Array.prototype.slice.call(arguments,0),e=l,k;if(c(g)){for(k=0;k<a.length;k++){e=a[k].apply(a[k],[e,h,g])}}else{if(Ext.isArray(b)){for(k=0;k<b.length;k++){e=b[k].apply(b[k],[e,h,g])}}}return e};return d};FTrack.grid.LinkDirectionRenderer=function(c,b,a){return FT.glyphIcon(c,{size:"20px",cls:"ft-link-direction"})};FTrack.grid.LinkDirectionTextRenderer=function(c,b,a){return FT.glyphIcon(c,{size:"10px",cls:"ft-link-direction text-faded"})+Ext.String.format(' <span class="text-faded">{0}</span>',Ext.String.capitalize(c))};FTrack.grid._markCellAsNonEditable=function(c,b,a){b.tdCls=b.tdCls.replace("cell--editable","cell--non-editable");return c};FTrack.grid.StatusableOnlyStatusRenderer=FTrack.grid.getConditionalRenderer(FT.util.isRecordStatusable,[FTrack.grid.StatusRenderer],[FTrack.grid._markCellAsNonEditable]);FTrack.grid.TypeableOnlyTaskTypeRenderer=FTrack.grid.getConditionalRenderer(FT.util.isRecordTypeable,[FTrack.grid.typeRendererMultiline],[FTrack.grid.typeRendererMultiline,FTrack.grid._markCellAsNonEditable]);FTrack.grid.EndDateRenderer=FTrack.grid.getConditionalRenderer(FT.util.isRecordSchedulable,[function(a){return FTrack.grid.dateRenderer(a)}],[FTrack.grid._markCellAsNonEditable]);FTrack.grid.EndDatetimeRenderer=FTrack.grid.getConditionalRenderer(FT.util.isRecordSchedulable,[function(a){return FTrack.grid.dateTimeRenderer(a)}],[FTrack.grid._markCellAsNonEditable]);FTrack.grid.colorRenderer=function(b){var a="background-color: "+b+"; height: 37px; border-radius: 2px;";return'<div style="'+a+'">&nbsp;</div>'};Ext.ns("Ext.grid.Column.types");Ext.grid.Column.types.fuzzydatecolumn=FTrack.grid.FuzzyDateColumn;Ext.grid.Column.types.linkcolumn=FTrack.grid.LinkColumn;Ext.grid.Column.types.simplelinkcolumn=FTrack.grid.SimpleLinkColumn;Ext.grid.Column.types.indicatorcolumn=FTrack.grid.IndicatorColumn;Ext.grid.Column.types.usercolumn=FTrack.grid.UserColumn;Ext.grid.Column.types.iconcolumn=FTrack.grid.IconColumn;Ext.grid.Column.types.negativealertcolumn=FTrack.grid.NegativeAlertColumn;Ext.grid.Column.types.statuscolumn=FTrack.grid.StatusColumn;Ext.grid.Column.types.summaryprogresscolumn=FTrack.grid.SummaryProgressColumn;Ext.grid.Column.types.shotstatuscolumn=FTrack.grid.ShotStatusColumn;FTrack.loadFTrack=function(b,c){var d=Ext.create("Ext.container.Container",{renderTo:Ext.getBody(),floating:{shadow:false},modal:true,cls:"pageloader",items:[{xtype:"component",cls:"loader"}]});var e=Ext.create("FT.App",c);FT.app=e;var a=function(){var g=Ext.create("FT.app.Viewport",{app:e,renderTo:Ext.getBody(),appType:b});FT.Viewport=g;FT.fancyViewport=g;Ext.fly(d.getEl()).fadeOut({easing:"easeOut",duration:250,remove:false,callback:function(){d.hide();g.topMenu.show()}})};if(!e.modulesLoaded){e.on("modulesloaded",a,this,{single:true})}else{a()}};FTrack.oc=function(b){var d={};for(var c=0;c<b.length;c++){d[b[c]]=""}return d};FTrack.debugQueue=[];FTrack.debugTypes=["log","exception","plugin"];FTrack.debug=function(b,a){if(a in FTrack.oc(FTrack.debugTypes)){FTrack.log2(b)}};var Opentip,firstAdapter,i,mouseMoved,mousePosition,mousePositionObservers,position,vendors,_i,_len,_ref,__slice=[].slice,__indexOf=[].indexOf||function(c){for(var b=0,a=this.length;b<a;b++){if(b in this&&this[b]===c){return b}}return -1},__hasProp={}.hasOwnProperty;Opentip=function(){a.prototype.STICKS_OUT_TOP=1;a.prototype.STICKS_OUT_BOTTOM=2;a.prototype.STICKS_OUT_LEFT=1;a.prototype.STICKS_OUT_RIGHT=2;a.prototype["class"]={container:"opentip-container",opentip:"opentip",header:"ot-header",content:"ot-content",loadingIndicator:"ot-loading-indicator",close:"ot-close",goingToHide:"ot-going-to-hide",hidden:"ot-hidden",hiding:"ot-hiding",goingToShow:"ot-going-to-show",showing:"ot-showing",visible:"ot-visible",loading:"ot-loading",ajaxError:"ot-ajax-error",fixed:"ot-fixed",showEffectPrefix:"ot-show-effect-",hideEffectPrefix:"ot-hide-effect-",stylePrefix:"style-"};function a(d,s,x,k){var u,p,o,b,j,l,e,c,t,w,n,h,g,m,q=this;this.id=++a.lastId;this.debug("Creating Opentip.");a.tips.push(this);this.adapter=a.adapter;u=this.adapter.data(d,"opentips")||[];u.push(this);this.adapter.data(d,"opentips",u);this.triggerElement=this.adapter.wrap(d);if(this.triggerElement.length>1){throw new Error("You can't call Opentip on multiple elements.")}if(this.triggerElement.length<1){throw new Error("Invalid element.")}this.loaded=false;this.loading=false;this.visible=false;this.waitingToShow=false;this.waitingToHide=false;this.currentPosition={left:0,top:0};this.dimensions={width:100,height:50};this.content="";this.redraw=true;this.currentObservers={showing:false,visible:false,hiding:false,hidden:false};k=this.adapter.clone(k);if(typeof s==="object"){k=s;s=x=void 0}else{if(typeof x==="object"){k=x;x=void 0}}if(x!=null){k.title=x}if(s!=null){this.setContent(s)}if(k["extends"]==null){if(k.style!=null){k["extends"]=k.style}else{k["extends"]=a.defaultStyle}}b=[k];m=k;while(m["extends"]){l=m["extends"];m=a.styles[l];if(m==null){throw new Error("Invalid style: "+l)}b.unshift(m);if(!(m["extends"]!=null||l==="standard")){m["extends"]="standard"}}k=(n=this.adapter).extend.apply(n,[{}].concat(__slice.call(b)));k.hideTriggers=function(){var B,A,y,z;y=k.hideTriggers;z=[];for(B=0,A=y.length;B<A;B++){p=y[B];z.push(p)}return z}();if(k.hideTrigger&&k.hideTriggers.length===0){k.hideTriggers.push(k.hideTrigger)}h=["tipJoint","targetJoint","stem"];for(e=0,t=h.length;e<t;e++){j=h[e];if(k[j]&&typeof k[j]==="string"){k[j]=new a.Joint(k[j])}}if(k.ajax&&(k.ajax===true||!k.ajax)){if(this.adapter.tagName(this.triggerElement)==="A"){k.ajax=this.adapter.attr(this.triggerElement,"href")}else{k.ajax=false}}if(k.showOn==="click"&&this.adapter.tagName(this.triggerElement)==="A"){this.adapter.observe(this.triggerElement,"click",function(y){y.preventDefault();y.stopPropagation();return y.stopped=true})}if(k.target){k.fixed=true}if(k.stem===true){k.stem=new a.Joint(k.tipJoint)}if(k.target===true){k.target=this.triggerElement}else{if(k.target){k.target=this.adapter.wrap(k.target)}}this.currentStem=k.stem;if(k.delay==null){k.delay=k.showOn==="mouseover"?0.2:0}if(k.targetJoint==null){k.targetJoint=(new a.Joint(k.tipJoint)).flip()}this.showTriggers=[];this.showTriggersWhenVisible=[];this.hideTriggers=[];if(k.showOn&&k.showOn!=="creation"){this.showTriggers.push({element:this.triggerElement,event:k.showOn})}if(k.ajaxCache!=null){k.cache=k.ajaxCache;delete k.ajaxCache}this.options=k;this.bound={};g=["prepareToShow","prepareToHide","show","hide","reposition"];for(c=0,w=g.length;c<w;c++){o=g[c];this.bound[o]=function(y){return function(){return q[y].apply(q,arguments)}}(o)}this.adapter.domReady(function(){q.activate();if(q.options.showOn==="creation"){return q.prepareToShow()}})}a.prototype._setup=function(){var h,m,n,k,g,e,l,b,j,d,c;this.debug("Setting up the tooltip.");this._buildContainer();this.hideTriggers=[];j=this.options.hideTriggers;for(k=g=0,l=j.length;g<l;k=++g){m=j[k];n=null;h=this.options.hideOn instanceof Array?this.options.hideOn[k]:this.options.hideOn;if(typeof m==="string"){switch(m){case"trigger":h=h||"mouseout";n=this.triggerElement;break;case"tip":h=h||"mouseover";n=this.container;break;case"target":h=h||"mouseover";n=this.options.target;break;case"closeButton":break;default:throw new Error("Unknown hide trigger: "+m+".")}}else{h=h||"mouseover";n=this.adapter.wrap(m)}if(n){this.hideTriggers.push({element:n,event:h,original:m})}}d=this.hideTriggers;c=[];for(e=0,b=d.length;e<b;e++){m=d[e];c.push(this.showTriggersWhenVisible.push({element:m.element,event:"mouseover"}))}return c};a.prototype._buildContainer=function(){this.container=this.adapter.create('<div id="opentip-'+this.id+'" class="'+this["class"].container+" "+this["class"].hidden+" "+this["class"].stylePrefix+this.options.className+'"></div>');this.adapter.css(this.container,{position:"absolute"});if(this.options.ajax){this.adapter.addClass(this.container,this["class"].loading)}if(this.options.fixed){this.adapter.addClass(this.container,this["class"].fixed)}if(this.options.showEffect){this.adapter.addClass(this.container,""+this["class"].showEffectPrefix+this.options.showEffect)}if(this.options.hideEffect){return this.adapter.addClass(this.container,""+this["class"].hideEffectPrefix+this.options.hideEffect)}};a.prototype._buildElements=function(){var b,c;this.tooltipElement=this.adapter.create('<div class="'+this["class"].opentip+'"><div class="'+this["class"].header+'"></div><div class="'+this["class"].content+'"></div></div>');this.backgroundCanvas=this.adapter.wrap(document.createElement("canvas"));this.adapter.css(this.backgroundCanvas,{position:"absolute"});if(typeof G_vmlCanvasManager!=="undefined"&&G_vmlCanvasManager!==null){G_vmlCanvasManager.initElement(this.adapter.unwrap(this.backgroundCanvas))}b=this.adapter.find(this.tooltipElement,"."+this["class"].header);if(this.options.title){c=this.adapter.create("<h1></h1>");this.adapter.update(c,this.options.title,this.options.escapeTitle);this.adapter.append(b,c)}if(this.options.ajax&&!this.loaded){this.adapter.append(this.tooltipElement,this.adapter.create('<div class="'+this["class"].loadingIndicator+'"><span>\u21bb</span></div>'))}if(__indexOf.call(this.options.hideTriggers,"closeButton")>=0){this.closeButtonElement=this.adapter.create('<a href="javascript:undefined;" class="'+this["class"].close+'"><span>Close</span></a>');this.adapter.append(b,this.closeButtonElement)}this.adapter.append(this.container,this.backgroundCanvas);this.adapter.append(this.container,this.tooltipElement);this.adapter.append(document.body,this.container);this._newContent=true;return this.redraw=true};a.prototype.setContent=function(b){this.content=b;this._newContent=true;if(typeof this.content==="function"){this._contentFunction=this.content;this.content=""}else{this._contentFunction=null}if(this.visible){return this._updateElementContent()}};a.prototype._updateElementContent=function(){var b;if(this._newContent||!this.options.cache&&this._contentFunction){b=this.adapter.find(this.container,"."+this["class"].content);if(b!=null){if(this._contentFunction){this.debug("Executing content function.");this.content=this._contentFunction(this)}this.adapter.update(b,this.content,this.options.escapeContent)}this._newContent=false}this._storeAndLockDimensions();return this.reposition()};a.prototype._storeAndLockDimensions=function(){var b;if(!this.container){return}b=this.dimensions;this.adapter.css(this.container,{width:"auto",left:"0px",top:"0px"});this.dimensions=this.adapter.dimensions(this.container);this.dimensions.width+=1;this.adapter.css(this.container,{width:""+this.dimensions.width+"px",top:""+this.currentPosition.top+"px",left:""+this.currentPosition.left+"px"});if(!this._dimensionsEqual(this.dimensions,b)){this.redraw=true;return this._draw()}};a.prototype.activate=function(){return this._setupObservers("hidden","hiding")};a.prototype.deactivate=function(){this.debug("Deactivating tooltip.");this.hide();return this._setupObservers("-showing","-visible","-hidden","-hiding")};a.prototype._setupObservers=function(){var p,t,d,u,g,n,m,k,h,s,e,c,b,o,l,j,q=this;u=1<=arguments.length?__slice.call(arguments,0):[];for(n=0,s=u.length;n<s;n++){d=u[n];t=false;if(d.charAt(0)==="-"){t=true;d=d.substr(1)}if(this.currentObservers[d]===!t){continue}this.currentObservers[d]=!t;p=function(){var x,y,w;x=1<=arguments.length?__slice.call(arguments,0):[];if(t){return(y=q.adapter).stopObserving.apply(y,x)}else{return(w=q.adapter).observe.apply(w,x)}};switch(d){case"showing":o=this.hideTriggers;for(m=0,e=o.length;m<e;m++){g=o[m];p(g.element,g.event,this.bound.prepareToHide)}p(document.onresize!=null?document:window,"resize",this.bound.reposition);p(window,"scroll",this.bound.reposition);break;case"visible":l=this.showTriggersWhenVisible;for(k=0,c=l.length;k<c;k++){g=l[k];p(g.element,g.event,this.bound.prepareToShow)}break;case"hiding":j=this.showTriggers;for(h=0,b=j.length;h<b;h++){g=j[h];p(g.element,g.event,this.bound.prepareToShow)}break;case"hidden":break;default:throw new Error("Unknown state: "+d)}}return null};a.prototype.prepareToShow=function(){this._abortHiding();this._abortShowing();if(this.visible){return}this.debug("Showing in "+this.options.delay+"s.");if(this.container==null){this._setup()}if(this.options.group){a._abortShowingGroup(this.options.group,this)}this.preparingToShow=true;this._setupObservers("-hidden","-hiding","showing");this._followMousePosition();if(this.options.fixed&&!this.options.target){this.initialMousePosition=mousePosition}this.reposition();return this._showTimeoutId=this.setTimeout(this.bound.show,this.options.delay||0)};a.prototype.show=function(){var b=this;this._abortHiding();if(this.visible){return}this._clearTimeouts();if(!this._triggerElementExists()){return this.deactivate()}this.debug("Showing now.");if(this.container==null){this._setup()}if(this.options.group){a._hideGroup(this.options.group,this)}this.visible=true;this.preparingToShow=false;if(this.tooltipElement==null){this._buildElements()}this._updateElementContent();if(this.options.ajax&&(!this.loaded||!this.options.cache)){this._loadAjax()}this._searchAndActivateCloseButtons();this._startEnsureTriggerElement();this.adapter.css(this.container,{zIndex:a.lastZIndex++});this._setupObservers("-hidden","-hiding","-showing","-visible","showing","visible");if(this.options.fixed&&!this.options.target){this.initialMousePosition=mousePosition}this.reposition();this.adapter.removeClass(this.container,this["class"].hiding);this.adapter.removeClass(this.container,this["class"].hidden);this.adapter.addClass(this.container,this["class"].goingToShow);this.setCss3Style(this.container,{transitionDuration:"0s"});this.defer(function(){var c;if(!b.visible||b.preparingToHide){return}b.adapter.removeClass(b.container,b["class"].goingToShow);b.adapter.addClass(b.container,b["class"].showing);c=0;if(b.options.showEffect&&b.options.showEffectDuration){c=b.options.showEffectDuration}b.setCss3Style(b.container,{transitionDuration:""+c+"s"});b._visibilityStateTimeoutId=b.setTimeout(function(){b.adapter.removeClass(b.container,b["class"].showing);return b.adapter.addClass(b.container,b["class"].visible)},c);return b._activateFirstInput()});return this._draw()};a.prototype._abortShowing=function(){if(this.preparingToShow){this.debug("Aborting showing.");this._clearTimeouts();this._stopFollowingMousePosition();this.preparingToShow=false;return this._setupObservers("-showing","-visible","hiding","hidden")}};a.prototype.prepareToHide=function(){this._abortShowing();this._abortHiding();if(!this.visible){return}this.debug("Hiding in "+this.options.hideDelay+"s");this.preparingToHide=true;this._setupObservers("-showing","visible","-hidden","hiding");return this._hideTimeoutId=this.setTimeout(this.bound.hide,this.options.hideDelay)};a.prototype.hide=function(){var b=this;this._abortShowing();if(!this.visible){return}this._clearTimeouts();this.debug("Hiding!");this.visible=false;this.preparingToHide=false;this._stopEnsureTriggerElement();this._setupObservers("-showing","-visible","-hiding","-hidden","hiding","hidden");if(!this.options.fixed){this._stopFollowingMousePosition()}if(!this.container){return}this.adapter.removeClass(this.container,this["class"].visible);this.adapter.removeClass(this.container,this["class"].showing);this.adapter.addClass(this.container,this["class"].goingToHide);this.setCss3Style(this.container,{transitionDuration:"0s"});return this.defer(function(){var c;b.adapter.removeClass(b.container,b["class"].goingToHide);b.adapter.addClass(b.container,b["class"].hiding);c=0;if(b.options.hideEffect&&b.options.hideEffectDuration){c=b.options.hideEffectDuration}b.setCss3Style(b.container,{transitionDuration:""+c+"s"});return b._visibilityStateTimeoutId=b.setTimeout(function(){b.adapter.removeClass(b.container,b["class"].hiding);b.adapter.addClass(b.container,b["class"].hidden);b.setCss3Style(b.container,{transitionDuration:"0s"});if(b.options.removeElementsOnHide){b.debug("Removing HTML elements.");b.adapter.remove(b.container);delete b.container;return delete b.tooltipElement}},c)})};a.prototype._abortHiding=function(){if(this.preparingToHide){this.debug("Aborting hiding.");this._clearTimeouts();this.preparingToHide=false;return this._setupObservers("-hiding","showing","visible")}};a.prototype.reposition=function(){var b,d,c,e=this;b=this.getPosition();if(b==null){return}d=this.options.stem;if(this.options.containInViewport){c=this._ensureViewportContainment(b),b=c.position,d=c.stem}if(this._positionsEqual(b,this.currentPosition)){return}if(!(!this.options.stem||d.eql(this.currentStem))){this.redraw=true}this.currentPosition=b;this.currentStem=d;this._draw();this.adapter.css(this.container,{left:""+b.left+"px",top:""+b.top+"px"});return this.defer(function(){var h,g;h=e.adapter.unwrap(e.container);h.style.visibility="hidden";g=h.offsetHeight;return h.style.visibility="visible"})};a.prototype.getPosition=function(m,o,e){var b,d,n,j,l,c,g,k,h;if(!this.container){return}if(m==null){m=this.options.tipJoint}if(o==null){o=this.options.targetJoint}j={};if(this.options.target){g=this.adapter.offset(this.options.target);c=this.adapter.dimensions(this.options.target);j=g;if(o.right){k=this.adapter.unwrap(this.options.target);if(k.getBoundingClientRect!=null){j.left=k.getBoundingClientRect().right+((h=window.pageXOffset)!=null?h:document.body.scrollLeft)}else{j.left+=c.width}}else{if(o.center){j.left+=Math.round(c.width/2)}}if(o.bottom){j.top+=c.height}else{if(o.middle){j.top+=Math.round(c.height/2)}}if(this.options.borderWidth){if(this.options.tipJoint.left){j.left+=this.options.borderWidth}if(this.options.tipJoint.right){j.left-=this.options.borderWidth}if(this.options.tipJoint.top){j.top+=this.options.borderWidth}else{if(this.options.tipJoint.bottom){j.top-=this.options.borderWidth}}}}else{if(this.initialMousePosition){j={top:this.initialMousePosition.y,left:this.initialMousePosition.x}}else{j={top:mousePosition.y,left:mousePosition.x}}}if(this.options.autoOffset){l=this.options.stem?this.options.stemLength:0;n=l&&this.options.fixed?2:10;b=m.middle&&!this.options.fixed?15:0;d=m.center&&!this.options.fixed?15:0;if(m.right){j.left-=n+b}else{if(m.left){j.left+=n+b}}if(m.bottom){j.top-=n+d}else{if(m.top){j.top+=n+d}}if(l){if(e==null){e=this.options.stem}if(e.right){j.left-=l}else{if(e.left){j.left+=l}}if(e.bottom){j.top-=l}else{if(e.top){j.top+=l}}}}j.left+=this.options.offset[0];j.top+=this.options.offset[1];if(m.right){j.left-=this.dimensions.width}else{if(m.center){j.left-=Math.round(this.dimensions.width/2)}}if(m.bottom){j.top-=this.dimensions.height}else{if(m.middle){j.top-=Math.round(this.dimensions.height/2)}}return j};a.prototype._ensureViewportContainment=function(k){var o,g,l,e,d,j,c,h,p,n,m,b;c=this.options.stem;l={position:k,stem:c};if(!(this.visible&&k)){return l}h=this._sticksOut(k);if(!(h[0]||h[1])){return l}n=new a.Joint(this.options.tipJoint);if(this.options.targetJoint){p=new a.Joint(this.options.targetJoint)}j=this.adapter.scrollOffset();m=this.adapter.viewportDimensions();b=[k.left-j[0],k.top-j[1]];o=false;if(m.width>=this.dimensions.width){if(h[0]){o=true;switch(h[0]){case this.STICKS_OUT_LEFT:n.setHorizontal("left");if(this.options.targetJoint){p.setHorizontal("right")}break;case this.STICKS_OUT_RIGHT:n.setHorizontal("right");if(this.options.targetJoint){p.setHorizontal("left")}}}}if(m.height>=this.dimensions.height){if(h[1]){o=true;switch(h[1]){case this.STICKS_OUT_TOP:n.setVertical("top");if(this.options.targetJoint){p.setVertical("bottom")}break;case this.STICKS_OUT_BOTTOM:n.setVertical("bottom");if(this.options.targetJoint){p.setVertical("top")}}}}if(!o){return l}if(this.options.stem){c=n}k=this.getPosition(n,p,c);g=this._sticksOut(k);e=false;d=false;if(g[0]&&g[0]!==h[0]){e=true;n.setHorizontal(this.options.tipJoint.horizontal);if(this.options.targetJoint){p.setHorizontal(this.options.targetJoint.horizontal)}}if(g[1]&&g[1]!==h[1]){d=true;n.setVertical(this.options.tipJoint.vertical);if(this.options.targetJoint){p.setVertical(this.options.targetJoint.vertical)}}if(e&&d){return l}if(e||d){if(this.options.stem){c=n}k=this.getPosition(n,p,c)}return{position:k,stem:c}};a.prototype._sticksOut=function(c){var d,e,b,g;e=this.adapter.scrollOffset();g=this.adapter.viewportDimensions();d=[c.left-e[0],c.top-e[1]];b=[false,false];if(d[0]<0){b[0]=this.STICKS_OUT_LEFT}else{if(d[0]+this.dimensions.width>g.width){b[0]=this.STICKS_OUT_RIGHT}}if(d[1]<0){b[1]=this.STICKS_OUT_TOP}else{if(d[1]+this.dimensions.height>g.height){b[1]=this.STICKS_OUT_BOTTOM}}return b};a.prototype._draw=function(){var p,o,m,h,c,t,u,q,k,n,j,y,b,w,d,x,l,g,e,s=this;if(!(this.backgroundCanvas&&this.redraw)){return}this.debug("Drawing background.");this.redraw=false;if(this.currentStem){l=["top","right","bottom","left"];for(d=0,x=l.length;d<x;d++){y=l[d];this.adapter.removeClass(this.container,"stem-"+y)}this.adapter.addClass(this.container,"stem-"+this.currentStem.horizontal);this.adapter.addClass(this.container,"stem-"+this.currentStem.vertical)}t=[0,0];u=[0,0];if(__indexOf.call(this.options.hideTriggers,"closeButton")>=0){c=new a.Joint(((g=this.currentStem)!=null?g.toString():void 0)==="top right"?"top left":"top right");t=[this.options.closeButtonRadius+this.options.closeButtonOffset[0],this.options.closeButtonRadius+this.options.closeButtonOffset[1]];u=[this.options.closeButtonRadius-this.options.closeButtonOffset[0],this.options.closeButtonRadius-this.options.closeButtonOffset[1]]}m=this.adapter.clone(this.dimensions);h=[0,0];if(this.options.borderWidth){m.width+=this.options.borderWidth*2;m.height+=this.options.borderWidth*2;h[0]-=this.options.borderWidth;h[1]-=this.options.borderWidth}if(this.options.shadow){m.width+=this.options.shadowBlur*2;m.width+=Math.max(0,this.options.shadowOffset[0]-this.options.shadowBlur*2);m.height+=this.options.shadowBlur*2;m.height+=Math.max(0,this.options.shadowOffset[1]-this.options.shadowBlur*2);h[0]-=Math.max(0,this.options.shadowBlur-this.options.shadowOffset[0]);h[1]-=Math.max(0,this.options.shadowBlur-this.options.shadowOffset[1])}o={left:0,right:0,top:0,bottom:0};if(this.currentStem){if(this.currentStem.left){o.left=this.options.stemLength}else{if(this.currentStem.right){o.right=this.options.stemLength}}if(this.currentStem.top){o.top=this.options.stemLength}else{if(this.currentStem.bottom){o.bottom=this.options.stemLength}}}if(c){if(c.left){o.left=Math.max(o.left,u[0])}else{if(c.right){o.right=Math.max(o.right,u[0])}}if(c.top){o.top=Math.max(o.top,u[1])}else{if(c.bottom){o.bottom=Math.max(o.bottom,u[1])}}}m.width+=o.left+o.right;m.height+=o.top+o.bottom;h[0]-=o.left;h[1]-=o.top;if(this.currentStem&&this.options.borderWidth){e=this._getPathStemMeasures(this.options.stemBase,this.options.stemLength,this.options.borderWidth),w=e.stemLength,b=e.stemBase}p=this.adapter.unwrap(this.backgroundCanvas);p.width=m.width;p.height=m.height;this.adapter.css(this.backgroundCanvas,{width:""+p.width+"px",height:""+p.height+"px",left:""+h[0]+"px",top:""+h[1]+"px"});q=p.getContext("2d");q.setTransform(1,0,0,1,0,0);q.clearRect(0,0,p.width,p.height);q.beginPath();q.fillStyle=this._getColor(q,this.dimensions,this.options.background,this.options.backgroundGradientHorizontal);q.lineJoin="miter";q.miterLimit=500;j=this.options.borderWidth/2;if(this.options.borderWidth){q.strokeStyle=this.options.borderColor;q.lineWidth=this.options.borderWidth}else{w=this.options.stemLength;b=this.options.stemBase}if(b==null){b=0}n=function(z,B,A){if(A){q.moveTo(Math.max(b,s.options.borderRadius,t[0])+1-j,-j)}if(B){q.lineTo(z/2-b/2,-j);q.lineTo(z/2,-w-j);return q.lineTo(z/2+b/2,-j)}};k=function(F,A,B){var E,C,z,D;if(F){q.lineTo(-b+j,0-j);q.lineTo(w+j,-w-j);return q.lineTo(j,b-j)}else{if(A){D=s.options.closeButtonOffset;z=t[0];if(B%2!==0){D=[D[1],D[0]];z=t[1]}E=Math.acos(D[1]/s.options.closeButtonRadius);C=Math.acos(D[0]/s.options.closeButtonRadius);q.lineTo(-z+j,-j);return q.arc(j-D[0],-j+D[1],s.options.closeButtonRadius,-(Math.PI/2+E),C,false)}else{q.lineTo(-s.options.borderRadius+j,-j);return q.quadraticCurveTo(j,-j,j,s.options.borderRadius-j)}}};q.translate(-h[0],-h[1]);q.save();(function(){var F,E,z,A,I,H,G,J,D,B,C;C=[];for(E=D=0,B=a.positions.length/2;0<=B?D<B:D>B;E=0<=B?++D:--D){I=E*2;H=E===0||E===3?0:s.dimensions.width;G=E<2?0:s.dimensions.height;J=Math.PI/2*E;z=E%2===0?s.dimensions.width:s.dimensions.height;A=new a.Joint(a.positions[I]);F=new a.Joint(a.positions[I+1]);q.save();q.translate(H,G);q.rotate(J);n(z,A.eql(s.currentStem),E===0);q.translate(z,0);k(F.eql(s.currentStem),F.eql(c),E);C.push(q.restore())}return C})();q.closePath();q.save();if(this.options.shadow){q.shadowColor=this.options.shadowColor;q.shadowBlur=this.options.shadowBlur;q.shadowOffsetX=this.options.shadowOffset[0];q.shadowOffsetY=this.options.shadowOffset[1]}q.fill();q.restore();if(this.options.borderWidth){q.stroke()}q.restore();if(c){return function(){var A,z,D,C,B;D=z=s.options.closeButtonRadius*2;if(c.toString()==="top right"){B=[s.dimensions.width-s.options.closeButtonOffset[0],s.options.closeButtonOffset[1]];A=[B[0]+j,B[1]-j]}else{B=[s.options.closeButtonOffset[0],s.options.closeButtonOffset[1]];A=[B[0]-j,B[1]-j]}q.translate(A[0],A[1]);C=s.options.closeButtonCrossSize/2;q.save();q.beginPath();q.strokeStyle=s.options.closeButtonCrossColor;q.lineWidth=s.options.closeButtonCrossLineWidth;q.lineCap="round";q.moveTo(-C,-C);q.lineTo(C,C);q.stroke();q.beginPath();q.moveTo(C,-C);q.lineTo(-C,C);q.stroke();q.restore();return s.adapter.css(s.closeButtonElement,{left:""+(B[0]-C-s.options.closeButtonLinkOverscan)+"px",top:""+(B[1]-C-s.options.closeButtonLinkOverscan)+"px",width:""+(s.options.closeButtonCrossSize+s.options.closeButtonLinkOverscan*2)+"px",height:""+(s.options.closeButtonCrossSize+s.options.closeButtonLinkOverscan*2)+"px"})}()}};a.prototype._getPathStemMeasures=function(e,m,b){var g,c,k,j,h,d,l;j=b/2;k=Math.atan(e/2/m);g=k*2;h=j/Math.sin(g);c=2*h*Math.cos(k);l=j+m-c;if(l<0){throw new Error("Sorry but your stemLength / stemBase ratio is strange.")}d=Math.tan(k)*l*2;return{stemLength:l,stemBase:d}};a.prototype._getColor=function(l,b,d,c){var h,k,g,e,j;if(c==null){c=false}if(typeof d==="string"){return d}if(c){k=l.createLinearGradient(0,0,b.width,0)}else{k=l.createLinearGradient(0,0,0,b.height)}for(g=e=0,j=d.length;e<j;g=++e){h=d[g];k.addColorStop(h[0],h[1])}return k};a.prototype._searchAndActivateCloseButtons=function(){var c,e,b,d;d=this.adapter.findAll(this.container,"."+this["class"].close);for(e=0,b=d.length;e<b;e++){c=d[e];this.hideTriggers.push({element:this.adapter.wrap(c),event:"click"})}if(this.currentObservers.showing){this._setupObservers("-showing","showing")}if(this.currentObservers.visible){return this._setupObservers("-visible","visible")}};a.prototype._activateFirstInput=function(){var b;b=this.adapter.unwrap(this.adapter.find(this.container,"input, textarea"));return b!=null?typeof b.focus==="function"?b.focus():void 0:void 0};a.prototype._followMousePosition=function(){if(!this.options.fixed){return a._observeMousePosition(this.bound.reposition)}};a.prototype._stopFollowingMousePosition=function(){if(!this.options.fixed){return a._stopObservingMousePosition(this.bound.reposition)}};a.prototype._clearShowTimeout=function(){return clearTimeout(this._showTimeoutId)};a.prototype._clearHideTimeout=function(){return clearTimeout(this._hideTimeoutId)};a.prototype._clearTimeouts=function(){clearTimeout(this._visibilityStateTimeoutId);this._clearShowTimeout();return this._clearHideTimeout()};a.prototype._triggerElementExists=function(){var b;b=this.adapter.unwrap(this.triggerElement);while(b.parentNode){if(b.parentNode.tagName==="BODY"){return true}b=b.parentNode}return false};a.prototype._loadAjax=function(){var b=this;if(this.loading){return}this.loaded=false;this.loading=true;this.adapter.addClass(this.container,this["class"].loading);this.setContent("");this.debug("Loading content from "+this.options.ajax);return this.adapter.ajax({url:this.options.ajax,method:this.options.ajaxMethod,onSuccess:function(c){b.debug("Loading successful.");b.adapter.removeClass(b.container,b["class"].loading);return b.setContent(c)},onError:function(c){var d;d=b.options.ajaxErrorMessage;b.debug(d,c);b.setContent(d);return b.adapter.addClass(b.container,b["class"].ajaxError)},onComplete:function(){b.adapter.removeClass(b.container,b["class"].loading);b.loading=false;b.loaded=true;b._searchAndActivateCloseButtons();b._activateFirstInput();return b.reposition()}})};a.prototype._ensureTriggerElement=function(){if(!this._triggerElementExists()){this.deactivate();return this._stopEnsureTriggerElement()}};a.prototype._ensureTriggerElementInterval=1000;a.prototype._startEnsureTriggerElement=function(){var b=this;return this._ensureTriggerElementTimeoutId=setInterval(function(){return b._ensureTriggerElement()},this._ensureTriggerElementInterval)};a.prototype._stopEnsureTriggerElement=function(){return clearInterval(this._ensureTriggerElementTimeoutId)};return a}();vendors=["khtml","ms","o","moz","webkit"];Opentip.prototype.setCss3Style=function(c,d){var h,e,g,b,a;c=this.adapter.unwrap(c);a=[];for(h in d){if(!__hasProp.call(d,h)){continue}e=d[h];if(c.style[h]!=null){a.push(c.style[h]=e)}else{a.push(function(){var l,j,k;k=[];for(l=0,j=vendors.length;l<j;l++){g=vendors[l];b=""+this.ucfirst(g)+this.ucfirst(h);if(c.style[b]!=null){k.push(c.style[b]=e)}else{k.push(void 0)}}return k}.call(this))}}return a};Opentip.prototype.defer=function(a){return setTimeout(a,0)};Opentip.prototype.setTimeout=function(a,b){return setTimeout(a,b?b*1000:0)};Opentip.prototype.ucfirst=function(a){if(a==null){return""}return a.charAt(0).toUpperCase()+a.slice(1)};Opentip.prototype.dasherize=function(a){return a.replace(/([A-Z])/g,function(b,c){return"-"+c.toLowerCase()})};mousePositionObservers=[];mousePosition={x:0,y:0};mouseMoved=function(g){var c,d,b,a;mousePosition=Opentip.adapter.mousePosition(g);a=[];for(d=0,b=mousePositionObservers.length;d<b;d++){c=mousePositionObservers[d];a.push(c())}return a};Opentip.followMousePosition=function(){return Opentip.adapter.observe(document.body,"mousemove",mouseMoved)};Opentip._observeMousePosition=function(a){return mousePositionObservers.push(a)};Opentip._stopObservingMousePosition=function(a){var b;return mousePositionObservers=function(){var e,d,c;c=[];for(e=0,d=mousePositionObservers.length;e<d;e++){b=mousePositionObservers[e];if(b!==a){c.push(b)}}return c}()};Opentip.Joint=function(){function a(b){if(b==null){return}if(b instanceof Opentip.Joint){b=b.toString()}this.set(b);this}a.prototype.set=function(b){b=b.toLowerCase();this.setHorizontal(b);this.setVertical(b);return this};a.prototype.setHorizontal=function(e){var g,j,k,h,d,c,b;j=["left","center","right"];for(k=0,d=j.length;k<d;k++){g=j[k];if(~e.indexOf(g)){this.horizontal=g.toLowerCase()}}if(this.horizontal==null){this.horizontal="center"}b=[];for(h=0,c=j.length;h<c;h++){g=j[h];b.push(this[g]=this.horizontal===g?g:void 0)}return b};a.prototype.setVertical=function(e){var g,j,k,h,d,c,b;j=["top","middle","bottom"];for(k=0,d=j.length;k<d;k++){g=j[k];if(~e.indexOf(g)){this.vertical=g.toLowerCase()}}if(this.vertical==null){this.vertical="middle"}b=[];for(h=0,c=j.length;h<c;h++){g=j[h];b.push(this[g]=this.vertical===g?g:void 0)}return b};a.prototype.eql=function(b){return b!=null&&this.horizontal===b.horizontal&&this.vertical===b.vertical};a.prototype.flip=function(){var b,c;c=Opentip.position[this.toString(true)];b=(c+4)%8;this.set(Opentip.positions[b]);return this};a.prototype.toString=function(d){var b,c;if(d==null){d=false}c=this.vertical==="middle"?"":this.vertical;b=this.horizontal==="center"?"":this.horizontal;if(c&&b){if(d){b=Opentip.prototype.ucfirst(b)}else{b=" "+b}}return""+c+b};return a}();Opentip.prototype._positionsEqual=function(a,b){return a!=null&&b!=null&&a.left===b.left&&a.top===b.top};Opentip.prototype._dimensionsEqual=function(b,a){return b!=null&&a!=null&&b.width===a.width&&b.height===a.height};Opentip.prototype.debug=function(){var a;a=1<=arguments.length?__slice.call(arguments,0):[];if(Opentip.debug&&(typeof console!=="undefined"&&console!==null?console.debug:void 0)!=null){a.unshift("#"+this.id+" |");return console.debug.apply(console,a)}};Opentip.findElements=function(){var j,g,e,a,h,l,c,k,d,b;j=Opentip.adapter;d=j.findAll(document.body,"[data-ot]");b=[];for(c=0,k=d.length;c<k;c++){e=d[c];l={};g=j.data(e,"ot");if(g===""||g==="true"||g==="yes"){g=j.attr(e,"title");j.attr(e,"title","")}g=g||"";for(a in Opentip.styles.standard){h=j.data(e,"ot"+Opentip.prototype.ucfirst(a));if(h!=null){if(h==="yes"||h==="true"||h==="on"){h=true}else{if(h==="no"||h==="false"||h==="off"){h=false}}l[a]=h}}b.push(new Opentip(e,g,l))}return b};Opentip.version="2.4.6";Opentip.debug=false;Opentip.lastId=0;Opentip.lastZIndex=100;Opentip.tips=[];Opentip._abortShowingGroup=function(h,g){var c,e,b,d,a;d=Opentip.tips;a=[];for(e=0,b=d.length;e<b;e++){c=d[e];if(c!==g&&c.options.group===h){a.push(c._abortShowing())}else{a.push(void 0)}}return a};Opentip._hideGroup=function(h,g){var c,e,b,d,a;d=Opentip.tips;a=[];for(e=0,b=d.length;e<b;e++){c=d[e];if(c!==g&&c.options.group===h){a.push(c.hide())}else{a.push(void 0)}}return a};Opentip.adapters={};Opentip.adapter=null;firstAdapter=true;Opentip.addAdapter=function(a){Opentip.adapters[a.name]=a;if(firstAdapter){Opentip.adapter=a;a.domReady(Opentip.findElements);a.domReady(Opentip.followMousePosition);return firstAdapter=false}};Opentip.positions=["top","topRight","right","bottomRight","bottom","bottomLeft","left","topLeft"];Opentip.position={};_ref=Opentip.positions;for(i=_i=0,_len=_ref.length;_i<_len;i=++_i){position=_ref[i];Opentip.position[position]=i}Opentip.styles={standard:{"extends":null,title:void 0,escapeTitle:true,escapeContent:false,className:"standard",stem:true,delay:null,hideDelay:0.1,fixed:false,showOn:"mouseover",hideTrigger:"trigger",hideTriggers:[],hideOn:null,removeElementsOnHide:false,offset:[0,0],containInViewport:true,autoOffset:true,showEffect:"appear",hideEffect:"fade",showEffectDuration:0.3,hideEffectDuration:0.2,stemLength:5,stemBase:8,tipJoint:"top left",target:null,targetJoint:null,cache:true,ajax:false,ajaxMethod:"GET",ajaxErrorMessage:"There was a problem downloading the content.",group:null,style:null,background:"#fff18f",backgroundGradientHorizontal:false,closeButtonOffset:[5,5],closeButtonRadius:7,closeButtonCrossSize:4,closeButtonCrossColor:"#d2c35b",closeButtonCrossLineWidth:1.5,closeButtonLinkOverscan:6,borderRadius:5,borderWidth:1,borderColor:"#f2e37b",shadow:true,shadowBlur:10,shadowOffset:[3,3],shadowColor:"rgba(0, 0, 0, 0.1)"},glass:{"extends":"standard",className:"glass",background:[[0,"rgba(252, 252, 252, 0.8)"],[0.5,"rgba(255, 255, 255, 0.8)"],[0.5,"rgba(250, 250, 250, 0.9)"],[1,"rgba(245, 245, 245, 0.9)"]],borderColor:"#eee",closeButtonCrossColor:"rgba(0, 0, 0, 0.2)",borderRadius:15,closeButtonRadius:10,closeButtonOffset:[8,8]},dark:{"extends":"standard",className:"dark",borderRadius:13,borderColor:"#444",closeButtonCrossColor:"rgba(240, 240, 240, 1)",shadowColor:"rgba(0, 0, 0, 0.3)",shadowOffset:[2,2],background:[[0,"rgba(30, 30, 30, 0.7)"],[0.5,"rgba(30, 30, 30, 0.8)"],[0.5,"rgba(10, 10, 10, 0.8)"],[1,"rgba(10, 10, 10, 0.9)"]]},alert:{"extends":"standard",className:"alert",borderRadius:1,borderColor:"#AE0D11",closeButtonCrossColor:"rgba(255, 255, 255, 1)",shadowColor:"rgba(0, 0, 0, 0.3)",shadowOffset:[2,2],background:[[0,"rgba(203, 15, 19, 0.7)"],[0.5,"rgba(203, 15, 19, 0.8)"],[0.5,"rgba(189, 14, 18, 0.8)"],[1,"rgba(179, 14, 17, 0.9)"]]}};Opentip.defaultStyle="standard";if(typeof module!=="undefined"&&module!==null){module.exports=Opentip}else{window.Opentip=Opentip}var Adapter,__hasProp={}.hasOwnProperty,__slice=[].slice;Adapter=function(){var a,b;function c(){}c.prototype.name="native";c.prototype.domReady=function(o){var s,m,e,q,j,d,p,l,k,h,g;e=false;k=true;h=window;m=document;if((g=m.readyState)==="complete"||g==="loaded"){return o()}l=m.documentElement;s=m.addEventListener?"addEventListener":"attachEvent";p=m.addEventListener?"removeEventListener":"detachEvent";d=m.addEventListener?"":"on";q=function(t){if(t.type==="readystatechange"&&m.readyState!=="complete"){return}(t.type==="load"?h:m)[p](d+t.type,q,false);if(!e){e=true;return o()}};j=function(){try{l.doScroll("left")}catch(t){setTimeout(j,50);return}return q("poll")};if(m.readyState!=="complete"){if(m.createEventObject&&l.doScroll){try{k=!h.frameElement}catch(n){}if(k){j()}}m[s](d+"DOMContentLoaded",q,false);m[s](d+"readystatechange",q,false);return h[s](d+"load",q,false)}};c.prototype.create=function(d){var e;e=document.createElement("div");e.innerHTML=d;return this.wrap(e.childNodes)};c.prototype.wrap=function(d){var e;if(!d){d=[]}else{if(typeof d==="string"){d=this.find(document.body,d);d=d?[d]:[]}else{if(d instanceof NodeList){d=function(){var j,h,g;g=[];for(j=0,h=d.length;j<h;j++){e=d[j];g.push(e)}return g}()}else{if(!(d instanceof Array)){d=[d]}}}}return d};c.prototype.unwrap=function(d){return this.wrap(d)[0]};c.prototype.tagName=function(d){return this.unwrap(d).tagName};c.prototype.attr=function(e,d,g){if(arguments.length===3){return this.unwrap(e).setAttribute(d,g)}else{return this.unwrap(e).getAttribute(d)}};b=0;a={};c.prototype.data=function(g,e,h){var d;d=this.attr(g,"data-id");if(!d){d=++b;this.attr(g,"data-id",d);a[d]={}}if(arguments.length===3){return a[d][e]=h}else{h=a[d][e];if(h!=null){return h}h=this.attr(g,"data-"+Opentip.prototype.dasherize(e));if(h){a[d][e]=h}return h}};c.prototype.find=function(e,d){return this.unwrap(e).querySelector(d)};c.prototype.findAll=function(e,d){return this.unwrap(e).querySelectorAll(d)};c.prototype.update=function(d,g,e){d=this.unwrap(d);if(e){d.innerHTML="";return d.appendChild(document.createTextNode(g))}else{return d.innerHTML=g}};c.prototype.append=function(e,h){var d,g;d=this.unwrap(h);g=this.unwrap(e);return g.appendChild(d)};c.prototype.remove=function(e){var d;e=this.unwrap(e);d=e.parentNode;if(d!=null){return d.removeChild(e)}};c.prototype.addClass=function(d,e){return this.unwrap(d).classList.add(e)};c.prototype.removeClass=function(d,e){return this.unwrap(d).classList.remove(e)};c.prototype.css=function(h,g){var e,j,d;h=this.unwrap(this.wrap(h));d=[];for(e in g){if(!__hasProp.call(g,e)){continue}j=g[e];d.push(h.style[e]=j)}return d};c.prototype.dimensions=function(e){var g,d;e=this.unwrap(this.wrap(e));g={width:e.offsetWidth,height:e.offsetHeight};if(!(g.width&&g.height)){d={position:e.style.position||"",visibility:e.style.visibility||"",display:e.style.display||""};this.css(e,{position:"absolute",visibility:"hidden",display:"block"});g={width:e.offsetWidth,height:e.offsetHeight};this.css(e,d)}return g};c.prototype.scrollOffset=function(){return[window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop]};c.prototype.viewportDimensions=function(){return{width:document.documentElement.clientWidth,height:document.documentElement.clientHeight}};c.prototype.mousePosition=function(d){var g;g={x:0,y:0};if(d==null){d=window.event}if(d==null){return}try{if(d.pageX||d.pageY){g.x=d.pageX;g.y=d.pageY}else{if(d.clientX||d.clientY){g.x=d.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;g.y=d.clientY+document.body.scrollTop+document.documentElement.scrollTop}}}catch(d){}return g};c.prototype.offset=function(d){var e;d=this.unwrap(d);e={top:d.offsetTop,left:d.offsetLeft};while(d=d.offsetParent){e.top+=d.offsetTop;e.left+=d.offsetLeft;if(d!==document.body){e.top-=d.scrollTop;e.left-=d.scrollLeft}}return e};c.prototype.observe=function(g,e,d){return this.unwrap(g).addEventListener(e,d,false)};c.prototype.stopObserving=function(g,e,d){return this.unwrap(g).removeEventListener(e,d,false)};c.prototype.ajax=function(g){var h,j,d;if(g.url==null){throw new Error("No url provided")}if(window.XMLHttpRequest){h=new XMLHttpRequest}else{if(window.ActiveXObject){try{h=new ActiveXObject("Msxml2.XMLHTTP")}catch(k){try{h=new ActiveXObject("Microsoft.XMLHTTP")}catch(k){}}}}if(!h){throw new Error("Can't create XMLHttpRequest")}h.onreadystatechange=function(){if(h.readyState===4){try{if(h.status===200){if(typeof g.onSuccess==="function"){g.onSuccess(h.responseText)}}else{if(typeof g.onError==="function"){g.onError("Server responded with status "+h.status)}}}catch(l){if(typeof g.onError==="function"){g.onError(l.message)}}return typeof g.onComplete==="function"?g.onComplete():void 0}};h.open((j=(d=g.method)!=null?d.toUpperCase():void 0)!=null?j:"GET",g.url);return h.send()};c.prototype.clone=function(d){var g,e,h;e={};for(g in d){if(!__hasProp.call(d,g)){continue}h=d[g];e[g]=h}return e};c.prototype.extend=function(){var g,j,e,k,l,h,d;k=arguments[0],e=2<=arguments.length?__slice.call(arguments,1):[];for(h=0,d=e.length;h<d;h++){j=e[h];for(g in j){if(!__hasProp.call(j,g)){continue}l=j[g];k[g]=l}}return k};return c}();Opentip.addAdapter(new Adapter);if(typeof document!=="undefined"&&!("classList" in document.createElement("a"))){(function(l){if(!("HTMLElement" in l)&&!("Element" in l)){return}var a="classList",g="prototype",o=(l.HTMLElement||l.Element)[g],b=Object,m=String[g].trim||function(){return this.replace(/^\s+|\s+$/g,"")},c=Array[g].indexOf||function(t){var s=0,q=this.length;for(;s<q;s++){if(s in this&&this[s]===t){return s}}return -1},p=function(q,s){this.name=q;this.code=DOMException[q];this.message=s},h=function(s,q){if(q===""){throw new p("SYNTAX_ERR","An invalid or illegal string was specified")}if(/\s/.test(q)){throw new p("INVALID_CHARACTER_ERR","String contains an invalid character")}return c.call(s,q)},d=function(w){var u=m.call(w.className),t=u?u.split(/\s+/):[],s=0,q=t.length;for(;s<q;s++){this.push(t[s])}this._updateClassName=function(){w.className=this.toString()}},e=d[g]=[],k=function(){return new d(this)};p[g]=Error[g];e.item=function(q){return this[q]||null};e.contains=function(q){q+="";return h(this,q)!==-1};e.add=function(){var w=arguments,u=0,s=w.length,t,q=false;do{t=w[u]+"";if(h(this,t)===-1){this.push(t);q=true}}while(++u<s);if(q){this._updateClassName()}};e.remove=function(){var x=arguments,w=0,s=x.length,u,q=false;do{u=x[w]+"";var t=h(this,u);if(t!==-1){this.splice(t,1);q=true}}while(++w<s);if(q){this._updateClassName()}};e.toggle=function(s,t){s+="";var q=this.contains(s),u=q?t!==true&&"remove":t!==false&&"add";if(u){this[u](s)}return q};e.toString=function(){return this.join(" ")};if(b.defineProperty){var n={get:k,enumerable:true,configurable:true};try{b.defineProperty(o,a,n)}catch(j){if(j.number===-2146823252){n.enumerable=false;b.defineProperty(o,a,n)}}}else{if(b[g].__defineGetter__){o.__defineGetter__(a,k)}}})(self)}!window.addEventListener&&function(b,e,g,d,c,h,a){b[d]=e[d]=g[d]=function(j,k){var l=this;a.unshift([l,j,k,function(m){m.currentTarget=l;m.preventDefault=function(){m.returnValue=false};m.stopPropagation=function(){m.cancelBubble=true};m.target=m.srcElement||l;k.call(l,m)}]);this.attachEvent("on"+j,a[0][3])};b[c]=e[c]=g[c]=function(l,m){for(var j=0,k;k=a[j];++j){if(k[0]==this&&k[1]==l&&k[2]==m){return this.detachEvent("on"+l,a.splice(j,1)[0][3])}}};b[h]=e[h]=g[h]=function(j){return this.fireEvent("on"+j.type,j)}}(Window.prototype,HTMLDocument.prototype,Element.prototype,"addEventListener","removeEventListener","dispatchEvent",[]);Ext.define("FT.tip.QuickOpentip",{constructor:function(){this._configureOpentip();this.targets={};Ext.getBody().on("mousemove",this._onBodyMouseMove,this)},_configureOpentip:function(){Opentip.styles.ft={removeElementsOnHide:true,background:"#ffffff",borderColor:"#cecece",borderRadius:2,tipJoint:"bottom",showEffectDuration:0.2,hideEffectDuration:0.1,target:true};Opentip.styles.ftNotification={"extends":"ft",background:"#ffffcb",borderColor:"#F2F2C1",showEffectDuration:0.5,hideEffectDuration:1,showOn:null};Opentip.lastZIndex=21000;Opentip.defaultStyle="ft"},_onBodyMouseMove:function(c){var g=c.getTarget("[data-qtip]");if(g){var a=Ext.id(g);if(this.targets[a]){return}var b=g.getAttribute("data-qtip");var e=g.getAttribute("data-qtitle")||undefined;var d=new Opentip(g,b,e);d.prepareToShow();this.targets[a]=d}},_getTipJointFromAlign:function(b){var a={left:"right",right:"left",top:"bottom",bottom:"top"};return a[b]||null},_translateCfg:function(a){if(a.align){tipJoint=this._getTipJointFromAlign(a.align);if(tipJoint){a.tipJoint=tipJoint}}return a},register:function(a){var h=Ext.fly(a.target),b=h.dom,c=a.text,g=a.title||h&&h.title||undefined;var e=Ext.apply(a||{},{target:b});e=this._translateCfg(e);var d=new Opentip(b,c,g,e)},cancelShow:Ext.emptyFn,unregister:Ext.emptyFn,enable:Ext.emptyFn,disable:Ext.emptyFn});Ext.define("FT.SettingsManager",{extend:"Ext.util.Observable",constructor:function(a){this.initConfig(a);this.settingsStore=Ext.create("Ext.data.Store",{fields:["group","name","value"],proxy:{type:"batch",extraParams:{method:"getAllSettings",tzOffset:FT.getUserTimezoneOffset()},url:Ext.String.format("/{0}/get",FT.app.batchController)}})},get:function(c,a){var b=this.settingsStore.findBy(function(d){if(d.get("group")==c&&d.get("name")==a){return true}},this);if(b>=0){return this.settingsStore.getAt(b).get("value")}else{throw"Settings not found exception "+c+" "+a;return undefined}},asBool:function(){var a=this.get.apply(this,arguments);if(Ext.isString(a)){return a=="1"}return a}});Ext.define("FT.ShortcutsManager",{extend:"Ext.util.Observable",constructor:function(a){this.shortcuts=[];this.initConfig(a)},add:function(a){this.shortcuts.push(a)},get:function(a){var b=[];Ext.each(this.shortcuts,function(c){if(Ext.isDefined(c.shortcutScope)&&c.shortcutScope.indexOf(a)!=-1){if(this.isAuth(c)){b.push(c)}}},this);return b},isAuth:function(a){return true;if(!Ext.isDefined(a.permission)){return true}log(a);if(a.permission.indexOf("administrator")!=-1&&FT.util.isAdministrator()){return true}if(a.permission.indexOf("manager")!=-1&&FT.util.isManager()){return true}return false}});FT.Shortcuts=Ext.create("FT.ShortcutsManager",{});Ext.define("FT.plugin._Manager",{registerMenuFn:function(a){if(!Ext.isDefined(this.menuFns)){this.menuFns=[]}Ext.Array.push(this.menuFns,a)},getMenus:function(a){var b=[];if(Ext.isDefined(this.menuFns)){Ext.Array.each(this.menuFns,function(g,d,e){var c=g(a);if(c){b.push(c)}},this)}return b}},function(){FT.plugin.Manager=Ext.create("FT.plugin._Manager")});Ext.define("FT.core.MessageBar",{extend:"Ext.toolbar.Toolbar",closable:true,centerContent:false,padding:"0 10",text:"",layout:{type:"hbox",align:"middle"},initComponent:function(){this.textLabel=Ext.create("Ext.Component",{text:this.text});this.glyphIcon=Ext.create("Ext.Component",{width:20,cls:"icon--inline"});this.items=[];if(this.centerContent){this.items.push("->")}this.items.push(this.glyphIcon,this.textLabel);this.items.push("->");if(this.closable){this.items.push({xtype:"tool",type:"close",scope:this,handler:function(){this.hide()}})}this.callParent(arguments)},setCenterContent:function(a){this.centerContent=a;var b=this.items.getAt(0);if(this.centerContent&&b.xtype!=="tbfill"){this.insert(0,"->")}else{if(!this.centerContent&&b.xtype==="tbfill"){this.remove(b)}}},setGlyph:function(a){this.glyphIcon.update(FT.glyphIcon(a))},setText:function(a){this.text=a?a:this.text;this.textLabel.update(this.text);if(this.text.length&&!this.isVisible()){this.show()}},setLevel:function(c){var b={high:"background-danger text-white",info:"background-alternative text-white",low:"background-edit"};var a=b[c];this.removeCls(["background-danger","background-edit","background-alternative","text-white"]);if(a){this.addCls(a)}}});Ext.define("FT.core.DashboardMenu",{cls:"dashboardmenu",extend:"Ext.view.View",overItemCls:"dashboardmenu__item-over",trackOver:true,itemSelector:"div.dashboardmenu__item",dashboardManager:null,preserveScrollOnRefresh:true,module:null,floating:false,activeItem:0,showSeparator:false,selModel:{mode:"SINGLE",allowDeselect:false},overflowY:"auto",vertical:true,initComponent:function(){var a=this;this.cls=this.cls||"";if(this.vertical){this.cls+=" dashboardmenu--vertical"}else{this.cls+=" dashboardmenu--horizontal"}this.tpl=new Ext.XTemplate('<tpl for=".">','<div class="{[this.getItemCls(values)]}">',"{menuTitle}","</div>","</tpl>",{getItemCls:function(c){var b="dashboardmenu__item";if(this.isHeader(c)){b+=" dashboardmenu__item--header"}else{b+=" dashboardmenu__item--selectable"}return b},isHeader:function(b){return b.groupField},getId:function(b){return b.toLowerCase().replace(" ","")}});this.on({itemclick:this.onItemClick,afterrender:this.onAfterRender,beforecontainerclick:function(){return false},selectionchange:this.onSelectionChange,scope:this});Ext.define("DashboardMenu",{extend:"Ext.data.Model",fields:["menuTitle","name","entityType","groupField"]});this.store=Ext.create("Ext.data.Store",{model:"DashboardMenu",proxy:{type:"memory"},listeners:{datachanged:function(){a.fireEvent("viewready",a)}}});this.callParent()},listeners:{itemclick:function(b,a,d,c){Ext.Function.defer(function(){var e={view:a.get("name")};if(a.get("entityId")!=null){e.entityId=a.get("entityId")}FT.app.open(null,e)},5,this)},beforeitemclick:function(b,a,d,c){return a.get("groupField")==null},viewready:function(a){if(a.rendered){var c=a.dashboardManager.getCurrentDashboardId(),b=a.store.findRecord("name",c);if(c){a.setMenuIcon(a,[b])}}},scope:this},onSelectionChange:function(a,b){a=a.view;if(a.rendered){this.resetMenuIcons(a);this.setMenuIcon(a,b)}},resetMenuIcons:function(b){var c=Ext.select(".item",true,b.getEl().dom),a,d;c.each(function(g,h,e){a=g.first();if(a!=null){d=a.getStyle("backgroundPosition").substr(a.getStyle("backgroundPosition").indexOf(" ")+1);if(d!=""){a.setStyle("backgroundPosition","0px "+d)}}})},getIconYPos:function(c){var a=c.get("menuIcon")||c.get("menuTitle").toLowerCase().replace(" ","");var b=FT.getIconIds()[a];if(b){return b.y}return undefined},setMenuIcon:function(c,g){g=g[0];if(Ext.isDefined(g)){var d=Ext.select(".item",true,c.getEl().dom),b=g.get("menuTitle"),h,a,e;d.each(function(k,l,j){h=k.getAttribute("innerText")||k.getAttribute("textContent");if(h==b){a=k.first();if(a!=null){e=this.getIconYPos(g);if(e){a.setStyle("backgroundPosition","16px "+e)}return false}}},this)}},onAfterRender:function(){var a=this.dashboardManager.getCurrentDashboardId();this.select(this.store.find("name",a))},updateMenu:function(a){this.entity=a;if(!Ext.isDefined(a.entityId)||this.lastEntity!=a.entityId){this.internalUpdateMenu(a)}else{this.setSelection()}this.lastEntity=a.entityId},setSelection:function(){var b=this.dashboardManager.getCurrentDashboardId();var a=this.store.find("name",b);if(a!=-1){this.select(a)}else{this.getSelectionModel().deselectAll()}},internalUpdateMenu:function(b){var a=[];var d=null,c;Ext.each(this.dashboardManager.getDashboards(b),function(g,e,h){if(this.groupMenuItems&&g.groupField&&(e==0||h[e-1].groupField!=g.groupField)){a.push({menuIcon:g.menuIcon,menuTitle:g.groupField,groupField:g.groupField})}c=false;if(!g.groupField&&Ext.isString(d)){c=true}d=g.groupField;a.push({menuTitle:g.menuTitle,menuIcon:g.menuIcon,name:g.name,groupField:null,entityId:g.entityId,breakAfter:c})},this);this.store.getProxy().data=a;this.store.load();if(this.rendered){this.refresh();this.setSelection()}}});Ext.define("FT.core.DashboardMenuProjects",{extend:"Ext.container.Container",height:60,initComponent:function(){var a=[];this.menus=[];a.push(this.createMenu(FT.i18n("Tasks"),["tasks"]));a.push(this.createMenu(FT.i18n("Versions"),["versions_v1"]));a.push(this.createDropdownMenu(FT.i18n("Team planner"),["teamplanner_v1","people_view_v1"]));a.push(this.createDashboardMenu(FT.i18n("Dashboards"),[]));a.push("->");a.push(this.createSidebarMenu());this.mainToolbar=Ext.create("Ext.toolbar.Toolbar",{items:a,cls:"background-default border-bottom toolbar-dashboard toolbar-dashboard-arrows",height:60,padding:0,defaults:{margin:"0 10"},defaultButtonUI:"toggle-toolbar",enableOverflow:true});this.secondaryToolbar=Ext.create("Ext.toolbar.Toolbar",{items:[],cls:"dashboardmenu__secondary border-bottom",height:36,padding:"0 10",defaultButtonUI:"plain-toolbar",hidden:true,enableOverflow:true});this.items=[this.mainToolbar,this.secondaryToolbar];this.callParent();FT.T=this},updateSecondary:function(a){if(a.isDashboard){this.setHeight(96);this.secondaryToolbar.show();this.secondaryToolbar.items.each(function(b){b.removeCls("dashboard-menu-item-active");if(b.name==a.name){b.addCls("dashboard-menu-item-active")}},this)}else{if(this.secondaryToolbar.isVisible()){this.secondaryToolbar.hide();this.setHeight(60)}}},createSidebarMenu:function(){this._sideBar=Ext.create("Ext.button.Button",{tourId:"sidebar-toggle",scale:"large",ui:"plain",margin:"0 10",glyph:FT.glyph("menu"),iconAlign:"right",scope:this,tourId:"toggle-sidebar",handler:function(){var a=Ext.clone(this.entity);FT.action.fn.openSlideIn(a)}});return this._sideBar},updateSideBarText:function(a){var b="Show sidebar";if(a&&a.length>0){b=a[a.length-1].name}this._sideBar.setText(b)},createDashboardMenu:function(b){var c=this,a;a=new Ext.menu.Menu({items:[]});var d=Ext.create("Ext.button.Button",{text:b,scale:"medium",menu:a,acceptAll:true,tourId:b,getCustom:function(){return[{tooltip:FT.i18n("Create dashboard"),overflowText:FT.i18n("Create dashboard"),ui:"default",cls:"dashboardmenu__add-button",glyph:FT.glyph("add"),padding:0,handler:function(){Ext.create("FT.dashboard.DashboardCreator",{})},scope:this}]}});this.menus.push(d);return d},createDropdownMenu:function(c,b){var a=new Ext.menu.Menu({items:[]});var d=Ext.create("Ext.button.Button",{text:c,scale:"medium",validDashboards:b,menu:a});this.menus.push(d);return d},createSplitMenu:function(c,b){var a;a=new Ext.menu.Menu({items:[]});var d=Ext.create("Ext.button.Split",{text:c,scale:"medium",validDashboards:b,name:b[0],handler:function(e){FT.app.open(null,{view:e.name})},menu:a});this.menus.push(d);return d},createMenu:function(b,a){var c=this,d;d=Ext.create("Ext.button.Button",{text:b,scale:"medium",validDashboards:a,tourId:b,handler:function(e){FT.app.open(null,{view:a[0]})}});c.menus.push(d);return d},isDashboardEditable:function(){var a=this.dashboardManager.getCurrentDashboard();return a.isEditable},onSelectionChange:function(a,b){return;a=a.view;if(a.rendered){this.resetMenuIcons(a);this.setMenuIcon(a,b)}},onAfterRender:function(){var a=this.dashboardManager.getCurrentDashboardId();this.select(this.store.find("name",a))},updateMenu:function(a){this.entity=a;Ext.suspendLayouts();if(!Ext.isDefined(a.entityId)||this.lastEntity!=a.entityId){this.internalUpdateMenu(a)}this.setSelection();this.updateSideBarText(FT.app.location._location);var b=this.dashboardManager.getCurrentDashboard();if(b.hideMenu===true){this.hide()}else{if(this.isVisible()===false){this.show()}}Ext.resumeLayouts();this.lastEntity=a.entityId},setSelection:function(){var c=this.dashboardManager.getCurrentDashboardId(),a=this.dashboardManager.getCurrentDashboard();Ext.each(this.menus,function(d){d.removeCls("dashboard-menu-item-active");d.toggle(false,false)},this);var b=this.findMenu(c);b.addCls("dashboard-menu-item-active");b.toggle(true,false);this.updateSecondary(a)},findMenu:function(a){for(var b=0;b<this.menus.length;b++){var c=this.menus[b];if(c.validDashboards&&c.validDashboards.indexOf(a)!=-1){return c}if(c.acceptAll){return c}}return null},_getEditDashboardMenu:function(a){var b=Ext.create("Ext.menu.Menu",{items:[{text:FT.i18n("Edit"),scope:this,handler:function(c){this._editDashboard(a)}},{text:FT.i18n("Delete"),scope:this,handler:function(){this._confirmDeleteDashboard(a)}}]});return b},_editDashboard:function(a){var b=FT.app.getActiveModule();b.editDashboard(a)},_reloadDashboards:function(){var a=FT.app.getActiveModule();a.reloadDashboards(function(){a.internalUpdateMenu();a.updateDashboard()})},_deleteDashboard:function(a){var b=a.name;Ext.Ajax.request({url:"/widget/deleteDashboard",params:{dashboardid:b},success:this._reloadDashboards,scope:this})},_confirmDeleteDashboard:function(b){var c='<em>"'+b.menuTitle+'"</em>';var d=FT.i18n("Are you sure you want to delete the dashboard {dashboardName}?",{values:{dashboardName:c}});var a=Ext.create("FT.window.CancelSave",{title:FT.i18n("Delete dashboard"),message:d,saveAction:"delete",saveText:FT.i18n("Delete"),saveHandler:function(){a.close();this._deleteDashboard(b)},cancelHandler:function(){a.close()},scope:this})},internalUpdateMenu:function(c){Ext.each(this.menus,function(d){if(d.menu){d.menu.removeAll(true)}},this);this.secondaryToolbar.removeAll(true);var a=[];var b=[];Ext.each(this.dashboardManager.getDashboards(c),function(g,e,j){var h={text:g.menuTitle,name:g.name,handler:function(n){FT.app.open(null,{view:n.name})}};var l=this.findMenu(g.name);if(l&&l.menu){if(l.acceptAll!==true){l.menu.add(h)}else{if(l.acceptAll&&g.isDashboard===true){l.menu.add(h);var m,k;if(g.isEditable){m="splitbutton";k=this._getEditDashboardMenu(g)}else{m="button";k=null}var d={xtype:m,menu:k,cls:"secondary-dashboard-menu",text:g.menuTitle,name:g.name,scope:this,handler:function(n){FT.app.open(null,{view:g.name})}};this.secondaryToolbar.add(d)}else{}}}},this);Ext.each(this.menus,function(e){if(e.getCustom){if(e.menu.items.getCount()>0){e.menu.add({xtype:"menuseparator"})}var d=e.getCustom()[0];d.text=FT.i18n("Create dashboard");d.glyph=null;d.cls=null;e.menu.add(d);this.secondaryToolbar.add(e.getCustom()[0])}},this)}});Ext.define("FT.util.AjaxBatch",{mixins:{observable:"Ext.util.Observable"},requestsOut:0,constructor:function(a){this.initConfig(a);this.addEvents(["allrequestsdone","requestdone"]);this.mixins.observable.constructor.call(this)},request:function(a){Ext.each(a,function(d,b,c){this.requestsOut+=1;d.success=Ext.Function.createSequence(d.success,function(){this.requestsOut-=1;this.fireEvent("requestdone",this.requestsOut)},this);Ext.Ajax.request(d)},this);if(this.requestsOut==0){this.fireEvent("allrequestsdone")}else{this.on("requestdone",function(b){if(this.requestsOut==0){this.fireEvent("allrequestsdone")}},this)}}});Ext.define("FT.util.StoreBatch",{mixins:{observable:"Ext.util.Observable"},requestsOut:0,cntr:0,constructor:function(a){this.initConfig(a);this.addEvents(["allstoresloaded","storeloaded"]);this.mixins.observable.constructor.call(this)},load:function(a){Ext.each(a,function(c,b,d){c.on({scope:this,load:this.onStoreLoad});this.cntr+=1;c.load()},this)},onStoreLoad:function(a){this.cntr-=1;this.fireEvent("storeloaded",a);if(this.cntr==0){this.fireEvent("allstoresloaded")}}});Ext.define("FT.util.BatchStrategy",{extend:"Ext.util.Observable",requestsOut:0,cntr:0,constructor:function(a){this.initConfig(a);this.storeRegister={};this.addEvents(["allstoresloaded"]);this.batchLoadTask=new Ext.util.DelayedTask(this.doBatchLoad,this);this.cleanWaitingStores()},register:function(a){a=Ext.isArray(a)?a:[a];Ext.each(a,function(c,b,d){c.storeId=Ext.isDefined(c.storeId)?c.storeId:"batch-"+Ext.id();c.on("beforeload",this.onBeforeLoad,this);this.storeRegister[c.storeId]=c},this)},onBeforeLoad:function(b,a){this.addWaitingStore(b);this.batchLoadTask.delay(15);return false},doBatchLoad:function(){log("now i will load all - batched");var a=[];Ext.each(this.getWaitingStores(),function(c,b,d){var e={params:c.getProxy().extraParams,storeId:c.storeId};if(!Ext.isDefined(e.params.method)){throw"method not specified in store params: "+c.storeId}a.push(e)},this);Ext.Ajax.request({url:"/batch/get",params:{data:Ext.encode(a)},success:function(b){var c=Ext.decode(b.responseText);Ext.iterate(c,function(e,j){var h=this.getWaitingStore(e);var d=h.getProxy().getReader();var g=d.readRecords(j);h.loadData(g.records)},this);this.cleanWaitingStores();this.fireEvent("allstoresloaded")},scope:this})},addWaitingStore:function(a){this.waitingStores[a.storeId]=a},getWaitingStore:function(a){return this.waitingStores[a]},getWaitingStores:function(){return Ext.Object.getValues(this.waitingStores)},cleanWaitingStores:function(){this.waitingStores={}}});Ext.define("FT.util.DashboardManager",{extend:"Ext.container.Container",region:"center",items:[],layout:"fit",useLoadmask:true,widgetCls:"ft-basewidget",emptyText:"",autoloadDashboard:true,initComponent:function(a){this.currentDashboardId=null;this.currentDashboard=null;this.dashboards=[];this.callParent()},invalidateDashboards:function(){var a=FT.app.getActiveModule();Ext.each(this.dashboards,function(b){if(b.isCreated){b.isInvalid=true}});if(a&&a.dashboardManager==this){this.currentDashboard.reloadIf(this.currentDashboard.instanceid,this.entity)}},createLoadmask:function(){var a=this;if(!this.useLoadmask){return}if(Ext.isDefined(this.loadMask)){this.loadMask.show()}else{this.on("render",function(){this.loadMask=Ext.create("Ext.LoadMask",{target:this,autoShow:true,floating:{shadow:false}})},this)}},loadDashboards:function(a,b){this.dashboardData=b;Ext.each(this.dashboardData.dashboards,function(g){try{var k=g.instanceid,c="",d="folder.png";var l=Ext.decode(g.dashboard[0].cfg);foundTitle=l.title;foundIcon=l.icon;foundCls=l.cls,foundUi=l.ui,override_layout=l.override_layout||undefined;if(Ext.isDefined(foundTitle)){k=foundTitle}if(Ext.isDefined(foundIcon)){d=foundIcon}if(Ext.isDefined(foundCls)){c=foundCls}var j={menuTitle:k,menuIcon:g.menuIcon,groupField:g.groupField,isCreated:false,cls:c,name:g.instanceid,isEditable:Ext.isDefined(g.isEditable)?g.isEditable:false,globalConfig:{isEditor:false,entity:a.entity,app:a.app,module:a,widgetCls:this.widgetCls},ui:foundUi,region:"center",isWidget:false,instanceData:g.dashboard,hideMenu:g.hideMenu===true,isDashboard:g.isDashboard===true,loadMask:g.loadMask,isStateless:g.stateless};if(Ext.isDefined(l.dashboardCls)){j.addCls(l.dashboardCls)}if(override_layout){j.layout=override_layout}this.dashboards.push(j)}catch(h){log("ERROR LOADING DASHBOARD: "+g.instanceid);log(h)}},this)},getTitleFromName:function(c){var d=this.dashboards.length,a=0,b=null;for(;a<d;a++){b=this.dashboards[a].name==c?this.dashboards[a].menuTitle:b}return b},setDashboard:function(a){this.getLayout().setActiveItem(a)},getViewFromFullView:function(a){if(Ext.isString(a)){return a}return a.dashboard},getNameFromFullView:function(a){assert(a);if(Ext.isString(a)){return a}return a.name},getFullView:function(a,c){var b=this.getDashboardKeys(c);for(var d=0;d<b.length;d++){var e=b[d];if(this.getNameFromFullView(e)==a){return e}}return b[0]},getDashboard:function(d,k,a){if(!Ext.isDefined(a)){a=false}if(!this.dashboards.length){return{html:FT.i18n("no dashboards")}}if(this.autoloadDashboard===false&&!Ext.isDefined(k)){this.currentDashboardId=null;this.currentDashboard=null;return Ext.create("Ext.Component",{html:Ext.String.format('<h2 class="messagewindow__message text-faded">{0}</h2>',this.emptyText)})}var l=this.getFullView(k,d);assert(Ext.isDefined(l),"A view must be defined");var h=this.getNameFromFullView(l);k=this.getViewFromFullView(l);var c=null;var j=false;for(var e=0;e<this.dashboards.length;e++){if(this.dashboards[e].name==k){if(!this.dashboards[e].isCreated){this.dashboards[e].isCreated=true;this.dashboards[e].globalConfig.entity=Ext.clone(d);var b=this.dashboards[e].instanceData[0].classname;var g=this.dashboards[e].instanceData[0].instanceid;this.dashboards[e].instanceData=this.dashboards[e].instanceData[0].widgets;this.dashboards[e].instanceid=g;this.dashboards[e]=Ext.widget(b,this.dashboards[e]);j=true}c=this.dashboards[e]}}if(c==null){return{html:FT.i18n("no view")}}c.reloadIf(c.instanceid,d);this.currentDashboardId=h;this.currentDashboard=c;return c},getCurrentDashboardId:function(){return this.currentDashboardId},getCurrentDashboard:function(){return this.currentDashboard;var a=this.getCurrentDashboardId();var b=null;Ext.each(this.dashboards,function(c){if(a==c.name){b=c}},this);return b},getAvailableFilters:function(){var b=Ext.data.StoreManager.lookup("FT.store.Resources");var d;var c=[];var e=[];var a=[];b.each(function(g){if(g.get("resource_type")=="user"){e.push([g.get("id"),g.get("firstname")+" "+g.get("lastname")])}else{if(g.get("resource_type")=="group"&&!g.get("local")){a.push([g.get("id"),g.get("name")])}}});d=[{config:{options:e},label:FT.i18n("Users"),type:"list",field:"User.userid"},{label:FT.i18n("Project status"),type:"list",field:"Show.status",config:{options:[["active",FT.i18n("Active")],["hidden",FT.i18n("Hidden")]]}},{config:{displayField:"fullname",valueField:"showid",store:Ext.create("FT.data.DirectActiveProjects")},label:FT.i18n("Projects"),type:"list",field:"Show.id"},{config:{mode:["PAST"]},label:FT.i18n("Time range"),type:"date",field:"Timelog.local_start"},{config:{options:a},label:FT.i18n("Groups"),type:"list",field:"Group.id"},{label:FT.i18n("Task due date"),type:"date",field:"Task.enddate"},{label:FT.i18n("Task type"),type:"list",field:"Task.typeid",config:{store:FT.util.copyStore("FT.store.TaskType"),displayField:"name",valueField:"typeid"}},{label:FT.i18n("Task schedule"),type:"date",field:"Task.schedule"}];return d},getFilterPanel:function(c){var d=this.getAvailableFilters();var b=[];var a;Ext.each(d,function(e){if(c.indexOf(e.field)!==-1){b.push({field:e.field});if(e.config&&e.config.store){e.config.store.load()}}});b.sort(function(g,e){return c.indexOf(g.field)-c.indexOf(e.field)});a=Ext.create("FT.newfilters.AvailableStore");a.getProxy().data=d;a.load();filterPanel=Ext.create("FT.newfilters.FilterPanel",{region:"east",width:250,collapsible:true,animCollapse:false,cls:"border-left",collapseMode:"mini",collapsed:false,header:false,hideCollapseTool:true,defaultFilters:b,availableStore:a,enableFilterControls:false,overflowY:"auto",resizable:true,tools:["->",{xtype:"ft-configure-filter-tool"}]});filterPanel.on("filterschanged",this.onFiltersChanged,this);return filterPanel},onFiltersChanged:function(c){var a=this.getCurrentDashboard();var b=a.getDashboardWidgets();Ext.Object.each(b,function(d,e){e._updateFilters(c)})},getDashboardKeys:function(c){var g,a=FT.app.getObjectType(),e;if(c.entityType=="task"){var a=FT.app.getObjectType();if(c.objectType){a=c.objectType}e="task_"+a}else{e=c.entityType}var b=null;var d=[];Ext.each(this.dashboardData.parents,function(h){if(e==h.entityType){b=h.dashboards}if(h.entityType=="all"){d=h.dashboards}},this);if(b!=null){return b}return d},getDashboardData:function(b,a){var c={menuTitle:a.menuTitle,groupField:a.groupField,menuIcon:a.menuIcon,name:a.name,entityId:null,isEditable:a.isEditable,isDashboard:a.isDashboard};if(Ext.isObject(b)){Ext.apply(c,b)}return c},getDashboards:function(b){var c=[];var a=this.getDashboardKeys(b);Ext.each(a,function(d){var e=this.getViewFromFullView(d);Ext.each(this.dashboards,function(g){if(e==g.name){c.push(this.getDashboardData(d,g))}},this)},this);return c},updateDashboard:function(c,b,d){this.entity=Ext.clone(c);this.view=b;var a=this.getDashboard(c,b,d),e=Ext.isDefined(a.inheritLayout)&&a.inheritLayout=="fit"&&a.rendered;if(a.loadMask!==false&&!e){this.createLoadmask()}this._showDashboard(a,b);return a},_showDashboard:function(b,a){Ext.Function.defer(function(){if(this.loadMask){this.loadMask.hide()}Ext.batchLayouts(function(){if(!b.isVisible()){this.items.each(function(c){c.hide()});b.show()}if(this.items.indexOf(b)==-1){this.add(b)}},this);b.fireEvent("delayedPush");this.fireEvent("afterdashboardupdate",a);FT.tour.Tour.startDashboardTour(this.currentDashboardId)},10,this)},getDashboardConfig:function(b){var a;Ext.each(this.dashboards,function(c,d,e){if(c.name===b){a=c;return false}});return a},handleDelayedPush:function(){this.items.each(function(a){a.fireEvent("delayedPush")},this)},allowModuleChange:function(){var a=this.getCurrentDashboard();if(!a){return true}var c=a.getEventHandler().getWidgets();for(var b=0;b<c.length;b++){var d=c[b];if(!d.fireEvent("beforemodulechange")){return false}}return true}});Ext.define("FT.util.ReloadManager",{extend:"Ext.util.Observable",constructor:function(a){Ext.apply(this,a);this.callParent(arguments);this.addEvents("wiped");this.app.on("entitychanged",this.wipe,this);this.changes=[]},wipe:function(){this.changes=[];this.fireEvent("wiped")},shouldReloadInstance:function(a){var b=this.changes.indexOf(a)==-1;if(b){this.changes.push(a)}return b}});Ext.namespace("FT.util");FT.util.updateToFuzzyTime=function(b){var a=Ext.select("*[class="+b+"]");Ext.each(a.elements,function(d,c,e){Ext.each(d.attributes,function(j,g,h){if(j.nodeName=="time"){d.innerHTML=FTrack.fuzzyDate.translate(j.nodeValue,FTrack.fuzzyDate.options)}},this)},this)};FTrack.fuzzyFyDate=function(b){var a=FTrack.fuzzyDate.options;if(!FT.Settings.asBool("DISPLAY","fuzzy_dates")){var c=Ext.Date.parse(b,a.dateFormats[0]);return'<div style="display:inline-block;" class="ftrack-selectable-time">'+FTrack.grid.dateTimeRenderer(c)+"</div>"}var e=Ext.id();return'<div style="display:inline-block;" id="'+e+'" class="ftrack-selectable-time" title="'+b+'" time="'+b+'">'+FTrack.fuzzyDate.translate(b,a)+"</div>"};FT.util.FuzzyDate=function(){var a=function(){return{refreshInterval:60,onErrorWriteTitle:true,itemSelector:"span.fuzzyDate",dateFormats:["c","Y-m-d H:i:s","Y-m-d","h:i:s","H:i:s","n/j/Y","l, F d, Y","l, F d, Y g:i:s A","F d","g:i A","g:i:s A","Y-m-d\\TH:i:s","Y-m-d H:i:sO","F, Y"],translation:{prefixAgo:FT.i18n("",{id:"fuzzy-date-prefix-ago"}),prefixFromNow:FT.i18n("",{id:"fuzzy-date-prefix-from-now"}),suffixAgo:FT.i18n("ago",{id:"fuzzy-date-suffix-ago"}),suffixFromNow:FT.i18n("from now",{id:"fuzzy-date-suffix-from-now"}),seconds:FT.i18n("a minute",{id:"fuzzy-date-seconds"}),minute:FT.i18n("a minute",{id:"fuzzy-date-minute"}),minutes:FT.i18n("%d minutes",{id:"fuzzy-date-minutes"}),hour:FT.i18n("an hour",{id:"fuzzy-date-hour"}),hours:FT.i18n("%d hours",{id:"fuzzy-date-hours"}),day:FT.i18n("a day",{id:"fuzzy-date-day"}),days:FT.i18n("%d days",{id:"fuzzy-date-days"}),month:FT.i18n("a month",{id:"fuzzy-date-month"}),months:FT.i18n("%d months",{id:"fuzzy-date-months"}),year:FT.i18n("a year",{id:"fuzzy-date-year"}),years:FT.i18n("%d years",{id:"fuzzy-date-years"})},offsets:{now:45,minuteOffset:90,xminutes:50,oneHour:80,xHours:24,oneDay:48,xDays:30,oneMonth:60,xMonths:365,oneYear:2}}};function e(h,g){return h.replace(/%d/,g)}function d(j,g){var h=null;for(i=0;i<g.length;i++){h=Date.parseDate(j,g[i]);if(h){return h}}return false}var b=function(m,s){var q=s.translation;var g=new Date;var j=Ext.Date.format(g,"U")-Ext.Date.format(m,"U");if(j<0){suffix=q.suffixFromNow;prefix=q.prefixFromNow}else{suffix=q.suffixAgo;prefix=q.prefixAgo}var o=Math.abs(j);var h=Math.floor(o/60);var n=Math.floor(h/60);var p=Math.floor(n/24);var l=Math.floor(p/365);var k=false||o<s.offsets.now&&e(q.seconds,Math.round(o))||o<s.offsets.minuteOffset&&e(q.minute,1)||h<s.offsets.xminutes&&e(q.minutes,Math.round(h))||h<s.offsets.oneHour&&e(q.hour,1)||n<s.offsets.xHours&&e(q.hours,Math.round(n))||n<s.offsets.oneDay&&e(q.day,1)||p<s.offsets.xDays&&e(q.days,Math.floor(p))||p<s.offsets.oneMonth&&e(q.month,1)||p<s.offsets.xMonths&&e(q.months,Math.floor(p/30))||l<s.offsets.oneYear&&e(q.year,1)||e(q.years,Math.floor(l));return prefix+" "+k+" "+suffix};var c=function(h){var j=a();var g={};Ext.apply(g,h,j);return g};return{options:null,items:[],init:function(g){Ext.getBody().on("click",function(h){FTrack.fuzzyTimeClicked.fireEvent("timeClicked_Event",h.target.id);return false},this,{delegate:".ftrack-selectable-time"});this.options=c(g);this.refresh();FT.util.updateToFuzzyTime("ftrack-selectable-time");Ext.TaskManager.start({run:function(){FT.util.updateToFuzzyTime("ftrack-selectable-time")},interval:60000});FTrack.fuzzyTimeClicked=new Ext.util.Observable;FTrack.fuzzyTimeClicked.on("timeClicked_Event",function(l){var j=Ext.get(l);var k=j.getAttribute("time");if(k==null){return}var h=FTrack.grid.dateTimeRenderer(Ext.Date.parse(Ext.clone(k),"c"));j.dom.innerHTML=j.dom.innerHTML!=h?h:FTrack.fuzzyDate.translate(k,FTrack.fuzzyDate.options)})},translate:function(j,g){var h=Ext.Date.parse(j,g.dateFormats[0]);if(h){return b(h,g)}else{if(g.onErrorWriteTitle){return j}}return false},refresh:function(){Ext.select(this.options.itemSelector).each(function(h,j,g){h.update(this.translate(h.dom.title,this.options))},this);if(this.options.refreshInterval>0){Ext.Function.defer(this.refresh,this.options.refreshInterval*1000,this)}},applyTo:function(k,h){var g=c(h);var j=Ext.get(k);j.update(this.translate(j.dom.title,g));if(g.refreshInterval>0){Ext.Function.defer(this.applyTo,this.options.refreshInterval*1000,[k,h])}}}};Ext.ns("FT.util");FT.encode64=function(a){return btoa(a)};FT.decode64=function(a){return atob(a)};Ext.define("FT.AbstractModule",{mixins:{observable:"Ext.util.Observable"},name:"Unknown",preRequests:[],constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this,a)},internalInit:function(a){if(!Ext.isDefined(this.itemId)){throw"No itemId set on module"}return this.init.apply(this,arguments)},init:function(b,a){throw"FTrack.AbstractModule init used but not implemented!"},getModuleId:function(){return this.itemId},getTopMenuItems:function(){return[]},beforeModuleChange:function(a){return true},getDashboards:function(){var a={dashboards:Ext.clone(Ext.data.StoreManager.lookup("FT.store.Dashboards").proxy.reader.rawData.dashboards),parents:[]};Ext.data.StoreManager.lookup("FT.store.Dashboards").each(function(b){if(b.get("module")==this.itemId){a.parents.push(Ext.clone(b.raw))}},this);return a}});Ext.define("FT.AbstractRAWModule",{extend:"FT.AbstractModule",preRequests:[],enableBookmark:false,enableEdit:false,pinned:null,reloadFTrackOnExitModule:false,groupMenuItems:false,verticalDashboardMenu:true,oldEntityId:null,oldView:null,enableSlideIn:false,menuClass:"FT.core.DashboardMenu",emptyText:"",autoloadDashboard:true,saveDashboardState:true,hideDashboardMenu:true,constructor:function(a){this.mixins.observable.constructor.call(this,a);if(this.reloadFTrackOnExitModule){this.app.on("aftermoduleactivated",function(b){if(b==this){this.app.on("beforemoduleactivated",function(g,d){if(g.itemId!=this.itemId){var c=Ext.create("Ext.LoadMask",{target:FT.Viewport,msg:FT.i18n("Please wait while ftrack is reloading...")});c.show();var e="#"+this.app.encodeData(d);window.location.assign(e);window.location.reload();return false}},this)}},this)}this.on("beforemodulechange",this.onBeforeModuleChange,this);if(!Ext.isDefined(FT.leftfloaterModel)){Ext.define("FT.leftfloaterModel",{fields:["id","setting","value"],extend:"Ext.data.Model",proxy:{type:FT.localstorage()?"localstorage":"sessionstorage",id:"ft-leftfloater"}})}this.localStore=Ext.create("Ext.data.Store",{model:"FT.leftfloaterModel"});this.localStore.load();if(this.app.scope){this.app.scope.on("scopechanged",this.invalidateAll,this)}},invalidateAll:function(){if(this.dashboardManager){this.dashboardManager.invalidateDashboards()}},getExtraConfig:function(b){if(this.saveDashboardState===false){return}var c=["team","lists"];if(!b.view){var a=FT.getVar(this.itemId+"_view",undefined);if(!Ext.isString(a)){return}return{view:a}}else{if(c.indexOf(b.view)===-1){FT.setVar(this.itemId+"_view",b.view)}}},init:function(d){this.view=d.view;this.beforeUpdate(d);var g=true;this.slideInEntity=null;if(Ext.isDefined(d.slideEntityId)){this.slideInEntity={entityId:d.slideEntityId,entityType:d.slideEntityType}}var c=d.slideView;if(FT.app.slider){FT.app.slider.updateEntity(this.slideInEntity,c)}if(this.oldEntityId==this.entity.entityId&&this.oldView==this.view){g=false}this.oldEntityId=this.entity.entityId;this.oldView=this.view;if(Ext.isDefined(this.main)==false){this.floater=Ext.widget(this.createLeftFloater());var e=[this.createCenter(),this.floater];var b=[];if(!this.hideDashboardMenu){e.push(this.createLeft())}var h=this,a;Ext.each(e,function(j){if(Ext.isDefined(j)&&j!=null){b.push(j)}},this);a=Ext.create("Ext.container.Container",{layout:{type:"border",regionWeights:{west:20,north:10}},items:b});this.main=a;if(g){this.update(true,d)}}else{if(g){this.update(false,d)}else{this.dashboardManager.handleDelayedPush()}}return this.main},beforeUpdate:function(a){this.entity=Ext.clone(a);this.userid=FT.Settings.get("currentuser","userid");Ext.apply(this.entity,{entityType:"user",entityId:this.userid})},update:function(a){if(a){this.updateThumbnail(this.entity)}this.updateDashboard();if(this.menu){this.menu.updateMenu(this.entity)}},updateThumbnail:function(a){},getExtraTools:null,getPageElsDimensions:function(){var c={},b=this.breadcrumb,d=this.left,a=this.leftToolbar;if(Ext.isDefined(b)){speedbarBox=b.getBox();c.speedbar=speedbarBox;if(Ext.isDefined(a)){c.leftToolbar={x:0,y:speedbarBox.y+speedbarBox.height,width:a.width}}}if(Ext.isDefined(d)){c.dashboardMenu=d.getBox()}return c},createLeft:function(){return this.left=this.createMenu()},createCenter:function(){var a=this;this.center=Ext.create("Ext.container.Container",{region:"center",items:[],layout:"fit"});this.dashboardManager=Ext.create("FT.util.DashboardManager",{widgetCls:a.widgetCls,cls:a.dashboardCls,autoloadDashboard:this.autoloadDashboard,emptyText:this.emptyText});this.dashboardManager.loadDashboards(this,this.getDashboards());this.relayEvents(this.dashboardManager,["afterdashboardupdate"]);return this.dashboardManager},updateDashboard:function(a){this.dashboardManager.updateDashboard(this.entity,this.view);this.updateFilterPanel()},_getCommonFilters:function(){var b=this.dashboardManager.getCurrentDashboard();var a=[];var c;if(!b){return null}b.widgets.forEach(function(d){a.push(d.record.get("filters"))});c=Ext.Array.intersect.apply(this,a);return c},_showFilters:function(b){var a=this.dashboardManager.getCurrentDashboard();if(this.filterPanel){this._removeFilterPanel()}if(!a._filterPanel){this.filterPanel=this.dashboardManager.getFilterPanel(b);a._filterPanel=this.filterPanel}else{this.filterPanel=a._filterPanel}this.main.add(this.filterPanel)},_removeFilterPanel:function(){if(this.filterPanel){this.main.remove(this.filterPanel,false);this.filterPanel=null}},updateFilterPanel:function(){var a=this._getCommonFilters();if(a&&a.length){this._showFilters(a)}else{this._removeFilterPanel()}},createMenu:function(){var a={region:"west",width:165};if(!this.verticalDashboardMenu){a={region:"north"}}Ext.apply(a,{module:this,groupMenuItems:this.groupMenuItems,dashboardManager:this.dashboardManager,vertical:this.verticalDashboardMenu});a.hidden=this.hideDashboardMenu;this.menu=Ext.create(this.menuClass,a);return this.menu},handleButtonMouseOver:function(a){},handleButtonMouseOut:function(a){},createLeftFloater:function(){var a=this;return{xtype:"container",hidden:true,region:"west",split:true,style:{backgroundColor:"#e0e1e1",overflowX:"hidden",overflowY:"auto"},layout:"fit",items:[],listeners:{resize:function(b,c){a.leftFloaterResize(c)},beforerender:function(){this.splitter.on("afterrender",function(){this.splitter.addCls("ft-splitter-tree")},this)}}}},leftFloaterResize:function(c){var a=this.localStore.findExact("setting","leftfloaterWidth"),b;if(a!=-1){b=this.localStore.getAt(a)}else{b=Ext.create("FT.leftfloaterModel",{setting:"leftfloaterWidth",value:205});this.localStore.add(b)}b.set("value",c);this.localStore.sync()},pin:function(a){this.pinned=a},unPinAll:function(){this.floater.removeAll(false)},onBeforeModuleChange:function(b,a){var c=false;if(a&&b){if(a.itemId!=b.itemId){c=true}if(a.view!=b.view){c=true}if(a.entityId!=b.entityId){c=true}}if(c&&!this.dashboardManager.allowModuleChange()){return false}if(!FT.app.slider.allowModuleChange()){return false}return true},addFloater:function(a){this.floater.add(a);this.floater.show()},removeFloater:function(){this.floater.hide();this.floater.removeAll(false)},isFloater:function(a){if(!this.floater.isVisible()){return false}if(this.floater.items.getCount()==0){return false}if(this.floater.items.first().id==a.id){return true}return false},isActiveModule:function(){var b=this;var a=FT.app.getActiveModule();if(b&&b.getModuleId&&a&&a.getModuleId){if(b.getModuleId()==a.getModuleId()){return true}}return false},reloadDashboards:function(c,b){var a=Ext.data.StoreManager.lookup("FT.store.Dashboards");a.on("load",function(){this.dashboardManager.dashboards=[];this.dashboardManager.loadDashboards(this,this.getDashboards());if(c){c.apply(b)}},this,{single:true});a.load()},internalUpdateMenu:function(){if(this.menu){this.menu.internalUpdateMenu(this.entity);this.menu.setSelection()}},_needLoadBeforeEdit:function(a){var c=this.dashboardManager.getCurrentDashboardId(),b=a.name;this.un("afterdashboardupdate",this._editAfterLoad,this);if(c===b){return false}this.on("afterdashboardupdate",this._editAfterLoad,this,{single:true});FT.app.open(null,{view:b});return true},_editAfterLoad:function(){this.editCurrent(false)},editDashboard:function(c,a){if(!c.isEditable){FT.notifyError(FT.i18n("This dashboard cannot be edited."));return}if(this._needLoadBeforeEdit(c)===true){return}if(!this.builder||this.builder.isDestroyed){var b=Ext.create("FT.dashboard.DashboardBuilder",{});this.dashboardManager.removeAll(false);this.dashboardManager.add(b);b.loadDashboard(c.name);if(a){b.addWidgetClicked()}b.mon(this,"beforemodulechange",function(){this.isDelayedReload=true;this.confirmChanges();return false},b);this.builder=b}else{this.builder.confirmChanges();delete this.builder}},editCurrent:function(a){var b=this.dashboardManager.getCurrentDashboard();return this.editDashboard(b,a)}});Ext.define("FT.window.Window",{extend:"Ext.window.Window",alternateClassName:"FT.Window",width:400,shadow:true,toolbarCls:"cancelActionToolbar",maskUi:"ft-dark",centerOnResize:false,initComponent:function(){var a=this;if(this.cls){this.cls+=" ft-window"}else{this.cls="ft-window"}if(this.centerOnResize){this.on("resize",function(){a.center()})}if(Ext.isDefined(a.bbar)){a.dockedItems=[{xtype:"toolbar",dock:"bottom",cls:"ft-window-toolbar "+a.toolbarCls,items:a.bbar}];a.bbar=null}a.callParent()}});Ext.define("FT.window.Modal",{extend:"Ext.window.Window",alternateClassName:"FT.ModalWindow",modal:true,maskUi:"ft-dark",shadow:true,cls:"ftrack-window",closable:true,draggable:false,preventHeader:true,closeAction:"destroy",fitHeight:false,closeOnClick:false,BODY_MARGIN:100,initComponent:function(){this.on("resize",function(c,d,b){if(b>Ext.getBody().getHeight()-this.BODY_MARGIN){this.setHeight(Ext.getBody().getHeight()-this.BODY_MARGIN)}},this);if(Ext.isDefined(this.title)){this.preventHeader=false}if(this.fitHeight){Ext.EventManager.removeResizeListener(this.resizeOnBodyChange,this);this.height=Ext.getBody().getHeight()}if(FT.fancyViewport&&this.height>FT.fancyViewport.getHeight()){this.height=FT.fancyViewport.getHeight()}else{if(this.height>Ext.getBody().getHeight()){this.height=Ext.getBody().getHeight()}}this.callParent();if(this.fitHeight){Ext.EventManager.onWindowResize(this.resizeOnBodyChange,this)}this.on("destroy",function(){if(this.fitHeight){Ext.EventManager.removeResizeListener(this.resizeOnBodyChange,this)}},this);if(this.closeOnClick){var a=function(){this.mon(Ext.getBody(),"click",this.closeOnOUtside,this)};Ext.Function.defer(a,10,this)}},resizeOnBodyChange:function(){alert();this.setHeight(Ext.getBody().getHeight())},closeOnOUtside:function(j){var c=j.browserEvent.clientY;var d=j.browserEvent.clientX;var g=this.getPosition()[0];var h=this.getPosition()[1];var b=g+this.getWidth();var a=h+this.getHeight();if(d<g||d>b){this.close()}else{if(c<h||c>a){this.close()}}return}});Ext.define("FT.window.ManageView",{title:FT.i18n("Manage views"),bodyPadding:10,padding:10,extend:"FT.ModalWindow",layout:"card",height:500,viewType:null,projectId:null,initComponent:function(){var a;this._emptyComponent=Ext.create("Ext.Component",{cls:"ft-grid-emptytext",height:100,html:FT.i18n("Select a view to edit")});this._formPanel=Ext.widget({itemId:"form",xtype:"form",layout:"anchor",defaults:{anchor:"100%",labelWidth:125},items:[{fieldLabel:FT.i18n("Name"),xtype:"textfield",name:"name"},{fieldLabel:FT.i18n("Share with everyone"),xtype:"checkboxfield",name:"isglobal",inputValue:true,uncheckedValue:false,listeners:{change:this._onCheckboxChanged,scope:this},enableAndShow:function(){this.show();this.enable()},disableAndHide:function(){this.hide();this.disable()},permission:{name:"SET_VIEW_GLOBAL",allow:"enableAndShow",deny:"disableAndHide"}},{fieldLabel:FT.i18n("Share with"),xtype:FT.isLegacyResourceSelectorEnabled?"ft-resource-editor-legacy":"ft-resource-editor",criteria:{group:{local:false}},name:"resource_ids",submitType:"array",autoLoad:true,props:{users:true,groups:true}}]});this.items=[this._emptyComponent,this._formPanel];this._viewSelector=Ext.widget({flex:1,fieldLabel:FT.i18n("View"),labelWidth:125,xtype:"combobox",name:"viewid",queryCaching:false,forceSelection:true,editable:false,store:{fields:[],proxy:{type:"direct",directFn:FTApi.UserView.query,extraParams:{limit:null,criteria:{default_view:false,userid:FT.getUserId(),type:this.viewType},order:[["name","ascending"]]},reader:{root:"data"}}},displayField:"name",valueField:"viewid",multiSelect:false,listeners:{change:this._onViewChanged,scope:this}});this.tbar={layout:{type:"anchor"},defaults:{anchor:"100%",margin:0},padding:10,items:[this._viewSelector,{xtype:"component",autoEl:"hr",margin:"20 0 0 0"}]};this.saveButton=Ext.widget({text:FT.i18n("Save"),xtype:"button",cls:"button-primary",disabled:true,handler:this.save,scope:this});this.manageDefaultButtons=Ext.create("Ext.Container",{layout:"hbox",hidden:true,items:[{xtype:"button",ui:"link",text:FT.i18n("Remove view"),handler:this._onRemoveClicked,margin:"0 10 0 0",scope:this},{xtype:"button",ui:"link",text:FT.i18n("Save as global default"),handler:Ext.bind(this.saveAsDefault,this,[null]),margin:"0 10 0 0",scope:this,permission:{name:"SET_VIEW_DEFAULT",allow:"show",deny:"hide"}},{xtype:"button",ui:"link",text:FT.i18n("Save as project default"),handler:Ext.bind(this.saveAsDefault,this,[this.projectId]),scope:this,permission:{name:"SET_VIEW_PROJECT_DEFAULT",allow:"show",deny:"hide"}}]});this.bbar={margin:"10 0 0 0",items:[this.manageDefaultButtons,"->",{text:FT.i18n("Cancel"),handler:this.close,scope:this},this.saveButton]};this.callParent(arguments);FT.util.manageComponentPermissions(this,{entityId:this.projectId,entityType:"show"})},save:function(){var b=this.getForm(),c=b.getValues(),a;if(!this.getCurrentView()){return}a=Ext.copyTo({viewid:this.getCurrentView()},c,["name","isglobal","resource_ids"]);FTApi.UserView.update(a,function(d){if(d.success){FT.notifySuccess(FT.i18n("Successfully updated view."));this.fireEvent("userview-changed",this);this.close();if(Ext.isArray(a.resource_ids)||a.isglobal===true){FT.util.intercom("SHARED-VIEW")}}},this)},getCurrentView:function(){return this._viewSelector.getValue()},reset:function(){var a=this.getForm();a.reset();this._viewSelector.setValue(null)},_onRemoveClicked:function(){var a=this.getCurrentView(),b;b=Ext.create("FT.window.CancelSave",{title:FT.i18n("Remove view"),message:FT.i18n("Are you sure you want to remove the selected view?"),saveText:FT.i18n("Remove"),saveAction:"delete",scope:this,cancelHandler:function(c){b.close()},saveHandler:function(c){FTApi.UserView["delete"]({viewid:a},function(d){if(d.success){FT.notifySuccess(FT.i18n("Successfully removed view."));this.reset();this.fireEvent("userview-removed",this)}},this);b.close()}})},_onCheckboxChanged:function(d,c,b){var a=this.getForm().findField("resource_ids");if(c){a.disable()}else{a.enable()}},getForm:function(){return this._formPanel.getForm()},_onViewChanged:function(d,c,a){var b=this.getForm();if(!c){this.getLayout().setActiveItem(0);this.manageDefaultButtons.hide();this.saveButton.disable();return}this.getLayout().setActiveItem(1);this.manageDefaultButtons.show();this.saveButton.enable();FTApi.UserView.get({viewid:c},function(e){var g=e.data[0];b.setValues(Ext.copyTo({},g,["name","isglobal","resource_ids"]))})},saveAsDefault:function(a){var c,b;b=a?"project":"global";c=Ext.create("FT.window.CancelSave",{title:Ext.String.format("Save as {0} default view",b),message:Ext.String.format("Would you like to save the selected view as {0} default view ?<br><br>Warning: This will replace the current default view.",b),saveText:FT.i18n("Yes"),scope:this,cancelHandler:function(d){c.close()},saveHandler:function(d){var e={viewid:this.getCurrentView(),view_type:this.viewType,context_id:a};FTApi.UserView.saveAsDefault(e,function(g){if(g&&g.success){this.fireEvent("default-changed",this);FT.notifySuccess(FT.i18n("Successfully saved view as default."))}},this);c.close()}})}});Ext.define("FT.ConfirmDialog",{extend:"FT.ModalWindow",width:400,height:175,bodyPadding:10,initComponent:function(){var a=this;this.html=a.msg;this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:[{xtype:"button",text:FT.i18n("No"),width:50,handler:function(){a.close()}},"->",{xtype:"button",cls:"button-primary",text:FT.i18n("Yes"),width:50,handler:function(){a.actionHandler.call(a.scope||this);a.close()}}]});this.callParent()}});Ext.define("FT.window.SimpleSave",{extend:"FT.window.Modal",width:350,height:175,title:FT.i18n("Save"),autoShow:true,draggable:false,modal:true,resizable:false,saveHandler:Ext.emptyFn,saveScope:undefined,initComponent:function(){this.textfield=Ext.widget("textfield",{fieldLabel:FT.i18n("Name"),allowBlank:false,msgTarget:"side",margin:"10 25 25 50",labelWidth:50,width:250,listeners:{afterrender:function(){var a=this;setTimeout(function(){a.focus()},100)}}});this.items=[this.textfield];this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),style:{marginRight:"10px"},handler:function(){this.close()},scope:this},{xtype:"button",cls:"button-primary",text:FT.i18n("Save"),handler:function(){if(this.textfield.validate()){var a=this.saveHandler.apply(this.saveScope,[this.textfield.getValue()]);if(Ext.isEmpty(a)){this.close()}else{this.textfield.markInvalid(a);log(a)}}},scope:this}]});this.callParent()}});Ext.define("RAW.data.Setting",{extend:"Ext.data.Model",fields:[{name:"settingid",type:"string"}],idProperty:"settingid"});Ext.define("RAW.data.SettingStore",{extend:"Ext.data.Store",autoLoad:true,syncEmpty:function(){var b=this.getProxy().extraParams;var a="/track/emptyRawSettings";Ext.Ajax.request({type:"ajax",url:a,params:b,success:function(){}})},constructor:function(a){a=a||{};Ext.apply(a,{proxy:{type:"batch",url:"/batch/get",reader:{type:"json"},extraParams:{model:a.model,key:Ext.isDefined(a.key)?a.key:null,method:"getRawSettings"}}});this.callParent([a])},sync:function(b){var c=[],a=[];this.each(function(e){if(e.dirty||e.phantom){c.push(e.data)}},this);Ext.each(this.getRemovedRecords(),function(e){a.push(e.data)},this);var d={key:Ext.encode(this.getProxy().extraParams.key),model:this.getProxy().extraParams.model,data:Ext.encode(c),remove:Ext.encode(a)};if(this.getProxy().extraParams&&this.getProxy().extraParams.fullSync==="true"){d.fullSync=true}Ext.Ajax.request({url:"/track/saveRawSettings",params:d,success:function(){var e=arguments;this.load({scope:this,callback:function(h,g,j){if(b&&b.callback){b.callback.apply(b.scope,e)}}})},scope:this})},mySync:function(a){if(Ext.isObject(a)){this.on("write",function(c,b){if(Ext.isDefined(a.scope)){a.callback.call(a.scope)}else{a.callback.call(this)}c.un("write",a.callback)},this,{single:true})}this.sync()}});Ext.define("Widget",{extend:"Ext.data.Model",fields:[{name:"pushToken",type:"string"},{name:"classid",type:"string"},{name:"instanceid",type:"string"},{name:"parent_id",type:"string"},{name:"instancename",type:"string"},{name:"classname",type:"string"},{name:"widgets",type:"auto"},{name:"settings",type:"auto"},{name:"name",type:"name"},{name:"cfg",type:"string"},{name:"sort",type:"int"},{name:"filters",type:"array"}],hasMany:["Setting"],associations:[{type:"belongsTo",model:"Widget",primaryKey:"instanceid",foreignKey:"parent_id"},{type:"hasMany",model:"Widget",primaryKey:"instanceid",foreignKey:"parent_id",associationKey:"widgets"}]});Ext.define("Setting",{extend:"Ext.data.Model",fields:[{name:"valueid",type:"string"},{name:"name",type:"string"},{name:"value",type:"auto"},{name:"classname",type:"string"},{name:"instanceid",type:"string"},{name:"attributeid",type:"string"}],proxy:{type:"ajax",url:"/track/saveSetting",reader:{type:"json"}},belongsTo:"Widget"});Ext.define("RAW.WidgetType",{extend:"Ext.data.Model",fields:[{name:"classid",type:"string"},{name:"classname",type:"string"},{name:"scope",type:"string"},{name:"record",type:"auto"}]});Ext.define("RAW.Base",{isWidget:true,widgetData:undefined,instanceid:null,inheritLayout:null,autoScroll:false,isSuspendLoad:false,bubbleEvents:[],preventHeader:true,isCreated:false,instanceData:null,disableSettings:false,maximizable:false,hideLoadMasks:false,initComponent:function(){if(this.instanceid==null){Ext.apply(this,this.decodeAndFix(this.getData("cfg")));if(Ext.isDefined(this.fixFlex)&&Ext.isDefined(this.flex)&&!Ext.isDefined(this.columnWidth)&&!Ext.isDefined(this.width)){this.columnWidth=1;this.flex=undefined}if(this.isWidget){this.cls=this.globalConfig.widgetCls}}else{this.createdDate=new Date}if(this.isWidget){this.tools=[];if(Ext.isDefined(this.parentWidget)&&this.parentWidget.hasCls("core-dashboard-column")&&!Ext.isDefined(this.bodyPadding)){this.bodyPadding=10}if(Ext.isString(this.infoText)){this.tools.push({type:"help",cls:"icon--small",qtip:{text:this.infoText,align:"top",dismissDelay:60000}})}if(Ext.isDefined(this.updateWidget)){if(!this.disableSettings||FT.util.isAdministrator()){this.tools.push({type:"refresh",qtip:{text:FT.tip("widget-tools-reload"),align:"left"},active:0,handler:function(){this.updateWidget(this.getEntity())},scope:this})}}if(this.maximizable){this.tools.push({type:"maximize",glyph:FT.glyph("maximize"),cls:"icon--small",qtip:{text:FT.tip("widget-tools-maximize"),align:"left"},active:0,handler:Ext.bind(FT.app.maximize,FT.app,[this,!this.isFitLayout()]),scope:this})}if(Ext.isDefined(this.toggleSettings)){if(!this.disableSettings||FT.util.isAdministrator()){this.tools.push({type:"gear",qtip:"Edit widget",active:0,handler:this.toggleSettings,scope:this})}}this.preventHeader=false}if(this.isSuspendLoad&&this.getMyConfig("isEditor")){this.isSuspendLoad=false}if(!Ext.isDefined(this.globalConfig)){this.globalConfig={isEditor:false}}if(Ext.isDefined(this.globalConfig.isNoToolbar)&&this.globalConfig.isNoToolbar){this.preventHeader=true}},postInit:function(){if(!this.isSuspendLoad){this.loadAfterInit()}if(this.getMyConfig("isEditor")){this.on("afterwidget_enter",function(k){var e=[];for(var d=0;d<this.items.items.length;d++){var g=this.items.items[d];if(Ext.isDefined(g.isDD)){continue}if(Ext.isDefined(g.isWidget)){e.push({instanceid:g.getData("instanceid"),children:[]});continue}if(Ext.isDefined(g.record)){var c="new"+Ext.id();var a=Ext.create("Widget",g.record);for(var b=0;b<g.record.settings.length;b++){g.record.settings[b].instanceid=c;a.settings().add(g.record.settings[b])}a.setWidget(this.getData("instanceid"));a.set("instanceid",c);this.widgetStore.insert(0,a);e.push({instanceid:c,children:[],record:a})}}var h=[{instanceid:this.getData("instanceid"),children:e}];this.getEventHandler().updateWidgets(h);this.getEventHandler().reloadAll()})}if(this.isWidget&&Ext.isDefined(this.ui)){Ext.util.Observable.observe(RAW.Widget);RAW.Widget.on("reloadwidget",this.onReloadwidget,this);RAW.Widget.on("key_event",function(c){var b=this.getMyConfig("module");var a=FT.app.getActiveModule();if(b&&b.getModuleId&&a&&a.getModuleId){if(b.getModuleId()!=a.getModuleId()){return true}}if(this.isVisible()&&this.getTop().isVisible()){this.fireEvent(c);this.fireEvent("shortcut",c)}},this)}},onReloadwidget:function(a){if(!this.isCreated){return}if(!Ext.isDefined(a.parents)){return}if(FT.websocketDebug){log("#### PUSH : "+this.getData("classname")+" ##################")}this.updateWidgetFromPush(a);if(FT.websocketDebug){log("#### END PUSH ##################")}},disableLoadmaskForInterval:function(a){FT.disableLoadMasks=true;if(!Ext.isDefined(this.enableLoadmaskTask)){this.enableLoadmaskTask=new Ext.util.DelayedTask(function(){FT.disableLoadMasks=false},this)}this.enableLoadmaskTask.delay(a)},onPushTaskRunner:function(b){if(FT.websocketDebug){log("running onPushTask")}var a=(new Date).getTime()/1000;this.lastPush=a;this.disableLoadmaskForInterval(1000);this.fireEvent("beforepush",b);if(this.fireEvent("push",b)&&this.fireEvent("manualpush",b)){if(FT.websocketDebug){if(Ext.isDefined(FT.websocketDebugListener)){FT.websocketDebugListener.fireEvent("widgetReload",this.getData("classname"),this)}}if(FT.websocketDebug){log("updateWidget")}this.updateWidget(this.getEntity())}this.cachedPushData=[]},onPush:function(g){if(!this.cachedPushData){this.cachedPushData=[]}this.cachedPushData.push(g);if(!this.onPushTask){this.onPushTask=new Ext.util.DelayedTask(this.onPushTaskRunner,this)}var c=g.clientToken!=FT.clientToken;var b=FT.app.fireEvent("allowInstantPush");var a=(new Date).getTime()/1000;var e=a-10;var d=this.lastPush&&this.lastPush>e;if(d&&c||!b){this.lastPush=a;this.onPushTask.delay(10000,null,null,[this.cachedPushData])}else{this.onPushTask.delay(500,null,null,[this.cachedPushData])}},onDelayedPush:function(){if(!this.onDelayedPushTask){this.onDelayedPushTask=new Ext.util.DelayedTask(function(){if(FT.websocketDebug){log("delayed reload from push");if(this.getTop().delayedEntityId!=this.getEntity().entityId){log("delayed reload ABORTED due to new entity");return}if(Ext.isDefined(FT.websocketDebugListener)){FT.websocketDebugListener.fireEvent("widgetDelayedReload",this.getData("classname"),this)}}this.updateWidget(this.getEntity())},this)}this.onDelayedPushTask.delay(500)},updateWidgetFromPush:function(e){if(FT.websocketDebug){log("widget token : "+this.pushToken);log("  push token : "+e.pushToken)}if(this.pushToken==e.pushToken){log("skipping!");return}var c=FT.util.getEntityFromEvent(e,this.getEntity().entityId);if(c&&c.action=="remove"){log("entity was removed, skipping");return}var g=false;if(this.isVisible(true)&&this.getTop().isVisible()){if(Ext.isDefined(this.updateWidget)&&this.isCreated&&this.rendered){var a=this.up("widget_custom");if(Ext.isDefined(a)){if(a.getTop().isVisible()){g=true}}else{g=true}}}var d=this.getMyConfig("module");var b=FT.app.getActiveModule();if(d&&d.getModuleId&&b&&b.getModuleId){if(d.getModuleId()!=b.getModuleId()){g=false}}if(FT.websocketDebug){log("visible : "+g)}if(this.validPushEntities){if(FT.util.verifyEventScope(e,this.validPushEntities)||FT.util.verifyEventAction(e,"move")){}else{if(FT.websocketDebug){log("NOT in validPushEntities");log(this.validPushEntities)}return}}if(!this.isValidPushParent(e)){if(FT.websocketDebug){log("NOT in parents")}return}if(!g){this.getTop().on("delayedPush",this.onDelayedPush,this,{single:true});this.getTop().delayedEntityId=this.getEntity().entityId;if(FT.websocketDebug){log("NOT visible")}return}this.onPush(e)},isValidPushParent:function(d){var a=this.getEntity(),b=a.entityId,c=a.entityType;if(c==="list"&&FT.app.location){b=FT.app.location.getProjectId()}if(Ext.isString(b)){b=b.replace("__","")}return d.parents.indexOf(b)!=-1},loadAfterInit:function(){if(this.instanceid!=null){this.isWidget=false;Ext.applyIf(this.globalConfig,{eventHandler:this.createEventHandler(),topWidget:this});this.createAndloadWidgetStore()}else{this.addWidgetsFromStore()}},getModule:function(){return this.globalConfig.module},decodeAndFix:function(b){var a=Ext.decode(b);Ext.iterate(a,function(c,e,d){if(e=="true"||e=="false"){d[c]=e=="true"}else{if(Ext.isNumeric(e)){d[c]=parseFloat(e)}else{if(e=="undefined"){d[c]=undefined}else{if(e=="null"){d[c]=null}}}}});return a},initWidget:function(){if(this.widgets.length>0){if(this.instanceid!=null){this.getTop().isFireRAWEvents=false}this.add(this.widgets);if(this.instanceid!=null){this.fireStackedEvents()}}},createAndloadWidgetStore:function(){this.widgetStore=new Ext.data.Store({model:"Widget",sorters:[{property:"sort",direction:"ASC"}],autoLoad:false});this.widgetStore.loadData(this.instanceData);this.addWidgetsFromStore()},fireStackedEvents:function(){this.getTop().isFireRAWEvents=true;Ext.each(this.getTop().stackedEvents,function(a){log(a.event);this.fireEvent(a.event,a.data)},this);this.getTop().stackedEvents=[]},fireRAWEvent:function(a,b){if(Ext.isDefined(this.getTop().isFireRAWEvents)&&this.getTop().isFireRAWEvents){this.getTop().fireEvent(a,b);return}this.getTop().stackedEvents=Ext.isDefined(this.getTop().stackedEvents)?this.getTop().stackedEvents:[];this.getTop().stackedEvents.push({event:a,data:b})},getTop:function(){return this.getMyConfig("topWidget")},getEventHandler:function(){return this.globalConfig.eventHandler},setInstanceid:function(a){this.instanceid=a;this.widgetStore.getProxy().extraParams.instanceid=a;this.widgetStore.load();this.getEventHandler().fireEvent("reload")},getDashboardWidgets:function(){return this.getTop().globalConfig.eventHandler.widgets},updateWidgetsFromStore:function(){this.widgets=[];this.widgetStore.sort("sort","ASC");this.widgetStore.each(function(b){var a=this.getTop().globalConfig.eventHandler.getWidget(b.get("instanceid"));if(a.isWidget==false){this.widgets.push(a)}else{this.widgets.push(a)}},this);if(this.getMyConfig("isEditor")&&this.isWidget){this.renderHoldout()}else{this.initWidget();this.isCreated=true}},addWidgetsFromStore:function(a){if(Ext.isDefined(a)){a=false}this.globalConfig.eventHandler.addWidget(this.instanceid!=null?this.instanceid:this.getData("instanceid"),this);this.widgets=[];this.removeAll(true);this.widgetStore.sort("sort","ASC");this.widgetStore.each(function(b){widget={};if(this.getTop().instanceData!=null){if(Ext.isDefined(b.get("widgets"))){b.widgets().add(b.get("widgets"));b.settings().add(b.get("settings"))}}widget=Ext.apply(widget,{name:b.get("name"),pushToken:b.get("pushToken"),xtype:b.get("classname"),widgetStore:b.widgets(),settingStore:b.settings(),parentWidget:this,record:b,globalConfig:this.globalConfig});this.widgets.push(widget)},this);if(this.getMyConfig("isEditor")&&this.isWidget){this.renderHoldout()}else{if(Ext.isDefined(this.updateWidget)){if(false){this.getTop().updatesOut+=1}}this.initWidget();this.isCreated=true}},reloadWidgets:function(){Ext.Object.each(this.getDashboardWidgets(),function(e,d){if(!d.isWidget){return}if(Ext.isDefined(d.updateWidget)&&d.isCreated){if(d.hidden==true){d.un("show",d.updateWidget,d,{single:true});d.on("show",d.updateWidget,d,{single:true})}else{d.updateWidget();d._manageComponentPermissions(d)}}else{var a=0;for(var b=0;b<d.getParent().items.items.length;b++){var c=d.getParent().items.items[b];if(d.record.get("instanceid")==c.record.get("instanceid")){a=b;break}}d.getParent().insert(a,d.initialConfig);d.getParent().remove(d,true)}})},removeAllWidgets:function(){recursiveRemove=function(a){if(!Ext.isDefined(a)){return}for(i=0;i<a.length;i++){if(Ext.isDefined(a[i])){recursiveRemove(a[i].items.items);a[i].removeAll(true)}}};recursiveRemove(this.items.items)},renderHoldout:function(){var a={tbar:[{text:FT.i18n("Remove"),handler:function(){this.deleteWidget()},scope:this}],bodyStyle:"padding:10px;border:1px solid yellow;"};if(!this.isFitLayout()){a.height=300;a.html="<h1>Widget (300px)</h1>";a.bodyStyle+="background-color:#FF6666;"}else{a.html="<h1>Widget (fit)</h1>";a.bodyStyle+="background-color:#66FF66;"}a.html+="<br><h2>"+this.getData("classname")+"</h2>"+Math.floor(Math.random()*11)+"<br>"+this.getData("cfg")+"<br>"+this.getData("sort");this.add(a)},getData:function(a){if(Ext.isDefined(this.record)){return this.record.get(a)}if(a=="instanceid"&&this.instanceid!=null){return this.instanceid}this.error("this.record not found!");return null},setData:function(a,b){if(Ext.isDefined(this.record)){this.record.set(a,b);return}this.error("this.record not found!");return},getSettingRecord:function(b){if(!Ext.isDefined(this.settingStore)){return null}var a=this.settingStore.find("name",b);if(a!=-1){return this.settingStore.getAt(a)}this.error("setting ("+b+") was not found! Returning null...");return null},getSetting:function(b){if(!Ext.isDefined(this.settingStore)){return null}var a=this.settingStore.find("name",b);if(a!=-1){return this.settingStore.getAt(a).get("value")}this.error("setting ("+b+") was not found! Returning null...");return null},saveSettings:function(){log(this.settingStore)},setSetting:function(b,c){var a=this.settingStore.find("name",b);if(a!=-1){this.settingStore.getAt(a).set("value",c);return this.settingStore.getAt(a)}this.error("setting ("+b+") was not found! Returning null...");return null},reloadIf:function(c,b,a){if(Ext.isDefined(a)){this.updateGlobalConfig(a)}if(c!=this.instanceid){this.setEntity(b);this.setInstanceid(c)}else{if(!FT.Object.isEqual(this.getEntity(),b)||this.isInvalid===true){this.isInvalid=false;this.setEntity(b);this.reloadWidgets()}else{return false}}return true},reload:function(c,b,a){if(Ext.isDefined(a)){this.updateGlobalConfig(a)}if(c!=this.instanceid){this.setEntity(b);this.setInstanceid(c)}else{this.setEntity(b);this.reloadWidgets()}},setEntity:function(a){this.globalConfig.entity=a},getEntity:function(){return this.globalConfig.entity},toggleFilterPanel:function(){var a=this._getFilterPanel();if(!a){return false}if(a.getCollapsed()){a.expand()}else{a.collapse()}},_getFilterPanel:function(){var a=this.globalConfig.module||{};return a.filterPanel},getFilterButton:function(){if(!this._filterButton){this._filterButton=Ext.create("FT.newfilters.ConfigureFilterButton",{tooltip:FT.i18n("Toggle filter panel"),handler:this._onFilterButtonToggled,scope:this})}return this._filterButton},_onFilterButtonToggled:function(a,b){this.toggleFilterPanel(b)},_updateFilterButtonState:function(b){var a=b&&b.length||0;if(this._filterButton){this._filterButton.updateState(a)}},_updateFilters:function(a){this._updateFilterButtonState(a);this.updateFilters(a)},updateFilters:function(a){},getParent:function(){if(!Ext.isDefined(this.globalConfig.eventHandler)){return null}return this.globalConfig.eventHandler.getWidget(this.getData("parent_id"))},changeParent:function(a){if(a==this.getData("parent_id")){log("same parent id");return}this.getParent().widgetStore.remove(this.record,true);this.getMyConfig("eventHandler").getWidget(a).widgetStore.insert(0,this.record);this.record.setWidget(a)},deleteWidget:function(){this.getParent().widgetStore.remove(this.record);this.getEventHandler().reloadAll()},sortWidgets:function(){log("UPDATING SORT!");var a=0;this.widgetStore.each(function(b){log("SORTING");b.set("sort",a);a++},this);this.widgetStore.sort("sort","ASC")},getStoreIndexOf:function(){return this.getParent().widgetStore.indexOf(this.record)},reloadWidget:function(a){if(a){this.getMyConfig("topWidget").addWidgetsFromStore()}else{this.addWidgetsFromStore()}},isFitLayout:function(){if(this.getParent()!=null&&this.getParent().inheritLayout=="fit"){return true}return false},getFirstTitle:function(){var a=this.instanceid;Ext.iterate(this.globalConfig.eventHandler.widgets,function(b,d){var c=this.decodeAndFix(d.getData("cfg"));if(c==null){return}if(Ext.isDefined(c.title)){a=c.title;return false}},this);return a},getMyConfig:function(a){if(!Ext.isDefined(this.globalConfig)){this.error("globalConfig not defined!");return}if(Ext.isDefined(this.globalConfig[a])){return this.globalConfig[a]}this.error("globalConfig key("+a+") was not found!");return null},updateGlobalConfig:function(b){var a=false;Ext.iterate(b,function(c,e,d){if(e!=this.globalConfig[c]||!Ext.isDefined(this.globalConfig[c])){this.globalConfig[c]=e;a=true}},this);if(a){this.fireEvent("globalconfigchanged")}},error:function(a){FTrack.errorMessage(a,5)},createEventHandler:function(){return Ext.create("Ext.util.Observable",{root:this,widgets:{},getWidgets:function(){var a=[];Ext.iterate(this.widgets,function(c,b){a.push(b)},this);return a},addWidget:function(a,b){this.widgets[a]=b},getWidget:function(a){return Ext.isDefined(this.widgets[a])?this.widgets[a]:null},updateWidgets:function(b,e){for(var a=0;a<b.length;a++){var d=b[a];var c=this.getWidget(d.instanceid);if(c!=null){if(Ext.isDefined(e)){c.changeParent(e)}c.setData("sort",a)}else{if(Ext.isDefined(d.record)){d.record.set("sort",a)}}if(Ext.isDefined(d.children)&&d.children.length>0){this.updateWidgets(d.children,d.instanceid)}}},reloadAll:function(){this.root.addWidgetsFromStore();this.fireEvent("reload")}})},getWidgetsAndSettings:function(copy){if(!Ext.isDefined(copy)){copy=false}var widgets=[];var settings=[];var addWidgetsAndSettings=function(widgets,settings,store){store.each(function(r){widgets.push(r.data);var sort=r.data.sort;r.settings().each(function(r2){if(r2.data.name=="sort"){r2.data.value=sort}settings.push(r2.data)},this);addWidgetsAndSettings(widgets,settings,r.widgets())},this)};addWidgetsAndSettings(widgets,settings,this.widgetStore);var returndata={instanceid:this.instanceid,name:"new_dashboard",widgets:widgets,settings:settings};if(copy){var ids=[this.instanceid];for(var i=0;i<widgets.length;i++){ids.push(widgets[i].instanceid)}var data=Ext.encode(returndata);for(var i=0;i<ids.length;i++){data=data.replace(eval("/"+ids[i]+"/gi"),"new-"+ids[i])}return Ext.decode(data)}else{return returndata}},registerDelayedRenderAction:function(a,b,c){a.on(b,function(){var d=function(h,g){h.on("show",function(){c.call(g)},g,{single:true})};if(!this.isVisible()){d(this,this);return}var e=this;while(e=e.getParent()){if(!e.isVisible()){d(e,this);break}}},this,{single:true})},enableLoadMask:function(b){if(FT.disableLoadMasks){return}var a=this;if(this.loadMask||FT.util.isModalOpen()){return}if(!this.isFitLayout()){return}b=Ext.isDefined(b)?b:FT.i18n("Loading, please wait...");if(!this.rendered){return}if(!this.hideLoadMasks){this.loadMask=Ext.create("Ext.LoadMask",{target:a});Ext.Function.defer(function(){if(Ext.isDefined(this.loadMask)){this.loadMask.show()}},10,this)}},disableLoadMask:function(){if(!this.loadMask){return}this.loadMask.hide();this.loadMask.destroy();delete this.loadMask}});Ext.define("RAW.Widget",{alias:"widget.rawwidget",extend:"Ext.panel.Panel",mixins:["Ext.state.Stateful"],stateful:false,validPushEntities:null,ignoreMargin:false,initComponent:function(){this.on("add",this._manageComponentPermissions,this);this.mixins.base.initComponent.call(this);if(this.stateful&&this.stateId){this.initState()}this.callParent();this.mixins.base.postInit.call(this);if(this.manualRefreshText){this.on("manualpush",function(c){for(var a=0;a<c.length;a++){var b=c[a];if(b.clientToken==FT.clientToken){return true}}if(c.length>0){this.enableManualRefresh(true);return false}},this)}},_manageComponentPermissions:function(a){FT.util.manageComponentPermissions(a,this.getEntity())},mixins:{base:"RAW.Base"},getManualRefreshToolbar:function(){if(!this.manualRefreshToolbar){this.manualRefreshToolbar=Ext.widget("toolbar",{cls:"background-edit",height:40,hidden:true,region:"north",items:["->",{xtype:"component",html:this.manualRefreshText},{ui:"link",text:FT.i18n("Refresh"),handler:function(){this.manualRefreshToolbar.hide();this.updateWidget()},scope:this},"->"]})}return this.manualRefreshToolbar},enableManualRefresh:function(a){var b=this.getManualRefreshToolbar().isHidden();if(a&&b){this.getManualRefreshToolbar().show()}else{if(a===false&&b===false){this.getManualRefreshToolbar().hide()}}}});Ext.define("RAW.Layout",{extend:"Ext.container.Container",initComponent:function(){this.mixins.base.initComponent.call(this);this.callParent();this.mixins.base.postInit.call(this)},mixins:{base:"RAW.Base"}});Ext.define("RAW.PanelLayout",{extend:"Ext.panel.Panel",initComponent:function(){this.mixins.base.initComponent.call(this);this.callParent();this.mixins.base.postInit.call(this)},mixins:{base:"RAW.Base"}});Ext.define("RAW.SetValidPushEntities",{setValidPushEntitiesFromEntity:function(){var a=this.getEntity();if(a){this.validPushEntities=[a.entityType]}}});FTrack.editDash=function(a){var b=grid.getSelectionModel().getSelections();serverids=[];FTrack.System.fireEvent("configuretrackdashboard",{dashboardClass:action})};Ext.define("RAW.LayoutAuto",{extend:"RAW.Layout",alias:"widget.layout_auto",layout:"auto",autoScroll:true,reserveScrollbar:true,isWidget:false,border:0,initComponent:function(){this.callParent();this.on("scrollBottom",function(){this.items.each(function(a){a.fireEvent("scrollBottom")},this)},this)}});Ext.define("RAW.LayoutFit",{extend:"RAW.Layout",alias:"widget.layout_fit",inheritLayout:"fit",layout:"fit",autoScroll:false,isWidget:false});Ext.define("RAW.LayoutVBox",{extend:"RAW.Layout",alias:"widget.layout_vbox",layout:"border",autoScroll:false,isWidget:false});Ext.define("RAW.LayoutBorder",{extend:"RAW.Layout",alias:"widget.layout_border",inheritLayout:"fit",layout:"border",autoScroll:false,isWidget:false,initWidget:function(){var a;for(i=0;i<this.widgets.length;i++){a=this.widgets[i];if(Ext.isDefined(this.ui)&&this.ui=="core-dashboard"){if(Ext.isDefined(a.cls)){a.cls+=" core-dashboard-column"}else{a.cls="core-dashboard-column"}}}this.add(this.widgets)}});Ext.define("RAW.BorderPanel",{extend:"RAW.PanelLayout",alias:"widget.panel_layout_border",layout:"border",autoScroll:false,isWidget:false});Ext.define("FT.layout.ColumnLayout",{extend:"Ext.layout.container.Column",type:"ft-column",alias:["layout.ft-column"]});Ext.define("RAW.LayoutColumn",{extend:"RAW.Layout",alias:"widget.layout_column",layout:{type:"column"},autoScroll:true,autoHeight:false,isWidget:false,initComponent:function(){this.callParent();this.isAtBottom=false;this.on("afterrender",function(a){a.getEl().on("scroll",function(d,c){var b=this.el.dom.scrollHeight-this.el.getScroll().top;var g=b-this.getSize().height;if(g<150){if(!this.isAtBottom){this.isAtBottom=true;this.items.each(function(e){e.fireEvent("scrollBottom")})}}else{this.isAtBottom=false}},this)},this)},initWidget:function(){for(i=0;i<this.widgets.length;i++){var a=this.widgets[i];if(Ext.isDefined(a.cls)){a.cls+=" bodyoverflowhack dashboard-column-widget"}else{a.cls="bodyoverflowhack dashboard-column-widget"}a.fixFlex=true;if(Ext.isDefined(this.ui)&&this.ui=="core-dashboard"){if(Ext.isDefined(a.cls)){a.cls+=" core-dashboard-column"}else{a.cls="core-dashboard-column"}}}this.add(this.widgets)}});Ext.define("RAW.LayoutTable",{extend:"RAW.Layout",alias:"widget.layout_table",layout:{type:"table",columns:3,tableAttrs:{style:{width:"100%"}},tdAttrs:{width:"30%",valign:"top"}},autoScroll:false,autoHeight:false,isWidget:false,initComponent:function(){if(this.getParent()==null){this.cls="bodyscrollhack"}else{if(Ext.isDefined(this.style)){this.style="overflow: hidden !important; border: 1px solid red;"+this.style}else{this.style="overflow: hidden !important; border: 1px solid red;"}this.style="border: 1px solid red;"}this.callParent();this.isAtBottom=false;this.on("afterrender",function(a){a.getEl().on("scroll",function(d,c){var b=this.el.dom.scrollHeight-this.el.getScroll().top;var g=b-this.getSize().height;if(g<150){if(!this.isAtBottom){this.isAtBottom=true;this.items.each(function(e){e.fireEvent("scrollBottom")})}}else{this.isAtBottom=false}},this)},this)},initWidget:function(){for(i=0;i<this.widgets.length;i++){var a=this.widgets[i];if(Ext.isDefined(a.cls)){a.cls+=" bodyoverflowhack"}else{a.cls="bodyoverflowhack"}}this.add(this.widgets)}});Ext.define("RAW.LayoutCardToggle",{alias:"widget.layout_card_toggle",extend:"RAW.PanelLayout",layout:{type:"card",deferredRender:true},autoScroll:false,isWidget:false,statefulActiveCardKey:null,showToolbar:true,initWidget:function(){var e=[];var a=FT.getVar(this.statefulActiveCardKey,0);if(a>=this.widgets.length){a=0}for(var b=0;b<this.widgets.length;b+=1){var d=this.widgets[b];d.cardIndex=b;d.isSuspendLoad=true;d.listeners=d.listeners||{};d.listeners.activate=Ext.bind(this.onWidgetActivate,this);e.push(this._getWidgetButtonConfig(d,b,a))}this.suspendLayouts();if(this.showToolbar){var c=Ext.create("Ext.toolbar.Toolbar",{cls:"border-bottom",padding:10,height:this.toolbarHeight,defaultButtonUI:"toggle-toolbar",items:e});this.addDocked(c)}this.add(this.widgets);if(this.collapsed){this.on("beforeexpand",function(){this.getLayout().setActiveItem(a)},this,{single:true})}else{this.getLayout().setActiveItem(a)}this.resumeLayouts()},_getWidgetButtonConfig:function(d,b,a){var c={text:d.name||"Unknown widget",cardIndex:b,scale:"medium",toggleGroup:this.id+"-toggle-group",enableToggle:true,allowDepress:false,pressed:b===a,scope:this,handler:function(g){this.getLayout().setActiveItem(g.cardIndex)}};var e=d.record.raw.buttonTourId;if(e){c.tourId=e}return c},onWidgetActivate:function(a){if(a.isSuspendLoad){a.loadAfterInit();a.isSuspendLoad=false}if(this.statefulActiveCardKey){FT.setVar(this.statefulActiveCardKey,a.cardIndex)}}});Ext.define("RAW.BaseWidget",{extend:"RAW.Widget",autoScroll:true,statics:{getDirectCfg:function(d,c,b){var a,e,g;directObj=FTWidget[d];e=Ext.clone(directObj);Ext.iterate(e,function(h,j){g=Ext.Function.pass(j,[{widgetid:c,pushToken:b}]);g.directCfg=j.directCfg;e[h]=g},this);return e}},getApi:function(b){var a=this.pushToken;this._directCache=Ext.value(this._directCache,{});if(!this._directCache[b]){this._directCache[b]=FT.getApi(b,a)}return this._directCache[b]},getDirect:function(a){if(Ext.isString(a)&&!Ext.isEmpty(a)){return this.getApi(a)}return RAW.BaseWidget.getDirectCfg(this.widget_typeid,this.widgetid,this.pushToken)},getSetting:function(a){var c=this.widgetSettings||{};for(var b=0;b<c.length;++b){if(c[b].name===a){return c[b].value}}},loadData:function(){if(this.store){var b=this.getEntity(),c=this.store.getProxy(),a={entityId:b.entityId,entityType:b.entityType};Ext.apply(c.extraParams,a);this.store.load()}},updateWidget:function(){if(this.store){this.loadData()}}});Ext.define("FT.filter.FilterModel",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},allFiltersActive:false,constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this);this.initialFilters=Ext.value(this.initialFilters,[]);this.filters=Ext.value(this.filters,[]);this.quickFilters=Ext.value(this.quickFilters,[]);this.addEvents(["activefilterscleared","availablefilterschanged","activefiltersadded","activefiltersremoved","activefiltersload","rawsettignssaved","activefilterschanged"]);this.on("availablefilterschanged",this.onAvailableFiltersChanged,this);if(!Ext.isDefined(this.availableFilters)){this.availableFilters=Ext.create("Ext.data.Store",{fields:["field","label","type","cfg",{name:"enableAny",defaultValue:true},{name:"hierarchical",defaultValue:false},"group"],proxy:{type:"memory",reader:{type:"json"}}});this.setAvailableFilters(this.filters)}else{this.availableFilters.on("load",function(b){this.setActiveFilters(Ext.pluck(b.data.items,"data"))},this)}this.activeFilters=Ext.create("Ext.data.Store",{fields:["field","fieldId","value",{name:"or",defaultValue:false},"comparison"],proxy:{type:"memory",reader:{type:"json"}}});this.activeFilters.on({datachanged:this.onActiveFiltersChanged,load:this.onActiveFiltersLoad,add:this.onActiveFiltersAdded,remove:this.onActiveFiltersRemove,scope:this});if(this.settingid){this.setActiveFiltersById(this.settingid)}else{this.setActiveFilters(Ext.clone(this.initialFilters))}this.callParent()},clearFilters:function(){if(this.activeFilters.getCount()>0){this.activeFilters.getProxy().data=[];this.activeFilters.load();this.fireEvent("activefilterscleared")}},onActiveFiltersLoad:function(){this.fireEvent("activefiltersload",this,this.activeFilters)},onActiveFiltersChanged:function(){this.fireEvent("activefilterschanged",this,this.activeFilters)},onActiveFiltersAdded:function(b,a){var c=[];Ext.each(a,function(d){var e=this.getFilterDataFromRecord(d);if(e){c.push(e)}},this);this.fireEvent("activefiltersadded",c,this,this.activeFilters)},onActiveFiltersRemove:function(b,a){var c=this.getFilterDataFromRecord(a);this.fireEvent("activefiltersremoved",c,this,this.activeFilters)},setAvailableFilters:function(b){var a=[];this.availableFilters.removeAll(true);Ext.each(b,function(c){a.push({field:c.field,label:c.label,type:c.type,group:c.group,enableAny:c.enableAny,hierarchical:c.hierarchical,cfg:c})},this);this.availableFilters.getProxy().data=a;this.availableFilters.load();this.fireEvent("availablefilterschanged",this.availableFilters)},onAvailableFiltersChanged:function(){},addFilter:function(c,b){var a={field:c,fieldId:Ext.id()+"-"+c,value:""};if(b){a.or="ANY"}this.activeFilters.add(a)},removeFilter:function(b){var a=this.activeFilters.findRecord("fieldId",b.fieldId,0,false,false,true);this.activeFilters.remove(a)},getFilterDataFromRecord:function(b){var c=this.availableFilters.findRecord("field",b.get("field"),0,false,false,true),a;if(c){a=Ext.clone(c.get("cfg"));a.value=b.get("value");a.or=b.get("or");a.comparison=b.get("comparison");a.fieldId=b.get("fieldId");return a}return null},getActiveFilters:function(){var b=[],a;this.activeFilters.each(function(c){a=this.getFilterDataFromRecord(c);if(a){b.push(a)}},this);return b},getActiveFilterFields:function(){return Ext.pluck(Ext.pluck(this.activeFilters.data.items,"data"),"field")},getActiveFilterStore:function(){return this.activeFilters},isFiltersActive:function(){return this.getActiveFilters().length!=0},getFilters:function(){var a=Ext.clone(this.availableFilters.items);return a},getFilterStore:function(){return this.availableFilters},setActiveFilters:function(b){var a=Ext.pluck(b,"field");Ext.each(b,function(d){if(!Ext.isDefined(d.fieldId)){d.fieldId=Ext.id()+"-"+d.field}});if(this.allFiltersActive){var c=[];this.availableFilters.each(function(d){if(a.indexOf(d.get("field"))==-1){b.push({field:d.get("field"),fieldId:Ext.id()+"-"+d.get("field"),value:undefined})}},this)}this.activeFilters.getProxy().data=b;this.activeFilters.load()},setActiveFiltersById:function(c){this.settingid=c;var a=this.rawSettingsStore.findRecord("settingid",c);if(a){var b=Ext.decode(a.get("value"));this.setActiveFilters(b);this.fireEvent("rawsettingactive",a)}},getRawSettingsId:function(){return this.settingid},clearRawSettingsId:function(){delete this.settingid},getRawSettingsStore:function(){return this.rawSettingsStore},saveFilters:function(c,a){if(!Ext.isString(c)||Ext.isEmpty(c)){throw"saveName cannot be empty or undefined"}var b=[];Ext.each(a,function(g,d,e){b.push({name:g.field,value:g.value})},this);this.rawSettingsStore.add({name:c,value:Ext.encode(a)});this.rawSettingsStore.sync({callback:Ext.pass(this.fireEvent,["rawsettignssaved",this.rawSettingsStore,this],this)})}});Ext.ns("FT.filter.mode");FT.filter.mode={QUICK:-1,SAVED:0,CUSTOM:1,EMPTY:2};Ext.define("FT.filter.FieldSet",{alias:["widget.ft-filterset"],extend:"Ext.form.FieldSet",style:{paddingBottom:"0px",border:"0px !important"},hideTitle:false,padding:"10 12 0 12",initComponent:function(){var a=this;if(this.hideTitle){this.title=""}this.titleText=this.title;this.callParent(arguments);this.on({add:this.onItemsChanged,remove:this.onItemsChanged,scope:this});if(!this.hideTitle){this.updateTitle()}},createLegendCt:function(){var c=this,a=[],b={xtype:"container",baseCls:this.baseCls+"-header",id:c.id+"-legend",autoEl:"legend",items:a,ownerCt:c,ownerLayout:c.componentLayout};if(c.checkboxToggle){a.push(c.createCheckboxCmp())}else{if(c.collapsible){a.push(c.createToggleCmp())}}a.push(c.createTitleCmp());if(c.helpText){a.push({xtype:"component",style:"margin-right:25px;display:inline-block;",html:FT.util.getHelp(c.helpText)})}if(c.addFilterButton){a.push(c.addFilterButton)}return b},updateTitle:function(){var a=this.items.getCount(),c,b=this.titleText;if(a>0){b+=" ("+a+"  filter"+(a==1?"":"s")+")"}else{b+=" (no filters)"}this.setTitle(b)},onItemsChanged:function(){if(!this.hideTitle){this.updateTitle()}}});Ext.define("FT.filter.Filter",{extend:"Ext.form.Panel",mode:"horizontal",filtersExpand:false,filtersExpandHeight:300,filtersCollapseHeight:36,enableTextField:true,overflowY:"visible",autoLoadStore:true,enableEmpty:false,freeFilterText:null,hideFieldsetTitle:false,getFreeFilterText:function(){if(this.freeFilterText===null){return""}return"Type to filter on "+this.freeFilterText},onAvailableFiltersChanged:function(){this.renderFilters()},notifyListeners:function(){var a=this.getFilterSettings();var b=this.getRawFilterSettings();this.fireEvent("filterschanged",{filterSettings:a,rawFilterSettings:b,filterField:this.filterField.getValue(),filterId:this.filterModel.getRawSettingsId()})},initComponent:function(){this.setMode(FT.filter.mode.EMPTY);if(this.store){this.bindStore(this.store)}if(this.quickFilters){this.quickFilters.on("filterschanged",this.onQuickFiltersChanged,this)}this.delayedFilterFieldChanged=new Ext.util.DelayedTask(this.onfilterFieldChanged,this);this.defaults=Ext.value(this.defaults,{});Ext.apply(this.defaults,{});this.height=this.filtersExpand?this.filtersExpandHeight:this.filtersCollapseHeight;this.filters=Ext.value(this.filters,[]);this.filterModel.on({activefilterschanged:this.onActiveFiltersChanged,activefiltersload:this.onActiveFiltersLoad,activefiltersadded:this.onActiveFiltersAdded,activefiltersremoved:this.onActiveFiltersRemoved,availablefilterschanged:this.onAvailableFiltersChanged,activefilterscleared:this.onActiveFiltersCleared,rawsettingactive:this.onRawSettingActive,scope:this});this.on({modechanged:this.onModeChanged,scope:this});var c=this;this.addEvents("filterschanged","filterdataupdated");this.filterField=Ext.create("Ext.form.field.Text",{emptyText:FT.i18n("Type to filter..."),inputAttrTpl:'data-qtip="'+this.getFreeFilterText()+'"',listeners:{change:function(){this.delayedFilterFieldChanged.delay(500)},scope:this}});var a;if(Ext.isDefined(this.filterModel.getRawSettingsStore())){this.filterModel.getRawSettingsStore().on("datachanged",function(g){g.getCount()==0?a.disable():a.enable()});this.filterBtn=Ext.create("FT.button.Selector",{ui:"default",itemType:"radio",glyph:FT.glyph("filter"),text:FT.i18n("Filters"),disableIfEmpty:false,emptyText:FT.i18n("No saved filters"),store:this.filterModel.getRawSettingsStore(),selectHandler:function(k,g,h,j){this.setFiltersById(g.get("settingid"))},scope:this,displayField:"name",valueField:"name",beforeItems:[{text:FT.i18n("Build filters"),handler:this.toggleFilterPanel,scope:this},a=Ext.create("Ext.menu.Item",{text:FT.i18n("Manage filters"),handler:function(){var g=FT.ManagerFactory.create("filters",{activeStoreId:this.filterModel.getRawSettingsStore().storeId,activeId:this.filterModel.getRawSettingsId()});g.on("save",this.onFilterManagerSaved,this)},disabled:this.filterModel.getRawSettingsStore().getCount()==0,scope:this}),{text:FT.i18n("Clear"),handler:function(){var g=this;g.setMode(FT.filter.mode.EMPTY);g.filterModel.setActiveFilters([]);g.notifyListeners()},scope:this},"-"]})}if(!Ext.isDefined(this.tbar)){var e=[];if(this.enableTextField){e.push(this.filterField)}if(this.quickFilters){e=e.concat(this.quickFilters.getItems())}e.push("->",this.filterBtn);this.tbar=Ext.create("Ext.toolbar.Toolbar",{defaultButtonUI:"plain-toolbar",items:e})}this._bbar=Ext.create("Ext.toolbar.Toolbar",{dock:"bottom",items:[{xtype:"button",text:FT.i18n("Save filter"),handler:this.onSaveFilter,scope:this},"->",{xtype:"button",text:FT.i18n("Close"),handler:function(){this.toggleFilterPanel()},scope:this},{xtype:"button",cls:"button-primary",text:FT.i18n("Apply"),handler:this.applyFilters,scope:this}]});var b={isRemoveable:this.enableRemove};var d;this.items=[];if(this.enableAdd){d=this.addButtonAll=Ext.widget("ft-selector",{text:FT.i18n("Add condition"),displayField:"label",valueField:"field",selectAction:false,sortItems:true,value:this.filterModel.getActiveFilterFields(),store:this.filterModel.getFilterStore(),selectHandler:function(k,g,h,j){this.filterModel.addFilter(k);this.activeFiltersChangedByUser=true},scope:this});if(this.enableAny){this.items=this.items.concat([this.fieldsAny=Ext.widget("ft-filterset",{helpText:FT.i18n("Any of the filters must be matched."),title:'"Any" Conditions',defaults:b,hideTitle:c.hideFieldsetTitle,addFilterButton:this.addButtonAny=Ext.widget("ft-selector",{text:FT.i18n("Add condition"),displayField:"label",valueField:"field",selectAction:false,sortItems:true,cls:"ft-add-condition-btn ft-link-btn",value:this.filterModel.getActiveFilterFields(),store:this.filterModel.getFilterStore(),listeners:{beforebuttonadd:function(g){return g.get("enableAny")!==false}},selectHandler:function(k,g,h,j){this.filterModel.addFilter(k,true);this.activeFiltersChangedByUser=true},scope:this})})])}}this.fieldsAll=Ext.widget("ft-filterset",{title:'"All" Conditions',hideTitle:c.hideFieldsetTitle,helpText:FT.i18n("All of the filters must be matched."),defaults:b,addFilterButton:d});Ext.Array.insert(this.items,0,[this.fieldsAll]);this.callParent(arguments);this.on({filterschanged:function(g){if(this.store&&this.autoLoadStore){this.store.load()}}},this);this.renderFilters()},applyFilters:function(a){a=Ext.isDefined(a)?a:true;if(a){if(this.isDirty()){this.setMode(FT.filter.mode.CUSTOM)}if(this.filterModel.getActiveFilters().length==0){this.setMode(FT.filter.mode.EMPTY)}}this.notifyListeners()},onfilterFieldChanged:function(){if(this.store&&this.store.isLoading()){this.delayedFilterFieldChanged.delay(500)}this.notifyListeners()},onQuickFiltersChanged:function(){this.notifyListeners()},onFilterManagerSaved:function(){var b=this.filterModel.getRawSettingsId(),a=this.rawSettingsStore?this.filterModel.getRawSettingsStore():undefined;if(Ext.isDefined(a)){a.on("load",function(){var c=a.findRecord("settingid",b);if(c){this.filterBtn.select(c.get("name"));this.setLabel(c.get("name"))}else{this.filterModel.clearFilters();this.setMode(FT.filter.mode.EMPTY)}},this,{single:true})}},setMode:function(b,a){this.mode=b;if(this.mode==FT.filter.mode.EMPTY){this.removeLabel()}else{if(this.mode==FT.filter.mode.CUSTOM){a="Custom filter"}this.setLabel(a)}if(this.mode!=FT.filter.mode.SAVED){this.filterModel.clearRawSettingsId()}this.fireEvent("modechanged",this.mode)},getMode:function(){return this.mode},resetDirty:function(){this.activeFiltersChangedByUser=false;this.items.each(function(a){if(Ext.isFunction(a.resetOriginalValue)){a.resetOriginalValue()}},this)},isDirty:function(){return this.getForm().isDirty()||this.activeFiltersChangedByUser},setLabel:function(c){var b,a;if(this.getMode()!=FT.filter.mode.EMPTY){this.toggleHighlightButton(true);c="<b>"+c+"</b>"}else{this.toggleHighlightButton(false)}if(this.rendered){this.filterBtn.setText(c)}else{this.filterBtn.text=c}},toggleHighlightButton:function(a){if(a){if(this.rendered){this.filterBtn.removeButtonCls("ftrack-button-grey");this.filterBtn.setButtonCls(["ft-filter-highlight"])}else{this.filterBtn.cls="toolbar-button-highlight border-lighter"}}else{if(this.rendered){this.filterBtn.removeButtonCls(["ft-filter-highlight"]);this.filterBtn.setButtonCls("ftrack-button-grey")}else{this.filterBtn.cls="ftrack-button-grey"}}},removeLabel:function(){if(this.filterField&&this.rendered){this.filterBtn.setText(FT.i18n("Filters"));this.toggleHighlightButton(false)}},bindStore:function(a){this.store=a;this.store.on("beforeload",function(){Ext.apply(this.store.getProxy().extraParams,{filter:this.getFilterSettings(),filterField:this.filterField.getValue()})},this)},toggleFilterPanel:function(){if(!this._bbar.rendered){this.addDocked(this._bbar,1)}else{this._bbar.isHidden()?this._bbar.show():this._bbar.hide()}this.filtersExpand=!this.filtersExpand;var a=this.filtersExpand?this.filtersExpandHeight:this.filtersCollapseHeight;this.setHeight(a)},onRawSettingActive:function(a){this.resetDirty();this.setMode(FT.filter.mode.SAVED,a.get("name"))},onModeChanged:function(a){if(a!=FT.filter.mode.QUICK){this.resetQuickFilters()}if(a!=FT.filter.mode.SAVED){this.filterBtn.select()}},createFilters:function(c){var d,b,a;listeners={removeclicked:this.onRemoveFilterClicked,specialkey:this.onSpecialKey,scope:this};if(!Ext.isArray(c)){c=Ext.decode(c)}else{c=Ext.clone(c)}Ext.each(c,function(h,g,e){d="filter-"+h.type;b=Ext.ClassManager.getByAlias("widget."+d);if(!b){log("Filter with doesn't "+d+" exist");return}a="";if(h.group){a='<span class="ft-filtergroup"> ('+h.group+")</span>"}h.label=FT.util.string.cleanAttributeName(h.label)+a;h.xtype=d;h.labelWidth=150;h.labelSeparator="";h.filterbox=this;h.mode=this.mode;h.margin=h.margin||"0 0 5 3";h.enableEmpty=this.enableEmpty;if(Ext.isDefined(h.listeners)){Ext.apply(h.listeners,listeners)}else{h.listeners=listeners}if(Ext.isDefined(h.help)){h.afterLabelTextTpl=FT.util.getHelp(h.help)}},this);return c},onRemoveFilterClicked:function(a){this.filterModel.removeFilter(a);this.activeFiltersChangedByUser=true},onSpecialKey:function(b,a){if(a.getKey()==a.ENTER){this.applyFilters()}},addAddFiltersButton:function(){},renderFilters:function(){this.filters=this.createFilters(this.filterModel.getActiveFilters());this.suspendLayout=true;if(this.enableAny){this.fieldsAny.removeAll(true)}this.fieldsAll.removeAll(true);this.suspendLayout=false;this.addFilters(this.filters)},addFilters:function(e){var d=e.length,a=0,g=[],c=[],b;for(;a<d;a++){b=e[a];if(b.or){g.push(b)}else{c.push(b)}}if(this.enableAny){this.fieldsAny.add(g)}this.fieldsAll.add(c)},onActiveFiltersAdded:function(b){var a=this.createFilters(b);this.filters.concat(a);this.addFilters(a)},onActiveFiltersRemoved:function(a){var b=this.getAllFilterComponents(),c=null;Ext.each(b,function(d){if(d.fieldId==a.fieldId){c=d}});if(c){c.ownerCt.remove(c,true)}},onActiveFiltersCleared:function(){this.setMode(FT.filter.mode.EMPTY)},onActiveFiltersLoad:function(){this.renderFilters()},onActiveFiltersChanged:function(a){if(this.addButton){this.addButton.select(this.filterModel.getActiveFilterFields())}},getAllFilterComponents:function(){var a=[];if(this.enableAny){a=a.concat(this.fieldsAny.items.items)}a=a.concat(this.fieldsAll.items.items);return a},getQuickFilters:function(){return this.quickFilters?this.quickFilters.getFilterData():[]},getFilterSettings:function(){var a=this.getRawFilterSettings();a=a.concat(this.getQuickFilters());return Ext.encode(a)},getRawFilterSettings:function(){var b=[],c=this.getAllFilterComponents(),a;Ext.each(c,function(d){if(Ext.isFunction(d.getSettings)){a=d.getSettings();assert(Ext.isObject(a),"filter must be an object");if(a.value===null||a.allowEmpty||!Ext.isEmpty(a.value)){b.push(a)}}},this);return b},setFiltersById:function(a){this.filterModel.setActiveFiltersById(a);this.notifyListeners();this.activeFiltersChangedByUser=false},setFilters:function(b,c,a){if(!c){if(b.length>0){c=FT.filter.mode.CUSTOM}else{c=FT.filter.mode.EMPTY}}a=Ext.value(a,"");this.setMode(c,a);b=Ext.isArray(b)?b:[b];this.filterModel.setActiveFilters(b);this.notifyListeners()},resetQuickFilters:function(){},onSaveFilter:function(){var a;var b=Ext.create("FT.ModalWindow",{width:350,height:175,title:FT.i18n("Save filter"),autoShow:true,draggable:false,modal:true,resizable:false,items:[a=Ext.widget("textfield",{fieldLabel:FT.i18n("Name"),allowBlank:false,margin:"10 25 25 50",labelWidth:50,width:250,listeners:{afterrender:function(){var c=this;setTimeout(function(){c.focus()},100)}}})],bbar:Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),handler:function(){this.up("window").close()}},{xtype:"button",text:FT.i18n("Save"),cls:"button-primary",handler:function(){var c=a.getValue();if(Ext.isString(c)&&!Ext.isEmpty(c)){this.filterModel.saveFilters(c,this.getRawFilterSettings());this.setMode(FT.filter.mode.SAVED,c)}this.filterModel.on("rawsettignssaved",function(){this.filterBtn.select(c);b.close()},this,{single:true})},scope:this}]})})}});Ext.define("FT.filter.LabelExtras",{constructor:function(){var a='<div style="float:left;">';if(this.isRemoveable){this.removeId=this.fieldId;a+=this.getRemoveMarkup()}a+="</div>";this.invertDirty=false;this.items=[{xtype:"component",html:a}];this.on("afterrender",this.gatherElements,this)},getRemoveMarkup:function(){return'<span id="'+this.fieldId+'" style="display:inline-block;margin:5px 0px 0px 25px;cursor:pointer;color:#3C79D5;">Remove</span>'},getInvertMarkup:function(){var a=this.invert?"background:url('/resources/checked.gif') 0px 0px;":"background:url('/resources/unchecked.gif')  0px 0px;";return'<div id="'+this.invertId+'" style="'+a+'margin-bottom:-3px;cursor:pointer;width:16px;height:16px;display:inline-block;"></div> invert'},gatherElements:function(){if(this.invertId){this.invertEl=this.el.getById(this.invertId);this.invertEl.on("click",this.toggleInvert,this)}if(this.removeId){this.removeEl=this.el.getById(this.removeId);if(this.removeEl!=null){this.removeEl.on("click",this.onRemoveClicked,this)}}},onRemoveClicked:function(){this.fireEvent("removeclicked",this)},isInvertDirty:function(){return this.invertDirty},resetInvertDirty:function(){this.invertDirty=false},toggleInvert:function(){this.invert=!this.invert;this.invertEl.applyStyles(this.invert?"background:url('/resources/checked.gif') 0px 0px;":"background:url('/resources/unchecked.gif')  0px 0px;");this.invertDirty=true}});Ext.define("FT.filter.MultiFieldMixin",{constructor:function(){this.callParent()},getSubFields:function(g,a){a=a||{};var d,c=[],e,b;b=Ext.create("Ext.data.Store",{fields:["key","name"],data:[{key:"lt",name:FT.i18n("is less than")},{key:"gt",name:FT.i18n("is greater than")},{key:"eq",name:FT.i18n("contains")},{key:"neq",name:FT.i18n("does not contain")},{key:"is",name:FT.i18n("is")},{key:"isnt",name:FT.i18n("is not")}]});e={xtype:"combo",store:b,displayField:"name",valueField:"key",value:this.comparison};c.push(e);d={labelWidth:14,labelSeparator:"",width:120,margin:"0 20 0 0",xtype:g};Ext.apply(d,a);c.push(d);return c},getLabelByType:function(a){return a}});Ext.define("FT.filter.BaseFilter",{extend:"Ext.form.FieldContainer",alias:"widget.filter-base",mixins:{multi:"FT.filter.MultiFieldMixin",extras:"FT.filter.LabelExtras"},disableComparison:false,hideComparison:false,enableEmpty:true,layout:"hbox",initComponent:function(){this.mixins.extras.constructor.call(this);var d,c=this.items,h,b,a,g=this.getAllComparisons(),e=Ext.pluck(g,"key");if(!this.hideComparison){assert(g.length>0,"Filter must allow at least one comparison")}a=this.getFieldConfig();if(Ext.isDefined(this.value)&&!Ext.isEmpty(this.value)){a.value=this.value}b=Ext.create("Ext.data.Store",{fields:["key","name"],data:g});d={labelWidth:14,labelSeparator:"",itemId:"filterField",margin:"0 20 0 0",style:"float:left;"};Ext.apply(d,a);Ext.Array.insert(c,0,[d]);if(!this.hideComparison){h={xtype:"combo",store:b,displayField:"name",itemId:"comparison",valueField:"key",value:e.indexOf(this.comparison)!=-1?this.comparison:g[0].key,width:125,margin:"0 10 0 0",editable:false,style:"float:left;margin-bottom:0px;",disabled:this.disableComparison,listeners:{select:function(j){if(j.getValue()=="set"||j.getValue()=="nset"){this.disableValueItems()}else{this.enableValueItems()}},scope:this}};Ext.Array.insert(c,0,[h]);this.fieldLabel=this.label}this.items=c;this.callParent(arguments)},disableValueItems:function(){var a=this.items.getAt(1);if(a&&a.disable){a.disable()}},enableValueItems:function(){var a=this.items.getAt(1);if(a&&a.enable){a.enable()}},getAllComparisons:function(){var c,d,a=0,e=[];c=[{key:"lt",name:"is less than"},{key:"gt",name:FT.i18n("is greater than")},{key:"eq",name:FT.i18n("contains")},{key:"neq",name:FT.i18n("does not contain")},{key:"is",name:FT.i18n("is")},{key:"isnt",name:FT.i18n("is not")}];if(this.enableEmpty){c.push({key:"nset",name:FT.i18n("is empty")});c.push({key:"set",name:FT.i18n("is not empty")})}d=c.length;for(;a<d;a++){var b=c[a].key;if(!this.keys||this.keys.indexOf(b)!=-1){e.push(c[a])}}return e},getComparison:function(){var a=this.getComponent("comparison");assert(a,"comparison combo must be defined");return a.getValue()},getValue:function(){var a=this.getComponent("filterField");assert(a,"filterField must be defined");return a.getSubmitValue()},getExtraSettings:function(){return{}},getSettings:function(){var b=this.getValue(),a,d=this.getComparison();a={type:this.type,or:this.or,comparison:d,value:b===null?"":b,field:this.field,allowEmpty:d=="set"||d=="nset",hierarchical:this.hierarchical,format:"Y-m-d"};Ext.apply(a,this.getExtraSettings());return a}});Ext.define("FT.filter.ComboBox",{extend:"Ext.form.field.ComboBox",alias:"widget.filter-combo",queryMode:"local",displayField:"name",valueField:"id",editable:false,invert:false,mixins:{extras:"FT.filter.LabelExtras"},initComponent:function(){this.mixins.extras.constructor.call(this);this.fieldLabel=this.label;this.store={fields:!Ext.isDefined(this.data)?["id","name"]:this.storeFields};this.callParent(arguments);if(this.data){this.store.loadData(this.data)}},getSettings:function(){return{or:this.or,type:"list",value:[this.getValue()],field:this.field,invert:this.invert}}});Ext.define("FT.filter.Date",{alias:"widget.filter-date",extend:"FT.filter.BaseFilter",keys:["is","isnt","lt","gt","set","nset"],getFieldConfig:function(){return{xtype:"datefield",format:"Y-m-d",startDay:1,altFormats:"Y-m-dTH:i:s|Y-m-d H:i:s|c"}}});Ext.define("FT.filter.DateRange",{extend:"FT.filter.BaseFilter",alias:"widget.filter-date-range",mixins:{extras:"FT.filter.LabelExtras"},keys:["is","isnt"],initComponent:function(){this.items=Ext.isDefined(this.items)?this.items:[];this.mixins.extras.constructor.call(this);this.fieldConfig={xtype:"container",layout:"hbox",items:[{xtype:"datefield",format:"Y-m-d",startDay:1},{xtype:"label",text:"-",padding:"3 5 0 5"},{xtype:"datefield",format:"Y-m-d",startDay:1}]};this.callParent(arguments)},getFieldConfig:function(){return this.fieldConfig},getValue:function(){var a=[this.items.get(1).items.get(0).getValue(),this.items.get(1).items.get(2).getValue()];if(a[0]==null&&a[1]==null){a=null}return a}});Ext.define("FT.filter.Text",{alias:["widget.filter-textfield","widget.filter-string"],extend:"FT.filter.BaseFilter",keys:["is","isnt","eq","neq","set","nset"],getFieldConfig:function(){return{xtype:"textfield"}}});Ext.define("FT.filter.UserEditor",{extend:"FT.filter.BaseFilter",alias:["widget.filter-usereditor","widget.filter-superbox"],keys:["is","isnt","set","nset"],getFieldConfig:function(){this.type="list";return{xtype:FT.isLegacyResourceSelectorEnabled?"ft-resource-editor-legacy":"ft-resource-editor",emptyText:this.emptyText,autoLoad:true,width:300}},getValue:function(){var a=this.callParent();return a!=""?a.split(", "):""}});Ext.define("FT.filter.Numeric",{alias:"widget.filter-numeric",extend:"FT.filter.BaseFilter",keys:["is","isnt","lt","gt","set","nset"],getFieldConfig:function(){return{xtype:"numberfield"}}});Ext.define("FT.filter.List",{alias:"widget.filter-list",extend:"FT.filter.BaseFilter",multiSelect:true,emptyText:"",displayField:"name",valueField:"id",keys:["is","isnt","set","nset"],getFieldConfig:function(){var b=this,a;if(Ext.isDefined(this.store)){a=this.store}else{a=Ext.create("Ext.data.ArrayStore",{autoDestroy:true,data:this.options,idIndex:0,fields:[this.valueField,this.displayField]})}if(this.data){a.loadData(this.data)}return{xtype:"ft-labeleditor",queryMode:"local",displayField:this.displayField,valueField:this.valueField,store:a,multiSelect:this.multiSelect,emptyText:this.emptyText,width:300,listeners:{change:function(){b.fireEvent("change",b)}}}},getValue:function(){var a=this.callParent(arguments);return Ext.isEmpty(a)?"":a.split(", ")}});Ext.define("FT.filter.Boolean",{alias:"widget.filter-boolean",extend:"FT.filter.BaseFilter",mixins:{extras:"FT.filter.LabelExtras"},keys:["is","isnt"],getFieldConfig:function(){var b=this,a;var a=Ext.create("Ext.data.Store",{data:[{name:FT.i18n("True"),value:true},{name:FT.i18n("False"),value:false}],fields:["name","value"]});return{xtype:"combo",queryMode:"local",displayField:"name",valueField:"value",store:a,autoSelect:true,queryMode:"local",value:Ext.isDefined(this.value)?this.value:true,allowBlank:false,forceSelection:true}},getExtraSettings:function(){return{strict:this.strict}}});Ext.define("FT.filter.Month",{extend:"FT.filter.BaseFilter",alias:"widget.filter-month",keys:["is"],getFieldConfig:function(){return{xtype:"monthfield",maxValue:new Date,editable:false,format:"F Y",altFormats:"F Y d",submitFormat:"Y-m-d",value:new Date}}});Ext.define("FT.filter.RunBox",{extend:"FT.filter.Filter",bodyPadding:"10 0 0",filtersCollapseHeight:"auto",hideFieldsetTitle:true,tbar:null,initComponent:function(){var a=this;this.filterModel=Ext.create("FT.filter.FilterModel",{filters:this.filters,allFiltersActive:true});this.bbar=Ext.create("Ext.toolbar.Toolbar",{padding:10,items:[{cls:"button-primary",action:"save",text:FT.i18n("Run"),margin:"0 0 0 550",handler:function(){a.applyFilters(false)}}]});this.callParent(arguments)}});Ext.define("FT.ui.MorePager",{extend:"Ext.toolbar.Paging",alias:"widget.morepager",dock:"bottom",displayInfo:false,noteView:this,pageSize:10,currentPageSize:0,initComponent:function(){this.showMoreButton=Ext.widget("ftrack-button",{textAlign:"center",text:FT.i18n("Show more"),itemId:"showButton",handler:this.onShowMore,scope:this});if(Ext.isDefined(this.showRefreshButton)){this.showMoreButton.setWidth(250);this.extraItems=Ext.value(this.extraItems,["->"])}this.refreshButton=Ext.widget("ftrack-button",{icon:"refresh",textAlign:"center",handler:function(){this.store.loadPage(1)},scope:this,tooltip:"Refresh",tooltipType:"title"});this.pagingItemsObj={showMoreButton:this.showMoreButton,refreshButton:this.refreshButton};this.callParent()},onShowMore:function(){this.store.nextPage({addRecords:true})},setButtonCls:function(){this.showMoreButton.removeButtonCls("ftrack-button-grey");this.showMoreButton.setButtonCls("ftrack-button-darkgrey");this.refreshButton.removeButtonCls("ftrack-button-grey");this.refreshButton.setButtonCls("ftrack-button-darkgrey")},getPagingItems:function(){var b=[];var a=[];if(Ext.isDefined(this.pagingItems)){Ext.each(this.pagingItems,function(c){b.push(this.pagingItemsObj[c])},this);a=b}else{b=["->",this.pagingItemsObj.showMoreButton,"->"];if(Ext.isDefined(this.showRefreshButton)){b.push(this.pagingItemsObj.refreshButton);b=b.concat(this.extraItems);a=Ext.Array.insert(b,0,["->"])}else{a=b}}return a},onLoad:function(){var e=this,d,b,c,a;d=e.getPageData();b=d.currentPage;c=d.pageCount;if(b<c){e.showMoreButton.enable()}else{e.showMoreButton.disable()}e.updateInfo();e.fireEvent("change",e,d)}});Ext.ns("FT.util.Format");FT.util.Format.floatToTime=function(e){var a=Math.round(Math.abs(e)*60),c=e<0?"-":"",b=Math.floor(a/60),d=a%60;return c+b+":"+Ext.String.leftPad(d,2,"0")};FT.util.Format.day=function(b){var a={sameDay:"["+FT.i18n("Today")+"]",nextDay:"["+FT.i18n("Tomorrow")+"]",nextWeek:function(c){return"["+Ext.Date.format(b.toDate(),"l, F d")+"]"},lastDay:"["+FT.i18n("Yesterday")+"]",lastWeek:function(c){return"["+Ext.Date.format(b.toDate(),"l, F d")+"]"},sameElse:function(c){return"["+Ext.Date.format(b.toDate(),"l, F d")+"]"}};return b.calendar(null,a).split(" at ")[0]};FT.util.Format.timeToFloat=function(c){if(String(c).indexOf(":")!=-1){var a=String(c).split(":",2);if(a.length==2){var b=Ext.Date.add(new Date(0),Ext.Date.MINUTE,a[1]);if(parseFloat(a[0])){b=Ext.Date.add(b,Ext.Date.HOUR,parseFloat(a[0]))}c=b.getTime()/1000/60/60}else{c=String(c).replace(":","")}}return c};FT.util.Format.stringToColor=function(c,e){validateColor=function(g){if(g!=null&&g!=""){if((g.length==6||g.length==3)&&g[0]!="#"){g="#"+g}var d=Ext.draw.Color.fromString(g);if(d){return d}else{return null}}else{return null}};var b=validateColor(e);var a=validateColor(c);if(a){return a}else{if(b){return b}else{return Ext.draw.Color.fromString("#CCC")}}};FT.util.Format.textColorFromColor=function(a){var d=a,c=175,e="rgba(0, 0, 0, 0.8)",b="rgba(255, 255, 255, 0.8)";if(!FT.util.Format.textColorFromColor.textColors[d]){if(Ext.isString(a)){a=FT.util.Format.stringToColor(a)}if(!(a instanceof Ext.draw.Color)){FT.util.Format.textColorFromColor.textColors[d]=e}else{FT.util.Format.textColorFromColor.textColors[d]=a.getGrayscale()>c?e:b}}return FT.util.Format.textColorFromColor.textColors[d]};FT.util.Format.textColorFromColor.textColors={};FT.util.Format.capitalize=function(){var b=/(^|[^\w])([a-z])/g,a=function(d,e,c){return e+c.toUpperCase()};return function(c){return c.toLowerCase().replace(b,a)}}();FT.util.Format.keyValueToStoreData=function(e){var c=[];var a=e.split("\n");if(a.length%2!=0){Ext.Error.raise("This is not a key value string")}for(var b=0;b<a.length;b+=2){var g=Ext.String.trim(a[b]);var d=Ext.String.trim(a[b+1]);if(Ext.isEmpty(g)){Ext.Error.raise("menu cannot be empty")}c.push({value:d,menu:g})}return c};FT.util.Format.markdownDefault=function(h,g,c,j){var b=h.substring(g.start,g.end),d=c.length,e,a;if(b.length===0){b=j}if(h.substr(g.start-d,d)==c&&h.substr(g.end,d)==c){g.start-=d;g.end+=d;e=g.start;a=g.start+b.length}else{b=c+b+c;e=g.start+d;a=e+b.length-d*2}newContent=h.substring(0,g.start)+b+h.substring(g.end,h.length);return{value:newContent,selection:{start:e,end:a}}};FT.util.Format.markdownHeader=function(d,b,a,g){var e=d.substring(b.start,b.end),c=a.length,j,k,h=d.substr(b.start-1,1);if(e.length===0){e=g}if((pointer=2,d.substr(b.start-pointer,a.length)==a)||(pointer=1,d.substr(b.start-pointer,a.length)==a)){b.start-=pointer;j=b.start;k=b.end-pointer}else{if(!!h&&h!="\n"){e="\n\n"+a+" "+e+"\n";j=b.start+c+3;k=j+e.length-5}else{e=a+" "+e+"\n";j=b.start+c+1;k=j+e.length-3}}newContent=d.substring(0,b.start)+e+d.substring(b.end,d.length);return{value:newContent,selection:{start:j,end:k}}};FT.util.Format.markdownList=function(g,c,a,j){var h=g.substring(c.start,c.end),d=a.length,l,m,k=g.substr(c.start-2,2);if(h.length===0){h=a+" "+j;l=c.start+a.length+1;m=l+h.length}else{if(h.indexOf("\n")<0){h=a+" "+h}else{var b=[],e=h.split("\n");Ext.Array.each(e,function(p,n,o){b.push(a+" "+p)});h="";if(!!k&&k!="\n\n"){h+="\n\n"}h+=b.join("\n")}}newContent=g.substring(0,c.start)+h+g.substring(c.end,g.length);return{value:newContent,selection:{start:l,end:m}}};Ext.ns("FT.util.string");FT.util.string.cleanAttributeName=function(b){if(b&&Ext.isString(b)){var c=b.search(">");var a=b.length;b=b.substr(c+1,a)}return b};Ext.define("FT.button.Button",{extend:"Ext.button.Button",alias:"widget.ftrack-button",defaultCls:"ftrack-button-grey",tooltipType:"title",initComponent:function(){var a={style:{}};if(!Ext.isDefined(this.text)){this.isOnlyIconButton=true}if(Ext.isDefined(this.icon)){a.style["paddingLeft"]="8px";if(this.isOnlyIconButton){a.style["paddingRight"]="8px"}}if(Ext.isDefined(this.belongsToGroup)){a.style["marginRight"]="0px"}Ext.apply(this,a);this.callParent(arguments);if(Ext.isDefined(this.belongsToGroup)){this.on("afterrender",function(){var b=Ext.select("."+(this.cls.indexOf(" ")!=-1?this.cls.substr(0,this.cls.indexOf(" ")):this.cls));b.each(function(e,g,d){if(d==0){e.addCls("ftrack-toolbarbuttongroup-first")}else{if(d!=0&&d!=g.getCount()-1){e.addCls("ftrack-toolbarbuttongroup")}else{if(d==g.getCount()-1){e.addCls("ftrack-toolbarbuttongroup-last")}}}})},this)}this.addCls("unselectable-text");this.setButtonText();this.setButtonIcon()},setButtonText:function(){if(!Ext.isDefined(this.text)){var a="";if(Ext.isDefined(this.action)){switch(this.action){case"save":a="Save";break;case"cancel":a="Cancel";break;case"delete":a="Delete";break}}this.setText(a)}},setButtonIcon:function(){if(Ext.isDefined(this.icon)){var a="";switch(this.icon){case"toolbar-icons":a="/resources/icons/toolbar-icons.png";break;case"reply":a="/img/reply.png";break;case"export":a="/resources/icons/export.png";break;case"import":a="/resources/icons/import.png";break;case"create":a="/resources/icons/create.png";break;case"save":a="/resources/icons/save.png";break;case"cancel":a="/resources/icons/trash.png";break;case"undo":a="/resources/icons/undo.png";break;case"redo":a="/resources/icons/redo.png";break;case"copy":a="/resources/icons/copy.png";break;case"paste":a="/resources/icons/paste.png";break;case"gantt":a="/resources/icons/gantt.png";break;case"task":a="/resources/icons/grid.png";break;case"people":a="/resources/icons/people.png";break;case"pane-east":a="/resources/icons/pane-east.png";break;case"pane-north":a="/resources/icons/pane-north.png";break;case"pane-south":a="/resources/icons/pane-south.png";break;case"arrow-left-large":a="/resources/arrow-left-large.png";break;case"arrow-right-large":a="/resources/arrow-right-large.png";break;case"view":a="/resources/icons/eye.png";break;case"configure":a="/resources/icons/configure.png";break;case"refresh":a="/ext41/resources/themes/images/gray/grid/refresh.gif";break;case"lists":a="/resources/icons/lists.png";break;case"panes":a="/resources/icons/panes.png";break;default:a=this.icon;break}this.setIcon(a)}},removeButtonCls:function(a){this.removeCls(a)},setButtonCls:function(a){if(Ext.isDefined(a)){this.addCls(a)}else{var a=this.defaultCls;if(Ext.isDefined(this.action)){switch(this.action){case"save":a="button-primary";break;case"delete":a="button-danger";break;default:a=this.defaultCls}}this.addCls(a)}},getTemplateArgs:function(){var a=this.callParent(arguments);Ext.apply(a,{iconStyle:this.iconStyle,iconType:this.iconType});return a},setQtip:function(b){var a=this;if(a.rendered){if(Ext.isObject(b)){Ext.tip.QuickTipManager.register(Ext.apply({target:a.btnEl.id},b));a.qtip=b}else{a.btnEl.dom.setAttribute("data-qtip",b)}}else{a.qtip=b}return a}});Ext.define("FT.button.ButtonOld",{extend:"Ext.button.Button",alias:"widget.ft-button"});Ext.define("FT.button.Selector",{extend:"FT.button.Button",btnTpl:false,alias:"widget.ft-selector",itemType:"button",itemXtype:"menuitem",selectfirst:false,selectAction:"hide",disableIfEmpty:true,groupField:"group",hasBeenVisible:false,setTextToName:false,setArrayValueAsName:false,menuSorter:{property:"text",direction:"asc",transform:function(a){if(!Ext.isString(a)){return}return a.toUpperCase()}},disabledField:null,initComponent:function(){if(Ext.isString(this.store)){this.store=FT.util.copyStore(this.store)}if(Ext.isArray(this.store)){this.store=Ext.create("Ext.data.ArrayStore",{fields:["value","key"],data:this.store});this.valueField="value";this.displayField="key"}this.menuItemSorter=new Ext.util.Sorter(this.menuSorter);this.beforeItems=Ext.value(this.beforeItems,[]);this.menu=this.menu||{};Ext.apply(this.menu,{items:Ext.clone(this.beforeItems)});if(this.menu.items.length==0){this.menu.items.push(this.placeHolder=Ext.widget({text:"",xtype:"menuitem"}))}this.addEvents("beforebuttonadd","beforemenuitemsadd");this.setValue(Ext.value(this.value,[]));if(!Ext.isDefined(this.store)){throw"FT.button.Selector needs a store to be set in config"}this.itemXtype=this.itemType=="button"?this.itemXtype:"menucheckitem";if(Ext.isString(this.btnTpl)){this.btnTpl=new Ext.XTemplate(this.btnTpl)}this.callParent(arguments);this.valueField=Ext.value(this.valueField,this.displayField);this.registerMenuClickListeners();if(Ext.isObject(this.store)&&!Ext.isFunction(this.store.callParent)){this.store=Ext.create("Ext.data.Store",this.store)}this.store.on({load:this.storeChanged,datachanged:this.storeChanged,scope:this});this.store.on({load:this.storeChanged,scope:this});this.menu.on("beforeshow",this.onBeforeMenuShow,this)},onBeforeMenuShow:function(){if(!this.hasBeenVisible){this.doGenerateMenu()}this.hasBeenVisible=true},registerMenuClickListeners:function(){this.menu.on("click",function(d,b){if(Ext.isDefined(b)&&b.getXType()!="menuseparator"){if(!b.record){}else{if(this.itemType==="radio"){this.deselectElse(b.record.get(this.valueField))}if((!Ext.isDefined(b.disabled)||!b.disabled)&&Ext.isDefined(this.selectHandler)){this.selectHandler.call(Ext.value(this.scope,this),b.record.get(this.valueField),b.record,this.store,b.checked)}if(this.itemType==="checkbox"){var a=b.record.get(this.valueField);this.setValue(Ext.Array.remove(this.value,a));if(b.checked){var c=this.getValue();c.push(a);this.setValue(c)}}else{this.setValue(b.record.get(this.valueField))}this.fireEvent("select",b.record.get(this.valueField),[b.record],this.store);this.fireEvent("selectionchanged",this.getValue())}if(this.selectAction==="hide"){d.hide()}}},this)},emptyMenu:function(){var b=this.beforeItems.length,a=[];if(this.placeHolder){this.menu.remove(this.placeHolder,true);delete this.placeHolder}this.menu.items.each(function(e,c,d){if(c>=b){a.push(e)}},this);Ext.each(a,function(c){this.menu.remove(c,true)},this)},generateMenu:function(){if(this.hasBeenVisible){this.doGenerateMenu()}},doGenerateMenu:function(){var b=this.value;this.menu.suspendLayout=true;this.emptyMenu();var a={menu:[],map:{}},d=[],c=Ext.isDefined(this.hideOnClick)?this.hideOnClick:false;this.store.each(function(e,s,q){if(this.fireEvent("beforebuttonadd",e,s)===false){return}var p=e.get(this.valueField);var h=b&&b.indexOf(p)!=-1;var t=e.get(this.displayField)||"";var k=t.split(">");var l=null;var g=[];if(k.length>1){g=[k[0]];t=k[1]}else{if(e.get(this.groupField)){l=e.get(this.groupField);if(!Ext.isArray(l)){l=[l]}g=l}}var m=a,n,j=g.length,o;for(var s=0;s<j;s++){n=g[s];if(!m.map[n]){o={text:n,menu:[],map:{}};m.map[n]=o;m.menu.push(m.map[n]);d.push(o)}m=m.map[n]}if(t!="-"){o={text:this.btnTpl?this.btnTpl.apply(e.data):t,xtype:this.itemXtype,checked:h,hideOnClick:c,record:e,iconAlign:"left"};if(this.disabledField){o.disabled=e.get("disabled")}}else{o={xtype:"menuseparator"}}m.menu.push(o);d.push(o)},this);Ext.each(d,function(e){delete e.map});this.recursiveSort(a);if(this.store.getCount()>0){if(this.disabled){this.enable()}}else{!this.disableIfEmpty?this.enable():this.disable()}this.fireEvent("beforemenuitemsadd",d);if(this.emptyText&&this.store.getCount()==0){this.menu.add('<div style="opacity:0.5;padding:6px 10px 3px 27px;cursor:default;">'+this.emptyText+"</div>")}this.menu.add(a.menu);this.menu.suspendLayout=false;this.menu.doLayout();this.relayEventsClickEvents(this.menu);this.setIconCls(this.menu)},recursiveSort:function(a){var b=this;Ext.each(a,function(c){if(c.menu&&this.sortItems){c.menu=Ext.Array.sort(c.menu,function(e,d){var g=(Ext.isDefined(e.menu)?1:0)-(Ext.isDefined(d.menu)?1:0);if(g!==0){return g}return b.menuItemSorter.sort(e,d)});this.recursiveSort(c.menu)}},this)},relayEventsClickEvents:function(a){Ext.each(a.items.items,function(b){if(b.menu){this.menu.relayEvents(b.menu,["click"]);this.relayEventsClickEvents(b.menu)}},this)},setIconCls:function(a){Ext.each(a.items.items,function(b){b.setIconCls(this.itemType=="checkbox"?"checkbox":"radio");if(b.menu){this.setIconCls(b.menu)}},this)},select:function(a){if(Ext.isNumber(a)){a=this.store.getAt(a).get(this.valueField)}this.setValue(a);this.generateMenu()},deselectElse:function(a){this.iterateItems(this.menu,a)},iterateItems:function(b,a){b.items.each(function(e,c,d){if(Ext.isDefined(e.record)){if(e.record.get(this.valueField)!=a&&e.checked){e.setChecked(false,true);if(e.itemType=="radio"){e.setIconCls("radio")}}else{if(e.record.get(this.valueField)==a){e.setChecked(true,true);if(e.itemType=="radio"){e.setIconCls("radio")}}}}if(e.menu){this.iterateItems(e.menu,a)}},this)},getValueFromMenu:function(b){var a=[];b.items.each(function(e,c,d){if(e.checked&&e.record){a.push(e.record.get(this.valueField))}if(e.menu){a=a.concat(this.getValueFromMenu(e.menu))}},this);return a},updateText:function(){if(!this.setTextToName){return}if(this.itemType!="radio"&&!this.setArrayValueAsName){return}var d=this.getValue();if(Ext.isArray(d)){if(!d.length){this.setText(this.initialConfig.text);return}var a=[];Ext.Array.each(d,function(k,e,j){var g=this.store.findRecord(this.valueField,k),h=g&&g.get(this.displayField);if(h){a.push(h)}},this);this.setText(a.join(", "))}else{var c=this.store.findRecord(this.valueField,d);if(c){var b=c.get(this.displayField);if(Ext.isString(b)){if(b.length>10){b=b.substr(0,10)+"..."}this.setText(b)}}else{this.setText(this.initialConfig.text)}}},setValue:function(a){a=Ext.value(a,[]);a=Ext.isArray(a)?a:[a];this.value=a;this.updateText()},getValue:function(){var a=this.value;if(this.itemType=="radio"){a=a.length>0?a[0]:undefined}return a},getStore:function(){return this.store},storeChanged:function(a){if(this.selectfirst){this.select(0)}else{this.generateMenu()}},handler:Ext.selectHandler});Ext.define("FT.button.SelectorWithButton",{extend:"FT.button.Selector",alias:"widget.ft-selector-with-btn",displayField:"name",valueField:"name",itemType:"radio",disableIfEmpty:false,constructor:function(a){this.addEvents(["addfilter"]);this.callParent(arguments)},registerMenuClickListeners:function(){this.menu.on("click",function(b,a){if(Ext.isDefined(a)&&a.getXType()!="menuseparator"&&a.getXType()!="menuitem"){this.fireEvent("addfilter",{filterName:a.text,filter:a.record.get("value"),settingid:a.record.get("settingid")});if(this.selectAction=="hide"){b.hide()}if(this.itemType=="radio"){this.deselectElse(a.record.get(this.valueField))}if((!Ext.isDefined(a.disabled)||!a.disabled)&&Ext.isDefined(this.selectHandler)){this.selectHandler.call(Ext.value(this.scope,this),a.record.get(this.valueField),a.record,this.store)}this.fireEvent("select",a.record.get(this.valueField),[a.record],this.store);this.setValue(a.record.get(this.valueField))}},this)},generateMenu:function(){var a=this.value;a=Ext.value(a,[]);a=Ext.isArray(a)?a:[a];this.menu.removeAll();var b=[];this.store.each(function(h,c,g){var j=h.get(this.valueField);var d=a.indexOf(j)!=-1;var e;if(h.get(this.displayField)=="-"){e={xtype:"menuseparator"}}else{e={text:this.btnTpl?this.btnTpl.apply(h.data):h.get(this.displayField),xtype:this.itemXtype,checked:d,record:h}}b.push(e)},this);if(this.sortItems){b=Ext.Array.sort(b,function(d,c){return d.text.toUpperCase()<=c.text.toUpperCase()?-1:1})}if(Ext.isDefined(this.itemsBefore)){b=Ext.Array.insert(b,0,[this.itemsBefore[0]]);if(this.store.getCount()>0){b=Ext.Array.insert(b,1,[this.itemsBefore[1]])}}this.menu.add(b);if(this.itemType=="button"){Ext.each(this.menu.items.items,function(c){c.setIconCls(c.checked?"radioitem-checked":"radioitem-unchecked")},this)}if(this.store.getCount()>0){this.enable()}else{!this.disableIfEmpty?this.enable():this.disable()}},deselectAll:function(){this.menu.items.each(function(c,a,b){if(Ext.isDefined(c.record)&&c.checked){c.setChecked(false,true);c.setIconCls("radioitem-unchecked")}},this)},storeChanged:function(a){if(this.selectfirst){this.setValue(a.getAt(0).get(this.valueField))}this.generateMenu()}});Ext.define("FT.button.Markdown",{extend:"Ext.button.Button",glyph:FT.glyph("bold"),qtip:FT.i18n("Bold"),markdownSymbol:"**",placeholder:"strong text",modifyValue:function(b,a){return FT.util.Format.markdownDefault(b,a,this.markdownSymbol,this.placeholder)},handler:function(){var c=this,g=c.textArea,a=g.getEl().query("textarea")[0],e=g.getValue(),b={start:a&&a.selectionStart||0,end:a&&a.selectionEnd||0};var d=this.modifyValue(e,b,a);g.setValue(d.value);a.selectionStart=d.selection.start;a.selectionEnd=d.selection.end}});Ext.define("FT.button.HeaderMarkdown",{extend:"FT.button.Markdown",glyph:FT.glyph("textsize"),qtip:FT.i18n("Header"),markdownSymbol:"#",placeholder:"heading text",modifyValue:function(b,a){return FT.util.Format.markdownHeader(b,a,this.markdownSymbol,this.placeholder)}});Ext.define("FT.button.ListMarkdown",{extend:"FT.button.Markdown",qtip:FT.i18n("List"),glyph:FT.glyph("bulllist"),markdownSymbol:"-",placeholder:"list item",modifyValue:function(b,a){return FT.util.Format.markdownList(b,a,this.markdownSymbol,this.placeholder)}});(function(a,b){if(typeof exports==="object"){b(exports)}else{if(typeof define==="function"&&define.amd){define(["exports"],b)}else{b(a)}}})(this,function(u){var k="0.5.0";function d(w){this._targetElement=w;this._options={nextLabel:"Next &rarr;",prevLabel:"&larr; Back",skipLabel:"Skip",doneLabel:"Done",tooltipPosition:"bottom",tooltipClass:"",exitOnEsc:true,exitOnOverlayClick:true,showStepNumbers:true}}function m(C){var w=[],G=this;if(this._options.steps){var A=[];for(var z=0,E=this._options.steps.length;z<E;z++){var D=this._options.steps[z];D.step=z+1;if(typeof D.element==="string"){D.element=document.querySelector(D.element)}w.push(D)}}else{var A=C.querySelectorAll("*[data-intro]");if(A.length<1){return false}for(var z=0,x=A.length;z<x;z++){var B=A[z];w.push({element:B,intro:B.getAttribute("data-intro"),step:parseInt(B.getAttribute("data-step"),10),tooltipClass:B.getAttribute("data-tooltipClass"),position:B.getAttribute("data-position")||this._options.tooltipPosition})}}w.sort(function(I,H){return I.step-H.step});G._introItems=w;if(l.call(G,C)){t.call(G);var F=C.querySelector(".introjs-skipbutton"),y=C.querySelector(".introjs-nextbutton");G._onKeyDown=function(H){if(H.keyCode===27&&G._options.exitOnEsc==true){n.call(G,C);if(G._introExitCallback!=undefined){G._introExitCallback.call(G)}}else{if(H.keyCode===37){g.call(G)}else{if(H.keyCode===39||H.keyCode===13){t.call(G);if(H.preventDefault){H.preventDefault()}else{H.returnValue=false}}}}};G._onResize=function(H){a.call(G,document.querySelector(".introjs-helperLayer"))};if(window.addEventListener){window.addEventListener("keydown",G._onKeyDown,true);window.addEventListener("resize",G._onResize,true)}else{if(document.attachEvent){document.attachEvent("onkeydown",G._onKeyDown);document.attachEvent("onresize",G._onResize)}}}return false}function h(w){this._currentStep=w-2;if(typeof this._introItems!=="undefined"){t.call(this)}}function t(){if(typeof this._currentStep==="undefined"){this._currentStep=0}else{++this._currentStep}if(this._introItems.length<=this._currentStep){if(typeof this._introCompleteCallback==="function"){this._introCompleteCallback.call(this)}n.call(this,this._targetElement);return}var w=this._introItems[this._currentStep];if(typeof this._introBeforeChangeCallback!=="undefined"){this._introBeforeChangeCallback.call(this,w.element)}p.call(this,w)}function g(){if(this._currentStep===0){return false}var w=this._introItems[--this._currentStep];if(typeof this._introBeforeChangeCallback!=="undefined"){this._introBeforeChangeCallback.call(this,w.element)}p.call(this,w)}function n(z){var x=z.querySelector(".introjs-overlay");x.style.opacity=0;setTimeout(function(){if(x.parentNode){x.parentNode.removeChild(x)}},500);var y=z.querySelector(".introjs-helperLayer");if(y){y.parentNode.removeChild(y)}var B=document.querySelector(".introjs-showElement");if(B){B.className=B.className.replace(/introjs-[a-zA-Z]+/g,"").replace(/^\s+|\s+$/g,"")}var w=document.querySelectorAll(".introjs-fixParent");if(w&&w.length>0){for(var A=w.length-1;A>=0;A--){w[A].className=w[A].className.replace(/introjs-fixParent/g,"").replace(/^\s+|\s+$/g,"")}}if(window.removeEventListener){window.removeEventListener("keydown",this._onKeyDown,true)}else{if(document.detachEvent){document.detachEvent("onkeydown",this._onKeyDown)}}this._currentStep=undefined}function b(z,A,x){A.style.top=null;A.style.right=null;A.style.bottom=null;A.style.left=null;if(!this._introItems[this._currentStep]){return}var B="";var w=this._introItems[this._currentStep];if(typeof w.tooltipClass==="string"){B=w.tooltipClass}else{B=this._options.tooltipClass}A.className=("introjs-tooltip "+B).replace(/^\s+|\s+$/g,"");var B=this._options.tooltipClass;var y=this._introItems[this._currentStep].position;switch(y){case"top":A.style.left="15px";A.style.top="-"+(e(A).height+10)+"px";x.className="introjs-arrow bottom";break;case"right":A.style.left=e(z).width+20+"px";x.className="introjs-arrow left";break;case"left":A.style.top="15px";A.style.right=e(z).width+20+"px";x.className="introjs-arrow right";break;case"bottom":default:A.style.bottom="-"+(e(A).height+10)+"px";x.className="introjs-arrow top";break}}function a(w){if(w){if(!this._introItems[this._currentStep]){return}var x=e(this._introItems[this._currentStep].element);w.setAttribute("style","width: "+(x.width+10)+"px; height:"+(x.height+10)+"px; top:"+(x.top-5)+"px;left: "+(x.left-5)+"px;")}}function p(I){if(typeof this._introChangeCallback!=="undefined"){this._introChangeCallback.call(this,I.element)}var M=this,F=document.querySelector(".introjs-helperLayer"),J=e(I.element);if(F!=null){var S=F.querySelector(".introjs-helperNumberLayer"),C=F.querySelector(".introjs-tooltiptext"),B=F.querySelector(".introjs-arrow"),Q=F.querySelector(".introjs-tooltip"),U=F.querySelector(".introjs-skipbutton"),w=F.querySelector(".introjs-prevbutton"),H=F.querySelector(".introjs-nextbutton");Q.style.opacity=0;a.call(M,F);var A=document.querySelectorAll(".introjs-fixParent");if(A&&A.length>0){for(var O=A.length-1;O>=0;O--){A[O].className=A[O].className.replace(/introjs-fixParent/g,"").replace(/^\s+|\s+$/g,"")}}var P=document.querySelector(".introjs-showElement");P.className=P.className.replace(/introjs-[a-zA-Z]+/g,"").replace(/^\s+|\s+$/g,"");if(M._lastShowElementTimer){clearTimeout(M._lastShowElementTimer)}M._lastShowElementTimer=setTimeout(function(){if(S!=null){S.innerHTML=I.step}C.innerHTML=I.intro;b.call(M,I.element,Q,B);Q.style.opacity=1},350)}else{var R=document.createElement("div"),E=document.createElement("div"),D=document.createElement("div");R.className="introjs-helperLayer";a.call(M,R);this._targetElement.appendChild(R);E.className="introjs-arrow";D.innerHTML='<div class="introjs-tooltiptext">'+I.intro+'</div><div class="introjs-tooltipbuttons"></div>';if(this._options.showStepNumbers){var N=document.createElement("span");N.className="introjs-helperNumberLayer";N.innerHTML=I.step;R.appendChild(N)}D.appendChild(E);R.appendChild(D);var H=document.createElement("a");H.onclick=function(){t.call(M)};H.href="javascript:void(0);";H.innerHTML=this._options.nextLabel;var w=document.createElement("a");w.onclick=function(){if(M._currentStep!=0){g.call(M)}};w.href="javascript:void(0);";w.innerHTML=this._options.prevLabel;var U=document.createElement("a");U.className="introjs-button introjs-skipbutton";U.href="javascript:void(0);";U.innerHTML=this._options.skipLabel;U.onclick=function(){if(M._introItems.length-1==M._currentStep&&typeof M._introCompleteCallback==="function"){M._introCompleteCallback.call(M)}if(M._introItems.length-1!=M._currentStep&&typeof M._introExitCallback==="function"){M._introExitCallback.call(M)}n.call(M,M._targetElement)};var T=D.querySelector(".introjs-tooltipbuttons");T.appendChild(U);if(this._introItems.length>1){T.appendChild(w);T.appendChild(H)}b.call(M,I.element,D,E)}if(this._currentStep==0){w.className="introjs-button introjs-prevbutton introjs-disabled";H.className="introjs-button introjs-nextbutton";H.innerHTML=this._options.nextLabel;U.innerHTML=this._options.skipLabel}else{if(this._introItems.length-1==this._currentStep){H.innerHTML=this._options.doneLabel;w.className="introjs-button introjs-prevbutton";H.className="introjs-button introjs-nextbutton"}else{w.className="introjs-button introjs-prevbutton";H.className="introjs-button introjs-nextbutton";H.innerHTML=this._options.nextLabel;U.innerHTML=this._options.skipLabel}}H.focus();I.element.className+=" introjs-showElement introjs-background";var z=o(I.element,"position");if(z!=="absolute"&&z!=="relative"){I.element.className+=" introjs-relativePosition"}var y=I.element.parentNode;while(y!=null){if(y.tagName.toLowerCase()==="body"){break}var L=o(y,"z-index");if(/[0-9]+/.test(L)){y.className+=" introjs-fixParent"}y=y.parentNode}if(!j(I.element)){var x=I.element.getBoundingClientRect(),K=x.bottom-(x.bottom-x.top),G=x.bottom-s().height;if(K<0){window.scrollBy(0,K-30)}else{window.scrollBy(0,G+100)}}}function o(w,x){var y="";if(w.currentStyle){y=w.currentStyle[x]}else{if(document.defaultView&&document.defaultView.getComputedStyle){y=document.defaultView.getComputedStyle(w,null).getPropertyValue(x)}}if(y&&y.toLowerCase){return y.toLowerCase()}else{return y}}function s(){if(window.innerWidth!=undefined){return{width:window.innerWidth,height:window.innerHeight}}else{var w=document.documentElement;return{width:w.clientWidth,height:w.clientHeight}}}function j(w){var x=w.getBoundingClientRect();return x.top>=0&&x.left>=0&&x.bottom+80<=window.innerHeight&&x.right<=window.innerWidth}function l(z){var w=document.createElement("div"),A="",x=this;w.className="introjs-overlay";if(z.tagName.toLowerCase()==="body"){A+="top: 0;bottom: 0; left: 0;right: 0;position: fixed;";w.setAttribute("style",A)}else{var y=e(z);if(y){A+="width: "+y.width+"px; height:"+y.height+"px; top:"+y.top+"px;left: "+y.left+"px;";w.setAttribute("style",A)}}z.appendChild(w);w.onclick=function(){if(x._options.exitOnOverlayClick==true){n.call(x,z)}if(x._introExitCallback!=undefined){x._introExitCallback.call(x)}};setTimeout(function(){A+="opacity: .8;";w.setAttribute("style",A)},10);return true}function e(y){var z={};z.width=y.offsetWidth;z.height=y.offsetHeight;var x=0;var w=0;while(y&&!isNaN(y.offsetLeft)&&!isNaN(y.offsetTop)){x+=y.offsetLeft;w+=y.offsetTop;y=y.offsetParent}z.top=w;z.left=x;return z}function c(z,y){var x={};for(var w in z){x[w]=z[w]}for(var w in y){x[w]=y[w]}return x}var q=function(x){if(typeof x==="object"){return new d(x)}else{if(typeof x==="string"){var w=document.querySelector(x);if(w){return new d(w)}else{throw new Error("There is no element with given selector.")}}else{return new d(document.body)}}};q.version=k;q.fn=d.prototype={clone:function(){return new d(this)},setOption:function(w,x){this._options[w]=x;return this},setOptions:function(w){this._options=c(this._options,w);return this},start:function(){m.call(this,this._targetElement);return this},goToStep:function(w){h.call(this,w);return this},exit:function(){n.call(this,this._targetElement)},refresh:function(){a.call(this,document.querySelector(".introjs-helperLayer"));return this},onbeforechange:function(w){if(typeof w==="function"){this._introBeforeChangeCallback=w}else{throw new Error("Provided callback for onbeforechange was not a function")}return this},onchange:function(w){if(typeof w==="function"){this._introChangeCallback=w}else{throw new Error("Provided callback for onchange was not a function.")}return this},oncomplete:function(w){if(typeof w==="function"){this._introCompleteCallback=w}else{throw new Error("Provided callback for oncomplete was not a function.")}return this},onexit:function(w){if(typeof w==="function"){this._introExitCallback=w}else{throw new Error("Provided callback for onexit was not a function.")}return this}};u.introJs=q;return q});Ext.define("FT.tour.TourWindow",{id:"ftrack_tour",cls:"ft-tourwindow",extend:"FT.Window",modal:true,resizable:false,width:1000,height:500,horizPadding:0,steps:[],frame:false,initComponent:function(){this.navBar=Ext.widget({xtype:"toolbar",cls:"background-default",style:"border-top-color: inherit !important;",padding:25,dock:"bottom",items:this._getFooter()});this.html=this._getContent();this._currentStep=0;this._previousStep=-1;this.showTourAgain=true;this.callParent();this.updateHeaderForStep(0);if(this.steps&&this.steps.length>1){this.addDocked(this.navBar,0)}this.on("afterrender",function(){this.mon(this.getEl(),"click",this._onPaginatorClick,this)},this)},updateHeaderForStep:function(c){var a=this.steps[c];if(!a){return false}var d=a.title||"";this.setTitle(d);if(a.windowCls){this.addCls(a.windowCls)}var b=this.steps[this._previousStep];if(b&&b.windowCls){this.removeCls(b.windowCls)}},_getContent:function(){var a='<div class="carousel"><ul>';Ext.Array.forEach(this.steps,function(b){a+='<li class="'+b.windowCls+'-page">';a+=Ext.isFunction(b.html)?b.html():b.html;a+="</li>"},this);a+="</ul></div>";return a},_getFooter:function(){var b=this,c,a;c='<ol class="paginator">';if(this.steps&&this.steps.length>1){c+='<li class="paginator-item" data-page="0"><a class="active" href="javascript:void(0)" title="1">'+d+"</a></li>";for(var d=1;d<this.steps.length;d+=1){c+='<li class="paginator-item" data-page="'+d+'"><a href="javascript:void(0)" title="'+(d+1)+'">'+d+"</a></li>"}}c+="</ol>";a=[{xtype:"ftrack-button",itemId:"backBtn",text:FT.i18n("Back"),style:{visibility:"hidden"},handler:this.prev,scope:this},"->",{xtype:"component",html:c},"->",{xtype:"ftrack-button",text:FT.i18n("Next"),handler:this.next,scope:this}];return a},_onPaginatorClick:function(c){var b=c.getTarget(".paginator-item");if(b){var a=parseInt(b.getAttribute("data-page"),10)||0;this._previousStep=this._currentStep;this._currentStep=a;this.changeTo(this._currentStep)}},start:function(){this.show()},changeTo:function(d){if(d===this._previousStep){return}var c=this.getEl().down(".carousel > ul"),a=this.getEl().select(".paginator a"),e=-1*(this.width-2*this.horizPadding)*d;c.setStyle("left",e);a.removeCls("active");if(d>=0&&d<=a.getCount()){a.item(d).addCls("active")}if(Ext.isFunction(this._onchangeFn)){this._onchangeFn()}var b=this._currentStep>0?"visible":"hidden";this.navBar.getComponent("backBtn").getEl().setStyle("visibility",b);this.updateHeaderForStep(d)},prev:function(){this._previousStep=this._currentStep;this._currentStep+=-1;if(this._currentStep<0){this._currentStep=0;return}this.changeTo(this._currentStep)},next:function(){this._previousStep=this._currentStep;this._currentStep+=1;if(this._currentStep>=this.steps.length){this.end();return}this.changeTo(this._currentStep)},end:function(){this.close();if(Ext.isFunction(this._oncompleteFn)){this._oncompleteFn()}},oncomplete:function(a){this._oncompleteFn=a},onchange:function(a){this._onchangeFn=a},onexit:function(a){if(!Ext.isFunction(a)){return}this.on("close",a)}});FT=FT||{};FT.tour=FT.tour||{};FT.tour.dashboardTours={overview_home:["overview_home_v3","mytasks"],overview:"overview_home_v3",tasks:"gantt_v3",reviewsession:"reviewsession_v3",team:"team_v3",timetracking:"timetracking_v3"};FT.tour._onGettingStartedTourComplete=function(){var a=FT.app.activeModule.dashboardManager.getCurrentDashboardId();if(a==="overview_home"){FT.tour.Tour.start("mytasks")}FT.tour.Tour.markAllWhatsNewToursAsSeen()};FT.tour.tours={timetracking_v3:{type:"window",steps:[{html:function(){return["<ul>",'<li class="page-left-col">',FT.i18n("Learn how to log time on your task using timers and week views."),"<p><strong>",FT.i18n("Helpful links"),"</strong><br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/the-basics/tracking-time">',FT.i18n("Tracking time"),"</a></p>","</li>",'<li class="page-right-col">','<iframe width="479" height="300" src="//player.vimeo.com/video/113089782?title=0&amp;byline=0&amp;portrait=0&amp;color=1dbb90" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',"</li>","</ul>"].join("")},title:"<h1>"+FT.i18n("Tracking time")+"</h1><span>&nbsp;</span>",windowCls:"one-page-tour"}]},team_v3:{type:"window",oncomplete:"team-stepbystep",steps:[{html:function(){return["<ul>",'<li class="page-left-col">',FT.i18n("Learn how to set up your project team and groups."),"<p>","<strong>",FT.i18n("Helpful links"),"</strong>","<br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/managing-projects/managing-the-project-team">',FT.i18n("Managing the project team"),"</a><br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/the-basics/using-groups">',FT.i18n("Using groups"),"</a><br>",'<a target="_blank" href="https://help.ftrack.com/administering-ftrack/users/organising-users-into-groups">',FT.i18n("Organising users into groups"),"</a>","</p>","<br><br>",'<button class="button button-primary button-medium tour-navigation" tour="next">',FT.i18n("Step by step tour"),"</button>",'<div class="for-new-users"></div>',"</li>",'<li class="page-right-col">','<iframe width="479" height="300" src="//player.vimeo.com/video/113089635?title=0&amp;byline=0&amp;portrait=0&amp;color=1dbb90" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></li>',"</ul>"].join("")},title:"<h1>"+FT.i18n("Teams and Groups")+"</h1><span>&nbsp;</span>",windowCls:"one-page-tour"}]},"team-stepbystep":{type:"intro",steps:[{tourId:"add-team-members",intro:FT.i18n("Add members to the team from all available users in ftrack.")},{element:"#add-group",intro:FT.i18n("Add a new group or an existing group as a part of the project team.")},{tourId:"team-name",intro:FT.i18n("Change the title of the group.")}]},mytasks:{type:"window",oncomplete:"mytasks-stepbystep",steps:[{html:function(){return["<ul>",'<li class="page-left-col">',FT.i18n("Learn how to manage your tasks, read and reply to notes and customise your account."),"<p>","<strong>",FT.i18n("Helpful links"),"</strong>","<br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/getting-started/using-my-tasks-dashboard">',FT.i18n("My Tasks dashboard"),"</a><br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/the-basics/using-task-boards">',FT.i18n("Task board"),"</a><br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/the-basics/using-notes">',FT.i18n("Notes and feedback"),"</a><br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/getting-started/managing-your-account">',FT.i18n("Profile and account settings"),"</a>","</p>","<br>",'<button class="button button-primary button-medium tour-navigation" tour="next">',FT.i18n("Step by step tour"),"</button>",'<div class="for-new-users"></div>',"</li>",'<li class="page-right-col">','<iframe width="479" height="300" src="//player.vimeo.com/video/113089537?title=0&amp;byline=0&amp;portrait=0&amp;color=1dbb90" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></li>',"</ul>"].join("")},title:"<h1>"+FT.i18n("My Tasks, Notes and Account")+"</h1><span>&nbsp;</span>",windowCls:"one-page-tour"}]},"mytasks-stepbystep":{type:"intro",steps:[{tourId:"user",intro:FT.i18n("<b>User menu</b> Change your settings, get help, switch theme and logout of ftrack."),position:"left"},{tourId:"inbox",intro:FT.i18n("<b>Inbox</b> Find notes, messages and notifications on assignments and status updates."),position:"left"},{tourId:"timesheet",intro:FT.i18n("<b>Time logger/Timesheet</b> Start and stop your task timers and show your timesheet."),position:"left"},{tourId:"jobs",intro:FT.i18n("<b>Jobs</b> Monitor your running jobs."),position:"left"},{tourId:"task-board",intro:FT.i18n("<b>Task board</b> Manage your assigned tasks on a task board - great for an agile workflow."),position:"right"},{tourId:"task-list",intro:FT.i18n("<b>Task list</b> Manage your assigned tasks as a traditional list."),position:"right"},{tourId:"my-tasks-toggle-right",intro:FT.i18n("<b>Right pane</b> Toggle the pane to the right to show or hide the milestones and activity feed widgets."),position:"left"}]},gantt_v3:{type:"window",oncomplete:"gantt-stepbystep",steps:[{html:function(){return["<ul>",'<li class="page-left-col">',FT.i18n("Learn how to work with tasks, versions, views, filters and custom dashboards."),"<p>","<strong>",FT.i18n("Helpful links"),"</strong>","<br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/the-basics/understanding-spreadsheets">',FT.i18n("Understanding spreadsheets"),"</a><br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/the-basics/filtering">',FT.i18n("Using filters"),"</a><br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/the-basics/using-custom-dashboards">',FT.i18n("Custom dashboards"),"</a>","</p>",'<button class="button button-primary button-medium tour-navigation" tour="next">',FT.i18n("Step by step tour"),"</button>",'<div class="for-new-users"></div>',"</li>",'<li class="page-right-col">','<iframe width="479" height="300" src="//player.vimeo.com/video/113089734?title=0&amp;byline=0&amp;portrait=0&amp;color=1dbb90" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></li>',"</ul>"].join("")},title:"<h1>"+FT.i18n("Tasks, Filters and Dashboards")+"</h1><span>&nbsp;</span>",windowCls:"one-page-tour"}]},"gantt-stepbystep":{type:"intro",steps:[{tourId:"Tasks",intro:FT.i18n("<b>Tasks spreadsheet</b> Find your tasks and hierarchy.")},{tourId:"Versions",intro:FT.i18n("<b>Versions spreadsheet</b> Find all published versions on the project.")},{tourId:"Dashboards",intro:FT.i18n("<b>Dashboards</b> Navigate to your custom dashboards.")},{tourId:"toggle-sidebar",intro:FT.i18n("Toggle the visibility of the sidebar for the current object."),position:"left"},{tourId:"projects-tree",intro:FT.i18n("<b>Outliner</b> Filter the spreadsheet to the right by selecting an item. Here you can also find asset builds, lists, review sessions and teams."),position:"right"},{tourId:"projects-create",intro:FT.i18n("Create tasks, milestones and other objects. You can also do this from the spreadsheet context menu.")},{tourId:"projects-import",intro:FT.i18n("<b>Import</b> Import data from an external source.")},{tourId:"projects-save",intro:FT.i18n("<b>Save changes</b> Enable auto-save in the drop down menu.")},{tourId:"projects-hierarchy",intro:FT.i18n("<b>Layout</b> Switch between layouts by clicking any of the layout buttons.")},{tourId:"projects-schedule",intro:FT.i18n("<b>Schedule</b> Toggle the Gantt scheduler.")},{tourId:"projects-views",intro:FT.i18n("<b>Views</b> Manage and share your views."),position:"left"},{tourId:"projects-export",intro:FT.i18n("<b>Export</b> Export the data in the spreadsheet as a PDF, Excel or CSV file."),position:"left"},{tourId:"projects-settings",intro:FT.i18n("<b>Spreadsheet settings</b> Change settings like adding and removing attributes, and other look and feel settings."),position:"left"},{tourId:"filter-button",intro:FT.i18n("<b>Filter panel</b> Filter the spreadsheet by adding filters here."),position:"left"},{tourId:"projects-spreadsheet",intro:FT.i18n("<b>Main spreadsheet</b>"),position:"top",tooltipClass:"tour-tooltip-wider"}]},reviewsession_v3:{type:"window",oncomplete:"clientreviews-stepbystep",steps:[{html:function(){return["<ul>",'<li class="page-left-col">',FT.i18n("Learn how to set up a client review session, add media, invite collaborators and more."),"<p>","<strong>",FT.i18n("Helpful links"),"</strong>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/reviewing/using-review-sessions">',FT.i18n("Using review sessions"),"</a><br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/reviewing/managing-review-sessions">',FT.i18n("Managing review sessions"),"</a>","</p>","<br><br>",'<button class="button button-primary button-medium tour-navigation" tour="next">',FT.i18n("Step by step tour"),"</button>",'<div class="for-new-users"></div>',"</li>",'<li class="page-right-col">','<iframe width="479" height="300" src="//player.vimeo.com/video/113089568?title=0&amp;byline=0&amp;portrait=0&amp;color=1dbb90" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></li>',"</ul>"].join("")},title:"<h1>"+FT.i18n("Client Reviews overview")+"</h1><span>&nbsp;</span>",windowCls:"one-page-tour"}]},"clientreviews-stepbystep":{type:"intro",steps:[{tourId:"reviewsession-setuptop",intro:FT.i18n("Change the title and description of the review session.")},{tourId:"reviewsession-content",intro:FT.i18n("Link existing media in ftrack or drag and drop files from your computer to upload to the session."),position:"top"},{tourId:"reviewsession-schedule",intro:FT.i18n("<b>Schedule</b> Set the start date and end date of the review session."),position:"left"},{tourId:"reviewsession-collaborators",intro:FT.i18n("<b>Invite collaborators</b> Manage unlimited number of collaborators on the review session. No additional ftrack licenses needed."),position:"left"},{tourId:"reviewsession-sendinvites",intro:FT.i18n("<b>Send invites</b> Send unique links to your collaborators that does not require the collaborator to enter a password."),position:"left"},{tourId:"reviewsession-opensession",intro:FT.i18n("<b>Open session</b> Join the review session as yourself."),position:"left"},{tourId:"reviewsession-actions",intro:FT.i18n("<b>Actions</b> Launch an action with the review session."),position:"left"},{tourId:"reviewsession-generatereport",intro:FT.i18n("<b>Generate report</b> Generate a PDF summary of the session with all comments, annotations and status changes included."),position:"top"},{tourId:"reviewsession-transferfeedback",intro:FT.i18n("<b>Transfer feedback</b> Transfer comments and status changes back into ftrack from the review session."),position:"top"}]},overview_home_v3:{type:"window",onexit:"showHowToRestartTour",steps:[{html:function(){var a='<a target="_blank" href="https://www.ftrack.com/help" target="_blank">'+FT.i18n("help center")+"</a>";return['<div class="firstpage-selection-box">',FT.glyphIcon("help-filled"),"<h2>",FT.i18n("I'm new to ftrack, where do I start?"),"</h2>",'<button class="button button-primary button-medium tour-navigation" tour="1">',FT.i18n("Show me"),"</button>","</div>",'<div class="firstpage-selection-box">',FT.glyphIcon("add-filled"),"<h2>",FT.i18n("How do I create a new project in ftrack?"),"</h2>",'<button class="button button-primary button-medium tour-navigation" tour="2">',FT.i18n("Show me"),"</button>","</div>",'<div class="firstpage-selection-box">',FT.glyphIcon("settings"),"<h2>",FT.i18n("How do I set up and customise ftrack?"),"</h2>",'<button class="button button-primary button-medium tour-navigation" tour="3">',FT.i18n("Show me"),"</button>","</div>",'<div style="clear:both;"></div>',"<hr>","<p>",'<span id="book">',FT.glyphIcon("book"),"</span>",FT.i18n("Visit the {helpCenterLink} to learn more about ftrack.",{values:{helpCenterLink:a}}),"</p>"].join("")},title:"<h1>"+FT.i18n("Welcome to ftrack!")+"</h1><span>"+FT.i18n("We have collected a few videos that we think might help you get started.")+"</span>",windowCls:"welcome-tour-firstpage"},{html:function(){return["<ul>",'<li class="page-left-col">',FT.i18n("For all new users. Learn how to find your way and getting started using ftrack."),"<p>","<strong>",FT.i18n("Helpful links"),"</strong>","<br>",'<a target="_blank" href="https://www.ftrack.com/help">',FT.i18n("Help center"),"</a>","<br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/getting-started/finding-your-way">',FT.i18n("Finding your way"),"</a>","<br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/getting-started/using-the-sidebar">',FT.i18n("Using the sidebar"),"</a>","</p>","</li>",'<li class="page-right-col">','<iframe width="479" height="300" src="//player.vimeo.com/video/113089093?title=0&amp;byline=0&amp;portrait=0&amp;color=1dbb90" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',"</li>","</ul>"].join("")},title:"<h1>"+FT.i18n("I'm new to ftrack, where do I start?")+"</h1><span>&nbsp;</span>",windowCls:"welcome-tour-secondpage"},{html:function(){return["<ul>",'<li class="page-left-col">',FT.i18n("Learn how to create a new project, set up your team and create and assign tasks."),"<p>","<strong>",FT.i18n("Helpful links"),"</strong>","<br>",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/managing-projects/creating-a-new-project">',FT.i18n("Creating a new project"),"</a><br />",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/managing-projects/populating-the-project">',FT.i18n("Populating the project"),"</a><br />",'<a target="_blank" href="https://help.ftrack.com/using-ftrack/managing-projects/managing-items-and-objects">',FT.i18n("Managing objects"),"</a><br />",'<a target="_blank" href="https://help.ftrack.com/using-ftrack#managing-projects">',FT.i18n("Managing projects"),"</a>","</p>","</li>",'<li class="page-right-col">','<iframe width="479" height="300" src="//player.vimeo.com/video/113089322?title=0&amp;byline=0&amp;portrait=0&amp;color=1dbb90" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',"</li>","</ul>"].join("")},title:"<h1>"+FT.i18n("How do I create a new project in ftrack?")+"</h1><span>&nbsp;</span>",windowCls:"welcome-tour-thirdpage"},{html:function(){return["<ul>",'<li class="page-left-col">',FT.i18n("Learn how to create users, set up workflows, change status colors and much more."),"<p>","<strong>",FT.i18n("Helpful links"),"</strong>","<br>",'<a target="_blank" href="https://help.ftrack.com/administering-ftrack#users">',FT.i18n("Managing users"),"</a><br />",'<a target="_blank" href="https://help.ftrack.com/administering-ftrack/workflows/setting-up-workflow-schemas">',FT.i18n("Setting up workflow schemas"),"</a><br />",'<a target="_blank" href="https://help.ftrack.com/administering-ftrack/workflows/managing-statuses">',FT.i18n("Managing statuses"),"</a><br />",'<a target="_blank" href="https://help.ftrack.com/administering-ftrack/advanced/using-custom-attributes">',FT.i18n("Using custom attributes"),"</a>","</p>","</li>",'<li class="page-right-col">','<iframe width="479" height="300" src="//player.vimeo.com/video/113089462?title=0&amp;byline=0&amp;portrait=0&amp;color=1dbb90" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></li>',"</ul>"].join("")},title:"<h1>"+FT.i18n("How do I set up and customise ftrack?")+"</h1><span>&nbsp;</span>",windowCls:"welcome-tour-fourthpage"}]},showHowToRestartTour:{type:"intro",oncomplete:FT.tour._onGettingStartedTourComplete,onexit:FT.tour._onGettingStartedTourComplete,steps:[{tourId:"user",intro:FT.i18n("Tip! You can find the Getting Started tour here if you want to see it again."),position:"left"}]}};Ext.define("FT.tour.Tour",{singleton:true,_isTourActive:false,constructor:function(a){this.initConfig(a);this.steps=[];this.tours=FT.tour.tours;Ext.onReady(function(){Ext.getBody().on("click",function(d){var b=d.getTarget(".tour-navigation");var c=b.attributes.tour.value;if(c=="next"){FT.tour.Tour.next()}else{FT.tour.Tour.changeTo(Number(c))}},this,{delegate:".tour-navigation"})});return this},getStorageKey:function(d){d=d||{};var b=d.name||"undefined",a="ft-tour-",c="-seen";return a+b+c},hasSeen:function(c){var b=this.getStorageKey(c),a=FT.getVar(b,false);return !!a},setSeen:function(c,a){a=Ext.isDefined(a)?a:true;var b=this.getStorageKey(c);FT.setVar(b,a)},addStep:function(b){if(Ext.isObject(b.element)){if(b.element.isComponent){if(!b.element.isVisible()){return}b.cmp=b.element;var a=b.cmp.getEl();b.element=a&&a.dom}}if(b.element){this.steps.push(b)}},_createTourSteps:function(a){a=a||{};a.steps=a.steps||[];this.steps=[];components=Ext.ComponentQuery.query("[tourId]");Ext.Array.forEach(a.steps,function(c){var b=null;Ext.Array.forEach(components,function(d){if(d&&d.tourId===c.tourId){b=d}});if(b){c.element=b}if(c.element){this.addStep(c)}},this)},_clickStepElement:function(a){var b=a&&a.element;if(b&&Ext.isFunction(b.click)){b.click()}},_isToursEnabled:function(){var b=window.document.location.search||"";var a=Ext.Object.fromQueryString(b)||{};if(a.disable_tours||a.auth_token){return false}return FT.Settings.get("feature","isToursEnabled")},_shouldStartTour:function(c,a){a=a||false;var b=true;if(!this._isToursEnabled()){log("Tours are currently disabled.");b=false}else{if(this._isTourActive){log("Another tour is currently active.");b=false}else{if(!a&&this.hasSeen(c)){b=false}}}return b},start:function(d,b,a){var c=this,h=this.tours[d];if(!h){log("Unable to find tour with name: "+d);return false}h.name=d;if(!this._shouldStartTour(h,b)){return false}if(h.type==="spark-tour-window"){var g=this._getBaseUrl();var j=this._getLanguage();var e=g+h.id+"/"+j+".json";this._isTourActive=true;this._sparkTourWindow=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"RemoteConfigurationTour",props:{baseUrl:g,url:e,onAction:Ext.bind(function(k){if(k==="close"){this.closeTourDialog(h.id)}},this),onEscKeyDown:this.closeTourDialog.bind(this,h.id),onOverlayClick:this.closeTourDialog.bind(this,h.id)}})}if(h.type==="window"){this.intro=Ext.create("FT.tour.TourWindow",{steps:h.steps||[],tour:h})}else{this._createTourSteps(h);if(!h.steps||!h.steps.length){log("Unable to start intro, tour has no steps");return}this.intro=window.introJs(document.body);this.intro.setOption("nextLabel",'<div class="x-btn x-btn-default-toolbar-small button-view">Next</div>');this.intro.setOption("prevLabel",'<div class="x-btn x-btn-default-toolbar-small button-view">Back</div>');this.intro.setOption("skipLabel",FT.glyphIcon("close"));this.intro.setOption("doneLabel",'<div class="x-btn x-btn-default-toolbar-small button-view">Done</div>');this.intro.setOption("showStepNumbers",false);this.intro.setOption("steps",this.steps)}this.intro.oncomplete(function(){c._isTourActive=false;if(Ext.isString(h.oncomplete)){a=a||h;c.start(h.oncomplete,true,a)}else{if(Ext.isFunction(h.oncomplete)){h.oncomplete()}}});this.intro.onexit(function(){c._isTourActive=false;if(Ext.isString(h.onexit)){a=a||h;c.start(h.onexit,true,a)}else{if(Ext.isFunction(h.onexit)){h.onexit()}}});this.intro.onchange(function(p){var o,l=c.steps||[],m=this._currentStep,n=l[m],k=l[m+1];if(h&&Ext.isFunction(h.onchange)){h.onchange()}if(n&&Ext.isFunction(n.onchange)){n.onchange()}if(n&&n.click){c._clickStepElement(n)}if(n&&n.clickNext){c._clickStepElement(k)}});this._isTourActive=true;this.intro.start();this.setSeen(h,true)},startDashboardTour:function(d){var c=FT.tour.dashboardTours&&FT.tour.dashboardTours[d];if(!c){return}if(!Array.isArray(c)){c=[c]}for(var b=0;b<c.length;b+=1){function a(e,g){return function(){e.start.call(e,g)}}setTimeout(a(this,c[b]),1000)}},prev:function(){if(this.intro&&Ext.isFunction(this.intro.prev)){this.intro.prev()}},next:function(){if(this.intro&&Ext.isFunction(this.intro.next)){this.intro.next()}},changeTo:function(a){this.intro._previousStep=this.intro._currentStep;this.intro._currentStep=a;this.intro.changeTo(a)},close:function(){if(this.intro&&Ext.isFunction(this.intro.close)){this.intro.close()}},_getBaseUrl:function(){return FT.Settings.get("ftrack","sparkTourBaseUrl")},_getLanguage:function(){return window.FT_I18N.EXTJS_LOCALE},_getVersion:function(){return FTrack.currentVersion},loadConfiguration:function(){var b=this;if(!this._isToursEnabled()){return}var a=this._getBaseUrl()+"index.json";fetch(a).then(function(c){return c.json()}).then(function(c){b.processTourConfiguration(c)})["catch"](function(c){log("Failed to load tours from: "+a)})},processTourConfiguration:function(a){var c=a.tours;var b=null;c.forEach(function(d){if(d.type==="spark-tour-window"&&this.matchesTourCriteria(d)){d.name=d.id;this.tours[d.id]=d;if(d.autoShow){b=b||d.id}}},this);setTimeout(Ext.bind(function(){if(b&&!this._isTourActive){this.start(b)}},this),5000)},matchesTourCriteria:function(a){var b={product:FT.Settings.get("ftrack","product"),language:this._getLanguage(),apiVersion:this._getVersion(),appVersion:this._getVersion()};var d=a.criteria||{};var c=Ext.Object.getKeys(d);return Ext.Array.every(c,function(h){var e=true;var k=b[h];var g=d[h];if(!k){log("Tour can not match criteria for: "+h);e=false;return}if(Array.isArray(g)){e=Ext.Array.some(g,function(l){return l===k})}else{var j=new RegExp(g);if(!j.test(k)){e=false}}if(!e){log("Tour does not match criteria for: "+h)}return e})},getWhatsNewTourId:function(){var a=Ext.Object.getKeys(this.tours);return Ext.Array.findBy(a,function(c){var b=this.tours[c];return b?b.category==="whats-new":false},this)},markAllWhatsNewToursAsSeen:function(){Ext.Object.each(this.tours,function(b,a){if(a.category==="whats-new"){this.setSeen(a,true)}},this)},closeTourDialog:function(b){var a=this.tours[b];this._sparkTourWindow.destroy();FT.notifySuccess(FT.i18n("You can see the tour again from the profile menu over there &rarr;"));this.setSeen(a,true);this._isTourActive=false}});Ext.define("FT.view.plugin.DisableKeyNavigation",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-disablekeynavigation",init:function(a){a.on("afterrender",this.disableKeyNavigation,this);a.handleEvent=Ext.bind(this.handleEvent,a)},handleEvent:function(c){var a=["keydown","keyup","keypress","input"],b=Ext.Array.contains(a,c.type);if(b){return}Ext.view.View.prototype.handleEvent.apply(this,arguments)},disableKeyNavigation:function(a){a.getSelectionModel().keyNav.disable()}});Ext.define("FT.view.plugin.Tool",{extend:"Ext.AbstractPlugin",constructor:function(){this.toolId=Ext.String.format("ft-simplegrid-tool-{0}",Ext.id());this.callParent(arguments)},init:function(a){a.toolbarItems.push(this.getTool());a.on({itemclick:this.processItemClickEvent,scope:this});this.callParent(arguments)},processItemClickEvent:function(h,a,k,b,c,d){if(c.getTarget("."+this.toolId)!==null){var g=this.getTool(),l=g.handler,j=g.scope;return l.call(j,h,a,k,b,c,d)}}});Ext.define("FT.view.plugin.CheckboxTool",{extend:"FT.view.plugin.Tool",alias:"plugin.ft-view-plugin-checkboxtool",onToolClick:function(b,a,h,c,j,d){var g=b.getSelectionModel().getSelection()||[];if(g.indexOf(a)!==-1){b.getSelectionModel().deselect(a)}else{b.getSelectionModel().select(a,true)}return false},getTool:function(){return{handler:this.onToolClick,scope:this,html:Ext.String.format('<div class="{0} x-form-checkbox"></div>',this.toolId)}}});Ext.define("FT.directive.Directive",{extend:"Ext.Base",tpl:new Ext.XTemplate('<section style="border: 1px solid #88f;" class="directive debug-directive">',"<h4>{type}</h4>","<code>","{[ Ext.encode(values) ]}","</code>","</section>"),events:[],reset:Ext.emptyFn,constructor:function(a){a=a||{};Ext.apply(this,a);this.callParent(arguments)},suspendEvents:function(b){var a=b&&b.getStore();if(a){a.suspendEvents(true)}},resumeEvents:function(b){var a=b&&b.getStore();if(a){a.resumeEvents()}},refresh:function(a){if(a&&Ext.isFunction(a.refresh)){a.refresh()}},render:function(a){if(!(this.tpl instanceof Ext.XTemplate)){return""}var b=this.tpl.apply(a);return b},delegateEvent:function(b,j,a,k,c,d,g){var l=this,h=Array.prototype.slice.apply(arguments);h.shift();Ext.Array.forEach(this.events,function(m){if(m.event!==b){return}var n=d.getTarget(m.selector);if(n){d.target=n;var e=a.content||a.get("content");if(e){h[1]=e}m.handler.apply(l,h)}})},fadeOut:function(a,b){Ext.fly(a).fadeOut({endOpacity:0,easing:"easeOut",duration:250,remove:false,callback:function(){if(b){b()}}})}});Ext.define("FT.directive.DirectiveDataView",{extend:"Ext.view.View",infiniteScroll:false,infiniteScrollThreshold:150,disableSelection:true,directives:{},debugDirective:Ext.create("FT.directive.Directive"),addDirective:function(a,b){this.directives[a]=b},renderRecord:function(a){var c=a&&a.type,d=this.directives[c]||this.debugDirective,b={};if(!d||!a){return""}if(a.content&&Ext.isFunction(a.content.getData)){b=a.content.getData(true)}else{if(a.content){b=a.content}else{b=a}}return d.render(b)},setupEvents:function(){var a=["click"];Ext.Array.forEach(a,function(c){var b="item"+c;this.on(b,function(l,d,k,h,m,j){var n=l.directives[d.get("type")];if(n&&Ext.isFunction(n.delegateEvent)){var g=Array.prototype.slice.apply(arguments);g.unshift(c);n.delegateEvent.apply(n,g)}})},this)},itemSelector:".directive",initComponent:function(){var a=this;this.tpl=new Ext.XTemplate("{[ this.renderHeader() ]}",'<tpl for=".">',"{[ this.renderBeforeTpl(values, xindex, xcount) ]}","{[ this.renderDirective(values) ]}","{[ this.renderAfterTpl(values, xindex, xcount) ]}","</tpl>","{[ this.renderFooter() ]}",{renderDirective:function(b){return a.renderRecord(b)},renderBeforeTpl:Ext.bind(a.renderBeforeTpl,a),renderAfterTpl:a.renderAfterTpl,renderHeader:Ext.bind(a.renderHeader,a),renderFooter:Ext.bind(a.renderFooter,a)});this.plugins=this.plugins||[];this.plugins.push("ft-disablekeynavigation");if(this.infiniteScroll){this.enableInfiniteScroll()}this.setupEvents();this.on("beforerefresh",this.resetDirectives);this.callParent(arguments)},renderBeforeTpl:Ext.emptyFn,renderAfterTpl:Ext.emptyFn,renderHeader:Ext.emptyFn,renderFooter:Ext.emptyFn,resetDirectives:function(){Ext.Object.each(this.directives,function(a,b){b.reset()})},loadNextPage:function(){var b=this,e=this.store&&this.store.last(),c=e&&e.get("itemId")||0,a=isNaN(c)===true,d;d=function(){var g={addRecords:true};if(a){g.start=c}b.store.nextPage(g)};if(this.fireEvent("beforescrollload",d)!==false){d()}},getRecordLength:function(a){return a&&a.length||0},onLoadMoreData:function(b,a){if(this.getRecordLength(a)<b.pageSize){this.noMorePages=true}else{this.noMorePages=false}},enableInfiniteScroll:function(){this.store.on("load",this.onLoadMoreData,this);this.on("viewready",function(){this.store.on("load",this.loadMoreData,this);this.on("resize",this.loadMoreData,this)},this,{single:true});this.on("afterrender",function(a){var b=this.getEl();a=Ext.valueFrom(this.infiniteScrollPanel,a);if(a.body){b=a.body.el}this.scrollElement=b;b.on("scroll",this.loadMoreData,this,{buffer:100})},this)},shouldLoadNextPage:function(g){var c=this.scrollElement,e=c.getScroll().top,b=c.dom.scrollHeight,a=c.dom.clientHeight,d;if(g&&e<this._lastScrollPosition){this._lastScrollPosition=e;return false}this._lastScrollPosition=e;d=b-a-e;return d<this.infiniteScrollThreshold},loadMoreData:function(a){var b=a&&a.type==="scroll";if(this.store.isLoading()){return}if(this.noMorePages===true){return}if(this.shouldLoadNextPage(b)){this.loadNextPage()}}});Ext.define("FT.directive.CompositeModel",{extend:"Ext.data.Model",fields:[{name:"type",type:"string"},{name:"itemId",type:"string"},{name:"content",convert:function(e,b){var g={note:"FT.directive.note.NoteModel",status:null,kanban_task:"FT.directive.kanban.TaskModel",kanban_empty:"FT.directive.kanban.EmptyModel",kanban_head:"FT.directive.kanban.EmptyModel",kanban_expand:"FT.directive.kanban.EmptyModel",kanban_status:"FT.directive.kanban.TaskModel"};var d=b.get("type")||e.type;var a=g[d];if(a){var c=Ext.create(a,e);if(e.children){c.children().add(e.children)}return c}return e}}]});Ext.define("FT.directive.DirectiveMorePager",{extend:"FT.ui.MorePager",onLoad:Ext.emptyFn,onShowMore:function(){var b=this.store&&this.store.last(),a=b&&b.get("itemId")||null;this.store.load({addRecords:true,start:a,params:this.params||{}})},initComponent:function(){var a=this;this.callParent();this.store.on("load",function(b){var c=b.count()>0&&b.count()%b.pageSize===0;if(c){a.showMoreButton.enable()}else{a.showMoreButton.disable()}})},isButtonEnabled:function(){return this.store.count()>0&&this.store.count()%this.store.pageSize===0}});Ext.define("FT.directive.note.NoteModel",{extend:"Ext.data.Model",proxy:{type:"direct",limitParam:"pageSize",api:{create:"FTApi.Note.create",read:"FTApi.Note.get",update:"FTApi.Note.update",destroy:"FTApi.Note.destroy"}},idProperty:"noteId",hasMany:[{model:"FT.directive.note.NoteModel",name:"children",associationKey:"children"}],fields:[{name:"attachments",type:"auto"},{name:"entityType",type:"string"},{name:"entityId",type:"string"},{name:"labels",defaultValue:[]},{name:"notificationId",type:"string"},{name:"createdAt",type:"date",dateFormat:"c"},{name:"noteId",type:"string"},{name:"user",type:"object"},{name:"text",type:"string"},{name:"recipients",type:"array"},{name:"parent",type:"object"},{name:"starred",type:"bool"},{name:"unread",type:"bool"},{name:"type",type:"string"},{name:"replyId"},{name:"isMessage",type:"bool"},{name:"invitee",type:"object"},{name:"frame",type:"object"},{name:"is_todo",type:"bool"},{name:"completed_at",type:"date",dateFormat:"c"},{name:"completed_by_id",type:"string"}],validations:[{field:"text",type:"length",min:1}]});Ext.define("FT.directive.note.NoteForm",{alias:"widget.ft-reply-form",border:false,bodyBorder:false,bodyStyle:"background-color: transparent",bodyPadding:"0 10",width:"100%",extend:"Ext.form.Panel",entity:null,isReply:false,isMessage:false,replyId:null,autoDestroy:true,enableCategory:true,enableFormatButtons:true,enableActionButtons:true,actionButtonStyle:"default",enableRecipients:true,enableTodo:true,allowBlank:false,buttonsUi:"plain",actionText:FT.i18n("Add note"),emptyText:FT.i18n("Write a note..."),defaultText:FT.i18n("Annotated frame"),initComponent:function(){var k=this;if(this.enableCategory){this.categorySelector=Ext.create("FT.ui.NoteCategoryEditor",{flex:100,maxWidth:300})}this.addEvents("updateattachments","updatetext");var g=function(){var l=k.getNoteRecord();l.save({callback:function(m,n){if(n.wasSuccessful()){k.fireEvent("created",m);k.fireEvent("close");if(k.autoDestroy){k.destroy()}else{k.reset()}}else{FT.notifyError(FT.i18n("Failed to create note."));k.setItemsEnabled(true)}}});if(l.get("is_todo")){FT.util.intercom("CREATED-TODO")}if(k.isMessage){FT.util.intercom("ADDED-MESSAGE")}else{FT.util.intercom("ADDED-NOTE")}};var a=function(){if(!k.textareaField.isValid()||k.userEditor&&!k.userEditor.isValid()){return}k.setItemsEnabled(false);var l=k.fireEvent("beforesubmit",g);if(l!==false){g()}};k.textareaField=Ext.create("Ext.form.field.TextArea",{name:"text",emptyText:this.emptyText,grow:true,growMin:30,growMax:200,width:"100%",margin:0,allowBlank:this.allowBlank,listeners:{change:function(){k.addCls("noteform--dirty")},specialkey:function(m,l){if(l.ctrlKey&&l.getKey()==l.ENTER){a();l.stopEvent()}}}});k.textareaField.on("change",this._onTextChange,this);this.attachButton=Ext.create("Ext.Button",{ui:this.buttonsUi,cls:"ft-dropzone-browse",glyph:FT.glyph("attachment"),qtip:FT.i18n("Drag and drop or browse files to attach"),style:"overflow: hidden",preventDefault:false});if(this.isMessage){this.tbar=this.createUserEditorBar()}else{var j=[];if(!this.enableActionButtons){j.push(this.attachButton)}if(this.enableCategory&&!this.isReply){j.push(this.categorySelector)}if(this.enableFormatButtons){j.push({xtype:"tbitem",flex:1});j=j.concat(this.getMardownButtons(this.textareaField,this.buttonsUi));j.push(this.getHelpBtn(),{xtype:"tbspacer",width:5})}if(this.enableRecipients){var d=this.createRecipientsButton();j.push(d)}if(j.length){this.tbar=Ext.create("Ext.toolbar.Toolbar",{padding:"10 0 5 10",items:j,enableOverflow:true,layout:{type:"hbox",align:"stretch"}})}}this.items=[this.textareaField];if(this.enableActionButtons){var c="button-primary",b="default";if(this.actionButtonStyle==="simple"){c=null;b="simple"}this.cancelButton=Ext.create("Ext.Button",{ui:b,text:FT.i18n("Cancel"),handler:function(){k.fireEvent("close");if(k.autoDestroy){k.destroy()}else{k.reset()}}});this.submitButton=Ext.create("Ext.Button",{ui:b,cls:c,text:this.actionText,handler:a,qtip:this.actionText+" (Ctrl + Enter)"});var h=[this.attachButton];if(this.enableTodo){this.todoToggleButton=Ext.create("Ext.Button",{glyph:FT.glyph("todo"),ui:"plain",cls:"button-card",enableToggle:true,tooltip:FT.i18n("Select if this note can be marked as completed.")});h.push(this.todoToggleButton)}h.push("->",this.cancelButton,this.submitButton);this.bbar=Ext.create("Ext.toolbar.Toolbar",{cls:"noteform__actionbar",items:h})}this.callParent(arguments);if(this.isMessage){this.addDocked(Ext.create("Ext.toolbar.Toolbar",{padding:"5 0 5 10",items:[this.categorySelector,"->",this.getHelpBtn()]}))}var e=Ext.create("FT.directive.note.NoteModel");this.loadRecord(e)},_onTextChange:function(a){this.fireEvent("updatetext",a.getValue())},getNoteRecord:function(){var d,b=null,e,a;this.getForm().updateRecord();d=this.getRecord();if(this.enableCategory){var c=this.categorySelector.getValue();var g=[];if(c){g=c.split(", ")}d.set("labels",g)}d.set("text",this.textareaField.getValue());d.set("replyId",this.replyId);if(this.enableTodo){d.set("is_todo",this.todoToggleButton.pressed)}if(this.entity){d.set("entityType",this.entity.entityType);d.set("entityId",this.entity.entityId)}if(this.enableRecipients){if(this.userEditor){b=this.userEditor.value}else{if(this.recipients){b=this.recipients}}d.set("recipients",b)}e=this.attachmentsView&&this.attachmentsView.store;if(e){a=Ext.pluck(Ext.pluck(e.data.items,"data")||[],"attachmentid");if(a){d.set("attachments",a)}}d.set("isMessage",this.isMessage);return d},createRecipientsButton:function(){var b=this,c=this.entity;if(this.isReply){c={entityId:this.replyId,entityType:"note"}}var a=Ext.create("Ext.Button",{ui:this.buttonsUi,glyph:FT.glyph("recipients"),qtip:FT.i18n("Edit recipients"),enableToggle:true,toggleHandler:function(e,g){if(!b.userEditor){if(!b.recipients){FTApi.Note.getRecipients(b.entity,function(k,h){var j=b.createUserEditorBar(h.data,c);b.addDocked(j,0);j.doLayout()})}else{var d=b.createUserEditorBar(b.recipients,c);b.addDocked(d,0)}return}if(g){b.userEditorBar.show()}else{b.userEditorBar.hide()}}});return a},createUserEditorBar:function(a,b){if(FT.isLegacyResourceSelectorEnabled){this.userEditor=Ext.create("FT.form.field.ResourceEditorLegacy",{allowBlank:!this.isMessage,fieldLabel:FT.i18n("Recipients"),labelWidth:62,emptyText:FT.i18n("Select recipients"),width:"100%",autoLoad:false});this.userEditor.store.on("load",function(){this.setValue(a)},this.userEditor,{single:true});this.userEditor.store.load({params:{criteria:{allocationEntity:{entityId:b&&b.entityId,entityType:b&&b.entityType,displayAllAllocationsOnProject:true}}}})}else{this.userEditor=Ext.create("FT.form.field.ResourceEditor",{allowBlank:!this.isMessage,fieldLabel:FT.i18n("Recipients"),labelWidth:62,emptyText:FT.i18n("Select recipients"),width:"100%",props:{users:true,groups:true},submitType:"array",value:a})}this.userEditorBar=Ext.create("Ext.toolbar.Toolbar",{dock:"top",padding:"10 0 0 10",items:[this.userEditor]});return this.userEditorBar},_onUploadBegin:function(b,a){this.progressBars[b]=Ext.create("Ext.ProgressBar",{height:10,margin:"10 0"});this.add(this.progressBars[b])},_onUploadProgress:function(e,b,a,c){var d=this.progressBars[e];if(d){d.updateProgress(a)}},_onUploadFailure:function(a){this._removeProgressBar(a)},_onUploadComplete:function(d,a,b){var c=FT.Uploader.getAttachmentDataFromFile(b.file,b.componentId);this.addAttachment(c);this._removeProgressBar(d)},_removeProgressBar:function(b){var a=this.progressBars[b];if(a){this.remove(a);delete this.progressBars[b]}},createDropzone:function(){this.progressBars={};this.uploader=Ext.create("FT.upload.DragAndDropUploader",{listeners:{scope:this,beginupload:this._onUploadBegin,afterupload:this._onUploadComplete,progress:this._onUploadProgress,failure:this._onUploadFailure}});this.uploader.setDropElement(this);if(this.attachButton){this.uploader.setBrowseElement(this.attachButton)}this.attachmentsView=Ext.create("FT.attachment.AttachmentsView",{listeners:{add:this._onUpdateAttachmentStore,update:this._onUpdateAttachmentStore,remove:this._onUpdateAttachmentStore,scope:this}});this.add(this.attachmentsView)},_onUpdateAttachmentStore:function(a){this.addCls("noteform--dirty");this.fireEvent("updateattachments",a)},isUploading:function(){return !!Ext.Object.getSize(this.progressBars||{})},addAttachment:function(a){if(!this.attachmentsView){this.createDropzone()}this.attachmentsView.addAttachment(a)},updateAttachment:function(b,a){if(!this.attachmentsView){return false}return this.attachmentsView.updateAttachment(b,a)},isDirty:function(){var c=this.callParent(arguments);var b=this.attachmentsView.store.count();var a=this.isUploading();return c||b||a},setFrame:function(b){var a=this.getForm().getRecord();if(a&&b){a.set("frame",b)}},ensureText:function(){var a=this.getForm().getRecord();if(!this.textareaField.getValue()){this.textareaField.setValue(this.defaultText)}},setItemsEnabled:function(a){var b=a?"enable":"disable";this.textareaField[b]();this.attachButton[b]();this.cancelButton[b]();this.submitButton[b]()},reset:function(){var a=Ext.create("FT.directive.note.NoteModel");this.loadRecord(a);if(this.attachmentsView){this.attachmentsView.clearStore()}this.setItemsEnabled(true);this.removeCls("noteform--dirty")},setEntity:function(b){var a=this;a.entity=b;if(a.userEditor&&!a.isDestroyed){FTApi.Note.getRecipients(a.entity,function(d,c){if(a.userEditor&&!a.isDestroyed){a.userEditor.setValue(c.data)}})}},listeners:{afterrender:function(){this.createDropzone();this.textareaField.focus()}},getHelpBtn:function(){return{xtype:"button",glyph:FT.glyph("format"),ui:this.buttonsUi,qtip:FT.i18n("Notes formatting help"),handler:function(){var a=Ext.create("FT.Window",{modal:true,title:FT.i18n("Notes formatting"),width:500,height:350,layout:"column",bodyPadding:"0 15",items:[{html:"<p><strong>Italic</strong><br />*This is italicized*, and so is _this_.</p><p><strong>Bold</strong><br />**This is bold**, and so is __this__.</p><p><strong>Bold and italic</strong><br />This is ___bold and italic___.</p><p><strong>Basic links</strong><br />Here's an inline link to<br />[ftrack.com](http://www.ftrack.com/).<p><strong>Headers</strong><br /># MY HEADER #<br />## My subheader ##",padding:"0 10 0 0",columnWidth:0.5},{html:"<p><strong>Rulers</strong><br />Insert a horizontal rule by putting three or more underscores on a line:<br />___<br /><p><strong>Lists</strong><br />- Use a minus sign for a bullet<br />+ Or plus sign<br />* Or an asterisk<br /><br />1. Numbered lists are easy<br />2. ftrack keeps track of the numbers for you<br />7. So this will be item 3.",padding:"0 0 0 10",columnWidth:0.5}]}).show()}}},getMardownButtons:function(b,a){a=a||"default";return[Ext.create("FT.button.ListMarkdown",{ui:a,textArea:b}),Ext.create("FT.button.HeaderMarkdown",{ui:a,textArea:b}),Ext.create("FT.button.Markdown",{ui:a,textArea:b}),Ext.create("FT.button.Markdown",{ui:a,markdownSymbol:"*",placeholder:"emphasized text",qtip:FT.i18n("Emphasis"),textArea:b,glyph:FT.glyph("italic")})]}});Ext.define("FT.attachment.AttachmentsView",{extend:"Ext.view.View",itemSelector:"li",tpl:new Ext.XTemplate('<ul class="ft-attachments-view">','<tpl for=".">','<li class="text-ellipsis">','<tpl if="uploading">','{[ FT.glyphIcon("job", {cls: "animate-spin"}) ]}',"</tpl>",'<tpl if="icon">',"{[ FTrack.grid.IconRenderer(values.icon) ]}","</tpl>",'<span class="remove-attachment actionicon">{[ FT.glyphIcon("delete") ]}</span>','<span class="filename">{filename}</span>',"</li>","</tpl>","</ul>"),initComponent:function(){this.store=Ext.create("Ext.data.Store",{fields:["uploading","filename","attachmentid","link","icon"],data:[]});this.callParent(arguments);this.on("itemclick",this.onItemClickRemoveAttachment,this)},onItemClickRemoveAttachment:function(b,a,g,c,h,d){if(h.getTarget(".remove-attachment")){this.removeOne(a);h.stopPropagation()}},removeServerAttachment:function(a){var b=this.store;Ext.Ajax.request({url:"/component/remove",params:{id:a.get("attachmentid")},success:function(){FT.notifySuccess(FT.i18n("Removed file"));b.commitChanges()},failure:function(){FT.notifySuccess(FT.i18n("Failed to remove attachment"));b.rejectChanges()}})},removeOne:function(a){this.removeServerAttachment(a);this.store.remove(a)},removeAll:function(){if(!this.store){return}this.store.each(this.removeServerAttachment,this);this.clearStore()},clearStore:function(){this.store.removeAll()},addAttachment:function(a){if(!this.store){return}this.store.add(a)},updateAttachment:function(c,b){var a=this.store.findRecord("attachmentid",c);if(a){return a.set(b)}return false}});Ext.define("FT.attachment.DropZoneComponent",{extend:"Ext.container.Container",cls:"drop-zone-component",dropText:FT.i18n("Drag and drop your files here, or "),initComponent:function(){this.items=[this.createPlaceholder()];this.createUploader();this.on("afterrender",this.setElements,this);this.on("show",this.setElements,this);this.callParent(arguments)},createPlaceholder:function(){var a=Ext.String.format('<p class="drop-zone-component__message">'+this.dropText+'<span class="filebrowse-wrapper"><a href="#" onclick="return false;" class="filebrowse-link">browse</a></span><br>{0}</p>',FT.glyphIcon("cloud-upload",{cls:"drop-zone-component__icon"}));this.placeholder=Ext.create("Ext.Component",{html:a});return this.placeholder},_onUploadBegin:function(b,a){this.reset();this.uploaderId=b;this.progressBar=Ext.create("Ext.ProgressBar",{cls:"drop-zone-component__progressbar"});this.add(this.progressBar)},_onUploadProgress:function(g,b,a,d){var e=this.progressBar;if(e){var c=Math.round(a*100||0)+"%";e.updateProgress(a,c)}},_onUploadFailure:function(a){this.resetInterface();FT.notifyError(FT.i18n("Failed to upload file."))},_onUploadComplete:function(d,a,b){this.reset();var c=FT.Uploader.getAttachmentDataFromFile(b.file,b.componentId);this.addAttachment(c)},createUploader:function(){this.uploader=Ext.create("FT.upload.DragAndDropUploader",{listeners:{scope:this,beginupload:this._onUploadBegin,afterupload:this._onUploadComplete,progress:this._onUploadProgress,failure:this._onUploadFailure}})},setElements:function(){var b=this.getEl();if(!b){return}this.uploader.setDropElement(b);var a=b.down(".filebrowse-wrapper");if(a){this.uploader.setBrowseElement(a)}},addAttachment:function(a){if(!this.attachmentsView){this.attachmentsView=Ext.create("FT.attachment.AttachmentsView",{});this.attachmentsView.store.on("remove",this._onAttachmentRemove,this);this.relayEvents(this.attachmentsView.store,["add","remove"],"attachment");this.add(this.attachmentsView)}this.attachmentsView.addAttachment(a)},getAttachmentField:function(b){if(this.attachmentsView){var a=this.attachmentsView.store.getAt(0);if(a){return a.get(b)}}},getAttachmentId:function(){return this.getAttachmentField("attachmentid")},getAttachmentName:function(){return this.getAttachmentField("filename")},_onAttachmentRemove:function(){this.resetInterface()},cancelUpload:function(){if(!this.uploaderId){return}FT.Uploader.cancelUpload(this.uploaderId);this.uploaderId=null},removeAttachments:function(){if(this.attachmentsView){this.attachmentsView.removeAll()}},reset:function(){this.cancelUpload();this.removeAll();this.attachmentsView=null;this.progressBar=null;this.placeholder=null},resetInterface:function(){this.reset();this.add(this.createPlaceholder());this.setElements()}});Ext.define("FT.view.MegaLayer",{extend:"FT.AbstractModule",closeOnEscapeKey:true,topPosition:46,constructor:function(b){var a=this;Ext.apply(this,b);this.callParent()},setCount:function(a,c){var b;var d="";if(!this.button){return}if(a>0){b=c?"count-circle--"+c:"";d='<div class="count-circle count-circle--top-menu '+b+'">'+a+"</div> "}this.button.setText(d)},getTopMenuItems:function(){return[]},setupCloseOnClickOutside:function(){if(!this.panel){return}this.panel.mon(Ext.getBody(),"click",function(a){if(a.getTarget(".x-layer")||a.getTarget(".x-mask")||a.getTarget(".kanban-task-time")||a.getTarget(".ft-tourwindow-step-by-step")){if(a.getTarget(".ftrack-link")){this.close()}return}if(!document.body.contains(a.getTarget())){return}this.close();a.stopEvent()},this)},setupCloseHandlers:function(){if(!this.panel){return}if(this.closeOnEscapeKey){this.panel.mon(Ext.getBody(),"keyup",function(a){if(a.keyCode===Ext.EventObject.ESC){this.close();a.stopEvent()}},this)}setTimeout(Ext.bind(this.setupCloseOnClickOutside,this),0)},close:function(){var b=250,a=Ext.Function.bind(function(){this.isClosing=false;this.layer.hide();this.fireEvent("afterclose")},this);if(!this.isClosing&&this.fireEvent("beforeclose")!==false){this.isClosing=true;this.button.toggle(false,true);this.layer.addCls("ft-overlay-layer-hidden");setTimeout(a,b);if(this.panel){this.panel.mun(Ext.getBody(),"keyup");this.panel.mun(Ext.getBody(),"click");this.panel.mun(this.layer,"click")}}},toggleShow:function(a){var b=this.layer;if(this.isClosing){return}if(a&&b){if(FT.Viewport){this.topPosition=FT.Viewport.getTopBarHeight()}b.setTop(this.topPosition);b.addCls("ft-overlay-layer-hidden");b.show();setTimeout(function(){b.removeCls("ft-overlay-layer-hidden")},0);this.setupCloseHandlers();this._resizePanel()}else{this.close()}this.button.toggle(a,true)},createLayer:function(b){b=b||{};var a="ft-overlay-layer ft-overlay-layer-hidden";if(b.cls){a+=" "+b.cls}this.layer=Ext.create("Ext.Layer",{hideMode:"offsets",cls:a,renderTo:Ext.getBody()})},_resizePanel:function(){if(!this.panel){return}var a=this.layer.getSize();this.panel.setSize(a.width-5,a.height)}});Ext.define("FT.view.Actions",{extend:"Ext.view.View",itemSelector:".ft-action-item",timeoutMilliseconds:8000,emptyText:FT.i18n("No actions."),loadMask:{msg:"Loading available actions..."},autoScroll:true,preserveScrollOnRefresh:true,iconMap:{"3ds_max":"/application_icons/3ds_max.png",cinesync:"/application_icons/cinesync.png",hiero:"/application_icons/hiero.png",illustrator:"/application_icons/illustrator.png",nuke:"/application_icons/nuke.png",photoshop:"/application_icons/photoshop.png",rv:"/application_icons/rv.png",after_effects:"/application_icons/after_effects.png",davinci_resolve:"/application_icons/davinci_resolve.png",hieroplayer:"/application_icons/hieroplayer.png",indesign:"/application_icons/indesign.png",nuke_studio:"/application_icons/nuke_studio.png",prelude:"/application_icons/prelude.png",unity:"/application_icons/unity.png",cinema_4d:"/application_icons/cinema_4d.png",helix_core:"/application_icons/helix_core.png",houdini:"/application_icons/houdini.png",maya:"/application_icons/maya.png",nukex:"/application_icons/nukex.png",premiere:"/application_icons/premiere.png",unreal_engine:"/application_icons/unreal_engine.png"},title:"",launchMaskTarget:null,initComponent:function(){var a=this;this.launchMask=new Ext.LoadMask({msg:"Launching...",target:this.launchMaskTarget?this.launchMaskTarget:this});this.tpl=new Ext.XTemplate(Ext.String.format("<h2>{0}</h2>",this.title),'<tpl for=".">','<div class="ft-action-item" data-qtip="{[ this.getDescription(values) ]}">',"{[ this.renderIcon(values) ]}",'<div class="ft-action-item__label">{[ this.getLabel(values) ]}</div>',"{[ this.getHoverIcon(values) ]}","</div>","</tpl>",{getDescription:function(b){return b.description||b.label},getLabel:function(b){if(b.actions&&b.actions.length===1){return Ext.String.format("{0} {1}",b.label,b.actions[0].get("variant")||"")}else{return b.label||"Unknown action"}},getHoverIcon:function(c){var b=!!(c.actions&&c.actions.length>1);if(b){return FT.glyphIcon("menu",{cls:"ft-action-item__hover-icon"})}else{return""}},renderIcon:function(b){var c="";src=undefined;if(Ext.form.field.VTypes.url(b.icon)){src=b.icon}else{src=a.iconMap[b.icon]}if(!src){c=b.label.split(" ").map(function(d){return d.charAt(0)}).join("").slice(0,4).toUpperCase();return Ext.String.format('<div class="ft-action-item__icon-placeholder"><span>{0}</span></div>',c)}return Ext.String.format('<img class="ft-action-item__icon" src="{0}" />',src)}});this.callParent();this.on("itemclick",this._onItemClick,this)},_onItemClick:function(j,g,c,d,a){var b,e,h=[],k;if(g.get("actions").length===1){this.launchAction(g.get("actions")[0])}else{k=function(m,l){return l.get("variant").localeCompare(m.get("variant"))};e=Ext.Array.sort(g.get("actions"),k);Ext.each(e,function(l){h.push({text:Ext.String.format("{0} {1}",l.get("label"),l.get("variant")),record:l,handler:function(m){this.launchAction(m.record)},scope:this})},this);b=Ext.create("Ext.menu.Menu",{items:h});b.on("hide",b.destroy,b);b.showAt(a.getXY())}},launchAction:function(a){var e=a.raw,d={},b,c,g;this.launchMask.show();Ext.Function.defer(function(){this.fireEvent("action-launched",a)},1000,this);Ext.apply(e,{selection:this.selection});FT.Connect.launchActionWithoutTimeout(e);g=["actionIdentifier","label","variant","applicationIdentifier"];for(b=0;b<g.length;b++){c=g[b];if(e[c]){d[c]=e[c]}}FT.util.intercom("launched-action",d)}});Ext.define("FT.window.CancelSave",{width:500,height:200,extend:"FT.ModalWindow",title:FT.i18n("Unsaved changes"),autoShow:true,draggable:false,modal:true,resizable:false,saveText:FT.i18n("Save and continue"),discardText:FT.i18n("Discard"),saveAction:"save",message:FT.i18n("You have unsaved changes that will be lost if you navigate away from this page, do you want to save now?"),bodyPadding:"10 15",scope:null,initComponent:function(){if(!this.scope){this.scope=this}this.items=[{xtype:"box",html:this.message}];var a=[];if(this.cancelHandler){a.push({xtype:"ftrack-button",text:FT.i18n("Cancel"),handler:this.cancelHandler,scope:this.scope})}a.push("->");if(this.discardHandler){a.push({xtype:"button",text:this.discardText,handler:this.discardHandler,scope:this.scope})}if(this.saveHandler){var b="button-primary";if(this.saveAction==="delete"){b="button-danger"}a.push({xtype:"button",action:this.saveAction,cls:b,text:this.saveText,handler:this.saveHandler,scope:this.scope})}this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:a});this.callParent(arguments)},cancelHandler:function(a){this.close()},saveHandler:function(a){}});Ext.ns("FT.action");Ext.ns("FT.action.fn");FT.action.AddIgnoreToReviewSession=function(a,b){data=[];FTApi.ReviewSessionObject.query({criteria:{review_session_id:a}},function(c){var d=Ext.Array.pluck(c.data,"version_id");b.filter(function(e){if(d.indexOf(e)===-1){data.push({version_id:e,review_session_id:a})}},this);if(data.length!==0){FTApi.ReviewSessionObject.create(data,function(e){if(!e||!e.success){FT.notifyError(e&&e.message||"Failed to add version to client review.")}else{FT.notifySuccess(FT.i18n("Added to client review."))}})}else{FT.notifyInfo(FT.i18n("All selected versions already exist in this client review."))}})};FT.plugin.Manager.registerMenuFn(function(b){var c=function(){var d,g,e=[];if(Ext.isFunction(b.pluginInfo.grid)){d=b.pluginInfo.grid().getSelectionModel()}else{d=b.pluginInfo.grid.getSelectionModel()}g=d.selected.items;if(b.pluginInfo&&b.pluginInfo.contentType==="list"){Ext.each(g,function(h){e.push({entityId:h.get("listid"),entityType:"list"})},this)}else{Ext.each(g,function(h){e.push({entityId:h.get("entityId"),entityType:h.get("entityType")})},this)}return e};var a=Ext.create("Ext.menu.Item",{text:FT.i18n("Actions"),glyph:FT.glyph("actions"),handler:function(){Ext.create("FT.window.Actions",{selection:c(),autoShow:true})}});return a});FT.plugin.Manager.registerMenuFn(function(b){var h=b.pluginInfo.contentType,d=FT.freview.FReviewHelper.createPlaylist,a=[];if(h==="asset"){h="assetversion"}var e={xtype:"menuitem",text:h==="list"?"Play list in Web Player":"Play selection in Web Player",listeners:{click:function(){var l=FT.freview.FReviewHelper.getSelModel(b);var m=FT.freview.FReviewHelper.getSelectedItems(l,h);FT.freview.FReviewHelper.open(m,h,"web")}}};a.push(e);a.push("-");var g=function(m){var l=FT.freview.FReviewHelper.getSelModel(b);var n=FT.freview.FReviewHelper.getSelectedItems(l,h);FT.freview.FReviewHelper.open(n,h,m)};var j={xtype:"menuitem",text:FT.i18n("Play selection in RV"),listeners:{click:Ext.pass(g,["rv"])}};var k={xtype:"menuitem",text:FT.i18n("Play selection in HieroPlayer"),listeners:{click:Ext.pass(g,["hieroplayer"])}};if(h==="list"){j.text="Play list in RV";k.text="Play list in HieroPlayer"}a.push(j);if(FT.freview.FReviewHelper.isHieroPlayerEnabled()){a.push(k)}if(["shot","task"].indexOf(h)!==-1){a.push("-");a.push({xtype:"menuitem",text:FT.i18n("Upload media"),listeners:{click:function(){var l=FT.freview.FReviewHelper.getSelModel(b);var m=FT.freview.FReviewHelper.getSelectedItems(l,h);FT.freview.FReviewHelper.openPublishCompontents(m)}}})}var c={xtype:"menuitem",text:FT.i18n("Review"),glyph:FT.glyph("review"),menu:a};return["assetversion","shot","list","task"].indexOf(h)!==-1?c:undefined});FT.plugin.Manager.registerMenuFn(function(b){var c=b.pluginInfo.contentType,a=[],h,g,d,e;if(!FT.Settings.asBool("feature","isClientReviewEnabled")){return}if(c!=="asset"){return undefined}g=function(){var j=FT.freview.FReviewHelper.getSelModel(b),k=FT.freview.FReviewHelper.getSelectedItems(j,c);return k};h={xtype:"menuitem",text:FT.i18n("Create from selection"),listeners:{click:function(){var j=FT.app.location.getProjectId();data={project_id:j,name:FT.i18n("New review session")};FTApi.ReviewSession.create(data,{success:function(l){if(l.success===false){FT.notifyError(l.message);return}var k=l.data[0].id,m=[];Ext.each(g(),function(n){m.push({version_id:n,review_session_id:k})});FTApi.ReviewSessionObject.create(m,function(){FT.app.open(null,{entityId:k,entityType:"reviewsession"})});FT.util.intercom("create-clientreview")}})}}};d=Ext.create("FT.menu.RemoteContextMenu",{proxy:{type:"direct",directFn:FTApi.ReviewSession.query,reader:{root:"data"}},text:FT.i18n("Add selection to"),emptyText:FT.i18n("No existing client reviews"),displayField:"name",valueField:"id",getExtraParams:function(){return{criteria:{project_id:FT.app.location.getProjectId()},limit:null}},listeners:{selectionchanged:function(k){var j=k[0],l=g();FT.action.AddIgnoreToReviewSession(j,l)}}});a.push(h);a.push(d);e={xtype:"menuitem",text:FT.i18n("Client reviews"),glyph:FT.glyph("reviewsession"),menu:a};return e});Ext.define("FT.actions._ActionCollection",{extend:"Ext.util.MixedCollection",add:function(a,b){assert(b.fn,"action fn must be defined");assert(b.title,"action title must be defined");this.callParent(arguments)}});FT.actions.ActionCollection=Ext.create("FT.actions._ActionCollection");FT.actions.register=Ext.bind(FT.actions.ActionCollection.add,FT.actions.ActionCollection);FT.actions.register("open_review_session",{fn:function(b,a){FT.reviewsession.openReviewSession(b.entityId)},title:FT.i18n("Open")});FT.actions.register("clone_review_session",{fn:function(b,a){FT.reviewsession.confirmCloneReviewSession(b.entityId)},title:FT.i18n("Clone")});FT.actions.register("create_review",{fn:function(c,a){var b=c.entityId.split("__")[0],d;d={project_id:b,name:FT.i18n("New review session")};FTApi.ReviewSession.create(d,{success:function(e){if(e.success===false){FT.notifyError(e.message);return}FT.util.intercom("create-clientreview");var g=e.data[0];FT.app.open(null,{entityId:g.id,entityType:"reviewsession"})}})},title:FT.i18n("Client review")});FT.actions.register("delete",{fn:function(b,a){FT.action.open("removeEntity",Ext.clone(b))},title:FT.i18n("Delete")});FT.actions.register("assignme",{fn:function(b,a){FT.action.fn.assignMe(b.entityId)},title:FT.i18n("Assign me")});FT.actions.register("showtimelogs",{fn:function(b,a){FT.action.fn.showTimelogs(b)},title:FT.i18n("Show logged time")});FT.actions.register("logtime",{fn:function(b,a){alert(b.entityType)},title:FT.i18n("Log time")});FT.actions.register("getinfo",{fn:function(b,a){FT.action.fn.openSlideIn(b)},title:FT.i18n("Show sidebar")});FT.actions.register("goto",{fn:function(b,a){FT.app.open("projects",b)},title:FT.i18n("Go to")});FT.actions.register("move",{fn:function(b,a){FT.action.fn.moveEntity([b])},title:FT.i18n("Move")});FT.actions.register("create",{fn:function(c,a){var b=this.objectType;FT.create(b,c)},title:FT.i18n("Create")});FT.actions.register("review_rv",{fn:function(b,a){FT.freview.FReviewHelper.open([b.entityId],b.entityType,"rv")},title:FT.i18n("Launch RV")});FT.actions.register("review_hieroplayer",{fn:function(b,a){FT.freview.FReviewHelper.open([b.entityId],b.entityType,"hieroplayer")},title:FT.i18n("Launch HieroPlayer")});FT.actions.register("review_web",{fn:function(b,a){var c=[b.entityId];FT.freview.FReviewHelper.open(c,b.entityType,"web")},title:FT.i18n("Launch Web Player")});FT.actions.register("review_upload",{fn:function(b,a){FT.freview.FReviewHelper.openPublishCompontents([b.entityId])},title:FT.i18n("Upload media")});FT.actions.register("add_to_review_session",{fn:function(b){var a=this.getEntity();data={version_id:a.entityId,review_session_id:b[0]};FTApi.ReviewSessionObject.query({criteria:data},function(c){if(c.data.length===0){FTApi.ReviewSessionObject.create(data,function(){FT.notifySuccess(FT.i18n("Added to client review."))})}else{FT.notifySuccess(FT.i18n("This version has already been added."))}})},menuItem:{displayField:"name",valueField:"id",proxy:{type:"direct",directFn:"FTApi.ReviewSession.query",reader:{root:"data"}},text:FT.i18n("Add to"),emptyText:FT.i18n("No existing client reviews"),getExtraParams:function(){return{criteria:{project_id:FT.app.location.getProjectId()},limit:null}}},title:FT.i18n("no title")});FT.actions.register("handle_managers",{fn:function(b,a){Ext.create("FT.window.HandleManagers",{title:FT.i18n("Managers"),autoShow:true,height:400,width:400,entity:b})},title:FT.i18n("Managers")});FT.actions.register("connect_publisher",{fn:function(b,a){FT.Connect.openPublisher({entityId:b.entityId,entityType:b.entityType})},title:FT.i18n("Publisher")});FT.actions.register("open_timesheet",{fn:function(b,a){FT.action.fn.openAndLoadTimelogger(b.entityId)},title:FT.i18n("Log time")});FT.actions.register("launch_actions",{title:FT.i18n("Actions"),glyph:FT.glyph("actions"),fn:function(b,a){Ext.create("FT.window.Actions",{autoShow:true,selection:[b]})}});Ext.define("FT.actions.BaseContextMenu",{extend:"Ext.menu.Menu",getAction:function(b){if(this.permissions&&this.permissions[b]===false){return null}var a=FT.actions.ActionCollection.getByKey(b);return Ext.clone(a)},isCreateAllowed:function(c){var d,a,b=c.get("typeid");d=FT.isAllowedParent(b,this.objectType||this.entityType);a=this.permissions.validObjectTypeIds.indexOf(b)!==-1;return d&&a},generateCreate:function(){var b=Ext.data.StoreManager.lookup("FT.store.ObjectType"),a=[],c;b.each(function(d){if(this.isCreateAllowed(d)){c=this.getAction("create");if(c===null){return true}c.title=d.get("name");c.objectType=d.get("typeid");a.push(Ext.apply(this.getButtonFromItem(c),{cls:"menu-item-padding"}))}},this);return a},generateReview:function(){var a=[],b;b=this.getAction("review_web");if(b){a.push(Ext.apply(this.getButtonFromItem(b),{cls:"menu-item-padding"}))}b=this.getAction("review_rv");if(b){a.push(Ext.apply(this.getButtonFromItem(b),{cls:"menu-item-padding"}))}if(FT.freview.FReviewHelper.isHieroPlayerEnabled()){b=this.getAction("review_hieroplayer");if(b){a.push(Ext.apply(this.getButtonFromItem(b),{cls:"menu-item-padding"}))}}if(this.entityType==="task"){b=this.getAction("review_upload");if(b){a.push(Ext.apply(this.getButtonFromItem(b),{cls:"menu-item-padding"}))}}return a},generateMenu:function(g){var h=this.actions.length,a=0,j,c=[],e;for(;a<h;a++){j=this.actions[a];if(j==="-"){if(c.length>0&&c[c.length-1]!=="-"){c.push("-")}continue}if(Ext.isObject(j)){e={};if(j.permission&&this.getAction(j.permission)===null){continue}if(j.action){e=this.getAction(j.action);if(e){e=this.getButtonFromItem(e)}else{continue}}if(j.config){Ext.apply(e,j.config)}c.push(e);continue}e=this.getAction(j);if(j=="create"){var d=this.generateCreate();if(d.length>0){if(c.length>0){c.push("-")}d.unshift({text:FT.i18n("Create"),disabled:true});Ext.each(d,function(k){c.push(k)},this)}}else{if(j==="review"){c.push({text:FT.i18n("Review"),disabled:true});var b=this.generateReview();Ext.each(b,function(k){c.push(k)},this)}else{if(j==="lists"){if(!this.listHelper){this.listHelper=Ext.create("FT.list.ListHelper",{enableCreate:false})}this.listHelper.selectedItems=[{entityId:this.getEntity().entityId,entityType:this.getEntity().entityType}];this.listHelper.entityType=this.getEntity().entityType;c.push(this.listHelper.getEntityMenu())}else{e=this.getAction(j);if(e){c.push(this.getButtonFromItem(e))}}}}}if(c.length>0&&c[c.length-1]==="-"){c.pop()}if(c.length===0){c.push({text:FT.i18n("Empty menu"),disabled:true})}return c},getButtonFromItem:function(a){if(a.menuItem){var b=Ext.create("FT.ContextMenu",a.menuItem);b.on("selectionchanged",a.fn,this);return b}return{text:a.title,handler:Ext.bind(this.handleClick,this,[a])}},handleClick:function(a){a.fn.call(a.scope||a,this.getEntity(),this.contextType)},getEntity:function(){return Ext.clone(this._entity)},bindEntity:function(a){this._entity=Ext.clone(a);this.removeAll(true);this.add({text:FT.i18n("Loading..."),disabled:true});FTApi.ContextMenu.getPermissions(a,function(b){this.removeAll(true);this.permissions=b;this.add(this.generateMenu())},this)},initComponent:function(){this.items=[{text:FT.i18n("Loading..."),disabled:true}];this.callParent(arguments)}});Ext.define("FT.actions._ContextMenuFactory",{menuCache:{},create:function(a,c,b){var g=[],d=[],e,h;if(a=="slideIn"){if(["task","show","list"].indexOf(c)!=-1&&b!=FT.getTaskId()){d=["goto"]}}else{if(a=="leftMenu"){if(["task","show","list"].indexOf(c)!=-1&&b!=FT.getAssetGroupId()){d=["getinfo"]}}else{if(a==="resourceOutliner"){d=[]}else{assert(false,"Context menu not found for "+a)}}}e={config:{text:FT.i18n("Connect"),disabled:true}};h={action:"connect_publisher",config:{cls:"menu-item-padding"}};if(b==FT.getTaskId()){g=[];g.push("assignme","open_timesheet","showtimelogs","-");if(FT.Settings.get("feature","isConnectEnabled")){g.push(e,h,"-")}g.push("review","-","move","lists","delete")}else{if(b==FT.getShotId()||b==FT.getAssetBuildId()){g=["create","-"];if(FT.Settings.get("feature","isConnectEnabled")){g.push(e,h,"-")}g.push("review","-","handle_managers","-","move","lists","delete")}else{if(c=="task"){g=["create","-"];if(FT.Settings.get("feature","isConnectEnabled")){g.push(e,h,"-")}g.push("handle_managers","-","move","lists","delete")}else{if(c=="show"){g=["create","-","handle_managers","-","delete"]}else{if(c=="list"){g=["-","review","delete"]}else{if(c=="assetversion"){g=["review","-"];if(FT.Settings.asBool("feature","isClientReviewEnabled")){g=g.concat({permission:"add_to_review_session",config:{text:FT.i18n("Client reviews"),disabled:true}},{action:"add_to_review_session",config:{cls:"menu-item-padding"}},"-")}g=g.concat(["lists","delete"])}else{if(c=="user"){g=[]}else{if(c=="reviews"){g=[{permission:"create_review",config:{text:FT.i18n("Create"),disabled:true}},{action:"create_review",config:{cls:"menu-item-padding"}}]}else{if(c=="reviewsession"){g=["open_review_session","clone_review_session","delete"]}else{if(c=="group"){g=["delete"]}}}}}}}}}}g=d.concat(g);if(["reviews"].indexOf(c)===-1){g.push("-","launch_actions")}return Ext.create("FT.actions.BaseContextMenu",{actions:g,entityType:c,objectType:b})},getKey:function(a,b){var c=a+"_"+b.entityType;if(b.objectType){c+="_"+b.objectType}return c},getContextMenu:function(a,b){var c=this.getKey(a,b);if(!this.menuCache[c]){this.menuCache[c]=FT.actions.ContextMenuFactory.create(a,b.entityType,b.objectType)}var d=this.menuCache[c];d.bindEntity(b);return d},test:function(c){var d=["assetversion","list","user","lists"],g=d.length,a=0,e=[],b=Ext.data.StoreManager.lookup("FT.store.ObjectType");for(;a<g;a++){e.push({text:d[a],menu:FT.getContextMenu(c,{entityType:d[a]})})}b.each(function(h){e.push({text:h.get("name"),menu:FT.getContextMenu(c,{entityType:"task",objectType:h.get("typeid")})})});Ext.create("Ext.window.Window",{title:c,tbar:e,width:1024,autoShow:true})}},function(){});FT.actions.ContextMenuFactory=Ext.create("FT.actions._ContextMenuFactory");FT.getContextMenu=Ext.bind(FT.actions.ContextMenuFactory.getContextMenu,FT.actions.ContextMenuFactory);FT.action.fn.assignMe=function(a){var b=this,c;c=Ext.create("FT.ModalWindow",{title:FT.i18n("Assign to task"),closeAction:"destroy",width:400,height:200,resizable:false,closable:true,draggable:false,modal:true,bodyPadding:10,items:[{html:FT.i18n("Are you sure you want to assign yourself to this task?")}],bbar:Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),handler:function(){c.close()}},{xtype:"button",cls:"button-primary",text:FT.i18n("Assign"),handler:function(){FT.util.actions.selfAssign(a);c.close()}}]})});c.show()};FT.action.fn.addManager=function(c,b,a){if(FT.isDemo()){FT.notifySuccess("You cannot add manager in demo mode.");return}var d=Ext.create("FT.ModalWindow",{width:350,title:FT.i18n("Add manager"),autoShow:true,draggable:false,modal:true,resizable:false,items:{xtype:"form",bodyPadding:"0 18 20 15",itemId:"managersForm",url:"/main/addManager",defaults:{xtype:"combo",queryMode:"local",forceSelection:true,allowBlank:false},items:[{xtype:"hidden",value:c.entityId,name:"enityId"},{xtype:"hidden",value:c.entityType,name:"entityType"},{fieldLabel:FT.i18n("User"),store:Ext.create("Ext.data.Store",{autoLoad:true,fields:["name","userid"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_user",fields:["name","userid"],all:true})},reader:{type:"json"}},sorters:[{property:"name"}]}),displayField:"name",valueField:"userid",name:"user",padding:"0 0 5 0",labelWidth:100,anchor:"100%"},{fieldLabel:FT.i18n("Manager type"),store:Ext.create("Ext.data.Store",{autoLoad:true,fields:["name","typeid"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_managertype",fields:["name","typeid"],all:true})},reader:{type:"json"}},sorters:[{property:"name"}]}),displayField:"name",valueField:"typeid",name:"type",editable:false,labelWidth:100,anchor:"100%"}],bbar:Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),style:{marginRight:"10px"},handler:function(){d.close()}},{xtype:"button",cls:"button-primary",text:FT.i18n("Add"),handler:function(){var e=this.up("form").getForm();if(!e.isValid()){return}this.setDisabled(true);e.submit({success:function(g,h){this.setDisabled(false);if(b){b.call(a,true)}this.up("window").close();FT.util.intercom("ADDED-MANAGER")},failure:function(g,h){this.setDisabled(false);if(b){b.call(a,false)}this.up("window").close()},scope:this})}}]})}})};FT.action.fn.removeManager=function(c,b,a){var d=Ext.create("FT.ModalWindow",{title:FT.i18n("Remove manager"),closeAction:"destroy",width:450,height:225,resizable:false,closable:true,draggable:false,modal:true,bodyPadding:"10 0 25 25",layout:"hbox",items:[{xtype:"component",html:FT.glyphIcon("error",{cls:"ft-remove-icon"})},{xtype:"label",margin:"5 25 0 25",width:300,text:FT.i18n("Are you sure you want to remove ")+c.user.name+" as "+c.type+" from the "+c.on.toLowerCase()+"?"}],bbar:Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),style:{marginRight:"10px"},handler:function(){d.close()}},{xtype:"button",cls:"button-primary",text:FT.i18n("Remove"),handler:function(){Ext.Ajax.request({url:"/main/removeManager",params:{managerid:c.managerid},success:function(){b.call(a,true);d.close()},failure:function(){b.call(a,true)},scope:this})}}]})});d.show()};FT.action.fn.saveView=function(b,d,c){var e;Ext.each(b,function(h){if(h.value=="-"){e=h;return false}},this);if(Ext.isDefined(e)){b=Ext.Array.remove(b,e)}var a=Ext.create("Ext.form.RadioGroup",{vertical:true,columns:1,layout:"auto",items:[{boxLabel:FT.i18n("Existing view"),name:"rb",checked:true,handler:function(h){a.getComponent("exist").disable();a.getComponent("new").enable()}},{enableKeyEvents:true,xtype:"combo",itemId:"exist",width:250,typeAhead:true,allowBlank:false,autoSelect:true,editable:false,forceSelection:true,store:{fields:["name","value"],data:b},listeners:{keypress:function(l,k,h,j){}},displayField:"name",valueField:"value",name:"savename"},{boxLabel:FT.i18n("Create new view"),name:"rb",handler:function(h){a.getComponent("new").disable();a.getComponent("exist").enable()}},{xtype:"textfield",width:250,allowBlank:false,disabled:true,itemId:"new",scope:this,name:"savename"}]});var g=Ext.create("FT.ModalWindow",{title:FT.i18n("Save view"),width:300,autoShow:true,draggable:false,modal:true,resizable:false,items:{xtype:"form",itemId:"viewForm",bodyPadding:15,items:[a],bbar:Ext.create("Ext.toolbar.Toolbar",{padding:10,items:[{xtype:"ftrack-button",text:FT.i18n("Cancel"),handler:function(){this.up("window").close()}},"->",{xtype:"ftrack-button",action:"save",handler:function(){var j=this.up("form").getForm();if(!j.isValid()){return}var h=j.getFieldValues();if(Ext.isString(h.savename)){h.savename={key:h.savename,type:"custom"}}d.call(c,h);this.up("window").close()}}]})}})};FT.action.fn.viewAttachmentsHandler=function(c,e,b){var d=c.getStore().getAt(e);if(d.phantom){FT.notifyError(FT.i18n("This action is not available before saving."));return}var a={entityId:d.get("entityId"),entityType:d.get("entityType")};FT.action.fn.openSlideIn(a)};FT.action.fn.viewNotesHandler=function(c,e,b){var d=c.getStore().getAt(e);if(d.phantom){FT.notifyError(FT.i18n("This action is not available before saving."));return}var a={entityId:d.get("entityId"),entityType:d.get("entityType")};FT.action.fn.openSlideIn(a)};FT.action.fn.openSlideIn=function(b,a){FT.app.open(null,{slideEntityId:b.entityId,slideEntityType:b.entityType,slideView:a})};FT.action.fn.viewLogHandler=function(a,b){FT.action.fn.openFakeDashboard({type:"log_v1",cfg:{draggable:true,bodyCls:"ftrack-window-notes fullscreenPadding",link:b},layout:"fit",entity:{entityType:a.entityType,entityId:a.entityId}})};FT.action.fn.openFakeDashboard=function(k,h,j){if(!Ext.isDefined(FT.notesDashManager)){var g="projects_hidden",b=Ext.create("FT.AbstractModule",{itemId:g}),d=Ext.widget("container",{itemId:g,isEdit:function(){return true}});FT.notesDashManager=Ext.create("FT.util.DashboardManager",{});FT.notesDashManager.loadDashboards(d,b.getDashboards())}var a=FT.notesDashManager.updateDashboard(k.entity,k.type,true),c=Ext.getBody().getHeight();c=c<800?c:800;var e={width:700,title:FTrack.grid.LinkRendererPrint(k.cfg.link),height:c,closeAction:"hide",layout:k.layout,autoShow:true,items:FT.notesDashManager,bodyCls:"ftrack-window-notes bodyscrollhack"};if(k.cfg){Ext.apply(e,k.cfg)}if(Ext.isDefined(this.win)){Ext.Object.each(k.cfg,function(l,m){this.win[l]=m},this);if(Ext.isDefined(e.title)){this.win.setTitle(e.title)}else{if(Ext.isDefined(k.cfg.link)){this.win.setTitle("<span style='font-size:12px;'>"+FTrack.grid.LinkRendererPrint(k.cfg.link)+"</span>")}}if(Ext.isDefined(e.width)){this.win.setWidth(e.width)}this.win.show()}else{this.win=Ext.create("FT.ModalWindow",e)}};FT.action.fn.timesheetHandler=function(b,d,a){var c=b.getStore().getAt(d);if(!c){FT.notifyError(FT.i18n("Invalid action."));return}FT.action.fn.timesheetOpener({entityType:"task",entityId:c.get("entityId")})};FT.action.fn.timesheetOpener=function(a){Ext.Ajax.request({url:"/track/validateAssignement",params:{taskid:a.entityId},success:function(b){var c=Ext.decode(b.responseText);if(c.success){FT.action.fn.timesheet(a)}else{if(c.errors){FTrack.errorMessage(c.errors[0].msg,"",5)}}}})};FT.action.fn.timesheet=function(a,c,b){FT.app.fireEvent("showtimesheet",a)};FT.action.fn.openAndLoadTimelogger=function(a,c,b){FTApi.Timelog.authorize({context_id:a},function(d){if(d&&d.data){FT.app.fireEvent("timelogger-open",d.data[0])}else{var e=d&&d.message||"Failed to open time logger.";FT.notifyError(e)}})};FT.action.fn.inspectimage=function(a){var d,c=Ext.create("Ext.Img",{src:a.src,hidden:true}),b;var e=function(l){var j=l.BODY_MARGIN;var h=c.getSize();var k=Ext.getBody().getViewSize();k.width=k.width-j;k.height=k.height-j;var g=Math.min(k.width/h.width,k.height/h.height);g=Math.min(g,1);c.width=h.width*g;c.height=h.height*g;l.setSize(c.width,c.height)};d=Ext.create("FT.ModalWindow",{header:false,padding:0,ui:"plain",closeOnClick:true,items:[c],autoShow:true,loadMask:true,shadow:false,listeners:{show:function(){this.loadingMask=new Ext.LoadMask({maskCls:"",target:this,autoShow:true})}}});b=c.getEl();b.dom.onload=function(){if(!c.rendered){return}c.show();e(d);d.center();d.loadingMask.hide()};b.dom.onerror=function(){d.close();FT.notifyError(FT.i18n("Failed to display image."))}};FT.action.fn.loadprotocol=function(a){var b;if(Ext.isDefined(FT.WebMediator)){b=[FT.WebMediator.getVideoFormat(),"ftrackreview-image"]}Ext.Ajax.request({url:"/attachment/getProtocolLink",params:{component_id:a.attachmentid,videoFormat:b},success:function(c){var h=Ext.decode(c.responseText);var j=false;var d=h.overlayPlayer;var g=h.localPlayer;if(d){j=FT.freview.FReviewHelper.validateFormat(d)}if(j){FT.freview.FReviewHelper.openOverlayPlayer(d)}else{if(g&&g.componentId){var e=null;FT.ComponentPathResolver.resolve(g.componentId,e,function(l){try{FT.notifySuccess(FT.i18n("Opening local file."));var k=g.protocol+l.data.path;window.location.href=encodeURI(k)}catch(m){if(m.message){FT.notifyError(m.message)}else{FT.notifyError(FT.i18n("Error when opening local file."))}}})}else{FT.action.open("inspectimage",{src:h.componentUrl})}}}})};FT.action.fn.listArchivedProjects=function(){var a=Ext.create("FT.ModalWindow",{title:FT.i18n("Hidden projects"),height:600,width:400,autoShow:true,overflowY:"auto",items:[{xtype:"dataview",emptyText:'<span style="padding-left:15px;color:#999;font-style:italic;">'+FT.i18n("No archived projects.")+"</span>",itemSelector:"tr.hidden-project",overItemCls:"over-item-cls",store:{fields:["fullname","name","thumbid","startdate","enddate","showid"],proxy:{type:"ajax",url:"/main/getArchivedProjects"},autoLoad:true},tpl:new Ext.XTemplate('<table style="width:100%;border-spacing:0px;">','<tpl for=".">','<tr style="cursor:pointer;height:50px;" class="hidden-project">','<td style="width:80px;padding:0px 10px 0px 15px;">{[this.getIconRenderer(values.thumbid)]}</td>','<td style="font-size:13px;">',"{fullname} ({name})</br>",'<span style="color:#ccc;">',"{[FTrack.grid.dateRenderer(values.startdate)]} - ","{[FTrack.grid.dateRenderer(values.enddate)]}","</span>","</td>","</tr>","</tpl>","</table>",{getIconRenderer:function(b){b.action="";return FTrack.grid.IconRenderer(b)}}),listeners:{itemclick:function(c,b){a.close();FT.app.open("projects",{entityId:b.get("showid"),entityType:"show"})}}}]})};FT.action.fn.moveEntity=function(e,b,a){if(FT.isDemo()){FT.notifySuccess("You cannot move in demo mode.");return}if(!Ext.isDefined(e)||e.length==0){return}var c=e[0].entityType;if(["task"].indexOf(c)==-1){FT.notifyError(FT.i18n("You cannot move this type."));return}var d=Ext.create("FT.MoveDialog",{autoShow:true,entities:e});if(b){d.on("destroy",function(){b.call(a,true)},this)}};FT.action.fn.addAsset=function(a,c,b){if(FT.isDemo()){FT.notifySuccess("You cannot publish in demo mode.");return}var d=Ext.create("FT.PublishDialog",{autoShow:true,entityId:a.entityId,entityType:a.entityType})};FT.action.fn.addComponent=function(a,c,b){if(FT.isDemo()){FT.notifySuccess("You cannot add component in demo mode.");return}var d=Ext.create("FT.AddComponentDialog",{autoShow:true,entityId:a.entityId,entityType:a.entityType,versionId:a.entityId})};FT.action.fn.editEntityHandler=function(b,d,a){var c=b.getStore().getAt(d);if(c.phantom){FT.notifyError(FT.i18n("This action is not available before saving."));return}FT.action.open("editEntity",{entityType:c.get("entityType"),entityId:c.get("entityId"),objectType:c.get("object_typeid")},false,function(){b.load()},this)};FT.action.fn.goToEntityHandler=function(b,e,a){var c=b.getStore().getAt(e);if(c.phantom){FT.notifyError(FT.i18n("This action is not available before saving."));return}var d={entityType:c.get("entityType"),entityId:c.get("entityId")};if(c.get("entityType")=="assetversion"){d.view=null}FT.app.open("projects",d)};FT.action.fn.removeEntity=function(a,d,c){var b;if(d){b={removesuccess:d,scope:c}}Ext.create("FT.window.RemoveDialog",{autoShow:true,entity:Ext.clone(a),listeners:b})};FT.action.fn.editEntity=function(a,d,c,b){if(Ext.isEmpty(a.entityId)){return}FT.edit(a,d,c,b)};FT.action.open=function(a,d,c,b){if(Ext.isDefined(FT.action.fn[a])){FT.action.fn[a](d,c,b)}else{FT.util.Exception("Action not found",arguments)}};FT.action.fn.openIframe=function(a,e,c,b){var d=Ext.create("FT.iframe.Window",{autoShow:true,url:a,title:e.title?e.title:FT.i18n("External player")})};FT.action.fn.showTimelogs=function(a){var b=Ext.create("Ext.Component",{hidden:true,padding:8,html:FT.i18n("You are only allowed to see your own timelogs on this task")});var d=Ext.create("FT.timelogging.TimelogsList",{padding:10,enableActions:false,enableContextLink:false,enableUserLink:true,enableEditDuration:false,criteria:{context_id:a.entityId}});d.store.on("load",function(e){var g=e.getProxy().getReader().metaData&&e.getProxy().getReader().metaData.accessRestrictedForContext;if(g){b.show()}else{b.hide()}});var c=Ext.create("Ext.window.Window",{height:360,width:550,autoShow:true,modal:true,bodyPadding:6,title:FT.i18n("Logged time"),layout:"auto",overflowY:"auto",items:[b,d]})};FT.action.fn.downloadComponent=function(a){window.location=FT.util.getComponentUrl(a)};FT.action.fn.openActions=function(a){Ext.create("FT.window.Actions",{selection:a||[],autoShow:true})};FT.action.fn.createProject=function(){var b=FT.Settings.get("ftrack","createProjectActionIdentifier");if(b){FT.Connect.launchAction({actionIdentifier:b,selection:[]})}else{var a=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"CreateProjectDialog",props:{className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onCancel:function(){a.destroy()},onProjectCreatedClose:function(c){a.destroy();FT.util.intercom("created-project")},onProjectCreatedGoto:function(d,c){FT.app.open("projects",{entityId:d,entityType:"show",view:c||null});a.destroy();FT.util.intercom("created-project")}}})}};Ext.define("FT.timelogging.DurationFormatter",{constructor:function(h){this.unit={day:h||24*60*60,hour:60*60,minute:60,second:1};this.expressions=[];var k,g,d,b,a,c,e,j;k="\\d+(?:\\.\\d+)?";g="("+k+")\\s*(?:days?|dys?|d)";d="("+k+")\\s*(?:hours?|hrs?|h)";b="("+k+")\\s*(?:minutes?|mins?|m)";a="("+k+")\\s*(?:seconds?|secs?|s)";c="[\\s,\\/-]*";e="^";e+="(?:"+g+")?"+c;e+="(?:"+d+")?"+c;e+="(?:"+b+")?"+c;e+="(?:"+a+")?"+c;e+="$";this.expressions.push({name:"general",pattern:new RegExp(e,"i")});this.expressions.push({name:"minute-clock",pattern:new RegExp("^(\\d+):(\\d+)\\s*(?:minutes?|mins?|m)\\s*$","i")});this.expressions.push({name:"hour-clock",pattern:new RegExp("^(\\d+):(\\d+)\\s*(?:hours?|hrs?|h)?\\s*$","i")});this.expressions.push({name:"full-clock",pattern:new RegExp("^(\\d+):(\\d+):(\\d+)$","i")})},parse:function(h){h=h.trim();if(!h){return 0}var a;a=parseInt(h);if(a.toString()==h){return this.unit.minute*a}a=parseFloat(h);if(a.toString()==h){return this.unit.hour*a}var c,g,b,d=this.expressions.length,e;for(c=0;c<d;c++){g=this.expressions[c];b=g.pattern.exec(h);if(b){e=0;if(g.name=="general"){if(b[1]!==undefined){e+=this.unit.day*b[1]}if(b[2]!==undefined){e+=this.unit.hour*b[2]}if(b[3]!==undefined){e+=this.unit.minute*b[3]}if(b[4]!==undefined){e+=this.unit.second*b[4]}}else{if(g.name=="minute-clock"){e+=this.unit.minute*b[1];e+=this.unit.second*b[2]}else{if(g.name=="hour-clock"){e+=this.unit.hour*b[1];e+=this.unit.minute*b[2]}else{if(g.name=="full-clock"){e+=this.unit.hour*b[1];e+=this.unit.minute*b[2];e+=this.unit.second*b[3]}}}}return e}}throw new Error("Failed to parse duration "+h)},format:function(h){var b,c,h,d,a;a=this._divmod(h,3600);b=a.division;a=this._divmod(a.remainder,60);c=a.division;h=Math.ceil(a.remainder);if(h==60){c+=1;h=0}if(c==60){b+=1;c=0}var g;var e=Ext.Function.bind(Ext.String.leftPad,Ext.String.leftPad,[2,"0"],1);if(b<=0&&c<=0){g=Ext.String.format("{0} sec",h)}else{if(b<=0){g=Ext.String.format("{0}:{1} min",e(c),e(h))}else{g=Ext.String.format("{0}:{1}:{2}",e(b),e(c),e(h))}}return g},_divmod:function(d,c){var g=d/c;if(g>0){g=Math.floor(g)}else{g=Math.ceil(g)}var e=d%c;return{division:g,remainder:e}}});void function(){var c=this,b=function(h){try{h.initKeyboardEvent("keyup",false,false,c,"+",3,true,false,true,false,false);return(h.keyIdentifier||h.key)=="+"&&(h.keyLocation||h.location)==3&&(h.ctrlKey?h.altKey?1:3:h.shiftKey?2:4)||9}catch(g){b=0}}(document.createEvent("KeyboardEvent")),e={"char":"",key:"",location:0,ctrlKey:false,shiftKey:false,altKey:false,metaKey:false,repeat:false,locale:"",detail:0,bubbles:false,cancelable:false,keyCode:0,charCode:0,which:0},a=Object.defineProperty||function(g,j,h){if("value" in h){g[j]=h.value}};function d(k,l){var D;if(b){D=document.createEvent("KeyboardEvent")}else{D=document.createEvent("Event")}var p,s={};for(p in e){if(Object.prototype.hasOwnProperty.call(e,p)){s[p]=(Object.prototype.hasOwnProperty.call(l,p)&&l||e)[p]}}var w=s.ctrlKey,A=s.shiftKey,t=s.altKey,x=s.metaKey,q=s.altGraphKey,y=b>3?((w?"Control":"")+(A?" Shift":"")+(t?" Alt":"")+(x?" Meta":"")+(q?" AltGraph":"")).trim():null,j=s.key+"",u=s["char"]+"",m=s.location,C=s.keyCode||(s.keyCode=j&&j.charCodeAt(0)||0),o=s.charCode||(s.charCode=u&&u.charCodeAt(0)||0),z=s.bubbles,n=s.cancelable,B=s.repeat,h=s.locale,g=c;s.which||(s.which=s.keyCode);if("initKeyEvent" in D){D.initKeyEvent(k,z,n,g,w,t,A,x,C,o)}else{if(b&&"initKeyboardEvent" in D){if(b==1){D.initKeyboardEvent(k,z,n,g,j,m,w,A,t,x,q)}else{if(b==2){D.initKeyboardEvent(k,z,n,g,w,t,A,x,C,o)}else{if(b==3){D.initKeyboardEvent(k,z,n,g,j,m,w,t,A,x,q)}else{if(b==4){D.initKeyboardEvent(k,z,n,g,j,m,y,B,h)}else{D.initKeyboardEvent(k,z,n,g,u,j,m,y,B,h)}}}}}else{D.initEvent(k,z,n)}}for(p in e){if(Object.prototype.hasOwnProperty.call(e,p)){if(D[p]!=s[p]){try{delete D[p];a(D,p,{writable:true,value:s[p]})}catch(D){}}}}return D}c.crossBrowser_initKeyboardEvent=d}.call(this);FT.toLegacyEntityType=function(e){var d=new RegExp("_","g");var b=Ext.data.StoreManager.lookup("FT.store.SchemaTranslations");var c=b.findExact("new",e);var a=c!==-1?b.getAt(c):null;return a&&a.get("legacy").replace(d,"")||null};FT.fromLegacyEntityType=function(e){var d=new RegExp("_","g");var b=Ext.data.StoreManager.lookup("FT.store.SchemaTranslations");var c=b.findBy(function(g){return !g.get("isAliasedWithclassifiers")&&g.get("legacy").replace(d,"")===e.replace(d,"")});var a=c!==-1?b.getAt(c):null;return a&&a.get("new")||null};Ext.define("FT.component.Iframe",{extend:"Ext.Component",allowPostMessage:false,data:null,extraParams:null,MAP_MODULES:{overview:"overview",project:"projects",planning:"planning",report:"report",my_tasks:"home",system_settings:"newconfigure",account_settings:"me"},initComponent:function(){if(this.src.indexOf("/")===0){this.src=FT.util.getServerUrl()+this.src}var a=FT.Settings.get("CUSTOM","allowed_widget_urls");var b=false;Ext.each(a.split(","),function(c){var d=c.trim();if(d.length>0&&this.src.indexOf(d)===0){b=true}},this);if(this.allowPostMessage&&!b){this.html=Ext.String.format('<div class="text-bigger" style="padding: 20px;">"{0}" is not allowed as a widget. Please go to Advanced settings in System Settings and add it to allowed widget URLs.</div>',this.src);return}this.autoEl={tag:"iframe",src:this.addParamsToUrl(this.src),frameborder:0};this.callParent(arguments);this.handleMessage=Ext.bind(this.handleMessage,this);this.on("afterrender",this.addPostMessageListener);this.on("show",this.addPostMessageListener);this.on("move",this.addPostMessageListener);this.on("hide",this.removePostMessageListener);this.on("destroy",this.removePostMessageListener)},updateParam:function(a,c){var b=this.el&&this.el.dom;if(b){b.src=this.setParam(b.src,a,c)}},addPostMessageListener:function(){var a=this.el.dom;this.iframeWindow=a.contentWindow;if(this.allowPostMessage){window.addEventListener("message",this.handleMessage)}},removePostMessageListener:function(){if(this.allowPostMessage){window.removeEventListener("message",this.handleMessage)}},getTheme:function(){var a=FT.getThemeStylesheet();return FT.getCurrentTheme(a)},setParam:function(b,a,c){return b.replace(new RegExp("([?&]"+a+"(?=[=&#]|$)[^#&]*|(?=#|$))"),"&"+a+"="+encodeURIComponent(c)).replace(/^([^?&]+)&/,"$1?")},addParamsToUrl:function(b){var a=b;if(this.extraParams){Ext.Object.each(this.extraParams,function(c,d){a=this.setParam(a,c,d)},this)}return this.setParam(a,"theme",this.getTheme())},onIframeLoad:function(){var a={credentials:{apiUser:FT.apiUser,apiKey:FT.csrfToken,csrfToken:FT.csrfToken,serverUrl:FT.util.getServerUrl()},theme:this.getTheme()};if(Ext.isObject(this.data)){Ext.apply(a,this.data)}this.sendMessage("ftrack.widget.load",a)},sendMessage:function(a,b){if(!this.allowPostMessage){return}this.iframeWindow.postMessage({topic:a,data:b},this.src)},handleMessage:function(e){var a=e.origin||e.originalEvent.origin,g=e.data;if(e.source!=this.iframeWindow){return}if(this.src.indexOf(a)!==0){return}if(g.topic==="ftrack.application.open-sidebar"){FT.app.open(null,{slideEntityId:g.data.id,slideEntityType:FT.toLegacyEntityType(g.data.type)})}else{if(g.topic==="ftrack.application.navigate"){var b=this.MAP_MODULES[g.data.module]||null;FT.app.open(b,{entityId:g.data.id,entityType:FT.toLegacyEntityType(g.data.type)})}else{if(g.topic==="ftrack.application.open-actions"){var c=[];Ext.Array.forEach(g.data.selection,function(h){c.push({entityId:h.id,entityType:FT.toLegacyEntityType(h.type)})});Ext.create("FT.window.Actions",{autoShow:true,selection:c||[]})}else{if(g.topic==="ftrack.widget.ready"){this.onIframeLoad()}else{if(g.topic==="ftrack.application._track_usage"){var d=g.data;if(d.type==="event"){FT.util.intercom(d.name,d.data)}else{if(d.type==="attributes"){FT.util.updateIntercomAttributes(d.data)}}}else{if(g.topic==="ftrack.application.create-project"){FT.action.fn.createProject()}else{if(g.topic==="ftrack.application.document-clicked"){this.el.dom.click()}else{if(g.topic==="ftrack.application.document-keydown"){var d=g.data;this.dispatchKeyEvent(this.el.dom,"keydown",d)}else{if(g.topic==="ftrack.application.close-widget"){this.fireEvent("close-iframe-window")}else{if(g.topic==="ftrack.application.open-preview"){FT.action.fn.loadprotocol({attachmentid:g.data.componentId})}}}}}}}}}}},dispatchKeyEvent:function(b,a,c){var d=crossBrowser_initKeyboardEvent(a,{ctrlKey:c.ctrlKey,shiftKey:c.shiftKey,altKey:c.altKey,metaKey:c.metaKey,altGraphKey:c.altGraphKey,bubbles:true,cancelable:true,repeat:c.repeat,locale:c.locale,location:c.location,key:c.key,"char":c.charCode,keyCode:c.keyCode,charCode:c.charCode});b.dispatchEvent(d)}});Ext.define("FT.Scope",{mixins:{observable:"Ext.util.Observable"},_currentScope:undefined,constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this);this.addEvents("scopechanged");Ext.Ajax.on("beforerequest",this.onBeforeAjaxRequest,this);this.callParent(arguments)},onBeforeAjaxRequest:function(a,b){b.headers=Ext.value(b.headers,{});Ext.apply(b.headers,{"Ftrack-Scope":Ext.encode(this.getCurrentScope())})},setScope:function(c){var a=this.getCurrentScope(),b;if(Ext.isEmpty(c)){c=null}b=!Ext.Array.equals(Ext.value(c,[]),Ext.value(a,[]));if(b){FT.setVar("currentScope",Ext.clone(c));this.fireEvent("scopechanged",c,a)}},onScopesLoaded:function(){this.fireEvent("scopechanged",this.getCurrentScope(),[])},getCurrentScope:function(){return Ext.clone(FT.getVar("currentScope",null))},getSelector:function(){if(!this.scopeSelector){this.scopeSelector=Ext.widget({xtype:"ft-selector",displayField:"name",valueField:"id",itemType:"checkbox",selectAction:undefined,emptyText:FT.i18n("No scopes"),value:this.getCurrentScope(),beforeItems:[{text:FT.i18n("Any scope"),handler:function(){this.scopeSelector.select(null)},scope:this},"-"],store:{proxy:{type:"direct",directFn:"FTApi.Scope.query",reader:{root:"data"}}}});this.scopeSelector.menu.on({hide:function(){this.setScope(this.scopeSelector.getValue())},show:function(){this.scopeSelector.store.load({limit:Infinity})},scope:this})}return this.scopeSelector}});Ext.define("FT.core.Slider",{extend:"Ext.Layer",slideTime:150,topPosition:40,sliderMinWidth:450,sliderDefaultWidth:630,getCurrentHeight:function(){return Ext.getBody().getHeight()-this.viewport.getTopBarHeight()},constructor:function(b){Ext.apply(this,b);var a=this.getCurrentHeight();var c=Math.max(FT.getVar("sliderwidth",this.sliderDefaultWidth),this.sliderMinWidth);c=Math.min(c,this.getMaxExpandWidth());this.callParent(arguments);this.fullSize=false;this.setWidth(c);this.setHeight(a);this.setZIndex(1000);this.realWidth=c;this.addCls("slider hide-slider");this.manageHide();this.p=Ext.create("Ext.Container",{width:c,layout:"fit",autoScroll:false,height:a,renderTo:this,resizable:true,resizeHandles:"w",minWidth:this.sliderMinWidth});this.p.resizer.on("resize",function(g,e,d){this.setSliderWidth(e)},this);this.viewport.on("resize",this.adjustSliderHeight,this);this.viewport.topBar.on("resize",this.adjustSliderHeight,this);this.dashboard=null;FT.app.on("ftrackKeyEvent",this.handleEscape,this)},adjustSliderHeight:function(){this.applyStyles("height:"+this.getCurrentHeight()+";");this.p.setHeight(this.getCurrentHeight())},getMaxExpandWidth:function(){return Ext.getBody().getWidth()-200},setSliderWidth:function(a){a=Math.min(this.getMaxExpandWidth(),a);this.realWidth=a;this.setWidth(a);this.p.setWidth(a);this.p.setPosition(0,0);FT.setVar("sliderwidth",a)},handleEscape:function(a){if(a!="cancel"){return true}this._abortUpdate();this.handleSlideOut();return true},switchTo:function(a){this.p.removeAll(true);this.p.add(a);this.slideIn()},handleSlideOut:function(){var a=FT.app.getCfg();if(a.slideEntityId){var b={slideEntityId:null,slideEntityType:null};if(Ext.isDefined(a.view)){b.view=a.view}FT.app.open(null,b)}else{this.slideOut()}},slideOnClick:function(){if(this.fullSize){this.handleSlideOut()}else{this.slideIn()}},slideIn:function(){this.manageShow();if(this.fullSize==false){Ext.Function.defer(this.addDashboard,250,this)}this.fullSize=true;this.removeCls("hide-slider")},slideOut:function(){this.fullSize=false;this.addCls("hide-slider");this.hideData();Ext.Function.defer(this.manageHide,250,this)},manageShow:function(){this.show()},manageHide:function(){this.applyStyles("display: none;")},updateDashboard:function(a){if(this.dashboard==null){var d="slidein",b=Ext.create("FT.AbstractModule",{itemId:d}),c=Ext.widget("container",{itemId:d,isEdit:function(){return true}});this.dashboard=Ext.create("FT.util.DashboardManager",{useLoadmask:false});this.dashboard.loadDashboards(c,b.getDashboards())}this.dashboard.updateDashboard(a,"slidein2",true)},_abortUpdate:function(){if(this.request){Ext.Ajax.abort(this.request);delete this.request}},updateEntity:function(b,a){b=Ext.clone(b);if(b==null||b.entityId==""){this.slideOut();return}this._abortUpdate();this.request=Ext.Ajax.request({url:"/main/verifyModuleConfig",params:{config:Ext.encode(b)},success:function(e){var c=Ext.decode(e.responseText);if(c.success){var d=c.data.objectType;b.objectType=d;this.updateDashboard(b,a);this.slideIn()}else{FT.notifyError(c.message)}},scope:this})},addDashboard:function(a){Ext.suspendLayouts();this.p.removeAll(false);Ext.resumeLayouts();this.p.add(this.dashboard)},hideData:function(){this.p.removeAll(false);this.p.add({border:false,html:""})},allowModuleChange:function(){if(this.fullSize==false){return true}return this.dashboard.allowModuleChange()}});Ext.define("FT.module.Projects.ProjectModel",{extend:"Ext.data.Model",fields:[{name:"showid",type:"string"},{name:"entityType",type:"string",defaultValue:"show"},{name:"fullname",type:"string"},{name:"enddate",type:"date"}]});Ext.define("FT.module.Projects.ProjectsDataView",{extend:"Ext.container.Container",filterId:"default",title:FT.i18n("Projects"),layout:{type:"vbox",align:"stretch"},initComponent:function(){assert(this.directFn,"Must define this.directFn.");var d=this.title,c,a,b;c=Ext.create("FT.button.Selector",{text:FT.i18n("Sort"),itemType:"radio",value:"fullname",ui:"plain",cls:"ft-project-menu-sort",store:[["fullname",FT.i18n("Name")],["enddate",FT.i18n("Due date")]],listeners:{select:function(e){this.onSortButtonChanged(e,a)},scope:this},filterId:"projects-sort",plugins:[{ptype:"ft-sort-stateful",filterId:this.filterId}]});b={xtype:"toolbar",padding:0,items:[{xtype:"component",cls:"ft-project-menu-header",html:this.title},"->",c]};a=Ext.create("Ext.view.View",{itemSelector:"li.ft-project-menu-item",flex:1,emptyText:'<p class="ft-grid-emptytext-small">'+FT.i18n("No projects.")+"</p>",deferEmptyText:false,autoScroll:true,loadMask:false,store:Ext.create("Ext.data.Store",{model:"FT.module.Projects.ProjectModel",proxy:{type:"direct",directFn:this.directFn,extraParams:{skipMetadata:true},reader:{root:"data"}},autoLoad:true,sorters:[{property:c.value}]}),tpl:new Ext.XTemplate('<ul class="ft-project-menu-list">','<tpl for=".">','<li class="ft-project-menu-item text-ellipsis" title="{fullname}">',"{fullname}","</li>","</tpl>","</ul>"),listeners:{itemclick:this.onMenuItemClicked,scope:this}});this.items=[b,a];this.callParent(arguments);this.getSelectionModel=Ext.bind(a.getSelectionModel,a);this.getStore=Ext.bind(a.getStore,a);this.view=a},getView:function(){return this.view},onMenuItemClicked:function(b,a){this.loadProjectFromRecord(a)},selectIndex:function(a){this.view.getSelectionModel().select(a,false,true);this.scrollIndexIntoView(a)},scrollIntoViewIfNeeded:function(b,c){c=c||b.parentNode;var a,g,e,d,h;if(!b){return}a=b.offsetTop<c.scrollTop;e=b.offsetTop+b.clientHeight;d=c.scrollTop+c.clientHeight;g=e>d;h=!!a;if(a||g){b.scrollIntoView(h)}},scrollIndexIntoView:function(a){var d=this.view.getEl(),b=d&&d.dom,c=this.view.getNode(a);if(c&&b){this.scrollIntoViewIfNeeded(c,b)}},loadProjectFromRecord:function(a){if(!a){return}FT.app.open("projects",{entityId:a.get("showid"),entityType:a.get("entityType")})},loadSelectedProject:function(){var a=this.getSelectedRecord();this.loadProjectFromRecord(a)},getSelectedRecord:function(){var a=this.view.getSelectionModel(),c=a.getSelection(),b=c[0];return b},selectFirstItem:function(a){a.getSelectionModel().select(a.getStore().first())},onSortButtonChanged:function(b,a){a.getStore().sort(b,"ASC");this.fireEvent("sortchange")},getSelectedIndex:function(){var c=this.getSelectedRecord(),a,b;if(c){a=c.index}return a},selectItemAtOffset:function(h){var b=this.getView(),d=b.getStore().getCount()-1,e=b.getNode(0),g,a,c;if(!e||!Ext.isNumber(h)){return}g=b.getEl().getScrollTop()||0;a=Ext.fly(e).getHeight()||1;c=Math.floor((h+g)/a);c=Math.min(c,d);c=Math.max(c,0);this.selectIndex(c)},getSelectedOffset:function(){var a=this.getView(),c=a.getSelectedNodes()||[],d=c.length&&c[0],b,g,e;if(!d){return 0}b=a.getEl().getY()||0;g=Ext.fly(d).getY()||0;e=g-b;return e}});Ext.define("FT.view.ProjectMenu",{extend:"FT.view.MegaLayer",_isDirty:false,_recentProjectsChanged:false,constructor:function(){this.lastSearchValue="";var b,a=[];this.recentProjectsView=Ext.create("FT.module.Projects.ProjectsDataView",{title:FT.i18n("Recent projects"),directFn:FTApi.FType.Project.getRecent,flex:1,filterId:"recentprojects"});this.myProjectsView=Ext.create("FT.module.Projects.ProjectsDataView",{title:FT.i18n("My projects"),directFn:FTApi.FType.Project.getAssigned,flex:1,filterId:"myprojects",margin:"0 0 0 20"});this.activeProjectsView=Ext.create("FT.module.Projects.ProjectsDataView",{title:FT.i18n("Active projects"),directFn:FTApi.FType.Project.getActive,flex:1,filterId:"activeprojects",margin:"0 20 0 20"});b=[this.recentProjectsView,this.myProjectsView,this.activeProjectsView];this.views=b;this.button=Ext.create("Ext.button.Button",{scope:this,enableToggle:true,toggleHandler:this.projectsButtonHandler,text:FT.i18n("Projects"),tourId:"projects",itemId:"projects",scale:"large",menu:[]});Ext.each(b,function(c){c.on("sortchange",this.resetFocus,this);a.push(c.getStore());c.getView().on("itemclick",function(){this.deselectItemsInAllViews();this.close()},this)},this);this.store=Ext.create("FT.data.MultiStoreInterface",{stores:a});this.callParent();this.on("afterclose",this.onAfterClose,this);if(FT.app.scope){FT.app.scope.on("scopechanged",this.onScopeChanged,this)}},onScopeChanged:function(){this.setDirty(true)},getTopMenuButton:function(){return this.button},getViews:function(){return this.views},getSelectedView:function(){return this.views[this.selectedView]},getStore:function(){return this.store},setDirty:function(a){this._isDirty=a},isDirty:function(){return this._isDirty},setRecentProjectsChanged:function(a){this._recentProjectsChanged=a},isRecentProjectsChanged:function(){return this._recentProjectsChanged},resetFocus:function(){this.searchField.focus()},projectsButtonHandler:function(a,b){if(!this.layer){this.createProjectsMenu(a)}this.toggleShow(b);if(b){this.selectTopLeftMostItem();this.resetFocus();this.updateBottomBarButtonStates()}},selectTopLeftMostItem:function(){Ext.each(this.views,function(a,b){if(a.getStore().getCount()>0){this.firstViewIndex=b;return false}},this);if(Ext.isDefined(this.firstViewIndex)){this.views[this.firstViewIndex].selectIndex(0);this.selectedView=this.firstViewIndex;this.numberOfViews=3-this.firstViewIndex}},createProjectsMenu:function(a){this.createLayer({cls:"ft-project-menu-layer"});this.createProjectsMenuPanel();this.createKeyboardNavigation();this.selectedView=0;this.numberOfViews=3;this.layer.on("click",this.resetFocus,this)},createProjectsMenuPanel:function(){var a=FT.getVar("ftstate-projects-menu-height"),b;b={left:10,minHeight:400,maxHeight:FT.Viewport.getHeight()-100,layout:{type:"hbox",align:"stretch",defaultMargins:"20 0 0 20"},tbar:this.createTopBar(),bbar:this.createBottomBar(),renderTo:this.layer,bodyCls:"no-border toolbar-default",items:this.getViews()};if(Ext.isDefined(a)){Ext.apply(b,{height:a})}this.panel=Ext.create("Ext.panel.Panel",b)},createKeyboardNavigation:function(){var a=new Ext.util.KeyNav({target:this.panel.getEl(),scope:this,right:Ext.pass(this.onKeyLeftRight,[1],this),left:Ext.pass(this.onKeyLeftRight,[-1],this),up:Ext.pass(this.onKeyUpDown,[-1],this),down:Ext.pass(this.onKeyUpDown,[1],this),enter:this.onKeyEnter})},deselectItemsInAllViews:function(){Ext.Array.forEach(this.views,function(a){a.getSelectionModel().deselectAll()})},onKeyLeftRight:function(c,b){var e=this.getSelectedView(),d=e.getSelectedOffset(),a=!!this.store.getCount();if(a){this.deselectItemsInAllViews();this.selectedView=this.getNextPossibleIndex(c);this.getSelectedView().selectItemAtOffset(d)}},getNextPossibleIndex:function(d){var b=this.selectedView,c;for(var a=0;a<this.numberOfViews;a+=1){b+=d;c=this.views[b];if(!c){break}if(c.getStore().getCount()>0){return b}}return this.selectedView},onKeyUpDown:function(e,d){var b=this.getSelectedView(),a=b.getSelectedIndex(),c=0;if(Ext.isDefined(a)){c=a+e}b.selectIndex(c)},onKeyEnter:function(){var a=this.getSelectedView();a.loadSelectedProject();this.close()},createTopBar:function(){var b,a;this.searchField=Ext.create("Ext.form.field.Text",{width:260,emptyText:FT.i18n("Type to filter"),enableKeyEvents:true,listeners:{keyup:this.onSearchFieldKeyUp,scope:this}});this.delayedSearchFieldTask=new Ext.util.DelayedTask(this.applySearchFieldFilter,this);a=[this.searchField,"->"];if(FT.isAuth("CREATE_PROJECT")){a.push(this.createViewHiddenButton(),this.createCreateProjectButton())}b=Ext.create("Ext.toolbar.Toolbar",{padding:"20 20 0 20",items:a,cls:"toolbar-default no-border"});return b},applySearchFieldFilter:function(){var a=this.searchField.getValue();if(a===this.lastSearchValue){return}this.lastSearchValue=a;this.store.clearFilter();this.store.filter({property:"fullname",value:a,anyMatch:true});this.deselectItemsInAllViews();this.selectTopLeftMostItem()},onSearchFieldKeyUp:function(a){this.delayedSearchFieldTask.delay(250)},createViewAllProjectsButton:function(){return Ext.create("Ext.button.Button",{glyph:FT.glyph("list"),text:FT.i18n("View all projects"),scope:this,handler:function(){this.close();FT.app.open("manager",{view:"allprojects"})}})},createViewHiddenButton:function(){return Ext.create("Ext.button.Button",{margin:"0 0 0 10",text:FT.i18n("View hidden projects"),scope:this,handler:function(){this.close();FT.action.open("listArchivedProjects")}})},createCreateProjectButton:function(){return Ext.create("Ext.button.Button",{cls:"button-primary",margin:"0 0 0 20",glyph:FT.glyph("add"),text:FT.i18n("Create new project"),scope:this,handler:function(){this.close();FT.action.fn.createProject()}})},createBottomBar:function(){var a;this.addHeightButton=Ext.create("Ext.button.Button",{scope:this,glyph:FT.glyph("down"),handler:Ext.bind(this.changeMenuHeight,this,[200]),ui:"plain"});this.removeHeightButton=Ext.create("Ext.button.Button",{scope:this,glyph:FT.glyph("up"),handler:Ext.bind(this.changeMenuHeight,this,[-200]),ui:"plain"});a=Ext.create("Ext.toolbar.Toolbar",{items:["->",this.removeHeightButton,this.addHeightButton,"->"],cls:"toolbar-default"});return a},changeMenuHeight:function(b){var a=this.panel.getHeight();a+=b;this.panel.setHeight(a);this.saveMenuHeight(a);this.updateBottomBarButtonStates();this.resetFocus()},saveMenuHeight:function(a){FT.setVar("ftstate-projects-menu-height",a)},updateBottomBarButtonStates:function(){this.addHeightButton.setDisabled(this.panel.getHeight()>=this.panel.maxHeight);this.removeHeightButton.setDisabled(this.panel.getHeight()<=this.panel.minHeight)},onAfterClose:function(){this.lastSearchValue="";this.searchField.setValue("");this.store.clearFilter();this.store.sort()},toggleShow:function(a){this.deselectItemsInAllViews();if(a&&(this.isRecentProjectsChanged()||this.isDirty())){this.recentProjectsView.getStore().load({scope:this,callback:function(){this.deselectItemsInAllViews();this.selectTopLeftMostItem()}})}if(a&&this.isDirty()){this.myProjectsView.getStore().load();this.activeProjectsView.getStore().load()}this.setRecentProjectsChanged(false);this.setDirty(false);this.callParent(arguments)}});Ext.define("FT.window.HtmlEditorWindowButton",{extend:"Ext.form.field.TextArea",alias:"widget.htmleditorbutton",initComponent:function(){var a=this;this.callParent();this.on({blur:function(){a.ownerCt.completeEdit()}})}});Ext.define("FT.window.HtmlEditorWindow",{constructor:function(a){Ext.apply(this,a)},openWindow:function(c,e,a,g,b){this.store=a.store;var d=Ext.create("FT.ModalWindow",{title:FT.i18n("Edit"),height:500,width:500,bodyPadding:"0 15 15 15",layout:"fit",store:a.store,modal:true,items:[this.htmleditor=Ext.widget("htmleditor",{value:c,defaultButtonUI:"plain-toolbar"})],autoShow:true,bbar:{items:["->",{xtype:"button",cls:"button-primary",text:FT.i18n("Update"),handler:function(){d.store.each(function(h){if(h.internalId==a.internalId){h.set(e,this.htmleditor.getValue());if(g){g.call(b,h,e)}return false}},this);d.close()},scope:this}]}})}});Ext.define("FT.ui.ExpressionTester",{alias:["widget.expressiontester"],extend:"Ext.Container",initComponent:function(){this.items=[{xtype:"button",text:FT.i18n("Test attribute"),handler:Ext.bind(this.doTest,this)},this.info=Ext.create("Ext.Component",{margin:"5 0 0 0",padding:5,height:75})];this.callParent(arguments)},setEntityConfig:function(a){this.entityConfig=a},testExpr:function(a){assert(this.entityConfig,"entityType is defined");assert(Ext.isString(a),"expression is a string");this.expr=a},setText:function(a,c){var b;if(c){b='<div style="color:white;font-weight:bold;background-color:green;padding:4px;"><center>PASSED</center></div>'}else{b='<div style="color:white;font-weight:bold;background-color:red;padding:4px;"><center>FAILED</center></div>'}a='<div style="margin-top:4px;">'+a+"</style>";this.info.update(b+a)},doTest:function(){var a=Ext.value(this.expr,"");Ext.Ajax.request({url:"/customattributes/expressionTest",params:{entity:Ext.encode(this.entity),registerid:this.registerid,entityConfig:Ext.encode(this.entityConfig),expr:a},success:function(b){b=Ext.decode(b.responseText);this.setText(b.data,b.success)},scope:this})}});Ext.define("FT.dialog.ConvertCustomAttributeToAllProjects",{autoShow:true,msg:FT.i18n("Do you want to make this attribute available on all projects?"),modal:true,extend:"FT.ConfirmDialog",initComponent:function(){this.addEvents("attributeconverted");this.scope=this;this.callParent(arguments)},actionHandler:function(){Ext.Ajax.request({url:"/customattributes/convertToGlobal",params:{registerid:this.registerid},success:function(a){var a=Ext.decode(a.responseText),b=a.success;if(!b){FT.notifyError(a.errors[0].msg);return}this.success.call(this)},scope:this})}});Ext.define("FT.window.CreateAttribute",{alternateClassName:"FT.grid.CreateAttributeWindow",configurer:this,title:FT.i18n("Create attribute"),closeAction:"destroy",width:500,layout:"fit",resizable:false,closable:true,draggable:false,modal:true,_onEntityType:null,extend:"FT.ModalWindow",validEntities:null,entity:null,initComponent:function(){this.addEvents("createdField","onentitytypechanged");if(this.entity==null){this.entity={entityId:null,entityType:null}}this.callParent(arguments);this.on("resize",function(){this.center()},this);this.on("onentitytypechanged",this.onEntityTypeChanged,this)},onEntityTypeChanged:function(){if(this.form){var a=this.form.getForm();a.isValid()}},init:function(a){this.validEntities=a;assert(this.validEntities,"validEntities must be provided");assert(Ext.isArray(this.validEntities),"validEntities must be array");Ext.each(this.validEntities,function(b){assert(b.name,"Missing name in validEntities");assert(b.entity,"Missing entity in validEntities")},this);this.attributeTypesStore=FT.util.copyStore("FT.store.AttributeTypes");this.attributeGroupsStore=FT.util.copyStore("FT.store.AttributeGroups");this.attributeGroupsStore.load();this.attributeGroupsStore.on("load",this.initForm,this)},initForm:function(){var b=[];if(!this.record){this.setOnEntityType(FT.entityType(this.validEntities[0]));b=this.initCreate()}else{this.setOnEntityType(this.record.get("entity"));b=this.initEdit(this.record)}var a=["->",{xtype:"button",text:FT.i18n("Cancel"),style:{marginRight:"10px"},handler:function(){this.close()},scope:this},{xtype:"button",cls:"button-primary",text:this.record?"Save":"Create",handler:this.onCreate,scope:this}];if(this.record){a=Ext.Array.insert(a,0,[{ui:"link",text:FT.i18n("Make available on all projects"),handler:this.convertToAllProjects,margin:0,scope:this},{xtype:"component",html:FT.util.getHelp(FT.i18n("Make this attribute available on all projects."))}])}var c=Ext.create("Ext.toolbar.Toolbar",{items:a});this.form=Ext.widget("form",{url:this.record?"/customattributes/editField":"/customattributes/createField",border:false,bodyBorder:false,autoScroll:true,fieldDefaults:{labelAlign:"left",labelWidth:100},defaults:{margin:"0 10 10",anchor:"100%"},layout:"anchor",items:b,bbar:c});this.add(this.form)},initCreate:function(){var b=[];var c=this.getAddtoField();var a=this.getHierarcical();b.push(this.getInfoField());b.push(this.getCategory(FT.i18n("General")));b.push(this.getLabelField());b.push(this.getNameField());b.push(this.getGroupField());b.push(a);b.push(c);b.push(this.getCategory(FT.i18n("Attribute type")));b.push(this.getTypeField());b.push(this.getDataField());b.push(this.getCategory(FT.i18n("Permissions")));b.push(this.getPermissionField());a.on("change",function(e,d){if(d){c.hide()}else{c.show()}},this);b=b.concat(this.getEntityFields());return b},initEdit:function(b){var a=[],c=this.getDataField(b);a.push(this.getCategory("General",{margin:"0 0 5 0"}));a.push(this.getLabelField(b));a.push(this.getNameField(b));a.push(this.getGroupField(b));if(!Ext.isArray(c)){a.push(this.getCategory("Attribute value"));a.push(c)}a.push(this.getCategory("Permissions"));a.push(this.getPermissionField(b));a.push(this.getIdField(b));return a},getCategory:function(c,a){var b={xtype:"component",cls:"ft-property-groupheader",margin:0,html:c};Ext.apply(b,a||{});return b},getInfoField:function(c){var b="The attribute will be available on this project only.";if(this.entity.entityId==null){b="The attribute will be available on all projects."}var a={xtype:"component",margin:10,cls:"text-faded x-unselectable",html:b};return a},onCreate:function(){if(FT.isDemo()){FT.notifySuccess("You cannot create attributes in demo mode.");return}var d=this.form.getForm();if(d.isValid()){d.loadMask=new Ext.LoadMask(this,{msg:"Creating attribute"});var a={};if(this.attributeData){for(var b=0;b<this.attributeData.items.getCount();b++){var c=this.attributeData.items.items[b];if(Ext.isFunction(c.getValue)&&c.getName().split("_")[0]=="extra"){a[c.getName().split("_")[1]]=c.getValue()}}}if(!this.loadMask){this.loadMask=new Ext.LoadMask(this,{msg:"Updating attribute, this can take a while."})}this.loadMask.show();d.submit({params:{config:Ext.encode(a)},timeout:9999999,success:function(e,h){var g=Ext.decode(h.response.responseText);e.loadMask.hide();e.loadMask.destroy();if(g.success){FT.notifySuccess(g.message);this.fireEvent("createdField");this.close()}},failure:function(g,j){this.loadMask.hide();try{var h=Ext.decode(j.response.responseText);if(h.errors&&h.errors.length>0){FT.notifyError(h.errors[0].msg)}}catch(e){}},scope:this})}},convertToAllProjects:function(){var a=this;var b=Ext.create("FT.dialog.ConvertCustomAttributeToAllProjects",{registerid:this.record.get("registerid"),success:function(){a.fireEvent("fieldchanged");a.close()}})},getMultiselectField:function(d){var c,b,a;a=Ext.decode(Ext.valueFrom(d.multiSelect,false));c=Ext.create("Ext.data.Store",{fields:["name","value"],data:[{name:"Single selection",value:false},{name:"Multi selection",value:true}]});b=Ext.widget({submitValue:false,xtype:"combobox",name:"extra_multiSelect",fieldLabel:FT.i18n("Selection"),editable:false,store:c,valueField:"value",displayField:"name",value:a,typeAhead:true,queryMode:"local",allowBlank:false,forceSelection:true});return b},generateField:function(a,c){var k=this.attributeTypesStore.findExact("typeid",a);var l=this.attributeTypesStore.getAt(k);var y=Ext.decode(l.get("config"));y.name="field_default";y.fieldLabel=FT.i18n("Default value");var n=[];var d=y.xtype;var w={};try{w=Ext.decode(c.get("config"))}catch(u){log("FAILED TO DECODE attribute config.")}if(l.get("typeid")=="d2e6a530-357f-11e2-bd73-0019bb4985b8"){var p="text",g,t=this._onEntityType;y.fieldLabel="Expression";y.afterLabelTextTpl=FT.util.getHelp(FT.i18n("Custom attribute expressions can pull data from other attributes and apply a variety of functions on the result. You can also grab project/global scope attributes. (click to read more)."),"expressionHelp");y.grow=true;if(this.record){y.value=this.record.get("default");try{var w=Ext.decode(c.get("config"));p=w.exprType}catch(u){}g=this.record.get("registerid")}var j=Ext.widget({xtype:"hiddenfield",name:"extra_exprType",submitValue:false,value:p});n.push(j);n.push({submitValue:false,xtype:"combo",fieldLabel:FT.i18n("Result type"),editable:false,store:{fields:["name","value"],data:[{name:"text",value:"text"},{name:"number",value:"number"}]},forceSelection:true,value:p,listeners:{change:function(e){j.setValue(e.getValue())}},displayField:"name",valueField:"value"});this.defaultField=Ext.widget(y);n.push(this.defaultField);var m=Ext.widget("expressiontester",{entityConfig:t,entity:this.entity,registerid:g});n.push(m);this.on("onentitytypechanged",function(e){if(m){m.setEntityConfig(e)}},this);m.testExpr(this.defaultField.getValue());this.defaultField.on("change",function(e){m.testExpr(e.getValue())},this)}else{if(d=="enumeratorfield"){var z=false;var s="menu1\nvalue1\nmenu2\nvalue2";y.data=Ext.encode(FT.util.Format.keyValueToStoreData(s));if(c){try{var x=Ext.decode(w.data);var q=[];Ext.each(x,function(e){q.push(e.menu);q.push(e.value)},this);s=q.join("\n")}catch(u){log(u)}y.value=c.get("default")}y.data=Ext.encode(FT.util.Format.keyValueToStoreData(s));var j=Ext.widget({xtype:"hiddenfield",name:"extra_data",submitValue:false,value:"[]"});var b=Ext.widget({height:200,xtype:"textarea",fieldLabel:FT.i18n("Menu/value"),extra_data:j,submitValue:false,value:s,afterLabelTextTpl:FT.util.getHelp(FT.i18n("The name and value of each item, each on a new line. {example}",{values:{example:"<br />Example:<br />menu1<br />value1<br />menu2<br />value2"}})),validator:function(B){try{var A=FT.util.Format.keyValueToStoreData(B);if(Ext.isArray(A)){this.extra_data.setValue(Ext.encode(A))}}catch(C){return"This is not valid data..."}return true}});b.on("change",function(D,B){try{var A=FT.util.Format.keyValueToStoreData(B);if(Ext.isArray(A)){this.defaultField.store.loadData(A)}}catch(C){log(C)}},this);n.push(j);n.push(this.getMultiselectField(w));n.push(b);this.defaultField=Ext.widget(y);n.push(this.defaultField)}else{if(y.xtype==="ft-dynamicenumerator"){n.push(this.getMultiselectField(w))}else{if(d=="numberfield"){var o=true;if(Ext.isDefined(w.isdecimal)){o=w.isdecimal}n.push({xtype:"checkbox",name:"extra_isdecimal",fieldLabel:FT.i18n("Decimal"),checked:o,inputValue:"1",uncheckedValue:"0"})}else{if(d=="textarea"){Ext.apply(y,{grow:true});var h=Ext.valueFrom(w.markdown,!Ext.isDefined(c));n.push({xtype:"checkbox",name:"extra_markdown",fieldLabel:FT.i18n("Format as markdown"),afterLabelTextTpl:FT.util.getHelp(FT.i18n("Format text as markdown when possible.")),checked:h,inputValue:"1",uncheckedValue:"0"})}else{if(d==="ft-datefield"){Ext.apply(y,{submitFormat:"Y-m-d"})}}}if(c){y.value=c.get("default");if(d=="checkbox"&&y.value=="1"){y.checked=true}this.defaultField=Ext.widget(y);n.push(this.defaultField)}else{this.defaultField=Ext.widget(y);n.push(this.defaultField)}}}}return n},createDefaultField:function(b){var a={xtype:b,fieldLabel:FT.i18n("Default Value"),name:"field_default",format:"Y-m-d H:i:s",allowBlank:b=="textarea"?true:false,inputValue:"true",uncheckedValue:"false"};if(b=="checkbox"){a.inputValue="true";a.uncheckedValue="false"}return a},getNameField:function(b){var a=Ext.widget({xtype:"textfield",fieldLabel:FT.i18n("Name"),name:"field_name",allowBlank:false,value:b?b.get("key"):"",afterLabelTextTpl:FT.util.getHelp(FT.i18n("The name of the attribute used by the API."))});return a},getLabelField:function(a){var b=Ext.widget({xtype:"textfield",fieldLabel:FT.i18n("Label"),name:"field_label",allowBlank:false,value:a?a.get("label"):"",afterLabelTextTpl:FT.util.getHelp(FT.i18n("The label of the attribute shown in menus etc."))});return b},getGroupField:function(a){var b=Ext.widget({xtype:"ft-labeleditor",name:"field_group",fieldLabel:FT.i18n("Group"),editable:true,store:this.attributeGroupsStore,valueField:"groupid",displayField:"name",value:a?a.get("groups"):"",typeAhead:true,queryMode:"local",allowBlank:true,forceSelection:true,multiSelect:false});return b;return groupField},getTypeField:function(){var a=this;var b=Ext.widget({id:"newFieldCombo",xtype:"combobox",name:"field_type",fieldLabel:FT.i18n("Type"),editable:false,store:this.attributeTypesStore,valueField:"typeid",displayField:"name",value:this.attributeTypesStore.first().get("typeid"),typeAhead:true,queryMode:"local",allowBlank:false,forceSelection:true,listeners:{change:function(d,c){this.attributeData.removeAll(true);this.attributeData.add(this.generateField(c))},scope:this},validator:function(c){var d=a._onEntityType;if(c=="expression"){if(["assetversion","task"].indexOf(d.entity)==-1){return"Expression attribute cannot be added to "+d.name}if(d.entity=="task"&&!FT.isExpressionAttributeable(d.entity_key)){return"Expression attribute cannot be added to "+d.name}}return true}});return b},getDataField:function(b){if(!Ext.isDefined(b)){b=null}var d=null;var a=null;if(b){d=b.get("typeid")}else{d=this.attributeTypesStore.first().get("typeid")}var c=this.generateField(d,b);if(c==null){return[]}this.attributeData=Ext.widget({xtype:"container",defaults:{anchor:"100%"},layout:"anchor",items:c,listeners:{resize:function(h,e,g,j){if(!Ext.isDefined(this.origHeight)){this.origHeight=this.getHeight()-this.attributeData.getHeight()}this.setHeight(this.origHeight+this.attributeData.getHeight())},scope:this}});return this.attributeData},getPermissionField:function(a){var b=Ext.create("FT.configure.AttributePermissionsField",{cls:"border-top border-left border-right",disableSelection:true,viewConfig:{stripeRows:false,trackOver:false,focusedItemCls:""},attributeId:a?a.get("registerid"):null,name:"field_permission"});return b},getAddtoField:function(a){var c=[];Ext.each(this.validEntities,function(d){c.push({name:FT.entityType(d.name),value:Ext.encode(d),description:d.description})},this);this.addToStore=Ext.create("Ext.data.Store",{fields:["name","value","entityType","description"],data:c,sorters:[{property:"name",direction:"ASC"}]});var b=Ext.widget({xtype:"combobox",name:"field_availability",fieldLabel:FT.i18n("Add to"),editable:false,store:this.addToStore,valueField:"value",displayField:"name",value:this.addToStore.first().get("value"),typeAhead:true,queryMode:"local",allowBlank:false,forceSelection:true,tpl:Ext.create("Ext.XTemplate",'<tpl for=".">','<div class="x-boundlist-item">{name}<br /><span class="text-faded">{description}</span></div>',"</tpl>"),listeners:{select:function(g,d){var e=d[0];this.setOnEntityType(Ext.decode(e.get("value")))},scope:this}});return b},setOnEntityType:function(a){this._onEntityType=a;this.fireEvent("onentitytypechanged",Ext.clone(a))},getHierarcical:function(){var a=Ext.widget({xtype:this.entity.entityId==null?"checkbox":"hiddenfield",uncheckedValue:"false",name:"field_hierarchical",fieldLabel:FT.i18n("Hierarchical attribute"),value:"false",inputValue:"true"});return a},getIdField:function(a){return Ext.widget({xtype:"hiddenfield",name:"registerid",value:a.get("registerid")})},getEntityFields:function(){var a=[{xtype:"hiddenfield",name:"entity_id",value:this.entity.entityId},{xtype:"hiddenfield",name:"entity_type",value:this.entity.entityType}];return a}});Ext.define("FT.attributes.CreateAttributesFactory",{mixins:{observable:"Ext.util.Observable"},buttonEnabled:false,constructor:function(a){this.mixins.observable.constructor.call(this);Ext.apply(this,a);this.callParent(arguments)},create:function(c,b,a){assert(c=="configure"||Ext.isDefined(a)||Ext.isDefined(b),"If type is not configure, topid or entity must be defined");var d=Ext.create("FT.grid.CreateAttributeWindow",{autoShow:false,entity:b});var e={type:c};if(Ext.isObject(b)){Ext.apply(e,{entityId:b.entityId,entityType:b.entityType})}else{Ext.apply(e,{topid:a})}Ext.Ajax.request({url:"/customattributes/attributeConfigs",params:e,success:function(g){var h=Ext.decode(g.responseText);d.init(h.validEntities);d.show()}});return d},edit:function(a){var b=Ext.create("FT.window.CreateAttribute",{autoShow:false,title:FT.i18n("Edit attribute"),record:a,showid:null});b.init([]);b.show();return b}},function(){FT.CreateAttributeFactory=Ext.create("FT.attributes.CreateAttributesFactory")});Ext.define("FT.iframe.Window",{width:960,height:580,extend:"FT.ModalWindow",title:"iframe",autoShow:true,draggable:true,modal:true,resizable:true,maximizable:true,closeAction:"destroy",initComponent:function(){this.update('<iframe style="height:100%;width:100%;" frameborder="no" src="'+this.url+'"></iframe>');this.callParent(arguments)}});Ext.define("FT.window.HandleManagers",{extend:"Ext.window.Window",alias:"widget.widget_managers",title:FT.i18n("Managers"),layout:"fit",modal:true,initComponent:function(){var a=this.entity;Ext.define("managers",{extend:"Ext.data.Model",fields:[{name:"user",sortType:FT.grid.sorter.UserSorter},"type","on","managerid","thumbnail"]});var c=[];var b=[{dataIndex:"thumbnail",width:50,renderer:FTrack.grid.UserImageRenderer},{dataIndex:"user",text:FT.i18n("Name"),flex:1,sortable:true,xtype:"templatecolumn",tpl:"{[FTrack.grid.UserRenderer(values.user)]}<br />{type}"},{dataIndex:"on",width:75,text:FT.i18n("Level")},{dataIndex:"type",width:100,text:FT.i18n("Type"),hidden:true}];c={padding:"0 10 10 0",cls:"background-default",items:["->",{xtype:"button",text:FT.i18n("Add manager"),handler:function(){FT.action.open("addManager",this.entity,this.reloadGrid,this)},scope:this}]};b.push({xtype:"glyphactioncolumn",width:40,items:[{scope:this,glyph:"remove",handler:function(g,h,e){var d=g.getStore().getAt(h);FT.action.open("removeManager",Ext.clone(d.data),this.reloadGrid,this)}}]});this.managerGrid=Ext.create("Ext.grid.Panel",{tbar:c,viewConfig:{deferEmptyText:false,minHeight:200,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("Empty view")+"</div>",stripeRows:false},store:{autoLoad:true,model:"managers",proxy:{type:"ajax",url:"/main/getManagers",extraParams:{data:Ext.encode({entityId:a.entityId,entityType:a.entityType})},reader:{root:"data",totalProperty:"total"}},sorters:[{property:"user"}]},columns:b});this.items=[this.managerGrid];this.callParent(arguments)},reloadGrid:function(){this.managerGrid.getStore().load()}});Ext.define("FT.Mapping.MenuModel",{constructor:function(a){Ext.apply(this,a);this.store=Ext.create("Ext.data.Store",{fields:[{name:"text",type:"string"},{name:"id"},{name:"parentId"},{name:"dbId"},{name:"objectType"},{name:"disabled",type:"boolean",value:false}],proxy:{extraParams:{data:Ext.encode(this.data)},type:"ajax",url:"/import/getMappingMenuOptions",reader:{type:"json"}},autoLoad:true});this.store.on("load",function(){this.afterload.call(this)},this)},getRecordFromCompositeId:function(c){var a=null;var b=this.getStore().findBy(function(d){return Ext.Array.equals(d.get("id"),c)});if(b!==-1){return this.getStore().getAt(b)}return null},getDbIdById:function(b){var a=this.getRecordFromCompositeId(b);return a!=null?a.get("dbId"):null},getObjectType:function(b){var a=this.getRecordFromCompositeId(b);return a!=null?a.get("objectType"):null},getStore:function(){return this.store}});Ext.define("FT.Mapping.Menu",{extend:"Ext.menu.Menu",mixins:{observable:"Ext.util.Observable"},initComponent:function(){var a=this;this.addEvents("modelready","checkedchanged");this.model=Ext.create("FT.Mapping.MenuModel",{data:this.data,afterload:function(){a.fireEvent("modelready")}});this.callParent()},setCheckedMenuItem:function(d,c){var b=this.getStore(),a;this.uncheckAllMenuItems();a=b.findRecord("id",new RegExp("^"+d+"$"));if(a!=null){a.set("checked",Ext.isDefined(c)&&c)}},uncheckAllMenuItems:function(){var a=this.getStore();Ext.each(a.data.items,function(b){b.set("checked",false)})},hasMenuOptions:function(b){var a=this.getStore(),c=false;a.each(function(d,e){if(d.get("parentId").toString()==b.get("id").toString()){c=true}});return c},getMenuOptions:function(c){var a=this.getStore(),b=[];a.each(function(d,e){if(d.get("parentId").toString()==c.get("id").toString()){b.push(d)}});return b},drawMenu:function(b){var a=[];Ext.each(b,function(c){if(this.hasMenuOptions(c)){a.push({xtype:"menuitem",text:c.get("text"),menu:this.drawMenu(this.getMenuOptions(c))})}else{a.push({xtype:"menucheckitem",text:c.get("text"),checked:c.get("checked"),itemId:c.get("id"),iconCls:"radio",iconAlign:"left",href:"javascript:void(0)",disabled:c.get("disabled")&&!c.get("checked"),checkHandler:function(e,d){this.onMenuItemCheckChange(e,d)},scope:this})}},this);return a},onMenuItemCheckChange:function(c,b){var d=[],a=c;do{if(Ext.isDefined(c.activeItem)){d.push(c.activeItem.text)}c=c.parentMenu}while(Ext.isDefined(c.parentMenu));if(Ext.isDefined(c.activeItem)){d.push(c.activeItem.text)}this.setCheckedMenuItem(a.itemId,b);this.fireEvent("checkedchanged",d,b);c.hide();this.fireEvent("mappingchanged",d,b)},generateMenu:function(){var b=this.getStore(),c,a=[];b.each(function(d){if(Ext.isEmpty(d.get("parentId"))){a.push(d)}});c=this.drawMenu(a);return c},getMenu:function(){return this.generateMenu()},getModel:function(){return this.model},getStore:function(){return this.getModel().getStore()}});Ext.define("FT.MappingModel",{constructor:function(){this.store=Ext.create("Ext.data.Store",{fields:["one","two"],data:[{one:"ett",two:"tv\u00e5"}]})},getStore:function(){return this.store}});Ext.define("FT.Mapping.SavedMappingsModel",{constructor:function(){this.store=Ext.create("Ext.data.Store",{fields:["column","mapping"],data:[]})},saveMapping:function(b,c){var a=this.getStore().getAt(this.getStore().findBy(function(d){return d.get("column")===b}));if(a){a.set("mapping",Ext.encode(c))}else{a={};a.column=b;a.mapping=Ext.encode(c);this.getStore().add(a)}},removeMapping:function(b){var a=this.getStore().getAt(this.getStore().findBy(function(c){return c.get("column")===b}));if(a){this.getStore().remove(a)}},getMapping:function(c){var b=this.getStore(),a=b.getAt(b.findBy(function(d){return d.get("column")===c}));if(a){return a.get("mapping")}return null},getMappings:function(){var b=[],a=this.getStore();Ext.each(a.data.items,function(c){b.push(c.data)});return b},getStore:function(){return this.store}});Ext.define("FT.Mapping",{extend:"Ext.container.Container",initComponent:function(){var a=this;this.model=Ext.create("FT.MappingModel");this.savedMappingsModel=Ext.create("FT.Mapping.SavedMappingsModel");this.items=[this.grid=Ext.create("Ext.grid.Panel",{columns:{items:[{text:FT.i18n("one"),dataIndex:"one"},{text:FT.i18n("two"),dataIndex:"two"}]},store:a.getModel().getStore()})];this.grid.getView().getHeaderCt().on("menucreate",function(b,c){c.on("beforeshow",a.createMappingMenu,a)});this.callParent()},createMappingMenu:function(a){a.removeAll();if(!Ext.isDefined(this.menu)){this.menu=Ext.create("FT.Mapping.Menu")}else{this.menu.fireEvent("modelready")}this.menu.on("checkedchanged",function(c){var b=this.getActiveHeader();this.savedMappingsModel.saveMapping(b.text,c)},this);this.menu.on("modelready",function(){var b=this.getActiveHeader(),c=Ext.decode(this.savedMappingsModel.getMapping(b.text));a.removeAll();this.menu.uncheckAllMenuItems();if(c!=null){this.menu.setCheckedMenuItem(c)}a.add(this.menu.getMenu())},this)},getActiveHeader:function(){return this.grid.getView().getHeaderCt().getMenu().activeHeader},getModel:function(){return this.model}});Ext.ns("FT.TempMapping");FT.TempMapping.testwin=function(){return Ext.create("Ext.window.Window",{width:800,height:600,autoShow:true,items:Ext.create("FT.Mapping")})};Ext.define("FT.error.ToolbarErrorBox",{extend:"Ext.toolbar.TextItem",style:"font-size:14px;color:#808080;",initComponent:function(){this.activeErrors=Ext.value(this.activeErrors,[]);this.hidden=this.activeErrors.length==0;this.callParent()},getMessages:function(){var c=this.activeErrors,b=c.length,a=0;out='<img src="/resources/icons/warning2.png" style="margin-bottom:-4px;" height="20px" width="20px" />&nbsp;&nbsp;';out+=Ext.pluck(c,"msg").join(", ");return out},showError:function(a){this.activeErrors=Ext.isArray(a)?a:[a];this.show();this.update(this.getMessages())},clear:function(){this.activeErrors=[];this.hide()}});Ext.define("FT.actions.ActionsContainer",{extend:"Ext.container.Container",autoScroll:true,padding:"0 0 10 10",initComponent:function(){var a=this;this.recent=[];this.isRecentPersisted=false;this.store=Ext.create("Ext.data.Store",{fields:["label","icon","actionIdentifier","variant","description"],sorters:[{property:"label",direction:"ASC"}],proxy:{type:"eventhub",topic:"ftrack.action.discover",singleResponse:false,reader:{type:"json",root:"items"}}});this.aggregatedStore=Ext.create("Ext.data.Store",{fields:["label","description","icon","actions"],sorters:[{property:"label",direction:"ASC"}]});this.recentStore=Ext.create("Ext.data.Store",{model:this.aggregatedStore.model,sorters:[{sorterFn:function(c,b){var e=c.get("label"),d=b.get("label");return a.recent.indexOf(e)-a.recent.indexOf(d)}}],filters:[{filterFn:function(b){return a.recent.indexOf(b.get("label"))!==-1}}]});this.recentActionsView=Ext.create("FT.view.Actions",{title:FT.i18n("Recent"),store:this.recentStore,selection:this.selection,padding:"0 5 0 5",height:165,cls:"overflow-hidden",hidden:true,launchMaskTarget:this});this.relayEvents(this.recentActionsView,["action-launched"]);this.actionsView=Ext.create("FT.view.Actions",{title:FT.i18n("All actions"),store:this.aggregatedStore,selection:this.selection,padding:"0 5 0 5",launchMaskTarget:this,hidden:true});this.relayEvents(this.actionsView,["action-launched"]);this.items=[this.recentActionsView,this.actionsView];this.callParent();this.on("afterrender",function(){if(this.store&&this.store.isLoading()){this.setLoading(FT.i18n("Loading available actions..."))}Ext.defer(function(){if(this.store&&this.store.isLoading()){var b=["<p>",FT.i18n("Haven't found any actions yet..."),'</p><p style="max-width: 400px;">',FT.i18n("We'll keep looking, but you might want to check that you have Connect running or actions configured."),"</p><p>",'<a href="https://www.ftrack.com/actions" target="_blank">',FT.i18n("Need help using Actions?"),"</a>",'</p><p style="margin-top: 50px;">','<a href="https://www.ftrack.com/portfolio/connect" class="button button-primary" target="_blank">',FT.i18n("Download Connect"),"</p>"].join("");this.setLoading(b)}},3000,this)},this);this.store.on("load",function(c,b){this.setLoading(false);this.actionsView.show();Ext.each(b,function(d){this._addRecord(d)},this);this.aggregatedStore.sort();this._updateRecentActions()},this);FTApi.Metadata.query({criteria:{meta_id:FT.Settings.get("currentuser","userid"),variable:"ftrack_recent_actions"}},this._onLoadMetadataResponse,this);this.store.load({params:{selection:this.selection}});this.on("action-launched",this._onActionLaunched,this)},_onActionLaunched:function(a){var b=Ext.Array.insert(this.recent,0,[a.get("label")]),c;b=Ext.Array.unique(b);c={meta_id:FT.Settings.get("currentuser","userid"),variable:"ftrack_recent_actions",value:Ext.encode(b),meta_type:"user"};if(this.isRecentPersisted){FTApi.Metadata.update(c)}else{FTApi.Metadata.create(c)}},_onLoadMetadataResponse:function(a){var c=[];if(a&&Ext.isArray(a.data)&&a.data.length>0){if(a.data[0].value){this.isRecentPersisted=true;try{c=Ext.decode(a.data[0].value)}catch(b){}}}if(Ext.isArray(c)){this.recent=c;this._updateRecentActions()}},_updateRecentActions:function(){this.recentStore.filter();if(this.recentStore.getCount()>0){this.recentActionsView.show()}},_addRecord:function(a){var b;if(a.get("variant")){b=this.aggregatedStore.findRecord("label",new RegExp("^"+a.get("label")+"$"))}if(b){b.get("actions").push(a);b.set("description",null)}else{b=this.aggregatedStore.add({label:a.get("label"),description:a.get("description"),icon:a.get("icon"),actions:[a]});this.recentStore.add(b)}}});Ext.define("FT.view.ViewContainer",{alias:"widget.viewcontainer",extend:"RAW.Widget",cls:"ft-border-layout",mode:"border",layout:{type:"fit"},disablePrimaryToolbar:false,maximizable:true,delayedView:null,currentViewIndex:0,initComponent:function(){this.tbar={xtype:"container",itemId:"top",items:[]};this.bbar={xtype:"toolbar",itemId:"bottom",items:[],height:25};this.on("beforemodulechange",this.onBeforeModuleChange,this);this.callParent(arguments)},updateWidget:function(b,c,a){if(!Ext.isDefined(c)){c=false}this.views.each(function(e){if(e.getPushToken()!=a){e.isDirty=true;e.isForce=c}});var d=this.getActiveView();if(d.getPushToken()!=a){d.updateEntity(this.getEntity(),c);d.isDirty=false;d.isForce=false}},initWidget:function(){var a=this.viewClasses;this.views=new Ext.util.MixedCollection;this.createViews(a);this.setActiveView(this.currentViewIndex);this.on("shortcut",this.fireKeyEvent,this)},fireKeyEvent:function(a){var b=this.getActiveView();if(b){b.fireEvent("shortcut",a)}},getViewCfg:function(){return{entity:this.getEntity(),id:Ext.id(),_viewContainer:this}},onPaneChange:function(b,a){b.restoreTo=Ext.value(b.restoreTo,{});Ext.apply(b.restoreTo,{hidden:!a});this.setPanes([b])},createViews:function(a){Ext.each(a,function(d){var c=this.getViewCfg();var b=Ext.create(d,c);b.on({scope:this,panechanged:this.onPaneChange});this.views.add(d,b)},this)},initViews:function(){},getAllRegionRenderables:function(d){var c=this.getActiveView(),a=c.viewContainer,b=[d];a.items.each(function(e){if(d.region==e.region&&e!=d){b.push(e)}});b.sort(function(g,e){return c.getRenderablePosition(g)-c.getRenderablePosition(e)});return b},setPane:function(d){var b=this.getActiveView(),a=b.viewContainer;d.restoreTo=Ext.value(d.restoreTo,{});var c=Ext.value(d.restoreTo.hidden,d.hidden);if(!c){a.add(this.getAllRegionRenderables(d));d.show()}else{d.hide();a.remove(d,false)}},setViewContainer:function(a){this.removeAll(false);this.add(a)},setPanes:function(a){Ext.each(a,function(b){this.setPane(b)},this)},setActiveView:function(d,c){var g=this.getActiveView();if(Ext.isDefined(g)&&Ext.isNumber(d)){if(this.currentViewIndex==d){this.currentButtonId=c;this.renderToolbar(this.activeView);return}}if(g){if(!g.fireEvent("beforeviewchange")){this.delayedView=d;this.delayedButtonId=c;this.renderToolbar(this.activeView);return}}this.currentButtonId=c;this.suspendLayout=true;var e;if(Ext.isNumber(d)){this.currentViewIndex=d;this.fireEvent("viewchange");e=this.views.getAt(d)}if(Ext.isString(d)){e=this.views.get(d)}if(e!=this.activeView){if(this.activeView){this.activeView.disable()}e.enable(this.getEntity());var b=e.getPanes();var a=this.getViewContainer(e,b);this.setViewContainer(a);this.activeView=e}this.renderToolbar(this.activeView);this.suspendLayout=false},getViewContainer:function(b,d){if(!b.viewContainer){var g=Ext.Array.unique(b.getRegions());if(this.mode!="border"){var a=["north","center","south"];d=Ext.Array.sort(d,function(l,k){var j=l.region;var h=k.region;return a.indexOf(j)<a.indexOf(h)?-1:1});g=Ext.Array.sort(g,function(j,h){return a.indexOf(j)<a.indexOf(h)?-1:1})}var c=[];var e=Ext.pluck(d,"region");Ext.each(d,function(h){h.split=Ext.value(h.split,true)},this);b.viewContainer=Ext.widget("container",{layout:this.mode=="border"?"border":"auto",items:d})}return b.viewContainer},getActiveView:function(){return this.activeView},isActiveView:function(a){return a.id==this.getActiveView().id},renderToolbar:function(j){if(this.disablePrimaryToolbar){return}var e=[];var g="private-view-";if(!this.primaryToolbar){j.viewTools=[];this.views.each(function(n,l){var p=[],o;var m=n.getMainButtons(this.activeView==n);if(m){Ext.each(m,function(q){if(!q.itemId){throw"mainButtons must have itemId specified"}if(!q.handler){throw"mainButtons must have handler specified"}q.cls="ftrack-toolbarbutton-mode"+(Ext.isDefined(n.title)?" "+g+n.title.toLowerCase():"");q.itemId=g+q.itemId;q.toggleGroup=g+n.id;q.belongsToGroup="tasks-view",o=Ext.widget("ftrack-button",q);Ext.Function.interceptBefore(o,"handler",function(s){Ext.Function.defer(this.setActiveView,1,this,[l,s.itemId])},this);p.push(o)},this)}else{p=[Ext.widget("ftrack-button",{cls:"ftrack-toolbarbutton-mode"+(Ext.isDefined(n.title)?" "+g+n.title.toLowerCase():""),icon:n.icon,text:n.text,qtip:n.tooltip,belongsToGroup:"tasks-view",itemId:g+n.id,pressed:this.activeView==n,toggleGroup:g+n.id,handler:function(q){Ext.Function.defer(this.setActiveView,1,this,[l,q.itemId])},scope:this,enableToggle:true})]}j.viewTools=j.viewTools.concat(p)},this);if(j.viewTools.length>1){e=e.concat(Ext.clone(j.viewTools));if(this.title=="Tasks"){e.push("->");e.push({xtype:"tool",type:"refresh",qtip:{text:FT.tip("widget-tools-reload"),align:"left"},handler:function(){this.updateWidget(this.getEntity())},scope:this});e.push({xtype:"tool",type:"maximize",qtip:{text:FT.tip("widget-tools-maximize"),align:"left"},handler:Ext.bind(FT.app.maximize,FT.app,[this,!this.isFitLayout()])})}this.primaryToolbar=Ext.widget("toolbar",{items:e,height:50,enableOverflow:true})}this.viewTools=j.viewTools}var b=Ext.isDefined(this.primaryToolbar);if(!j.primaryToolbar){var c=this.activeView.getPrimaryTools();if(Ext.isObject(c)&&c instanceof Ext.toolbar.Toolbar){j.primaryToolbar=c}else{j.primaryToolbar=Ext.widget("toolbar",{cls:"border-bottom",defaultButtonUI:"plain-toolbar",items:c,height:b?30:44,enableOverflow:true})}}if(b&&this.primaryToolbar.rendered){Ext.each(this.viewTools,function(m,l){if(m.itemId==this.currentButtonId){m.toggle(true,true)}else{m.toggle(false,true)}},this)}var d=this.getDockedComponent("top");d.suspendLayout=true;d.items.each(function(l){l.hide()});d.removeAll(false);j.primaryToolbar.show();var k=[j.primaryToolbar];if(this.manualRefreshText){k.push(this.getManualRefreshToolbar())}if(b){this.primaryToolbar.show();Ext.Array.insert(k,0,[this.primaryToolbar])}d.suspendLayout=false;d.add(k);var h=this.activeView.getBottomTools();var a=this.getDockedComponent("bottom");if(Ext.isArray(h)&&h.length==0){a.hide()}else{a.suspendLayout=true;a.items.each(function(l){l.hide()});a.removeAll(false);Ext.each(h,function(l){if(l&&Ext.isFunction(l.show)){l.show()}});a.add(h);a.suspendLayout=false;a.show()}},fireEventOnViews:function(){this.views.each(function(a){if(a){a.fireEvent("projectdateschanged")}})},delayedViewChange:function(){log(1);if(this.delayedView!=null){this.setActiveView(this.delayedView,this.delayedButtonId);this.delayedView=null;this.delayedButtonId=null}else{FT.app.delayedOpen()}},onBeforeModuleChange:function(){var a=this.getActiveView();if(a){if(!a.fireEvent("beforeviewchange")){return false}}}});Ext.define("FT.view.AbstractView",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},isDirty:true,isForce:false,stackPaneButtons:true,constructor:function(b){this.regions=[];this.panes=new Ext.util.MixedCollection;this.memory=new Ext.util.MixedCollection;Ext.apply(this,b);this.addEvents(["panechanged","entitychanged"]);this.mixins.observable.constructor.call(this);this.callParent();this._pushToken=this.getVC().pushToken;this.secondary=[];this.primary=null;this.registerPanes();var a=this.registerCommands();this.primary.addCommands(a);this.on({panechanged:this.onPaneChanged,scope:this});this.internalInit()},getPushToken:function(){return this._pushToken},getMainButtons:function(){return null},getPrimary:function(){return this.primary},registerPanes:function(){FT.util.Exception("registerPanes not implemented in subclass")},internalInit:function(){},getEntity:function(){return Ext.clone(this.getViewContainer().getEntity())},updateEntity:function(a,b){this.entity=Ext.clone(a);this.fireEvent("entitychanged",Ext.clone(this.entity),b);this.isDirty=false;this.isForce=false},getRegions:function(){return Ext.clone(this.regions)},registerCommands:function(){var a=[];Ext.each(this.secondary,function(d,b,c){a=a.concat(d.getCommands())});return a},getMemory:function(a){if(!this.memory.containsKey(a)){this.memory.add(a,new Ext.util.Memento)}return this.memory.get(a)},register:function(c,d,a){c+="-"+Ext.id();var b=Ext.value(a.renderable,{});a.view=this;b.region=d.region;this.regions.push(d.region);a.entity=this.entity;a.paneId=c;a.paneType=d.type;a.createRenderableOnStartup=!Ext.isDefined(b.hidden)||!b.hidden;a.renderableCfg=b;var e=a.xtype?Ext.widget(a.xtype,a):Ext.create("Ext.Component",a);e.on("paneactive",this.onPaneActive,this);this.panes.add(c,e);return e},onPaneActive:function(c,b){var a=c.getRenderable();if(a){this.fireEvent("panechanged",a,b,c.paneId)}},onPaneChanged:function(b,c,a){this.togglePaneButton(a,c)},registerSecondary:function(e,b){var c="secondary-"+e;var d={region:e,type:"secondary"};var a=this.register(c,d,b);this.secondary.push(a);return a},registerPrimary:function(b,a){var e="center";if(Ext.isString(b)){e=b;b=a}var c="primary";var d={region:e,type:"primary"};this.primary=this.register(c,d,b);return this.primary},enable:function(a){if(this.isDirty){this.updateEntity(a,this.isForce)}this.panes.each(function(b){if(b.isRenderableCreated()){this.restorePane(b.getRenderable())}},this)},disable:function(){this.panes.each(function(a){if(a.isRenderableCreated()){this.capturePane(a.getRenderable())}},this)},capturePane:function(b){var a=this.getMemory(b.id);a.capture(["hidden"],b);if(!b.hidden){Ext.apply(a.data,{width:b.rendered?b.getWidth():b.width,height:b.rendered?b.getHeight():b.height})}},restorePane:function(c){var b=this.getMemory(c.id);var a={};b.restoreAll(true,a);c.restoreTo=Ext.clone(a)},togglePane:function(c,b){var a=c.getRenderable();if(a){this.restorePane(a);this.fireEvent("panechanged",a,b,c.paneId)}},primaryToolHandler:function(c,a,b){c.fireEvent("beforetogglepane",b);this.togglePane(c,b)},collapseAllPanes:function(){this.panes.each(function(a){if(a.paneId!=this.primary.paneId){this.togglePane(a,false)}},this)},togglePaneButton:function(a,b){Ext.each(this.paneButtons,function(d,c,e){if(d.paneId==a){d.setChecked(b,true)}},this)},getBottomTools:function(){return[]},getPrimaryTools:function(){this.paneButtons=[];this.panes.each(function(c){if(c.paneType=="secondary"){var b=c.isVisible();if(!c.paneId){FT.util.Exception("pane has no paneId.")}if(c.addToToolbar){this.paneButtons.push(Ext.widget("menucheckitem",{cls:Ext.isDefined(c.renderable)?"region-"+c.renderable.region:"",text:c.name?c.name:c.renderable.region,qtip:{text:c.description?c.description:FT.i18n("Show / hide {pane}",{values:{pane:c.name}}),align:"left"},regionId:c.renderable.region,checked:b,paneId:c.paneId,checkHandler:Ext.Function.pass(this.primaryToolHandler,[c],this),scope:this}))}}},this);var a=["north","center","south","east","west"];this.paneButtons=Ext.Array.sort(this.paneButtons,function(e,d){var c=e.regionId;var b=d.regionId;return a.indexOf(c)<a.indexOf(b)?-1:1});this.paneButtons.push("-");this.paneButtons.push({text:FT.i18n("Collapse all"),handler:this.collapseAllPanes,scope:this});if(this.stackPaneButtons){return{xtype:"ftrack-button",glyph:FT.glyph("largerow"),qtip:FT.tip("tasks-toolbar-button-panels"),menu:{items:this.paneButtons}}}return this.paneButtons},getRenderablePosition:function(a){var b;this.panes.each(function(e,c,d){if(e.isRenderableCreated()&&a==e.getRenderable()){b=c}});if(!Ext.isDefined(b)){throw"Renderable could not be found"}return b},getPanes:function(){var a=[];this.panes.each(function(b){if(b.isRenderableCreated()||b.createRenderableOnStartup){var b=b.getRenderable();if(b){a.push(b)}}},this);return a},enableLoadMask:function(){this._viewContainer.enableLoadMask()},disableLoadMask:function(){this._viewContainer.disableLoadMask()},getViewContainer:function(){return this._viewContainer},getVC:function(){return this.getViewContainer()},delayedViewChange:function(){this.getViewContainer().delayedViewChange()},isActive:function(){return this.getVC().isActiveView(this)}});Ext.define("FT.view.AbstractPane",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},addToToolbar:true,constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this);this.addEvents(["paneactive","beforecreaterenderable","aftercreaterenderable","beforetogglepane"]);this.callParent()},getView:function(){return this.view},getRenderable:function(){FT.util.Exception("getRenderable not implemented in subclass")},setActive:function(){if(!this.isVisible()){this.fireEvent("paneactive",this,true)}},getCommands:function(){return[]},isVisible:function(){return this.pane&&!this.pane.hidden},isRenderableCreated:function(){return Ext.isDefined(this.pane)},getRenderable:function(){if(!this.isRenderableCreated()){var a={};Ext.apply(a,this.renderableCfg);this.fireEvent("beforecreaterenderable",a);var b=this.createRenderable(a);if(!b){return false}this.pane=b;this.relayEvents(this.pane,["afterrender"]);this.fireEvent("aftercreaterenderable",this.pane);this.pane.on("destroy",this.paneCleanup,this)}return this.pane},paneCleanup:function(){delete this.pane},createRenderable:function(a){return Ext.create("Ext.Component",a)},addCommands:function(a){this.commands=a}});Ext.define("FT.view.impl.TestPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-testpane",constructor:function(a){this.callParent(arguments)},getCommands:function(){return[{xtype:"button",text:"Command "+this.renderableCfg.region,handler:function(){var a=this.pane.html?this.pane.html:"";this.setActive();this.pane.update(a+"CLICK!")},scope:this}]}});Ext.define("FT.view.impl.TestPrimaryPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-testprimarypane",constructor:function(a){this.callParent(arguments)},addCommands:function(a){this.renderableCfg.html="";var b=[];Ext.each(a,function(e,c,d){b.push(e)},this);this.renderableCfg.items=[b]},createRenderable:function(a){return Ext.create("Ext.Container",a)}});Ext.define("FT.view.impl.ZoomSlider",{extend:"Ext.slider.Single",width:200,useTips:false,value:40,minValue:10,maxValue:50,margin:"0 0 0 10",labelAlign:"top",increment:10,width:150,autoUpdate:true,animate:false,getState:function(){return{value:this.getValue()}},applyState:function(a){this.setValue(a.value)},initComponent:function(){this.callParent(arguments);this.on({scope:this,changecomplete:this.onChangeComplete})},onChangeComplete:function(b,a){Sch.preset.Manager.getPreset(this.timeline.viewPreset).timeColumnWidth=a;if(this.autoUpdate){this.timeline.setTimeColumnWidth(a)}this.fireEvent("columnwidthchanged",this.timeline,a)},setTimeline:function(a){this.timeline=a}});Ext.define("FT.view.impl.TeamCalendarFilterPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-team-calendar-filter",addToToolbar:false,bindPrimary:function(a){this.primary=a},constructor:function(b){this.callParent(arguments);var c=[],d,a;d=[{type:"boolean",label:FT.i18n("Only show team members"),field:"team_member_users",config:{options:[["true","Yes"]]}},{type:"boolean",label:FT.i18n("Only show assigned users"),field:"assigned_users",config:{options:[["true","Yes"]]}},{label:FT.i18n("Users and groups"),type:FT.isLegacyResourceSelectorEnabled?"resource-legacy":"resource",field:"resource"}];Ext.each(d,function(e){c.push({field:e.field})});a=Ext.create("FT.newfilters.AvailableStore");a.getProxy().data=d;a.load();this.filterPanel=Ext.create("FT.newfilters.FilterPanel",{defaultFilters:c,availableStore:a,enableFilterControls:false,weight:b.regionWeight,width:300,minWidth:250,overflowY:"auto"});this.relayEvents(this.filterPanel,["filterschanged"])},getFilterButton:function(){return Ext.create("FT.newfilters.ConfigureFilterButton",{handler:this.toggleFilterPane,filterPanel:this.filterPanel,scope:this})},toggleFilterPane:function(){if(!this.isVisible()){this.setActive()}else{this.getRenderable().hide()}},createRenderable:function(a){Ext.apply(this.filterPanel,a);return this.filterPanel}});Ext.define("FT.view.impl.TaskDragZone",{extend:"Ext.dd.DragZone",ddGroup:"unplannedtasks",getRepairXY:function(){return this.dragData.repairXY},getDragData:function(g){var a=this.schedulerView;var b=g.getTarget(a.eventSelector);if(!b){return}var j=a.resolveEventRecord(b);if(j){var h=b.cloneNode(true);h.id=Ext.id();var c=Ext.get(Ext.core.DomHelper.createDom({tag:"div",cls:"sch-dd-wrap",style:{width:"100px",overflow:"hidden"},children:[{tag:"span",cls:"sch-dd-proxy-hd",html:"&nbsp;"}]}));c.appendChild(h);Ext.fly(h).addCls("sch-event");Ext.fly(h).update(j.get("Name"));return{sourceEl:b,repairXY:Ext.fly(b).getXY(),duration:j.get("Duration")*3600000,ddel:c.dom,sourceEventRecord:j,records:[j]}}}});Ext.define("FT.view.ScrollSyncer",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},constructor:function(a){this.mixins.observable.constructor.call(this);this.callParent();this.unlockScrollTask=new Ext.util.DelayedTask(function(){this.scrollLock=false},this)},sync:function(b,a){if(b.isRenderableCreated()){this.primaryPane=b.getRenderable()}else{b.on("aftercreaterenderable",function(){this.primaryPane=b.getRenderable();this.bindSync()},this,{single:true})}if(a.isRenderableCreated()){this.secondaryPane=a.getRenderable()}else{a.on("aftercreaterenderable",function(){this.secondaryPane=a.getRenderable();this.bindSync()},this,{single:true})}this.bindSync()},bindSync:function(){if(this.primaryPane&&this.secondaryPane){this.primaryPane.getSchedulingView().on("bodyscroll",function(d,a){var c=new Ext.Element(a);var b=1/this.getScrollRatio();if(b===null){return}this.syncTo(c.getScroll().left*b,this.secondaryPane)},this);this.secondaryPane.getSchedulingView().on("bodyscroll",function(d,a){var c=new Ext.Element(a);var b=this.getScrollRatio();if(b===null){return}this.syncTo(c.getScroll().left*b,this.primaryPane)},this)}},getScrollRatio:function(d,c){var d=this.primaryPane.getSchedulingView().getEl();var c=this.secondaryPane.getSchedulingView().getEl();if(!d||!c){return null}var b=1-d.dom.clientWidth/d.dom.scrollWidth;var a=1-c.dom.clientWidth/c.dom.scrollWidth;return b/a},syncTo:function(a,b){if(this.scrollLock&&this.scrollLock!=b.id||!b.getSchedulingView().getTargetEl()){return}this.scrollLock=b.id;b.getSchedulingView().getTargetEl().scrollTo("Left",a);this.unlockScrollTask.delay(500)}});Ext.define("FT.view.impl.TeamPlannerView",{extend:"FT.view.AbstractView",alias:"widget.ft-teamplanner",text:FT.i18n("Team planner"),tooltip:"Team planner",icon:"people",width:100,stackPaneButtons:false,constructor:function(a){this.callParent(arguments);this.on({scope:this,assignusers:this.onAssignUsers})},registerPanes:function(){var c=this.registerPrimary({xtype:"ft-resourcepane",loadOnCreate:true,useGlobalMask:true,renderable:{margin:"0 10",cls:"border-default"}});var b=this.registerSecondary("south",{name:"Unassigned",xtype:"ft-unassignedpane",renderable:{height:240,hidden:false,margin:"0 10 10",cls:"border-default"}});var e=this.registerSecondary("north",{name:"Timeline",xtype:"ft-timeslider",renderable:{hidden:false,height:60}});this.filters=this.registerSecondary("east",{name:"Filters",xtype:"ft-team-calendar-filter",regionWeight:30,renderable:{hidden:true,split:true,overflowY:"auto",cls:"top-border"}});this.filters.on("filterschanged",this.onFiltersChanged,this,{buffer:500});c.zoomSlider.on("columnwidthchanged",function(h,g){if(this.unassigned){this.unassigned.setTimeColumnWidth(g)}},this);e.bindTimeline(c);b.bindEventStore(c.getEventStore());var d=Ext.create("FT.view.ScrollSyncer",{});d.sync(c,b);var a=Ext.create("FT.view.SyncTimeLineWidth",{master:c,slave:b});b.on("afterrender",function(){if(c.rendered){this.createDropTargets(c.getRenderable(),b.getRenderable())}else{c.on("afterrender",function(){this.createDropTargets(c.getRenderable(),b.getRenderable())},this)}},this);this.unassigned=b},onFiltersChanged:function(){this.primary.applyFilters(this.filters.filterPanel.getMetafilters())},createDropTargets:function(d,b){var e=this;var a=b.getSchedulingView(),h=Ext.create("FT.view.impl.TaskDragZone",b.el,{taskGrid:b,schedulerView:a});var c=d.getSchedulingView(),g=Ext.create("Sch.feature.DropZone",d.normalGrid.el,{ddGroup:"unplannedtasks",schedulerView:c,onNodeOver:function(j){return this.dropAllowed?this.dropAllowed:this.dropNotAllowed},onNodeDrop:function(p,j,o,n){var l=c.resolveResource(p),m=a.getDateFromDomEvent(o,"round"),k=n.records[0];e.fireEvent("assignusers",[l.get("Id")],k,d,b);return true}})},onAssignUsers:function(e,a,d,b){var c=b.getEventSelectionModel().getSelection();d.getEventStore().suspendEvents(true);Ext.each(c,function(j,g,h){if(j.internalId!=a.internalId){d.assignUsers(j,e)}},this);d.assignUsers(a,e);d.getEventStore().resumeEvents()},getPrimaryTools:function(b){var c=this.primary.tbar.items,a=this.callParent(arguments);c.push("->");c.push(this.filters.getFilterButton());c.push({xtype:"button",overflowText:FT.i18n("Settings"),glyph:FT.glyph("configure"),qtip:FT.tip("toolbar-button-icononly-configure"),menu:[{text:FT.i18n("Display"),menu:a}]});return c}});Ext.define("FT.view.impl.OverviewPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-overviewpane",constructor:function(){this.callParent(arguments);this.view.on("entitychanged",this.onEntityChanged,this)},onEntityChanged:function(a){if(this.iframe&&a&&a.entityType==="show"){this.iframe.updateParam("projectId",a.entityId)}},createRenderable:function(b){var c=FT.Settings.get("ftrack","studioOverviewUrl");var a=Ext.apply({cls:"border-top",src:c,allowPostMessage:true},b);this.iframe=Ext.create("FT.component.Iframe",a);return this.iframe}});Ext.define("FT.view.SyncTimeLineWidth",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},constructor:function(a){this.mixins.observable.constructor.call(this);Ext.apply(this,a);this.callParent();this.master.on("aftercreaterenderable",this.onMasterRenderableCreated,this);this.delaySchedulerResize=new Ext.util.DelayedTask(function(){if(this.slave.isRenderableCreated()&&this.slave.getRenderable().lockedGrid.getEl()){var d=this.master.getRenderable().lockedGrid.getWidth();var c=this.slave.getRenderable().lockedGrid.getWidth();this.slave.getRenderable().lockedGrid.setWidth(d);var b=this.slave.getRenderable().getHeight();var d=this.master.getRenderable().getWidth();if(!this.slave.getRenderable().hidden){this.slave.getRenderable().setSize(d,b)}}},this)},onMasterRenderableCreated:function(a){a.lockedGrid.on("resize",function(c,d,b){this.delaySchedulerResize.delay(20)},this);a.normalGrid.on("resize",function(c,d,b){this.delaySchedulerResize.delay(20)},this)}});Ext.define("FT.view.GanttSchedulerSync",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},copyFields:["StartDate","EndDate","userids","typeid","bid"],constructor:function(a){this.mixins.observable.constructor.call(this);Ext.apply(this,a);this.callParent();this.gantt.on("aftercreaterenderable",this.ganttRenderableCreated,this);this.scheduler.on("aftercreaterenderable",this.schedulerRenderableCreated,this);this.scheduler.getEventStore().on("load",this.onEventStoreLoad,this)},schedulerRenderableCreated:function(a){this.schedulerRenderable=a;a.on("eventclick",function(c,b){var d=this.ganttRenderable.getTaskStore().getById(b.get("taskid"));this.ganttRenderable.getSelectionModel().select(d)},this)},ganttRenderableCreated:function(a){this.ganttRenderable=a;a.zoomSlider.on("columnwidthchanged",function(c,b){},this);a.getSelectionModel().on("select",function(d,c){if(this.scheduler.scheduler){var b=Ext.pluck(Ext.pluck(c.getRelatedData().tasks,"data"),"taskid");this.scheduler.scheduler.setHighlightTasks(b);this.scheduler.scheduler.selectFromTaskid(c.get("taskid"))}},this);a.getTaskStore().on({update:this.onUpdate,datachanged:this.onDataChanged,load:this.onLoad,scope:this})},onUpdate:function(c,a){var b=a.get("taskid");this.scheduler.getEventStore().suspendEvents(true);this.scheduler.getEventStore().each(function(d){if(d.get("taskid")==b){d.beginEdit();this.copyTo(d,a);d.endEdit()}},this);this.scheduler.getEventStore().resumeEvents()},onEventStoreLoad:function(b){var c=this.ganttRenderable.getTaskStore();var a=c.getUpdatedRecords();this.scheduler.getEventStore().suspendEvents();Ext.each(a,function(d){var e=d.getChanges();if(Ext.isDefined(e.userids)){this.updateEvenStoreFromUserids(d,e.userids,d.modified.userids)}this.onUpdate(c,d)},this);this.scheduler.getEventStore().resumeEvents();this.scheduler.getEventStore().fireEvent("datachanged",this.scheduler.getEventStore())},onDataChanged:function(b){var a=b.tree.nodeHash;var c={};this.scheduler.getEventStore().suspendEvents();this.scheduler.getEventStore().each(function(g){var d=a[g.get("taskid")];var e=g.get("ResourceId");c[e]=true;if(d&&d.wasDirty){this.copyTo(g,d)}},this);this.scheduler.getEventStore().resumeEvents();this.scheduler.getEventStore().fireEvent("datachanged",this.scheduler.getEventStore())},copyTo:function(d,c){var b=this.copyFields.length;d.beginEdit();for(var a=0;a<b;a++){d.set(this.copyFields[a],c.get(this.copyFields[a]))}d.endEdit()},onSet:function(a,c,d){if(c=="userids"){var b=a.get("userids");this.updateEvenStoreFromUserids(a,d,b)}},updateEvenStoreFromUserids:function(g,j,a){var h=g.get("taskid");var d=a!=""?a.split(", "):[];var c=j!=""?j.split(", "):[];var e=Ext.Array.difference(d,c);var l=Ext.Array.difference(c,d);var k=[];this.scheduler.getEventStore().each(function(m){if(m.get("taskid")==h&&e.indexOf(m.get("ResourceId"))!=-1){k.push(m)}},this);var b=[];Ext.each(l,function(m){b.push({ResourceId:m,userids:j,StartDate:g.get("StartDate"),EndDate:g.get("EndDate"),taskid:g.get("taskid"),link:g.get("link"),bid:g.get("bid"),typeid:g.get("typeid")})},this);this.scheduler.getEventStore().add(b);this.scheduler.getEventStore().remove(k)},onReject:function(a){var c=a,b=c.modified;var d="userids";if(Ext.isDefined(b[d])){this.onSet(c,d,b[d])}},onLoad:function(a){Ext.iterate(a.tree.nodeHash,function(b,c){Ext.Function.interceptBefore(c,"set",Ext.pass(this.onSet,[c],this));Ext.Function.interceptBefore(c,"reject",Ext.pass(this.onReject,[c],this))},this);if(this.scheduler.isVisible()){this.scheduler.reloadView({startdate:this.ganttRenderable.getStart(),enddate:this.ganttRenderable.getEnd()})}}});Ext.define("FT.view.impl.GanttView",{extend:"FT.view.AbstractView",alias:"widget.ft-gantt",text:FT.i18n("Gantt"),title:FT.i18n("Gantt"),split:true,width:65,constructor:function(a){this.callParent(arguments)},registerPanes:function(){var b=this.registerPrimary({xtype:"ft-ganttpane",split:true,renderable:{columnLines:true,padding:"10 0 0 10",tourId:"projects-spreadsheet"}});var g=new FT.scheduler.SchedulingHelper({prefix:"projects"});var d=FT.getVar("gantt-lockedonly",true);var e=this.registerSecondary("north",{name:FT.i18n("Timeline"),xtype:"ft-timeslider",renderable:{split:false,height:60,renderHidden:d}});this.timeslider=e;var a=this.registerSecondary("east",{name:FT.i18n("Filters"),xtype:"ft-gntfilterpane",regionWeight:30,renderable:{hidden:true,split:true,overflowY:"auto",cls:"top-border"}});var c=this.registerSecondary("north",{name:FT.i18n("Filter bar"),xtype:"ft-filter-bar",freeFilterText:FT.i18n("Type to filter on task name or description"),filterPane:a,renderable:{overflowY:"auto",cls:"top-border",split:false}});c.on("search-changed",function(h){b.setFilters(null,c.getSearch())});b.on("filters-loaded",function(h){if(h.filterData){a.filterPanel.loadSerialized(h.filterData,true);b.setFilters(a.filterPanel.getMetafilters(),c.getSearch());b.setSerializedFilters(a.filterPanel.getSerialized())}});b.on("beforesaveview",function(h){h.setFilterData(Ext.encode(a.filterPanel.getSerialized(true)))});this.projectScheduler=this.registerSecondary("south",{name:FT.i18n("Project plan"),xtype:"ft-overviewpane",renderable:{extraParams:{scheduler:"projects",readOnly:true,projectId:FT.app.location.getProjectId()},hidden:true,split:true,flex:1}});this.usersScheduler=this.registerSecondary("south",{name:FT.i18n("Resources"),xtype:"ft-overviewpane",renderable:{extraParams:{scheduler:"users",filters:true,readOnly:true,projectId:FT.app.location.getProjectId()},hidden:true,split:true,flex:1}});this.primary=b;b.on("columnsLoaded",function(h){a.updateAvailableFilters(b.getFilterColumns())});a.on("filterschanged",function(h){if(a.isAutoUpdateEnabled()){b.setFilters(a.filterPanel.getMetafilters(),c.getSearch())}b.setSerializedFilters(a.filterPanel.getSerialized())},this,{buffer:500});a.on("apply-filters",function(){b.setFilters(a.filterPanel.getMetafilters(),null)});b.on("showslider",function(h){this.timeslider.getRenderable().setVisible(h)},this);b.on("togglepane",function(j,h){this.togglePane(this[j],h)},this);e.bindTimeline(b)},getPrimaryTools:function(b){var c=[];c=c.concat(this.primary.getPrimaryTBar());c.push("->");var a=this.callParent(arguments);if(a){this.primary.setPanesMenu(a.menu)}c=c.concat(b);c=c.concat(this.primary.getSecondaryTBar());return c},getBottomTools:function(){return this.primary.getBottomTools()}});Ext.define("FT.view.impl.GridView",{extend:"FT.view.AbstractView",alias:"widget.ft-mastergrid",text:FT.i18n("Grid"),title:FT.i18n("Grid"),icon:"/resources/icons/grid.png",width:60,constructor:function(a){this.callParent(arguments)},registerPanes:function(){this.registerSecondary("east",{xtype:"ft-testpane",width:50,hidden:false,html:"east grid"});this.registerSecondary("north",{xtype:"ft-testpane",height:100,html:"north grid"});this.registerSecondary("south",{xtype:"ft-testpane",height:50,hidden:true,html:"south grid"});this.registerPrimary({xtype:"ft-testprimarypane",html:FT.i18n("Grid")})}});Ext.define("FT.view.impl.ResourcePane",{extend:"FT.view.AbstractPane",alias:"widget.ft-resourcepane",loadOnCreate:false,mirrorRecords:true,useGlobalMask:false,viewPreset:"ftrack-scheduler",reloadOnEntityChange:true,useSchedulingHelper:true,constructor:function(b){this.settings={includeAllUserTasks:true,excludeEntityTasks:false};this.initialData={};this.initialDataDirty=false;this.entity=b.entity;this.callParent(arguments);this.view.on("entityChanged",this.updateEntity,this);this.getView().on("shortcut",this.handleShortcuts,this);if(this.useSchedulingHelper){this.schedulingHelper=new FT.scheduler.SchedulingHelper({})}this.on("beforetogglepane",function(d){if(d&&this.initialDataDirty){this.reloadView(Ext.clone(this.initialData));this.initialDataDirty=false;this.initialData={}}},this);this.addEvents("projectdateschanged","explicitidschanged");this.scheduledResourceStore=Ext.create("Ext.data.Store",{model:"FT.model.PlanningBoardResource",proxy:{type:"memory"},folderSort:true});this.dayStore=new Ext.data.Store({fields:[{name:"Date",type:"date"},"Text",{name:"Cls",defaultValue:"ft-markedDateLine"},"taskid"]});this.eventStore=Ext.create("Sch.data.EventStore",{model:"FT.model.TaskEvent",mirrorRecords:this.mirrorRecords,ignoreMirror:["ResourceId",FT.data.UndoRedoHelperBase.removeGUID],proxy:{directFn:FTApi.TeamCalendar.getCalendar,type:"direct",reader:{type:"json",root:"allEvents",idProperty:"Id"}}});this.eventStore.on({update:this.onEventStoreUpdate,datachanged:this.onEventStoreDataChanged,load:this.onLoad,beforeload:this.onBeforeLoad,scope:this});var c=Ext.create("FT.data.MirrorRecords",{store:this.eventStore,ignore:["ResourceId",FT.data.UndoRedoHelperBase.removeGUID]});var a=Ext.create("FT.data.SyncAssignee",{store:this.eventStore,resourceStore:this.scheduledResourceStore});this.tbar={xtype:"toolbar",items:[]};if(this.readOnly!==true){if(FT.isAuth("UPDATE_TASK")){this.schedulerTools=[{text:FT.i18n("Un-assign"),menu:true,handler:function(e,d){Ext.each(d,function(h,g,j){h.unAssign()},this)},scope:this},{text:FT.i18n("Adjust to bid"),menu:true,handler:function(e,d){Ext.each(d,function(j,g,h){j.adjustToBid()},this)},scope:this},{text:FT.i18n("Remove"),menu:true,handler:function(e,d){this.undoRedo.remove(d)},scope:this}]}this.undoRedo=Ext.create("FT.data.UndoRedoHelper",{store:this.eventStore,contentType:"task",remapBeforeSync:true,reloadAfterCommit:false,leaveRemovedInStore:false,enableAdd:false,askBeforeSaveInvisible:false,enableFilterControls:false,syncField:"entityId",listeners:{beforesync:function(g,e,d){},scope:this},isRecordPhantom:function(){return false},pushToken:this.getView().getPushToken()});this.undoRedo.on("aftersync",function(){FT.util.intercom("USED-TEAM-CALENDAR")});if(FT.isAuth("UPDATE_TASK")){this.getView().on("beforeviewchange",this.handleUnsavedChanges,this);this.undoRedo.on("syncrecord",function(d){if(d.get("type")!="summary"){return true}return false},this);this.saveButton=Ext.widget({xtype:"button",glyph:FT.glyph("save"),qtip:FT.tip("toolbar-button-icononly-save"),handler:function(){this.undoRedo.syncChanges()},scope:this});this.undoButton=Ext.widget({disabled:true,xtype:"button",glyph:FT.glyph("undo"),qtip:FT.tip("toolbar-button-icononly-undo"),handler:function(){this.undoRedo.undo()},scope:this});this.redoButton=Ext.widget({disabled:true,xtype:"button",glyph:FT.glyph("redo"),qtip:FT.tip("toolbar-button-icononly-redo"),handler:function(){this.undoRedo.redo()},scope:this});this.tbar.items=this.tbar.items.concat([this.saveButton,this.undoButton,this.redoButton]);this.schedulingHelper.setupButtonInteractions(this.undoRedo,{save:this.saveButton,undo:this.undoButton,redo:this.redoButton})}this.zoomSlider=Ext.create("FT.view.impl.ZoomSlider",{stateful:true,stateId:"schedulerzoom2",stateEvents:["changecomplete"]})}},handleShortcuts:function(a){if(!FT.isAuth("UPDATE_TASK")||this.readOnly){return}if(a=="save"){this.undoRedo.syncChanges()}else{if(a=="undo"){this.undoRedo.undo()}else{if(a=="redo"){this.undoRedo.redo()}}}},handleUnsavedChanges:function(){return this.schedulingHelper.handleUnsavedChanges(this.undoRedo,this.getView())},onLoad:function(){if(this.useGlobalMask){this.getView().disableLoadMask()}if(this.scheduler&&this.highLightOnLoad){this.scheduler.setHighlightTasks(this.highLightOnLoad)}if(this.scheduler&&this.selectOnLoad){this.scheduler.selectFromTaskid(this.selectOnLoad)}delete this.highLightOnLoad;delete this.selectOnLoad},onBeforeLoad:function(){if(this.useGlobalMask){this.getView().enableLoadMask()}},onEventStoreDataChanged:function(){this.resetDayStore()},onEventStoreUpdate:function(b,a){this.syncMilestoneFromRecord(a)},syncMilestoneFromRecord:function(a){var b=a.isMilestone();var d=this.dayStore.findRecord("taskid",a.get("taskid"));if(!d&&!b){return}if(!d&&b){var c=a.get("link");this.dayStore.add({Text:"Milestone: "+c[c.length-1].name,Date:a.get("StartDate"),taskid:a.get("taskid")})}else{if(d&&b){d.set("Date",a.get("StartDate"))}else{if(d&&!b){this.dayStore.remove(d)}}}},resetDayStore:function(){var a=[];a.push({Cls:"sch-todayLine",Text:"Today",Date:new Date});this.eventStore.each(function(c){if(c.isMilestone()){var b=c.get("link");a.push({Text:"Milestone: "+b[b.length-1].name,Date:c.get("StartDate"),taskid:c.get("taskid")})}});this.dayStore.removeAll(true);this.dayStore.loadData(a)},setProjectDates:function(a,b){this.projectStart=a;this.projectEnd=b;this.fireEvent("projectdateschanged",this.projectStart,this.projectEnd)},getEventStore:function(){return this.eventStore},getResourceStore:function(){return this.scheduledResourceStore},loadData:function(a){if(this.scheduler){this.scheduler.getView().lockedView.saveScrollState()}this.scheduledResourceStore.loadData(Ext.clone(a.scheduledResources.children));if(this.scheduler){this.scheduler.getView().lockedView.restoreScrollState()}},setTimeSpan:function(b,a){this.start=b;this.end=a;if(this.scheduler){this.scheduler.getView().lockedView.saveScrollState();this.scheduler.setTimeSpan(b,a);this.scheduler.getView().lockedView.restoreScrollState()}},setSetting:function(a,c,b){b=Ext.value(b,true);this.settings[a]=c;if(b){this.reloadView()}},updateEntity:function(a){this.entity=a},updateFromEntity:function(a){this.entity=a;if(this.scheduler){this.scheduler.updateEntity(a)}if(!this.reloadOnEntityChange){return}Ext.Ajax.request({url:"/main/getProjectid",params:{data:Ext.encode(a)},success:function(c){var d=Ext.decode(c.responseText),b,g,e;if(this.schedulingHelper&&this.showid!==d.showid){e=this.schedulingHelper.getTimespan(d.startdate,d.enddate);b=e[0];g=e[1];this.setProjectDates(moment(d.startdate).toDate(),moment(d.enddate).toDate());this.fireEvent("datescalculated",b,g)}this.showid=d.showid;this.setActive();this.reloadView({startdate:b,enddate:g})},scope:this})},reloadView:function(a){if(!this.isVisible()){return}if(a.startdate&&a.enddate){this.setTimeSpan(a.startdate,a.enddate)}if(a.userids){a.filters=a.filters||[];a.filters.push({field:"resource",value:a.userids});delete a.userids}Ext.apply(a,{startdate:this.start,enddate:this.end});this.params=Ext.value(this.params,{});Ext.apply(this.params,a);Ext.apply(this.params,{settings:Ext.clone(this.settings)});if(Ext.isDefined(this.entity)){Ext.apply(this.params,{data:Ext.clone({resourceCfg:this.resourceCfg,eventCfg:this.eventCfg,entityId:this.entity.entityId,entityType:this.entity.entityType})})}this.eventStore.getProxy().extraParams=this.params;this.eventStore.on("metachange",function(b,c){this.loadData(c)},this,{single:true});this.eventStore.load()},applyFilters:function(a){Ext.apply(this.eventStore.getProxy().extraParams,{filters:a});this.eventStore.on("metachange",function(b,c){this.loadData(c)},this,{single:true});this.eventStore.load()},createDateLinePlugin:function(){var a=Ext.create("Sch.plugin.Lines",{store:this.dayStore});a.template=new Ext.XTemplate('<tpl for=".">','<div id="'+a.uniqueCls+'-{id}"'+(a.showTip?'title="{[this.getTipText(values)]}" ':"")+'class="'+a.cls+" "+a.uniqueCls+' {Cls}" style="left:{left}px;top:{top}px;height:{height}px;width:{width}px"></div>',"</tpl>",{getTipText:function(b){return FTrack.grid.dateRenderer(b.Date)+" \n"+(b.Text||"")}});return a},createRenderable:function(d){if(this.schedulingHelper&&!this.showid){if(this.loadOnCreate){this.updateFromEntity(this.entity)}return false}this.view.on("entityChanged",this.updateFromEntity,this);if(this.zoomSlider){var g=this.getViewPreset();var e=this.zoomSlider.getValue();g.timeColumnWidth=e}var a=6;var c=this.createDateLinePlugin();if(this.viewPreset){this.getViewPreset().timeResolution.increment=a}var b={entity:this.entity,readOnly:!FT.isAuth("UPDATE_TASK")||this.readOnly,resourceStore:this.scheduledResourceStore,eventStore:this.eventStore,resourceCfg:["user"],eventCfg:"task",viewPreset:this.viewPreset,viewConfig:{loadMask:!this.useGlobalMask},multiSelect:true,plugins:[Ext.create("Sch.plugin.DragSelector"),c],commands:this.commands,schedulerTools:this.schedulerTools};if(this.start){b.startDate=this.start;b.endDate=this.end}Ext.apply(b,d);this.scheduler=Ext.create("FT.scheduler.Scheduler",b);if(this.undoRedo){this.undoRedo.saveMaskTarget=this.scheduler}if(this.zoomSlider){this.zoomSlider.setTimeline(this.scheduler)}return this.scheduler},setTimeColumnWidth:function(a){var b=this.getViewPreset();b.timeColumnWidth=Ext.value(a,b.timeColumnWidth);if(this.scheduler){this.scheduler.switchViewPreset(this.viewPreset,this.scheduler.getStart(),this.scheduler.getEnd())}},getViewPreset:function(){return Sch.preset.Manager.getPreset(this.viewPreset)},bindToTimeaxis:function(a){a.on("reconfigure",function(){this.reloadView({startdate:this.getStart(),enddate:this.getEnd()})})},getCommands:function(){return[{ctype:"dblclick",handler:function(c,a,g,b){if(this.isVisible()){var d=a.getRelatedData();this.highLightOnLoad=Ext.pluck(Ext.pluck(d.tasks,"data"),"taskid");this.selectOnLoad=a.get("taskid");this.setActive();this.reloadView({userids:d.userids,startdate:Ext.Date.add(c.getStart(),Ext.Date.DAY,0),enddate:Ext.Date.add(c.getEnd(),Ext.Date.DAY,0)})}},scope:this},{ctype:"click",handler:function(c,a,g,b){if(!this.isVisible()){var d=a.getRelatedData();this.initialDataDirty=true;this.initialData={userids:d.userids,startdate:Ext.Date.add(c.getStart(),Ext.Date.DAY,0),enddate:Ext.Date.add(c.getEnd(),Ext.Date.DAY,0)};this.highLightOnLoad=Ext.pluck(Ext.pluck(d.tasks,"data"),"taskid");this.selectOnLoad=a.get("taskid")}},scope:this},{ctype:"rightclick",text:FT.i18n("Show Schedule"),handler:function(c,a,g,b){var d=a.getRelatedData();this.highLightOnLoad=Ext.pluck(Ext.pluck(d.tasks,"data"),"taskid");this.selectOnLoad=a.get("taskid");this.setActive();this.reloadView({userids:d.userids,startdate:Ext.Date.add(c.getStart(),Ext.Date.DAY,0),enddate:Ext.Date.add(c.getEnd(),Ext.Date.DAY,0)})},scope:this}]}});Ext.define("FT.view.impl.UnassignedPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-unassignedpane",viewPreset:"ftrack-scheduler",constructor:function(a){this.entity=a.entity;this.callParent(arguments)},updateEntity:function(a){this.entity=a;if(this.unassigned){this.unassigned.updateEntity(this.entity)}},bindEventStore:function(a){this.mainEventStore=a},onEventStoreLoad:function(){},onEventStoreUpdate:function(c,b){if(b.get("userids")==""){this.syncMainEventStore();return}var a=this.eventStore.findRecord("taskid",b.get("taskid"));if(a){a.beginEdit();Ext.iterate(b.data,function(d,e){a.set(d,e)},this);a.endEdit()}},onEventStoreDataChanged:function(){this.syncMainEventStore()},syncMainEventStore:function(){var d=[];this.mainEventStore.each(function(g){if(g.getUsers().length==0){d.push(g.data)}},this);d=Ext.clone(d);var e=this.mainEventStore.getProxy().getReader().rawData;if(e){var b=this.eventStore.getCount()!=d.length;this.eventStore.loadData(d);if(this.lastStart!=e.startdate||this.lastEnd!=e.enddate){var c=new Date(e.startdate);var a=new Date(e.enddate);this.unassigned.setTimeSpan(c,a)}this.lastStart=e.startdate;this.lastEnd=e.enddate;if(!this.unAssignedResources){this.unAssignedResources=Ext.value(e.unAssignedResources.children,[]);this.unAssignedResourceStore.loadData(Ext.clone(this.unAssignedResources))}this.unAssignedResourceStore.filterBy(function(g){return this.eventStore.find("ResourceId",g.get("Id"))!=-1},this)}},createRenderable:function(b){this.view.on("entityChanged",this.updateEntity,this);this.unAssignedResourceStore=Ext.create("Ext.data.Store",{model:"FT.model.PlanningBoardResource",proxy:{type:"memory"},sorters:["Name"]});this.eventStore=Ext.create("Sch.data.EventStore",{model:this.mainEventStore.model.prototype.modelName,proxy:{type:"memory",reader:{type:"json",root:"allEvents",idProperty:"Id"}},listeners:{update:function(g,d,e){},scope:this}});var c=this.getViewPreset();var a={entity:this.entity,readOnly:this.readOnly,commands:this.commands,resourceStore:this.unAssignedResourceStore,eventStore:this.eventStore,resourceCfg:["tasktype"],eventCfg:"task",split:true,viewPreset:this.viewPreset,allowResize:false,viewConfig:{loadMask:false},enableDragCreation:false,enableEventDragDrop:false,multiSelect:true,plugins:[Ext.create("Sch.plugin.DragSelector")]};Ext.apply(a,b);this.unassigned=Ext.create("FT.scheduler.Scheduler",a);this.unassigned.on({scope:this,beforecommand:this.onBeforeCommand,beforescheduledate:this.onBeforeScheduleDate});this.syncMainEventStore();this.mainEventStore.on("load",this.onEventStoreLoad,this);this.mainEventStore.on("update",this.onEventStoreUpdate,this);this.mainEventStore.on("datachanged",this.onEventStoreDataChanged,this);return this.unassigned},setTimeColumnWidth:function(a){var b=this.getViewPreset();b.timeColumnWidth=Ext.value(a,b.timeColumnWidth);log("test: "+a);if(this.unassigned&&a){this.unassigned.setTimeColumnWidth(b.timeColumnWidth)}},getViewPreset:function(){return Sch.preset.Manager.getPreset(this.viewPreset)},onBeforeCommand:function(c){var b=c.eventRecord;var d=b.get("taskid");var a=this.mainEventStore.find("taskid",d);c.eventRecord=this.mainEventStore.getAt(a)},onBeforeScheduleDate:function(c){var b=c.eventRecord;var d=b.get("taskid");var a=this.mainEventStore.find("taskid",d);c.eventRecord=this.mainEventStore.getAt(a)}});Ext.define("FT.slider.Multi",{extend:"Ext.slider.Multi",onClickChange:function(c){var d=this,a,b;if(c.top>d.clickRange[0]&&c.top<d.clickRange[1]){a=d.getNearest(c,"left");if(!a.disabled){b=a.index;d.setValue(b,Ext.util.Format.round(d.reverseValue(c.left-40),d.decimalPrecision),undefined,true)}}},onRender:function(){this.callParent(arguments)}});Ext.define("FT.view.impl.TimesliderPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-timeslider",style:"background-color: red !important;",constructor:function(a){this.callParent(arguments);this.syncObjects=Ext.value(this.syncObjects,[]);this.slaveObjects=Ext.value(this.slaveObjects,[])},createRenderable:function(b){var a={hidden:Ext.isDefined(b.renderHidden)&&b.renderHidden?true:false,parentComponent:this,values:[25,50,75],margin:"0 95 0 95",minValue:0,maxValue:100,animate:false,useTips:false,cls:"timeslider",fieldSubTpl:['<div style="border: 0px solid green;" id="{id}" class="'+Ext.baseCSSPrefix+'slider {fieldCls} {vertical}" aria-valuemin="{minValue}" aria-valuemax="{maxValue}" aria-valuenow="{value}" aria-valuetext="{value}">','<div id="{cmpId}-timelineEl" class="'+Ext.baseCSSPrefix+'timelineEl" style="border: 0px solid blue;height:15px;color:#808080;overflow:hidden;font-size:11px;"></div>','<div id="{cmpId}-endEl" class="'+Ext.baseCSSPrefix+'slider-end" role="presentation">','<div style="position:absolute;width:100%;"><div style="margin-left:-90px;margin-right:-90px;"><table width="100%" style="font-size:11px;border-spacing:0px;"><tr><td><div style="float:left;text-align:right;color:gray;"><div class="'+Ext.baseCSSPrefix+'startDateEl">Start</div></div></td><td><div style="float:right;text-align:left;color:gray;padding-right:10px;"><div class="'+Ext.baseCSSPrefix+'endDateEl">End</div></div></td></tr></table></div></div>','<div id="{cmpId}-innerEl" class="'+Ext.baseCSSPrefix+'slider-inner" role="presentation">',"{%this.renderThumbs(out, values)%}","</div>","</div>",'<div id="{cmpId}-todayEl" class="'+Ext.baseCSSPrefix+'todayEl" style="color:#feb20e;font-weight:bold;border: 0px solid blue;height:15px;overflow:hidden !important;font-size:11px;"></div>',"</div>",{renderThumbs:function(j,h){var l=h.$comp,k=0,e=l.thumbs,d=e.length,g,c;for(;k<d;k++){g=e[k];c=g.getElConfig();c.id=l.id+"-thumb-"+k;if(k==0){c.cls="x-slider-thumb timesliderleft"}if(k==1){c.cls="x-slider-thumb timeslidermiddle"}if(k==2){c.cls="x-slider-thumb timesliderright"}Ext.DomHelper.generateMarkup(c,j)}},disableFormats:true}],lock:false,listeners:{dragstart:function(c){this.leftPostAtStart=c.thumbs[0].value;this.offset=null;this.distance=(c.thumbs[2].value-c.thumbs[0].value)/2},change:function(g,h,d){if(this.lock){return}var c=g.getValues();if(d.index==0||d.index==2){var e=(c[2]-c[0])/2+c[0];this.lock=true;g.setValue(1,e);this.lock=false}if(this.distance&&d.index==1){if(this.offset==null){this.offset=h-c[0]-this.distance}this.lock=true;g.setValue(0,c[1]-this.distance-this.offset);g.setValue(2,c[1]+this.distance-this.offset);this.lock=false}g.drawMiddleThumb()},show:function(c){c.drawMiddleThumb()},resize:function(d){var c=this.getHeight();c=c-30;d.thumbs[0].el.dom.style.height=c-2;d.thumbs[1].el.dom.style.height=c-2;d.thumbs[2].el.dom.style.height=c-2;d.thumbs[0].el.dom.parentNode.parentNode.style.height=c;d.drawMiddleThumb()}},drawMiddleThumb:function(){var c=this.calculateThumbPosition(this.thumbs[2].value)-this.calculateThumbPosition(this.thumbs[0].value);this.thumbs[1].el.dom.style.width=c*this.getRatio()-15+2;this.thumbs[1].el.dom.style.left=this.calculateThumbPosition(this.thumbs[0].value)*this.getRatio()+15-1},drawTimeline:function(){if(!this.parentComponent.maxStart){return}if(!this.el){return}var l=Ext.Date.getElapsed(this.parentComponent.maxStart,this.parentComponent.maxEnd)/1000/60/60;var h=new Date(this.parentComponent.maxStart.getFullYear(),this.parentComponent.maxStart.getMonth(),this.parentComponent.maxStart.getDate());var j=null;var c=[];while(true){j=Sch.util.Date.add(h,Sch.util.Date.MONTH,1);j=new Date(j.getFullYear(),j.getMonth(),1);if(j>this.parentComponent.maxEnd){break}c.push({length:Ext.Date.getElapsed(h,j)/1000/60/60,text:Ext.Date.format(j,"M")});h=new Date(j)}var g=this.el.down("."+Ext.baseCSSPrefix+"timelineEl");if(g&&this.parentComponent.maxStart){var m=0;var k="";Ext.each(c,function(p,n){var o=p.length/l;if(n!=0){k+="<div style='float:left;width:"+o*100+'%\'><span class="timeslider__monthline">&nbsp;</span> '+c[n-1].text+"</div></div>"}else{k+="<div style='float:left;width:"+o*100+"%'><div>&nbsp;</div></div>"}},this);if(c.length>0){k+="<div style='float:left;width:50px'><div><span class=\"timeslider__monthline\">&nbsp;</span> "+c[c.length-1].text+"</div></div>"}g.update(k)}var g=this.el.down("."+Ext.baseCSSPrefix+"todayEl");if(g){var d=new Date;if(d<this.parentComponent.maxEnd&&d>this.parentComponent.maxStart){var e=Ext.Date.getElapsed(this.parentComponent.maxStart,new Date)/1000/60/60;var k="<div style='position: absolute; left:"+e/l*100+"%'><span style='border-left: 2px solid #feb20e;padding-left:5px;'>Today</span></div>";g.update(k)}else{g.update("")}}var g=this.el.down("."+Ext.baseCSSPrefix+"startDateEl");if(g&&this.parentComponent.maxStart){g.update(["<strong>",FT.i18n("Start"),"</strong></br>",Ext.Date.format(this.parentComponent.maxStart,"d M Y")].join(""))}var g=this.el.down("."+Ext.baseCSSPrefix+"endDateEl");if(g&&this.parentComponent.maxEnd){g.update(["<strong>",FT.i18n("End"),"</strong></br>",Ext.Date.format(this.parentComponent.maxEnd,"d M Y")].join(""))}}};Ext.apply(a,b);this.slider=Ext.create("Ext.slider.Multi",a);this.slider.on("changecomplete",this.onSliderChange,this);this.updateSlider();return this.slider},bindTimeline:function(a){this.timelinePane=a;a.on("aftercreaterenderable",this.onAfterCreateRenderable,this);this.timelinePane.on("projectdateschanged",this.maxDates,this);this.sync(this.timelinePane,false)},onAfterCreateRenderable:function(a){this.timeAxis=a.getTimeAxis();this.timeAxis.on("reconfigure",this.updateSlider,this);this.updateSlider();this.syncSlaves(this.timeAxis.start,this.timeAxis.end)},syncSlaves:function(a,b){Ext.each(this.slaveObjects,function(c){c.reloadView({startdate:a,enddate:b})},this)},maxDates:function(a,b){this.maxStart=a;this.maxEnd=b;this.updateSlider()},onSliderChange:function(){var d=Ext.Date.getElapsed(this.maxStart,this.maxEnd);var b=this.slider.getValues();var j=b[0]/100;var c=b[2]/100;var a=Ext.Date.add(Ext.clone(this.maxStart),Ext.Date.SECOND,j*d/1000);var e=Ext.Date.add(Ext.clone(this.maxStart),Ext.Date.SECOND,c*d/1000);var g=Ext.Date.format(Ext.clone(a),"Y-m-d");var h=Ext.Date.format(Ext.clone(e),"Y-m-d");if(g==h){e=Ext.Date.add(Ext.clone(e),Ext.Date.DAY,1)}this.doSyncObjects(a,e)},sync:function(b,a){a=Ext.value(a,true);this.syncObjects.push(b);if(a){this.slaveObjects.push(b)}},doSyncObjects:function(a,b){Ext.each(this.syncObjects,function(c){c.reloadView({startdate:a,enddate:b})},this)},updateSlider:function(){if(this.slider&&this.timeAxis&&this.maxEnd&&this.maxStart){var b=Ext.Date.getElapsed(this.maxStart,this.maxEnd);var e=Ext.Date.getElapsed(this.timeAxis.start,this.timeAxis.end);var d=0;var a=100*(e/b);var c=Ext.Date.getElapsed(this.maxStart,this.timeAxis.start)/b;d+=100*c;a+=100*c;this.slider.setValue(0,d);this.slider.setValue(2,a);this.slider.drawTimeline()}}});Ext.define("FT.view.impl.InspectorPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-inspector",emptyMsg:'<center><span style="color:gray;font-weight:bold;">No task selected</span></center>',constructor:function(a){this.loaded=false;this.addEvents("propertychanged");this.callParent(arguments);this.on("beforetogglepane",function(b){if(b&&this.loadRecordOnActive){this.updateInspector(this.loadRecordOnActive,true)}},this)},createPropertyGrid:function(){var cfg={hideHeaders:true,listeners:{beforeedit:function(){return true}}};var standardViewers=[];Ext.each(this.viewers,function(v){if(v.renderName=="Standard"){standardViewers[v.ftype]=eval(v.renderer)}},this);var customEditors={},customRenderers={},propertyNames={},source={};this.sortOrder={};Ext.each(this.columns,function(c){if(c.editor&&c.dataIndex!="link"){c.dataIndex=c.dataIndex=="startdate"?"StartDate":c.dataIndex;c.dataIndex=c.dataIndex=="enddate"?"EndDate":c.dataIndex;customEditors[c.dataIndex]=c.editor;propertyNames[c.dataIndex]=c.text;customRenderers[c.dataIndex]=standardViewers[c.ftype];if(c.formGroup){this.sortOrder[c.dataIndex]=c.formGroup+" "+c.formSort}}},this);cfg.customEditors=customEditors;cfg.propertyNames=propertyNames;cfg.customRenderers=customRenderers;cfg.source=[];this.grid=Ext.create("Ext.grid.property.Grid",cfg);this.grid.on("propertychange",this.onPropertyChange,this);if(!this.grid.plugins[0].getEditor){FT.util.Exception("First plugin is expected to be a celleditor plugin")}var plugin=this.grid.plugins[0];this.originalGetEditor=plugin.getEditor;plugin.getEditor=Ext.bind(this.getEditor,this);return this.grid},createRenderable:function(b){var a={layout:"fit",items:[this.placeHolder=Ext.widget("component",{xtype:"component",padding:"15 0 0 0",html:this.emptyMsg})]};Ext.apply(a,b);this.container=Ext.create("Ext.container.Container",a);return this.container},getEditor:function(){var b=this.grid.plugins[0];var a=this.originalGetEditor.apply(b,arguments);if(a&&a.field&&Ext.isFunction(a.field.editRecord)){a.field.editRecord(this.getRecord(),FT.app.getProjectId())}return a},onPropertyChange:function(g,c,e,a,b){var d=this.getRecord();if(!d){this.togglePlaceHolder(true,"");return}d.set(c,e);this.fireEvent("propertychanged",g,c,e,a)},setData:function(c){var b=[];Ext.iterate(c,function(d,e){if(Ext.isDefined(this.grid.customEditors[d])){b[d]=e}},this);this.grid.setSource(b);var a=this.sortOrder;this.grid.getStore().sort([{sorterFn:function(e,d){var h=a[e.get("name")];var g=a[d.get("name")];if(h==g){return e.get("name")<e.get("name")?-1:1}return h<g?-1:1}}])},onStoreUpdate:function(b,g,a,c){if(g.internalId==this.internalId){var d=Ext.clone(g.getChanges());var e=Ext.clone(this.originalData);Ext.apply(e,d);this.setData(e)}},getIterateable:function(){if(this.recordStore.$className=="Gnt.data.TaskStore"){return this.recordStore.tree.flatten()}else{return this.recordStore.data.items}},getRecord:function(){if(this.recordStore.$className=="Gnt.data.TaskStore"){log(this.recordStore);return this.recordStore.tree.nodeHash[this.internalId]}else{return this.recordStore.getById(this.internalId)}},onStoreDataChanged:function(){var a=this.getIterateable();Ext.each(a,function(b){this.onStoreUpdate(this.recordStore,b)},this)},onStoreLoad:function(){var a=this.getRecord();if(!a){this.togglePlaceHolder(true,"");return}this.updateInspector(a,false)},onAfterSync:function(b,e,g,d,a){var c=this.getRecord();if(!c){this.togglePlaceHolder(true,"");return}this.updateInspector(c)},bindToRecord:function(a){this.internalId=a.internalId;var b=this.recordStore;this.recordStore=a.taskStore?a.taskStore:a.store;if(this.recordStore!=b){this.recordStore.undoRedo.on({aftersync:this.onAfterSync,scope:this});this.recordStore.on({update:this.onStoreUpdate,datachanged:this.onStoreDataChanged,load:this.onStoreLoad,scope:this})}},togglePlaceHolder:function(a,b){if(!this.container){return}this.container.removeAll(false);this.container.add(a?this.placeHolder:this.grid);if(a){this.placeHolder.update(this.emptyMsg+'<br /><center><span style="color:#606060">'+b+"</span></center>")}},updateInspector:function(a,b){this.bindToRecord(a);var c=!a.phantom;var d={isGetData:c,contentType:"task",cfg:{},objectType:a.get("object_typeid")};if(!a.phantom){Ext.apply(d.cfg,{entityType:"task",entityId:a.get("entityId")})}Ext.Ajax.request({url:"/track/getColumnsAndData",params:{data:Ext.encode(d)},success:function(h){var j=Ext.decode(h.responseText);this.columns=j.columns.columns;this.viewers=j.columns.viewers;var g=Ext.create("Ext.data.reader.Json",{model:"FT.model.TaskEvent"});var e=g.read(j.data);var j=Ext.clone(c?e.records[0].data:a.data);this.originalData=Ext.clone(j);Ext.apply(j,Ext.clone(a.getChanges()));if(this.grid){this.grid.destroy()}this.createPropertyGrid();this.togglePlaceHolder(false);if(b){this.loaded=true;this.setActive()}this.setData(j)},scope:this})},getErrors:function(a){if(a.get("entityType")!="task"){return"You can only inspect tasks"}if(a.get("type")=="otherproject"){return"You can only inspect tasks on the current project"}return false},getCommands:function(){return[{ctype:"click",handler:function(c,a,d,b){var g=this.getErrors(a);if(g){this.togglePlaceHolder(true,g);return}this.loadRecordOnActive=a;if(a.get("type")!="otherproject"&&this.isVisible()){this.updateInspector(a,true)}},scope:this},{ctype:"rightclick",text:FT.i18n("Show Inspector"),handler:function(c,a,d,b){a=Ext.isArray(a)?a[0]:a;var g=this.getErrors(a);if(g){this.togglePlaceHolder(true,g);return}this.setActive();this.updateInspector(a,!this.isVisible())},scope:this}]}});Ext.define("FT.view.impl.GanttPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-ganttpane",isLoaded:false,lockedOnly:true,storeReloadLocked:false,inList:null,isStoreLoading:false,constructor:function(c){this.generateColumnCss();this.addEvents("projectdateschanged");this.callParent(arguments);this.getView().getViewContainer().on("push",this.handleUpdates,this);this.filters=[];this.filterField="";this.isReconfigure=false;this.view.on("entityChanged",this.changeEntity,this);this.getView().on("projectdateschanged",function(){this.grid.showId=null},this);this.schedulingHelper=new FT.scheduler.SchedulingHelper({prefix:"projects"});this.headerStats=FT.HeaderStatsFactory.create("gantt");this.headerStats.on("beforeloadstats",this.beforeLoadHeaderStats,this);this.lockedOnly=FT.getVar("gantt-lockedonly",true);var d="6dbc7764-3ae5-11e2-84be-0019bb4983d8";this.viewHelper=new FT.scheduler.GanttViewHelper({store:Ext.data.StoreManager.lookup("FT.store.GanttViews"),defaultId:d,previousId:this.schedulingHelper.getVariable("ganttPreviousView",d),defaultView:{name:"my view",columns:Ext.encode(["userids","statusid","typeid","bid","Duration","StartDate","EndDate","description"])}});this.taskColumnCollapse=Ext.create("FT.grid.TaskColumnCollapse",{viewHelper:this.viewHelper});var a=this.viewHelper.getDefaultView();this.columnHelper=new FT.scheduler.GanttColumnHelper({view:a,enableCreateAttribute:FT.isAuth("CREATE_ATTRIBUTE")});this.listHelper=Ext.create("FT.list.ListHelper",{entityTypes:["task"],objectTypes:[FT.getShotId(),FT.getTaskId()]});this.taskTemplateHelper=Ext.create("FT.tasktemplate.TaskTemplateHelper",{});this.taskTemplateHelper.on("templateselected",function(g,h,e){this.grid.addFromTemplate(h,e);FT.util.intercom("USED-TASK-TEMPLATE")},this);this.exportHelper=FT.ExportFactory.create("gantt",{});this.treeState=Ext.create("FT.scheduler.TreeState",{});this.on("changedshow",function(e){this.listHelper.setShowId(e);this.taskTemplateHelper.setShowId(e)},this);this.listHelper.on("selectlist",function(e){this.inList=e;this.grid.taskStore.setInList(e)},this);this.relayEvents(this.columnHelper,["columnsLoaded"]);this.viewSelector=this.viewHelper.getViewSelector();this.zoomSlider=Ext.create("Ext.slider.Single",{stateful:false,timeline:null,autoUpdate:false,useTips:false,value:FT.getVar("gantt-zoom",4),minValue:1,maxValue:9,margin:"0 0 0 10",labelAlign:"top",increment:1,width:150,autoUpdate:true,animate:false,listeners:{changecomplete:function(g,e){this.grid.setPreset(e)},scope:this}});this.viewSelector.on("viewChanged",function(e,g){this.schedulingHelper.setVariable("ganttPreviousView",e.getId());this.columnHelper.setView(e);if(g){this.lock();this.fireEvent("filters-loaded",{filterData:e.getFilterData()});this.unlock();this.reconfigure(false)}this.updateGroupButtons(this.columnHelper.getGroup())},this);this.viewHelper.on("saveViews",function(){this.fireEvent("beforesaveview",this.columnHelper.getView())},this);this.columnHelper.on("columnsMoved",function(e){},this);this.columnHelper.on("columnsChanged",function(e){this.reconfigure(false)},this);this.columnHelper.on("createdField",function(){this.showId=null;this.reconfigure(true)},this);this.groupSelector=this.columnHelper.createGroupSelector();this.columnHelper.on("groupChanged",function(e){delete this.sorters;this.grid.taskStore.groupBy(e);this.reloadStore();this.updateGroupButtons(e)},this);this.overlaySelectorStore=Ext.create("Ext.data.Store",{fields:["name","value"],mode:"local",proxy:{type:"memory",reader:{type:"json"}},data:[{name:FT.i18n("No overlay"),checked:false,value:null},{name:FT.i18n("Logged time"),checked:true,value:"pm"},{name:FT.i18n("Progress/Status"),value:"statusid",checked:false},{name:FT.i18n("Type"),value:"typeid",checked:false}]});this.overlaySelector=Ext.create("FT.button.Selector",{text:FT.i18n("Overlay"),itemType:"radio",store:this.overlaySelectorStore,displayField:"name",valueField:"value",selectAction:undefined,value:this.schedulingHelper.getVariable("ganttoverlay","pm"),listeners:{selectionchanged:function(e){this.grid.taskStore.overlay=e;this.grid.getView().refresh();this.schedulingHelper.setVariable("ganttoverlay",e)},scope:this}});this.rowheightSelectorStore=Ext.create("Ext.data.Store",{fields:["name","value"],mode:"local",proxy:{type:"memory",reader:{type:"json"}},data:[{name:FT.i18n("Tiny"),checked:false,value:"gantttiny"},{name:FT.i18n("Small"),checked:true,value:"ganttsmall"},{name:FT.i18n("Medium"),checked:false,value:"ganttmedium"},{name:FT.i18n("Large"),value:"ganttlarge",checked:false}]});this.rowheightSelector=Ext.create("FT.button.Selector",{text:FT.i18n("Row height"),itemType:"radio",store:this.rowheightSelectorStore,displayField:"name",valueField:"value",selectAction:undefined,value:FT.getVar("gantt-rowheight","ganttsmall"),listeners:{selectionchanged:function(e){FT.setVar("gantt-rowheight",e);this.reconfigure(false)},scope:this}});var b=this.schedulingHelper.getVariable("gantt-autosave",false);this.autosaveCheckbox={xtype:"menucheckitem",checked:this.schedulingHelper.getVariable("gantt-autosave",false),text:FT.i18n("Save changes automatically"),scope:this,handler:function(e){this.grid.undoRedo.enableAutosave=e.checked;if(e.checked&&this.grid.hasUnsavedChanges()){this.grid.undoRedo.autosave()}this.schedulingHelper.setVariable("gantt-autosave",e.checked);this.undoButton.setVisible(!e.checked);this.redoButton.setVisible(!e.checked)}};this.saveButton=Ext.widget({disabled:false,xtype:"splitbutton",glyph:FT.glyph("save"),qtip:FT.tip("toolbar-button-icononly-save"),margin:"0 8 0 10",tourId:"projects-save",handler:function(){this.grid.undoRedo.syncChanges()},scope:this,menu:[this.autosaveCheckbox]});this.undoButton=Ext.widget({disabled:true,xtype:"button",glyph:FT.glyph("undo"),qtip:FT.tip("toolbar-button-icononly-undo"),handler:function(){this.grid.undo()},scope:this,hidden:b});this.redoButton=Ext.widget({disabled:true,xtype:"button",glyph:FT.glyph("redo"),qtip:FT.tip("toolbar-button-icononly-redo"),handler:function(){this.grid.redo()},scope:this,hidden:b});this.delayedReloadStore=new Ext.util.DelayedTask(function(){this.reloadStore()},this);this.delayedChangeEntity=new Ext.util.DelayedTask(function(){this.changeEntity(this.entity)},this);this.hierarchyButton=Ext.widget({xtype:"button",glyph:FT.glyph("list-tree"),tooltip:FT.i18n("Hierarchy"),ui:"plain",cls:"button-card",tourId:"projects-hierarchy",allowDepress:false,toggleGroup:"quickgroup",toggleHandler:function(g,e){if(e){this.columnHelper.setGroup("link")}},scope:this});this.shotsButton=Ext.widget({tourId:"gantt-shots",xtype:"button",glyph:FT.glyph("list-shots"),tooltip:FT.i18n("Shots"),ui:"plain",cls:"button-card",allowDepress:false,toggleGroup:"quickgroup",toggleHandler:function(g,e){if(e){this.columnHelper.setGroup("shots_only")}},scope:this});this.tasksButton=Ext.widget({xtype:"button",glyph:FT.glyph("task"),tooltip:FT.i18n("Tasks"),ui:"plain",cls:"button-card",allowDepress:false,toggleGroup:"quickgroup",toggleHandler:function(g,e){if(e){this.columnHelper.setGroup("tasks_only")}},scope:this});this.schedulerProjectMenuItem=Ext.create("Ext.menu.CheckItem",{checked:!this.lockedOnly,text:FT.i18n("Gantt schedule"),scope:this,listeners:{scope:this,checkchange:function(e,g){this.setIsLockedOnly(!g)}}});this.schedulerButtonMenu=[this.schedulerProjectMenuItem,{xtype:"menucheckitem",checked:false,text:FT.i18n("Project plan"),scope:this,listeners:{scope:this,checkchange:function(e,g){this.fireEvent("togglepane","projectScheduler",g)}}},{xtype:"menucheckitem",checked:false,text:FT.i18n("Resources"),scope:this,listeners:{scope:this,checkchange:function(e,g){this.fireEvent("togglepane","usersScheduler",g)}}}]},getColumnsFromServer:function(){this.getView().enableLoadMask();this.columnHelper.getColumnsFromServer(this.entity,this.showId,function(c,b,a){this.updateGroupButtons(this.columnHelper.getGroup());if(b){this.inList=null;this.showId=a;this.fireEvent("changedshow",a);this.columnHelper.createModel();this.lock();this.fireEvent("filters-loaded",{filterData:this.columnHelper.getView().getFilterData()});this.unlock();this.createGantt(this.paneCfg)}else{FT.suspendGantt=true;this.grid.taskStore.setInList(this.inList,true);this.grid.setEntity(this.entity)}},this)},reconfigure:function(a){if(this.grid&&this.grid.hasUnsavedChanges()){var b=this.grid.undoRedo;var c=Ext.create("FT.window.CancelSave",{pane:this,full:a,cancelHandler:function(){c.close()},discardHandler:function(e){b.cancelChanges(true);var d=new Ext.util.DelayedTask(function(){c.pane.reconfigure(c.full)},c);d.delay(50);c.close()},saveHandler:function(d){b.syncChanges();b.on("aftersync",function(){c.pane.reconfigure(c.full);this.close()},c,{single:true})}});return}if(this.isReconfigure){Ext.defer(this.reconfigure,250,this,[a]);return}this.isReconfigure=true;if(a){this.getColumnsFromServer();return}else{this.columnHelper.ensureModel()}this.getView().enableLoadMask();this.createGantt(this.paneCfg)},createGantt:function(d){if(this.grid&&!this.grid.isDestroyed){try{this.grid.destroy()}catch(g){log("ERROR trying to destroy gantt in GanttPanel.js")}}d.filters=this.filters;d.filterField=this.filterField;var b=this.columnHelper.getView();if(b.isDefault()&&!b.dirty){b=this.viewHelper.viewStore.getDefaultView(FT.app.getProjectId());this.columnHelper.setView(b)}FT.suspendGantt=true;d.entity=this.entity;d.parent=this;d.loadMaskTarget=this.getView().getViewContainer();d.commands=this.commands;d.zoomSlider=this.zoomSlider;d.lockedOnly=this.lockedOnly;d.defaultGroup=this.columnHelper.getGroup();d.permissions=this.columnHelper.getPermissions();d.taskOverlay=this.overlaySelector.getValue();d.columns=this.columnHelper.createGridColumns();d.schedulingHelper=this.schedulingHelper;d.serverColumns=this.columnHelper.getNonLazyServerColumns();d.lazyServerColumns=this.columnHelper.getLazyServerColumns();d.allServerColumns=this.columnHelper.getNonLazyServerColumns(true);d.columnHelper=this.columnHelper;d.listHelper=this.listHelper;d.taskTemplateHelper=this.taskTemplateHelper;d.inList=this.inList;d.treeState=this.treeState;var a=b.getSort();var c=this.schedulingHelper.getVariable("isManualSort2",false);if(a&&!c){d.sorters=a}d.bodyCls=FT.getVar("gantt-rowheight","ganttsmall");Ext.each(d.columns,function(e){if(e.dataIndex=="thumbid"){var h={gantttiny:40,ganttsmall:50,ganttmedium:75,ganttlarge:150};e.width=h[d.bodyCls]||40;return false}},this);d.bodyCls+=" gantt__body fastrowover";if(this.headerStats){this.headerStats.prepareColumns(d.columns)}if(this.taskColumnCollapse){this.taskColumnCollapse.prepareColumns(d.columns)}this.grid=Ext.create("FT.scheduler.Gantt",d);if(this.headerStats){this.headerStats.setGrid(this.grid.lockedGrid,this.columnHelper.getView())}this.listHelper.setSelectionModel(this.grid.getSelectionModel());this.taskTemplateHelper.setSelectionModel(this.grid.getSelectionModel());this.schedulingHelper.setupButtonInteractions(this.grid.undoRedo,{save:this.saveButton,undo:this.undoButton,redo:this.redoButton},"updateButtons");this.grid.lockedGrid.on("rendererselected",function(h,e,j){this.columnHelper.setColumnRenderer(j.dataIndex,h)},this);this.grid.lockedGrid.on("columnmove",function(){var e=[];Ext.each(this.grid.lockedGrid.columns,function(h){if(h.isGroupHeader){h.items.each(function(j){e.push(j.dataIndex)},this)}else{e.push(h.dataIndex)}},this);this.columnHelper.reorderColumns(e);Ext.Function.defer(this.grid.resyncHeaderWithHorizontalScroll,10,this.grid)},this);this.grid.lockedGrid.on("columnresize",function(e,j,h){this.columnHelper.setColumnWidth(j.dataIndex,h);Ext.Function.defer(this.grid.resyncHeaderWithHorizontalScroll,10,this.grid)},this);this.getView().on("shortcut",this.handleShortcuts,this);this.getView().on("beforeviewchange",this.handleUnsavedChanges,this);this.zoomSlider.timeline=this.grid;this.grid.taskStore.on("afterfirstload",function(){this.isLoaded=true;this.setActive()},this,{single:true});this.grid.taskStore.on("load",function(){this.getView().getViewContainer().enableManualRefresh(false)},this);this.grid.taskStore.on("manualsortchanged",this.onManualSortChanged,this);this.grid.lockedGrid.on("sortchange",function(j,k,l){var e=this.columnHelper.getView();var h=k.dataIndex;e.setSort(h,l)},this);this.grid.taskStore.on("beforesorthack",function(e){this.sorters=e},this);this.exportHelper.setGrid(this.grid.lockedGrid);this.fireEvent("afterreconfigure");this.fireEvent("aftercreategrid",this.grid);this.grid.undoRedo.on("beforeautosave",function(){if(this.grid.cellEditing&&this.grid.cellEditing.activeEditor){return false}},this);this.grid.lockedGrid.headerCt.on("beforerender",function(e){e.layout.padding.right=Ext.getScrollbarSize().width});this.grid.taskStore.on({scope:this,beforelazyloadedrecords:function(){this.setLoading(true)},lazyloadedrecords:function(){this.setLoading(false)}})},handleUnsavedChanges:function(){if(this.grid){return this.grid.schedulingHelper.handleUnsavedChanges(this.grid.undoRedo,this.getView())}},createRenderable:function(a){this.updateBottomToolbarVisible();if(!this.isLoaded){this.paneCfg=a;this.reconfigure(true);return false}return this.grid},reloadView:function(a){this.grid.reloadView(a)},getStore:function(){return this.grid.taskStore},canReload:function(){return !this.getStore().isRemoteLoaded()},changeEntity:function(b,d){if(d){if(!this.canReload()){return}}this.entity=b;if(this.entity.data){var c=this.entity.data;if(c.filters){var a=this.columnHelper.getView();a.setFilterData(c.filters);if(this.grid&&!this.isLocked()){this.lock();this.fireEvent("filters-loaded",{filterData:c.filters});this.unlock()}}}if(this.grid){if(this.grid.cellEditing&&this.grid.cellEditing.activeEditor){this.delayedChangeEntity.delay(250)}else{if(this.isReconfigure){this.delayedChangeEntity.delay(100);return}this.isReconfigure=true;this.getColumnsFromServer()}}},onCreateClick:function(e,c){var b={};if(e){b.entityId=e.get("entityId");b.entityType=e.get("entityType")}var d=this,a={pushToken:this.getView().getPushToken()};if(e&&e.canBeChildOf(e.get("object_typeid"),c)){FT.create(c,b,a,function(h){var g=d.handleAdd([{entityId:h.entityId,entityType:h.entityType}],true);if(g===false){d.getStore().load()}})}else{FT.create(c,null,a,function(g){d.getStore().load()})}},getPrimaryTBar:function(){this.schedulerSplitButton=Ext.create("Ext.button.Split",{tourId:"projects-schedule",glyph:FT.glyph("table"),tooltip:FT.i18n("Schedule"),ui:"plain",cls:"button-card",enableToggle:true,pressed:!this.lockedOnly,menu:this.schedulerButtonMenu,toggleHandler:function(b,a){this.setIsLockedOnly(!a)},scope:this});return[Ext.create("Ext.button.Button",{tourId:"projects-create",text:FT.i18n("Create"),glyph:FT.glyph("add"),ui:"default",cls:"button-primary",menu:new Ext.menu.Menu({items:[{text:""}],listeners:{beforeshow:function(b){this.grid.guaranteeSelection();var a=this.grid.generateAddMenu(null,this.onCreateClick,this,true);b.removeAll(true);b.add(a)},scope:this}})}),{xtype:"button",tourId:"projects-import",text:FT.i18n("Import"),glyph:FT.glyph("import"),cls:"icon--small",handler:function(){if(!FT.util.isModalOpen()){Ext.create("FT.wizard.Window",{id:"ftrack_import",width:1000,height:800,autoShow:true,modal:true,closable:true,onEsc:Ext.emptyFn,data:Ext.clone(this.entity),firstCard:"FT.wizard.card.ImportSelector"})}},scope:this},this.saveButton,this.undoButton,this.redoButton,{xtype:"button",glyph:FT.glyph("delete"),qtip:FT.tip("toolbar-button-icononly-removewshortcut"),cls:"toolbarActionButton",margin:0,handler:function(){this.grid.removeItems()},scope:this},{xtype:"tbspacer",width:30},this.hierarchyButton,this.shotsButton,this.tasksButton,{xtype:"tbspacer",width:10},this.schedulerSplitButton]},getBottomTools:function(){return[{xtype:"tbfill"},this.zoomSlider,{xtype:"tbspacer",width:30}]},getSecondaryTBar:function(){this.manualSortButton=Ext.widget("menucheckitem",{checked:this.schedulingHelper.getVariable("isManualSort2",false),text:FT.i18n("Manual sort"),qtip:{text:FT.tip("toolbar-button-icononly-configure-reorder"),align:"left"},scope:this,handler:function(g){this.grid.taskStore.setManualSort(g.checked,!g.checked);this.schedulingHelper.setVariable("isManualSort2",g.checked);if(!g.checked){var e=this.columnHelper.getView();if(e){var d=e.getSort();if(d){this.grid.taskStore.sort(d)}}}}});var b=[];b.push({xtype:"tbtext",text:FT.i18n("View")});b.push(this.viewSelector);b.push({xtype:"tbtext",text:FT.i18n("Group by")});b.push(this.groupSelector);b.push(this.listHelper.getListMenu());b.push({glyph:FT.glyph("export"),cls:"icon--small",text:FT.i18n("Export"),tourId:"projects-export",menu:this.exportHelper.getMenu().menu});var a=[{text:FT.i18n("Attributes"),menu:this.columnHelper.getColumnSelector().menu}];a.push({checked:this.schedulingHelper.getVariable("ganttAutoBid",false),text:FT.i18n("Match bid duration"),qtip:{text:FT.tip("toolbar-button-icononly-configure-match-bid-duration"),align:"left"},scope:this,handler:function(d){this.grid.taskStore.setAutoBid(d.checked);this.schedulingHelper.setVariable("ganttAutoBid",d.checked)}});a.push({checked:this.schedulingHelper.getVariable("ganttAutoLink",false),text:FT.i18n("Auto link tasks"),qtip:{text:FT.tip("toolbar-button-icononly-configure-match"),align:"left"},scope:this,handler:function(d){this.grid.taskStore.setAutoLink(d.checked);this.schedulingHelper.setVariable("ganttAutoLink",d.checked)}});a.push(this.manualSortButton);a.push({text:FT.i18n("Overlays"),menu:this.overlaySelector.menu});a.push({text:FT.i18n("Row height"),menu:this.rowheightSelector.menu});if(this.panesMenu){a.push({text:FT.i18n("Display"),menu:this.panesMenu})}this.loadingIndicator=Ext.create("FT.component.LoadingIndicator",{cls:"loading-indicator-reset-position",hidden:true});b.push(this.loadingIndicator);this.refreshButton=Ext.create("Ext.button.Button",{cls:"ft-button-refreshspreadsheet",qtip:FT.tip("toolbar-button-icononly-refreshspreadsheet"),glyph:FT.glyph("refresh"),overflowText:FT.i18n("Refresh"),handler:this.reloadStore,scope:this});b.push(this.refreshButton);var c={xtype:"button",overflowText:FT.i18n("Settings"),glyph:FT.glyph("configure"),qtip:FT.tip("toolbar-button-icononly-configure"),tourId:"projects-settings",menu:{xtype:"menu",items:a}};b.push(c);return b},setLoading:function(a){Ext.suspendLayouts();if(a){this.loadingIndicator.setActive(true);this.loadingIndicator.show();this.refreshButton.hide()}else{this.loadingIndicator.setActive(false);this.loadingIndicator.hide();this.refreshButton.show()}Ext.resumeLayouts(true)},onManualSortChanged:function(a){this.manualSortButton.setChecked(a,true);this.schedulingHelper.setVariable("isManualSort2",a)},getSelectedColumns:function(){return this.columnSelector.value},getFilterColumns:function(){return this.columnHelper.getFilterColumns()},setIsLockedOnly:function(a){this.schedulerProjectMenuItem.setChecked(!a,true);this.schedulerSplitButton.toggle(!a,true);Ext.suspendLayouts();this.lockedOnly=a;FT.setVar("gantt-lockedonly",this.lockedOnly);if(this.grid){if(this.columnHelper.hasTaskColumns()){this.reconfigure(false)}else{this.grid.setLockedOnly(this.lockedOnly)}}this.fireEvent("showSlider",!this.lockedOnly);this.updateBottomToolbarVisible();Ext.resumeLayouts(true)},updateBottomToolbarVisible:function(){var a=this.getView().getViewContainer().getDockedComponent("bottom");if(a){a.setVisible(!this.lockedOnly)}},handleShortcuts:function(a){if(!FT.isAuth("UPDATE_TASK")){return}if(a=="save"){this.grid.undoRedo.syncChanges()}else{if(a=="undo"){this.grid.undo()}else{if(a=="redo"){this.grid.redo()}}}if(a=="copy"){this.grid.copyItems()}else{if(a=="paste"){this.grid.pasteItems();FT.util.intercom("PASTED-OBJECTS")}else{if(a=="alt-t"){this.grid.addTask()}else{if(a=="move"){this.grid.moveItems()}else{if(a=="selectall"){this.grid.selectAll()}}}}}},setFilters:function(b,a){if(b!==null){this.filters=Ext.encode(b)}if(a!==null){this.filterField=a}if(this.grid){Ext.apply(this.grid.taskStore.getProxy().extraParams,{filters:this.filters,filterField:this.filterField})}if(this.grid&&!this.isLocked()){this.reloadStore()}},setSerializedFilters:function(a){if(!this.isLocked()){this.viewHelper.getCurrentView().setFilterData(Ext.encode(a))}},lock:function(){this.storeReloadLocked=true},unlock:function(){this.storeReloadLocked=false},isLocked:function(){return this.storeReloadLocked},setRowHeight:function(a){this.grid.removeBodyCls("ganttmedium ganttsmall ganttlarge");this.reconfigure(false)},updateGroupButtons:function(a){if(this.columnHelper.includeShotsGroup()){this.shotsButton.show()}else{this.shotsButton.hide()}this.tasksButton.toggle(a==="tasks_only",true);this.shotsButton.toggle(a==="shots_only",true);this.hierarchyButton.toggle(a==="link",true)},setPanesMenu:function(a){this.panesMenu=a},generateColumnCss:function(){var a=Ext.data.StoreManager.lookup("FT.store.TaskType");var b="";a.each(function(k,c,h){var d=k.get("color");if(!d||d.length<3){return}var j=FT.util.Format.textColorFromColor(d);var g="background-color: "+d+" !important;";var l="color: "+j+" !important;";var e=".ft-grid-tasktype-"+k.get("typeid");b+=".gantt__body "+e+".bg {"+g+l+"}";b+=".fastrowover .x-grid-row:hover "+e+".bg { background-color: "+d+"DD !important;}";b+=e+" .text-faded {"+l+"; font-weight: normal; }"});Ext.util.CSS.createStyleSheet(b)},reloadStore:function(){if(this.isStoreLoading){this.delayedReloadStore.delay(100);return}var a=Ext.create("Ext.LoadMask",{target:this.grid,autoShow:true});this.isStoreLoading=true;Ext.Function.defer(this.grid.taskStore.load,50,this.grid.taskStore,[]);this.grid.taskStore.on("load",function(){this.isStoreLoading=false;a.destroy()},this,{single:true})},handleUpdates:function(e){var j=false,c=[],h=[],d=[],g=[],k=false;i;if(!this.grid){return}for(i=0;i<e.length;i++){if(e[i].entities){g=g.concat(e[i].entities)}}Ext.each(g,function(l){if(l.action==="update"&&l.entityType==="task"){h.push({entityId:l.entityId,entityType:l.entityType});if((l.objectTypeId===FT.getTaskId()||l.objectTypeId===FT.getMilestoneId())&&Ext.isArray(l.parents)&&l.parents.length>=2){d.push(l.parents[1])}}else{if(l.action==="add"&&l.entityType==="task"){c.push({entityId:l.entityId,entityType:l.entityType,parentId:l.parentId});if((l.objectTypeId===FT.getTaskId()||l.objectTypeId===FT.getMilestoneId())&&Ext.isArray(l.parents)&&l.parents.length>=2){d.push(l.parents[1])}}else{if(l.entityType==="task"){k=true}}}});if(c.length>25){k=true}if(k){return}if(h.length>0){this.grid.reloadRecordsFromServer(h)}var b=[];if(c.length>0){var a;Ext.each(c,function(l){a=true;Ext.each(c,function(m){if(m.entityId===l.parentId){a=false}});if(a){b.push({entityId:l.entityId,entityType:l.entityType})}})}if(b.length>0){this.handleAdd(b)}if(d.length>0){this.grid.lazyReloadRecords(d,{ganttIsClosed:this.lockedOnly})}return false},handleAdd:function(a){if(!a.length){return true}if(this.columnHelper.getGroup()!=="link"){return false}this.grid.addEntities(a);return true},beforeLoadHeaderStats:function(a){if(a&&a.internalId!=="root"){return false}}});Ext.define("FT.view.impl.GanttFilterPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-gntfilterpane",constructor:function(b){var e,d,a,c;this.availableStore=Ext.create("FT.newfilters.AvailableStore",{proxy:{type:"memory"}});e=Ext.data.StoreManager.lookup("FT.store.GanttFilters");d=Ext.create("FT.button.Selector",{ui:"default",displayField:"name",valueField:"name",border:false,itemType:"radio",glyph:FT.glyph("configure"),disableIfEmpty:false,emptyText:FT.i18n("No saved filters"),store:e,selectHandler:this.onLegacyFilterClicked,scope:this});if(e.getCount()){c=[{text:FT.i18n("Saved filters (legacy)"),menu:d.menu}]}this.filterPanel=Ext.create("FT.newfilters.AdvancedFilterPanel",{availableStore:this.availableStore,width:300,minWidth:250,weight:b.regionWeight,defaultFilters:[{field:"typeid"},{field:"state"},{field:"statusid"},{field:"priorityid"}],tools:[{xtype:"ft-add-filter-tool"},{xtype:"ft-autoupdate-filter-tool",itemId:"autoupdate-filter-button",stateId:"gantt-filter-pane"},"->",{xtype:"ft-configure-filter-tool",menuItems:c}]});a=this.filterPanel.down("#autoupdate-filter-button");this.relayEvents(a,["apply-filters"]);this.isAutoUpdateEnabled=Ext.bind(a.isAutoUpdateEnabled,a);this.relayEvents(this.filterPanel,["filterschanged"]);this.callParent(arguments)},onLegacyFilterClicked:function(e,a,b,c){var d=Ext.decode(a.get("value"));Ext.each(d,function(g){Ext.applyIf(g,{presentation:"advanced"})});this.filterPanel.loadSerialized(d)},createRenderable:function(a){Ext.apply(this.filterPanel,a);return this.filterPanel},updateAvailableFilters:function(a){this.availableStore.getProxy().data=a;this.availableStore.load()}});Ext.define("FT.view.impl.FilterBar",{extend:"FT.view.AbstractPane",alias:"widget.ft-filter-bar",freeFilterText:undefined,filterPane:null,getSearch:function(){return this.searchField.getValue()},createRenderable:function(b){var a=Ext.apply({xtype:"toolbar",items:[this.searchField=Ext.create("FT.newfilters.SearchField",{tooltip:this.freeFilterText,listeners:{"filter-changed":this.onFilterChanged,scope:this}}),"->",this.filterButton=Ext.create("FT.newfilters.ConfigureFilterButton",{handler:this.toggleFilterPane,filterPanel:this.filterPane.filterPanel,tourId:"filter-button",scope:this})]},b);return Ext.widget(a)},onFilterChanged:function(a){this.fireEvent("search-changed",a)},toggleFilterPane:function(){if(!this.filterPane.isVisible()){this.filterPane.setActive()}else{this.filterPane.getRenderable().hide()}}});Ext.define("FT.view.impl.RunBoxPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-runboxpane",createRenderable:function(a){var b=this;b.runBox=Ext.create("FT.filter.RunBox",a);b.runBox.on("filterschanged",function(c){b.primary.grid.metaId=undefined;b.primary.fireEvent("filterschanged");b.primary.grid.setLoading({text:FT.i18n("Loading..."),floating:{shadow:false}});b.primary.doReloadGrid({filters:c.filterSettings})});return b.runBox},bindPrimary:function(a){this.primary=a}});Ext.define("FT.view.impl.FinancialReportsView",{extend:"FT.view.AbstractView",alias:"widget.financialreports_view",constructor:function(){this.callParent(arguments)},registerPanes:function(){this.on("filterchanged",function(){c.metaGrid.metaId=undefined});var c=this,d,e,b,a=FT.util.copyStore("FT.store.Projects").findRecord("name","active").get("value"),g=Ext.create("Ext.data.Store",{fields:["text","entityId"],data:a});d=Ext.create("FT.view.impl.RunBoxPane",{renderable:{split:false,maxHeight:300,filters:[{type:"month",label:FT.i18n("Month"),field:"month",margin:"0 0 10 5",disableComparison:true},{type:"usereditor",label:FT.i18n("Resources"),field:"users",margin:"10 0 10 5",emptyText:FT.i18n("All"),disableComparison:true},{type:"list",label:FT.i18n("Projects"),field:"projects",margin:"10 0 10 5",itemId:"shows",emptyText:FT.i18n("All"),displayField:"text",valueField:"entityId",options:[],padding:0,data:a,listeners:{change:function(j){var h=j.getValue();g.clearFilter();if(h!=""){g.filter(Ext.create("Ext.util.Filter",{filterFn:function(k){return h.indexOf(k.get("entityId"))!=-1}}))}}},disableComparison:true},{type:"list",label:FT.i18n("Expand"),field:"expand",margin:"10 0 10 5",itemId:"expandshows",emptyText:FT.i18n("None"),displayField:"text",valueField:"entityId",options:[],padding:0,store:g,help:FT.i18n("Select projects to expand and show task types for"),disableComparison:true}]}});e=this.registerSecondary("north",d);this.metaGrid={xtype:"ft-metagridpane",metaType:"financialReport",renderable:{columnLines:true,disableSelection:true,viewConfig:{focusedItemCls:""},loadAtStartup:false,summaryRenderer:function(h){h=Ext.util.Format.number(h,"0.0");return h==0?"":'<span style="font-weight:bold;">'+h+"</span>"},getNrOfColumns:function(){var j=0,l=this.columns,k=l.length,h=0;if(!Ext.isDefined(c.nrOfColumns)){c.nrOfColumns=k;for(;j<k;j++){c.nrOfColumns+=l[j].items.items.length;if(l[j].items.items.length>0){h+=1}}}c.nrOfColumns-=h;return c.nrOfColumns},rowRenderer:function(l,j,h,m,k){l=Ext.util.Format.number(l,"0.00");l=k==this.getNrOfColumns()-1&&l!=0?'<span style="font-weight:bold;">'+l+"</span>":l;return l==0?"":l},listeners:{afterrender:function(){this.store.on({datachanged:function(){this.setLoading(false);delete c.nrOfColumns},scope:this})}}}};b=this.registerPrimary("center",this.metaGrid);e.bindPrimary(b)},getPrimaryTools:function(){return[]}});Ext.define("FT.view.impl.FinancialReportsTop",{extend:"FT.view.AbstractPane",alias:"widget.ft-financialreportstop",bindPrimary:function(a){this.primary=a},createRenderable:function(b){var d=this,c,a={cls:"ft-run-box",padding:15,items:[{xtype:"projecteditor",fieldLabel:FT.i18n("Projects"),emptyText:FT.i18n("All"),name:"projects"},{xtype:"button",cls:"button-primary",action:"save",text:FT.i18n("Run"),margin:"5 0",handler:function(){d.primary.doReloadGrid({filters:c.getValues()})}},{xtype:"button",text:"STORE",handler:function(){log(d.primary.grid.getStore())}}]};Ext.apply(a,b);return c=Ext.create("Ext.form.Panel",a)}});Ext.define("RAW.LayoutTab",{extend:"RAW.Layout",alias:"widget.layout_tab",layout:"fit",autoScroll:false,isWidget:false,firstLoad:true,ui:"bright",initWidget:function(){this.panelIndexes={};this.activeTab=0;if(Ext.isDefined(this.panelIndexes[this.getData("instanceid")])){this.activeTab=this.panelIndexes[this.getData("instanceid")]}for(i=0;i<this.widgets.length;i++){widget=this.widgets[i];widget.panelIndex=i;widget.cls="ft-property-keyfield-black";widget.tabConfig={border:0};if(widget.panelIndex!=this.activeTab){widget.isSuspendLoad=true}widget.listeners={deactivate:function(b){for(var a=0;a<b.items.items.length;a++){b.items.items[a].hide()}},activate:function(a){var b=function(){if(this.firstLoad){this.firstLoad=false;if(a.panelIndex!=this.activeTab){return}}if(a.isSuspendLoad){a.loadAfterInit();a.isSuspendLoad=false}this.panelIndexes[this.getData("instanceid")]=a.panelIndex;for(var c=0;c<a.items.items.length;c++){a.items.items[c].show()}};Ext.Function.defer(b,5,this)},scope:this}}this.tabpanel={xtype:"tabpanel",plain:true,activeTab:this.activeTab,items:this.widgets,autoScroll:false};this.add(this.tabpanel)}});Ext.define("RAW.GanttScheduler",{validPushEntities:["show","task"],alias:"widget.widget_ganttscheduler_v2",extend:"FT.view.ViewContainer",viewClasses:["FT.view.impl.GanttView"],stateful:true,stateId:"schedulingpanel",stateEvents:["viewchange"],title:FT.i18n("Tasks"),manualRefreshText:FT.i18n("There have been updates to your spreadsheet"),getState:function(){return{currentViewIndex:this.currentViewIndex}},applyState:function(a){if(a.currentViewIndex){this.currentViewIndex=a.currentViewIndex}if(this.currentViewIndex>this.viewClasses.length-1){this.currentViewIndex=0}},initComponent:function(){this.header=!this.isFitLayout();if(this.globalConfig.entity.entityType=="user"){this.viewClasses=["FT.view.impl.GanttView"]}this.callParent();this.on("beforepush",function(a){Ext.each(a,function(b){if(FT.util.verifyEventScope(b,["show"],["startdate","enddate"],"update")){this.fireEventOnViews("projectdateschanged")}},this)},this)},updateWidget:function(){this.enableManualRefresh(false);this.callParent(arguments)}});Ext.define("RAW.TeamPlanner",{validPushEntities:["show","sequence","shot","task"],alias:"widget.widget_teamplanner",extend:"FT.view.ViewContainer",viewClasses:["FT.view.impl.TeamPlannerView"],stateful:true,stateId:"schedulingpanel",stateEvents:["viewchange"],title:FT.i18n("Team planner"),getState:function(){return{currentViewIndex:this.currentViewIndex}},applyState:function(a){if(a.currentViewIndex){this.currentViewIndex=a.currentViewIndex}if(this.currentViewIndex>this.viewClasses.length-1){this.currentViewIndex=0}},initComponent:function(){this.header=!this.isFitLayout();this.callParent();this.on("push",function(a){if(FT.util.verifyEventScope(a,["show"],["startdate","enddate"],"update")){this.fireEventOnViews("projectdateschanged");this.updateWidget();log("MY SHOW CHANGE");return false}else{if(FT.util.verifyEventScope(a,["show"],[])){log("SOMETHING ELSE HAPPENDE")}}this.updateWidget(null,true,a.pushToken);return false})}});Ext.define("RAW.Notes",{extend:"RAW.Widget",alias:"widget.widget_notes_v2",validPushEntities:["note"],title:FT.i18n("Notes"),layout:"fit",bodyCls:"ft-widget-notes timeline",nonValidType:["list",FT.getAssetGroupId(),"tempdata"],clearOnReload:true,options:{pageSize:5},isInfinite:true,initComponent:function(){this.callParent()},initWidget:function(){var b=this,a=this.getEntity(),e;var d=Ext.create("Ext.form.field.TextArea",{fieldCls:"ft-notes-textarea-field",cls:"ft-widget-notes-reply",emptyText:FT.i18n("Write a note..."),width:"100%",cols:null,grow:true,rows:1,height:30,listeners:{focus:function(h,j){b.createForm()}}});this.textareaTbar=Ext.create("Ext.toolbar.Toolbar",{dock:"top",padding:10,items:[d]});this.addDocked(this.textareaTbar);var g=Ext.create("Ext.data.Store",{model:"FT.directive.CompositeModel",pageSize:b.options.pageSize,autoLoad:false,proxy:{type:"direct",limitParam:"pageSize",directFn:"FTApi.Note.get",extraParams:{entityId:a.entityId,entityType:a.entityType}}});this.filter=FT.FilterFactory.create("notes",{entityType:a&&a.entityType,stateful:"note-all-v"});this.filter.bindStore(g);this.filterBar=Ext.create("Ext.toolbar.Toolbar",{defaultButtonUI:"plain-toolbar",cls:"ft-notes-widget-filterbar panel",padding:10,enableOverflow:true,dock:"top",items:this.filter.getItems()});this.addDocked(this.filterBar);e=Ext.create("FT.directive.DirectiveDataView",{infiniteScroll:this.isInfinite,overflowY:"scroll",preserveScrollOnRefresh:true,emptyText:'<p class="timeline__emptytext">'+FT.i18n("No notes")+"</p>",deferEmptyText:false,padding:"0 10 10 10",directives:{note:Ext.create("FT.directive.note.NoteDirective")},store:g});var c=Ext.create("FT.directive.DirectiveMorePager",{store:g,params:a});this.add(e);if(!this.isInfinite){this.add(c)}this.notesView=e;this.noteStore=g;this.morePager=c;this.textareaField=d;e.on("beforescrollload",this.onBeforeInfiniteScrollStoreLoad,this);this.relayEvents(e,["seekto"]);this.on("beforemodulechange",this.onBeforeModuleChange,this);this.on("push",this.canPushReload,this);this.reloadStore()},isEditReplyOpen:function(){var a=Ext.query("#"+this.getId()+" .is-expanded, #"+this.getId()+" .is-edit");return a.length!==0},canPushReload:function(){return !this.isEditReplyOpen()&&!this.isNewNoteOpen()},isNewNoteOpen:function(){var a=Ext.query("#"+this.getId()+" .new-note-form");return a.length!==0},showDiscardWindow:function(a,c){var b=Ext.create("FT.window.CancelSave",{message:a,discardText:FT.i18n("Discard"),saveText:FT.i18n("Continue editing"),cancelHandler:false,saveHandler:function(){this.close()},discardHandler:c});b.show()},onBeforeInfiniteScrollStoreLoad:function(b){var a=this;if(this.isEditReplyOpen()){this.showDiscardWindow("You have unsaved notes that will be lost if you load the next page.",function(){a.notesView.resetDirectives();b();this.close()});return false}else{return true}},onBeforeModuleChange:function(){var a=this;if(this.isNewNoteOpen()||this.isEditReplyOpen()){this.showDiscardWindow("You have unsaved notes that will be lost if you navigate away from this page.",function(){a.closeNewNoteForm();a.notesView.resetDirectives();FT.app.delayedOpen();this.close()});return false}else{return true}},closeNewNoteForm:function(){if(this.form&&this.clearOnReload){this.form.close()}},createForm:function(){var a=this;var b=Ext.create("FT.directive.note.NoteForm",{cls:"new-note-form",entity:a.getEntity()});b.on("close",function(){a.removeDocked(b,true);a.form=null;a.textareaTbar.show()});b.on("created",function(d){var c=Ext.create("FT.directive.CompositeModel",{type:"note",itemId:d.get("noteId"),content:d.getData()});a.notesView.store.insert(0,[c])});a.relayEvents(b,["beforesubmit"]);a.textareaTbar.hide();a.addDocked(b,0);a.form=b},ensureForm:function(){if(!this.form){this.createForm()}return this.form},addAttachment:function(a){this.ensureForm();return this.form.addAttachment(a)},uploadComplete:function(b){var c=FT.util.getThumbnailUrl(b),a={thumbUrl:c,attachmentid:b,size:{y:25},action:"inspectimage"};return this.updateAttachment(b,{icon:a,uploading:false})},updateAttachment:function(b,a){if(!this.form){return false}return this.form.updateAttachment(b,a)},reloadStore:function(){var a=this.getEntity(),c={entityType:a.entityType,entityId:a.entityId};var b=Ext.Array.some(this.nonValidType,function(d){return d===a.entityType||d===a.objectType});if((b||this.clearOnReload)&&this.form){this.form.close()}b===true?this.textareaField.disable():this.textareaField.enable();this.morePager.params=c;Ext.apply(this.noteStore.getProxy().extraParams,c);this.noteStore.load({start:0})},updateWidget:function(){this.reloadStore();if(this.form){this.form.setEntity(this.getEntity())}}});Ext.define("RAW.NotesDashboard",{extend:"RAW.Notes",alias:"widget.widget_dashboard_notes",layout:"auto",isInfinite:false});Ext.define("RAW.Feed",{validPushEntities:["socialfeed"],title:FT.i18n("Activities"),bodyPadding:0,bodyCls:"ft-activities-widget timeline",layout:"fit",alias:"widget.widget_feed_v2",extend:"RAW.Widget",options:{pageSize:30},bodyPadding:0,isInfinite:true,initComponent:function(){this.filter=FT.FilterFactory.create("feed");this.tbar=Ext.create("Ext.toolbar.Toolbar",{defaultButtonUI:"plain-toolbar",dock:"top",items:this.filter.getItems()});this.callParent(arguments)},initWidget:function(){var b=this;this.store=Ext.create("Ext.data.Store",{model:"FT.directive.CompositeModel",pageSize:b.options.pageSize,proxy:{type:"direct",limitParam:"pageSize",directFn:"FTApi.Activity.get",reader:{type:"json",root:"items"}}});var a=Ext.create("FT.directive.DirectiveDataView",{emptyText:'<p class="timeline__emptytext">'+FT.i18n("No activities")+"</p>",deferEmptyText:false,cls:"ft-activities-view",padding:"0 20 10 10",directives:this.getDirectives(),store:this.store,infiniteScroll:this.isInfinite,autoScroll:true,preserveScrollOnRefresh:true});this.morePager=Ext.create("FT.ui.MorePager",{store:this.store});this.add(a);if(this.isInfinite===false){this.add(this.morePager)}this.filter.bindStore(this.store);this.reloadStore()},getDirectives:function(){var a={};a.activity_status=Ext.create("FT.directive.activity.ActivityDirective",{getMessage:function(b){return FT.i18n("{userName} set {entityLink} to {statusName}",{values:{userName:FTrack.grid.UserRendererDefault(b.user.userid,"Unknown user"),entityLink:FTrack.grid.LinkRenderer(b.link),statusName:"<strong>"+FTrack.grid.StatusRendererPrint(b.statusId)+"</strong>"}})}});a.activity_status_expanded=Ext.create("FT.directive.activity.ExpandedActivityDirective",{getHeader:function(b){return FT.i18n("Previous status changes:")},getMessage:function(b){return FT.i18n("{userName} set status to {statusName}",{values:{userName:FTrack.grid.UserRendererDefault(b.user.userid,"Unknown user"),statusName:"<strong>"+FTrack.grid.StatusRendererPrint(b.statusId)+"</strong>"}})}});a.activity_assignment=Ext.create("FT.directive.activity.ActivityDirective",{getMessage:function(b){return FT.i18n("{userName} assigned {assigneeName} to {entityLink}",{values:{userName:FTrack.grid.UserRendererDefault(b.user.userid,"Unknown user"),entityLink:FTrack.grid.LinkRenderer(b.link),assigneeName:FTrack.grid.UserRendererDefault(b.assignees[0],"Unknown user")}})}});a.activity_assignment_expanded=Ext.create("FT.directive.activity.ExpandedActivityDirective",{getHeader:function(b){return FT.i18n("{userName} also assigned:",{values:{userName:FTrack.grid.UserRenderer(b.userId,"Unknown user")}})},getMessage:function(b){return FTrack.grid.UserRendererDefault(b,"Unknown user")}});a.activity_publish=Ext.create("FT.directive.activity.ActivityDirective",{getMessage:function(b){return FT.i18n("{userName} published {entityLink}",{values:{userName:FTrack.grid.UserRendererDefault(b.user.userid,"Unknown user"),entityLink:FTrack.grid.LinkRenderer(b.link)}})}});a.activity_publish_expanded=Ext.create("FT.directive.activity.ExpandedActivityDirective",{getHeader:function(b){return FT.i18n("Also published on {entityLink}:",{values:{entityLink:FTrack.grid.LinkRenderer(b.link)}})},getMessage:function(b){return FT.i18n("{userName} published {entityLink}",{values:{userName:FTrack.grid.UserRendererDefault(b.user.userid,"Unknown user"),entityLink:FTrack.grid.LinkRenderer(b.link)}})}});a.activity_note=Ext.create("FT.directive.activity.ActivityDirective",{getMessage:function(b){var c={userName:FTrack.grid.UserRendererDefault(b.user.userid,"Unknown user"),noteText:b.text,entityLink:FTrack.grid.LinkRenderer(b.link)};if(b.action==="comment.comment"){return FT.i18n("{userName} replied on {entityLink} - {noteText}",{values:c})}if(b.action==="comment.object-update"){return FT.i18n("{userName} updated note on {entityLink} - {noteText}",{values:c})}if(b.action==="comment.object"){return FT.i18n("{userName} commented on {entityLink} - {noteText}",{values:c})}if(b.action==="change.completed_at.note-completed"){return FT.i18n("{userName} marked note as complete on {entityLink} - {noteText}",{values:c})}if(b.action==="change.completed_at.note-uncompleted"){return FT.i18n("{userName} marked note as not complete on {entityLink} - {noteText}",{values:c})}return""}});a.activity_message=Ext.create("FT.directive.activity.ActivityDirective",{getMessage:function(b){var c={userName:FTrack.grid.UserRendererDefault(b.user.userid,"Unknown user"),noteText:b.text};if(b.action==="message.new"){return FT.i18n("{userName} sent you a new message - {noteText}",{values:c})}if(b.action==="message.reply"){return FT.i18n("{userName} replied on a message - {noteText}",{values:c})}return""}});a.note=Ext.create("FT.directive.note.NoteDirective");a.activity_created_task=Ext.create("FT.directive.activity.ActivityDirective",{getMessage:function(b){return FT.i18n("{userName} created {objectType} {entityLink}",{values:{userName:FTrack.grid.UserRendererDefault(b.user.userid,"Unknown user"),objectType:b.objectType,entityLink:FTrack.grid.LinkRenderer(b.link)}})}});return a},reloadStore:function(){var a=this.getEntity(),b;if(!this.store||!a){return}b={entityType:a.entityType,entityId:a.entityId};Ext.apply(this.store.getProxy().extraParams,b);this.store.load({start:0,page:1})},updateWidget:function(){this.reloadStore()}});Ext.define("RAW.FeedDashboard",{extend:"RAW.Feed",alias:"widget.widget_dashboard_feed",layout:"auto",isInfinite:false});Ext.define("RAW.AttributesPanel",{extend:"RAW.Widget",alias:"widget.widget_attributes",savedFields:[],validPushEntities:[],initComponent:function(){if(!FT.isAuth("SET_VIEW_DEFAULT")){this.toggleSettings=undefined}this.callParent()},initWidget:function(){this.validPushEntities=this.getPushEntities();this.createFields(false);this.getPushEntities()},toggleSettings:function(){this.createFields(!this.fieldsPanel.isEditMode)},createFields:function(a){this.removeAll();this.fieldsPanel=Ext.create("FT.FieldsGrid",{layout:"auto",entity:this.getEntity(),parentWidget:this,isEditMode:a,pushToken:this.pushToken});this.fieldsPanel.on("changeTitle",function(b){this.setTitle(b)},this);this.add(this.fieldsPanel)},getPushEntities:function(){var b=["show","sequence","shot","task","assetversion"];var a=b.indexOf(this.getEntity().entityType);var c=Ext.Array.slice(b,a,b.length);return c},updateWidget:function(a){this.getPushEntities();this.validPushEntities=this.getPushEntities();this.fieldsPanel.setEntity(this.getEntity())}});Ext.define("RAW.TabMenu",{extend:"RAW.Widget",alias:"widget.tab_menu",data:"",margin:"0 0 0 10",initComponent:function(){this.relayEvents(this.getTop(),["notifyMenu"]);this.on("notifyMenu",function(a){this.updateMenu(a)},this);this.relayEvents(this.getTop(),["globalconfigchanged"]);this.on({scope:this,globalconfigchanged:this.updateSelection});this.callParent()},updateSelection:function(){Ext.each(this.leftMenu.items.items,function(a){a.toggle(false,true)});this.leftMenu.items.items[this.getMyConfig("view")].toggle(true,true);this.fireRAWEvent("currentSelection",this.leftMenu.items.items[this.getMyConfig("view")].text)},initWidget:function(){var a=this.getEntity();this.leftMenu=new Ext.menu.Menu({floating:false,activeItem:0,width:140,border:0});this.add(this.leftMenu)},updateMenu:function(a){Ext.each(a,function(b){this.leftMenu.add({xtype:"button",enableToggle:true,text:b.title,handler:function(c){this.globalConfig.app.open(null,{view:c.idx})},width:130,idx:b.idx,pressed:false,scope:this})},this);this.updateSelection()}});Ext.define("RAW.User",{alias:"widget.widget_profile",disablePrimaryToolbar:true,extend:"RAW.Widget",initWidget:function(){var a=this.getEntity();var c=a.entityId;Ext.define("ProfileObject",{extend:"Ext.data.Model",fields:["firstname","lastname","thumbnail","shows","top"]});var b=Ext.create("Ext.data.Store",{model:"ProfileObject",proxy:{type:"ajax",url:"/main/getProfileStats",extraParams:{id:c}}});b.load();var d=new Ext.XTemplate('<tpl for=".">','<div class="profile" min-height="125px">','<img class="profile-thumbnail shadow img-border" height="125px" src="{thumbnail}" style="float:left;"/>','<div class="profile-information">','<p class="profile-name">{firstname} {lastname}</p>','<p class="profile-description">Mostly works with {[this.workTypes(values.top)]}</p>','<tpl if="shows.length!=0"><p class="profile-works-on">Currently works with</p></tpl>','<tpl for="shows">','<div class="profile-show-thumbnail" style="{[this.margin(xindex)]}">','<img title="{name}" src="{thumbnail}"/>',"<p>{[FTrack.grid.SimpleLinkRenderer(values.link)]}</p>","</div>","</tpl>","</div>","</div>",'<div style="clear:both;"></div>',"</tpl>",{margin:function(e){if(e==1){return"margin-left:20px;"}},workTypes:function(g){if(g.length==2){return FTrack.grid.TaskTypeRenderer(g[0])+" and "+FTrack.grid.TaskTypeRenderer(g[1])}else{if(g.length==1){return g.length}else{var e=new Array;e[0]=" playing Diablo III and drinking coffee";return e[Math.floor(Math.random()*e.length)]}}}});this.myView=Ext.create("Ext.view.View",{store:b,tpl:d,emptyText:FT.i18n("No profile"),listeners:{}});this.add([this.myView])}});Ext.define("RAW.NotesWidget",{extend:"FT.view.ViewContainer",alias:"widget.widget_notes",title:FT.i18n("Notes"),mode:"auto",viewClasses:["FT.view.impl.NoteViewSlim"],initComponent:function(){this.callParent()}});Ext.define("RAW.NotesWidgetSlim",{extend:"FT.view.ViewContainer",alias:"widget.widget_notes_slim",title:FT.i18n("Notes"),mode:"border",viewClasses:["FT.view.impl.NoteViewSlim"],initComponent:function(){this.callParent();this.preventHeader=true;this.setUI("")}});Ext.define("RAW.CustomWidget",{extend:"RAW.Widget",alias:"widget.widget_custom",validPushEntities:[],ftype:"panel",fconfig:null,dashboard:null,maximizable:true,bodyCls:"background-default",initComponent:function(){if(this.isFitLayout()){this.layout="fit"}this.callParent();if(this.dashboard==null){}else{this.preventHeader=true;this.setUI("");this.margin=""}},initWidget:function(){if(this.dashboard==null){this.createFTypeWidget()}else{this.createDashboard()}},createFTypeWidget:function(){var a=Ext.clone(this.getEntity());var b={entity:Ext.clone(this.getEntity()),module:this.globalConfig.module,widget:this};if(Ext.isDefined(this.fconfig)&&this.fconfig!=null){Ext.apply(b,Ext.decode(this.fconfig))}this.panel=Ext.widget(this.ftype,b);this.add(this.panel)},createDashboard:function(){var a={instanceid:this.dashboard,globalConfig:{isEditor:false,entity:Ext.clone(this.globalConfig.entity),app:this.globalConfig.app,module:this.globalConfig.module},isWidget:false};this.dashboardInstance=Ext.create("RAW.Layout",a);this.add(this.dashboardInstance)},updateWidget:function(){if(this.dashboard==null){if(Ext.isDefined(this.panel)&&Ext.isDefined(this.panel.updateEntity)){this.panel.updateEntity(Ext.clone(this.getEntity()))}}else{this.dashboardInstance.reloadIf(this.dashboard,Ext.clone(this.getEntity()))}}});Ext.define("RAW.CustomWidgetComponents",{extend:"RAW.CustomWidget",alias:"widget.widget_custom_components",validPushEntities:["components"]});Ext.define("RAW.Configure.Settings",{extend:"RAW.Widget",alias:"widget.configure_settings",validPushEntities:[],maximizable:true,autoScroll:true,header:false,initComponent:function(){this.getModule().on("beforemodulechange",this.onBeforeModuleChange,this);this.settingsForm=Ext.create("FT.configure.BaseSettings",{autoAddSaveBar:false,name:this.getEntity().view});this.store=this.settingsForm.getStore();this.store.on({metachange:this.onMetaChange,scope:this});this.bbar=this.settingsForm.getSaveBar();this.callParent();this.add(this.settingsForm)},initWidget:function(){this.title=this.getEntity().view},onMetaChange:function(a,b){this.setTitle(b.title)},onBeforeModuleChange:function(){if(!this.settingsForm.isUnsavedChanged()){return}this.settingsForm.forceSaveOrCancel(function(a){FT.app.delayedOpen()},this);return false},updateWidget:function(){this.settingsForm.setName(this.getEntity().view);this.settingsForm.reloadData()}});Ext.define("RAW.Configure.About",{extend:"RAW.Widget",alias:"widget.configure_about",layout:"fit",maximizable:true,header:false,bodyPadding:"32px",initComponent:function(){this.callParent()},initWidget:function(){var a=Ext.create("Ext.view.View",{loadingHeight:200,width:"100%",itemSelector:"div.ft-about-selector",emptyText:'<div style="padding:25px;color:#999;">'+FT.i18n("Loading information and statistics... Please wait.")+"</div>",deferEmptyText:false,tpl:new Ext.XTemplate('<table style="width:100%;border-spacing:0;">','<tpl for=".">','{[xindex > 1 ? "<tr><td>&nbsp;</td></tr>" : ""]}',"<tr>",'<td style="padding:0;">','<tpl for="items">',"<tpl if=\"parent.group != 'general'\">","<div class=\"ft-dashboard-top-box-outer{[parent.group != 'general' ? ' stats-box' : '']}\" style=\"cursor:default;\">",'<div class="ft-dashboard-top-box">',"</tpl>","{[this.formatInfo(values.key, values.value, parent.group)]}","<tpl if=\"parent.group != 'general'\">","</div>","</div>","<tpl if=\"parent.group == 'general'\">",'<div style="height:10px;"></div>',"</tpl>","</tpl>","</tpl>","</td>","</tr>","</tpl>","</table>",{formatInfo:function(c,d,e){if(e=="general"){return'<h2 style="margin-top: 32px">'+c+"</h2><p>"+d+"</p>"}else{return"<h2>"+d+'</h2><span class="ft-dashboard-top-box-title">'+c+"</span>"}}}),store:this.store=Ext.create("Ext.data.Store",{fields:["group","items"],proxy:{type:"memory"}})});var b={xtype:"button",text:FT.i18n("Update license"),margin:"16 0 32 0",width:150,cls:"ftrack-button-blue",handler:function(){var c=Ext.create("FT.LicenseDialog",{autoShow:true})}};this.add({xtype:"container",width:"100%",autoScroll:true,items:[a,this.licenseInfo=Ext.create("FT.configure.LicenseInformation"),b]});this.updateWidget()},updateWidget:function(){Ext.Ajax.request({url:"/main/getStats",success:function(b){var a=Ext.decode(b.responseText);this.store.getProxy().data=a.templateData;this.store.load();this.licenseInfo.updateData(a.license.product,a.license.features,a.license.messages)},scope:this})}});Ext.define("RAW.Configure.Grid",{extend:"RAW.Widget",alias:"widget.configure_grid",layout:"fit",maximizable:true,header:false,initComponent:function(){this.getModule().on("beforemodulechange",this.onBeforeModuleChange,this);this.callParent()},onBeforeModuleChange:function(){var a=this.grid.store,b=this.grid,c=this;if(a.getModifiedRecords().length==0){return}var d=Ext.create("FT.window.CancelSave",{cancelHandler:function(e){b.cancelChanges();FT.app.delayedOpen();d.close()},saveHandler:function(e){b.doUpdate();FT.app.delayedOpen();d.close()}});return false},initWidget:function(){this.add(this.grid=Ext.create("FT.configure.MetaGrid",{viewConfig:{stripeRows:false},listeners:{contentchanged:function(a){this.setTitle(a.title)},scope:this}}));this.title=this.getEntity().view;this.grid.reloadData(this.getEntity().view,this.getEntity());this.grid.on({beforeload:this.onBeforeLoad,load:this.onContentChanged,scope:this})},onBeforeLoad:function(){this.enableLoadMask()},onContentChanged:function(){this.disableLoadMask()},updateWidget:function(){this.grid.reloadData(this.getEntity().view,this.getEntity())}});Ext.define("RAW.EntityGrid",{extend:"RAW.Widget",maximizable:true,compactMode:false,mode:"grid",pageSize:50,internalInit:false,isHeaderStats:false,header:false,initComponent:function(){this.layout=this.isFitLayout()?"fit":"auto";this.callParent();this._projectId=null;var b=[],a=[];if(this.type!="asset"){a=["task"];b=[this.objectType]}else{a=["assetversion"]}this.listHelper=Ext.create("FT.list.ListHelper",{entityTypes:a,objectTypes:b});this.exportHelper=FT.ExportFactory.create("entitygrid",{});if(this.isHeaderStats){this.headerStats=FT.HeaderStatsFactory.create("entitygrid")}this.previousKey=this.type+"PreviousView";this.viewSettings=Ext.data.StoreManager.lookup("FT.store.EntityGridView_"+this.type);this.viewHelper=new FT.scheduler.ViewHelper({store:this.viewSettings,previousId:FT.getVar(this.previousKey,null),defaultView:{name:"my view",columns:Ext.encode(["userids","statusid","typeid","bid","Duration","StartDate","EndDate","description"])}});this.viewHelper.on("beforesave",this.saveSettings,this);this.viewSelector=this.viewHelper.getViewSelector();this.viewSelector.on("viewChanged",function(c,d){FT.setVar(this.previousKey,c.getId());this.updateFieldsConfigurer();this.updateGrid(false)},this)},saveSettings:function(b){var a=this.fieldsConfigurer.getSavedRecords();var c=this.grid.getState();Ext.each(a,function(d){if(c.viewers&&Ext.isDefined(c.viewers[d.id])){d.viewer=c.viewers[d.id]}},this);delete c.viewers;b.setColumns(a);b.setState(c)},getViewRecord:function(b){var a=this.viewSettings.findRecord("name",b);return a},getView:function(c){var b,a;if(!Ext.isDefined(c)){b=this.viewSettings.first()}else{b=this.getViewRecord(c)}a=b.get("data");return a},initWidget:function(){var a=this.getModule();if(Ext.isDefined(a)&&a.itemId=="projects"){a.on({scope:this,beforeeditmodechanged:this.onBeforeEditModeChanged})}this.refreshColumns()},refreshGridViewSelection:function(a){this.gridViewSelection.select([a])},updateWidget:function(){if(this._projectId==FT.app.getProjectId()){this.grid.reloadFromEntity(this.getEntity());return}if(Ext.isDefined(this.fieldsConfigurer)){this.fieldsConfigurer.entity=Ext.clone(this.getEntity())}this.refreshColumns()},getGridState:function(){var a=this.viewHelper.getCurrentView();return a.getState()},createMoreMenu:function(){var a={xtype:"button",text:FT.i18n("More"),cls:"ftrack-toolbarbutton-grey",tooltip:"More Actions",tooltipType:"title",menu:{items:[],listeners:{click:function(d,b,c){d.hide()}}}};if(FT.isAuth("UPDATE_TASK")&&this.isMovable){a.menu.items.push({text:FT.i18n("Move selected"),icon:"/resources/icons/arrow_right.png",handler:function(c){if(!this.grid){return}var d=this.grid.getSelection();var b=[];if(d.getCount()==0){FT.notifyError(FT.i18n("You have to select at least one item."))}else{d.each(function(h,e,g){if(!h.phantom){b.push({link:Ext.clone(h.get("link")),entityId:h.get("entityId"),entityType:h.get("entityType")})}},this);FT.action.open("moveEntity",b,function(){FT.app.safeFireEvent("entityadded")},this)}},scope:this})}return a},refreshColumns:function(){var a=this.getEntity();this.enableLoadMask();Ext.Ajax.request({url:"/track/getColumns",params:{data:Ext.JSON.encode({contentType:this.type,objectType:this.objectType,entityType:a.entityType,entityId:a.entityId})},success:function(b){var c=Ext.JSON.decode(b.responseText);this._projectId=c.data.showid;if(!this.createFromColumns(c)){this.setList();this.grid.reloadFromEntity(this.getEntity())}},scope:this})},createFromColumns:function(e){var b=this.getEntity();this.allColumns=[];this.allColumnsById={};this.hiddenColumns=[];Ext.iterate(e.columns,function(l,j,k){if(l.hidden){this.hiddenColumns.push(l)}else{this.allColumns.push({id:l.id,key:l.text,ftype:l.ftype,group:l.group,data:{column:0,record:l}})}this.allColumnsById[l.id]=l},this);if(Ext.isDefined(e.data.showid)){this.listHelper.setShowId(e.data.showid)}if(Ext.isDefined(e.data.showid)&&Ext.isDefined(this.viewCfg)&&this.viewCfg.showid==e.data.showid){this.updateFieldsConfigurer();return false}this.viewCfg=e.data;this.viewers=e.viewers;if(!this.internalInit){this.fieldsConfigurer=Ext.create("FT.grid.RemoteGridConfigureColumns",{entity:b,onEntityType:this.type,fields:["id","key","group"],listeners:{selectionchanged:function(){this.saveSettings(this.viewHelper.getCurrentView());this.updateGrid(true)},scope:this}});var c=this.createMoreMenu();var h=[this.listHelper.getListMenu(),this.viewSelector];var d,g;d=Ext.widget("menu",{items:[{text:this.fieldsConfigurer.getButton().text,menu:this.fieldsConfigurer.getButton().menu}]});g=Ext.widget("menuitem",{glyph:this.exportHelper.getMenu().glyph,text:FT.i18n("Export"),menu:this.exportHelper.getMenu().menu});d.on("show",function(){g.setDisabled(!this.exportHelper.buttonEnabled)},this);d.add(g);if(c.menu.items.length>0){d.add({text:FT.i18n("More"),menu:c.menu})}h.push({xtype:"button",cls:"ft-button-refreshspreadsheet",qtip:FT.tip("toolbar-button-icononly-refreshspreadsheet"),glyph:FT.glyph("refresh"),overflowText:FT.i18n("Refresh"),handler:function(){this.updateWidget(this.getEntity())},scope:this});h.push(this.configureButton=Ext.widget("button",{glyph:FT.glyph("configure"),qtip:{text:FT.tip("toolbar-button-icononly-configure"),showDelay:2000},menu:d}));var a={listHelper:this.listHelper,headerStats:this.headerStats,groupable:this.groupable,deferUpdate:true,compactMode:this.compactMode,tbar:h,objectType:this.objectType,contentType:this.type,mode:this.mode,edit:true,pageSize:this.pageSize,addLabels:this.addLabels,pushToken:this.pushToken,listeners:{modechanged:this.onModeChange,remotegridreconfigure:this.onRemoteGridReconfigure,gridcreated:this.onGridCreated,scope:this}};if(!this.isFitLayout()){Ext.apply(a,{layout:{type:"auto"}})}this.add(this.grid=Ext.create("FT.grid.RemoteGrid",a));Ext.each(this.grid.getConfigureButtons(),function(j){if(j){this.configureButton.menu.insert(0,{text:j.text,menu:j.menu})}},this);this.grid.on({load:function(){this.disableLoadMask()},beforeload:function(){this.enableLoadMask()},scope:this});this.on("undo",function(){this.grid.undo()},this);this.on("redo",function(){this.grid.redo()},this);this.on("save",function(){this.grid.save()},this);if(this.manualRefreshText){this.grid.add(this.getManualRefreshToolbar());this.grid.on("load",function(){this.enableManualRefresh(false)},this)}this.fieldsConfigurer.on("createdField",Ext.bind(this.refreshColumns,this),this);this.updateFieldsConfigurer();this.internalInit=true}else{this.updateFieldsConfigurer()}this.updateGrid(false);return true},onGridCreated:function(a){if(this.headerStats){this.headerStats.setGrid(a,this.viewHelper.getCurrentView())}},onRemoteGridReconfigure:function(){this.exportHelper.setGrid(this.grid.grid)},onModeChange:function(a){this.exportHelper.setGrid(this.grid.grid);a!="thumb"?this.exportHelper.enableButton():this.exportHelper.disableButton()},updateFieldsConfigurer:function(){var a=this.viewHelper.getCurrentView();var b=Ext.value(a.getColumns(),[]);this.fieldsConfigurer.update(this.allColumns,b)},updateGrid:function(h){var d=this.getEntity();var g=h?this.grid.getState():this.getGridState();var a=this.fieldsConfigurer.getSavedRecords();var b={};Ext.iterate(a,function(l,j,k){b[l.id]=l},this);var e=[];Ext.iterate(this.allColumnsById,function(o,j,k){var n=Ext.clone(j);var l=b[o];n.addToView=false;if(Ext.isDefined(l)||n.hidden){n.addToView=true}var m=undefined;Ext.iterate(this.viewers,function(q,p,s){if(Ext.isDefined(l)&&l.ftype==q.ftype&&q.renderName==l.viewer){m=q}else{if(!Ext.isDefined(m)&&n.ftype==q.ftype){m=q}}},this);Ext.applyIf(n,Ext.value(m,{}));e.push(n)},this);var c=Ext.pluck(a,"id");Ext.Array.sort.call(this,e,function(j,k){return c.indexOf(j.id)<c.indexOf(k.id)?-1:1});this.setList();this.grid.doReconfigure(e,this.type,{entityId:d.entityId,entityType:d.entityType,objectType:d.objectType,data:d.data},g);this.exportHelper.setGrid(this.grid.grid)},setList:function(){var b=this.getEntity();if(b.data&&b.data.inList){var a=b.data.inList;this.listHelper.setActiveList(a)}},exportData:function(){this.grid.exportData()},onBeforeEditModeChanged:function(a,b){if(this.grid&&!b){return !this.grid.isUnsavedChanges()}}});Ext.define("RAW.ShotGrid",{validPushEntities:["shot","task","note","taskworkedhours"],extend:"RAW.EntityGrid",alias:"widget.widget_shotgrid",includeChildren:false,isEditable:true,isMovable:true,isHeaderStats:true,groupable:true,type:"shot",title:FT.i18n("Shots"),objectType:"bad911de-3bd6-47b9-8b46-3476e237cb36",initComponent:function(){this.callParent()}});Ext.define("RAW.AssetGrid",{validPushEntities:["assetversion","note"],extend:"RAW.EntityGrid",isEditable:true,groupable:false,alias:"widget.widget_assetgrid",highestVersion:true,type:"asset",isMovable:false,title:FT.i18n("Published Versions"),manualRefreshText:FT.i18n("Updated versions are available"),initComponent:function(){this.callParent()}});Ext.define("FT.FieldsConfigurer",{extend:"Ext.panel.Panel",preventGridHeaders:false,layout:{type:"hbox",align:"stretch",padding:5},defaults:{flex:1},initComponent:function(){this.tbar=[];if(FT.util.isAdministrator()||FT.util.isManager()){if(FT.util.isAdministrator()||this.entity.entityType!="user"){this.tbar=[{xtype:"ftrack-button",margin:"5 0 5 4",text:FT.i18n("Create attribute"),handler:this.addFieldWindow,scope:this}]}}this.callParent()},createDefaultField:function(b){var a={xtype:b,fieldLabel:FT.i18n("Default Value"),name:"field_default",format:"Y-m-d H:i:s",allowBlank:b=="textarea"?true:false,inputValue:"true",uncheckedValue:"false"};if(b=="checkbox"){a.inputValue="true";a.uncheckedValue="false"}return a},addFieldWindow:function(){var d=Ext.create("Ext.data.Store",{fields:["name","value"],data:[{name:FT.i18n("Text"),value:"textarea"},{name:FT.i18n("Number"),value:"numberfield"},{name:FT.i18n("Date"),value:"ft-datefield"},{name:FT.i18n("Check"),value:"checkbox"}]});var a=[{name:"field_availability",inputValue:"all_show",boxLabel:this.onEntityType!="show"?"all "+this.onEntityType+"s on this "+(this.entity.entityType!="user"?"show":"user"):"this show only",checked:true}];if(this.entity.entityType!="user"){a.push({name:"field_availability",inputValue:"all",boxLabel:"all "+this.onEntityType+"s in FTrack"})}else{if(this.onEntityType=="user"){a=[];a.push({name:"field_availability",inputValue:"all",checked:true,boxLabel:"all "+this.onEntityType+"s in FTrack"})}}var b=Ext.widget("form",{url:"/customattributes/createField",layout:{type:"vbox",align:"stretch"},border:false,bodyPadding:15,fieldDefaults:{labelAlign:"top",labelWidth:100,labelStyle:"font-weight:bold"},defaults:{margins:"0 0 10 0"},items:[{xtype:"fieldset",title:FT.i18n("Field"),defaultType:"textfield",layout:"anchor",defaults:{anchor:"100%"},items:[{xtype:"hiddenfield",name:"entity_id",value:this.entity.entityId},{xtype:"hiddenfield",name:"entity_type",value:this.entity.entityType},{xtype:"hiddenfield",name:"on_entity",value:this.onEntityType},{fieldLabel:FT.i18n("Name"),name:"field_name",allowBlank:false},{id:"newFieldCombo",xtype:"combobox",name:"field_type",fieldLabel:FT.i18n("Type"),editable:false,store:d,valueField:"value",displayField:"name",value:"textarea",typeAhead:true,queryMode:"local",allowBlank:false,forceSelection:true,listeners:{change:function(g,e){g.up("fieldset").remove(g.up("fieldset").items.items[5],true);g.up("fieldset").add(this.createDefaultField(e))},scope:this}},this.createDefaultField("textarea")]},{xtype:"fieldset",title:FT.i18n("Available on"),layout:"anchor",defaults:{anchor:"100%"},items:[{xtype:"radiogroup",columns:1,items:[a]}]}],bbar:Ext.create("Ext.toolbar.Toolbar",{padding:10,items:["->",{xtype:"ftrack-button",action:"cancel",style:{marginRight:"5px"},handler:function(){this.up("form").getForm().reset();this.up("window").close()}},{xtype:"ftrack-button",action:"save",text:FT.i18n("Create"),handler:function(){if(this.up("form").getForm().isValid()){var e=this.up("form").getForm();e.loadMask=new Ext.LoadMask(this.up("window"),{msg:"Creating attribute"});e.submit({success:function(g,j){var h=Ext.decode(j.response.responseText);log(h);g.loadMask.hide();g.loadMask.destroy();if(h.success){FT.notifySuccess(FT.i18n("The attribute was created"));this.up("window").configurer.fireEvent("createdField");this.up("window").close()}},failure:function(g,h){},scope:this})}}}]})});var c=Ext.create("FT.ModalWindow",{configurer:this,title:FT.i18n("Create attribute"),closeAction:"destroy",width:400,height:475,layout:"fit",resizable:false,closable:true,draggable:false,modal:true,items:b});c.show()},getStore:function(){return this.secondGridStore},getSavedRecords:function(){var a=[];this.secondGridStore.each(function(b){a.push(b.data)},this);return a},update:function(j,d){this.removeAll(true);var l=[];var h=[];var b=function(o,m){for(var n=0;n<m.length;n++){if(m[n].id==o){return m[n]}}return null};for(var c=0;c<d.length;c++){var k=b(d[c].id,j);if(k!=null){if(Ext.isDefined(k.data)&&Ext.isDefined(d[c].data)){Ext.apply(k.data,d[c].data)}if(Ext.isDefined(d[c].viewer)){k.viewer=d[c].viewer}h.push(k)}}for(var c=0;c<j.length;c++){var k=b(j[c].id,h);if(k==null){l.push(j[c])}}this.firstGridStoreCfg=Ext.value(this.firstGridStoreCfg,{});var a=Ext.create("Ext.data.Store",Ext.apply({data:l,fields:this.fields},this.firstGridStoreCfg));var e=Ext.value(this.firstColumns,this.columns);this.firstGridCfg=Ext.value(this.firstGridCfg,{});this.firstGrid=Ext.create("Ext.grid.Panel",Ext.apply(this.firstGridCfg,{hideHeaders:this.preventGridHeaders,flex:1,multiSelect:true,viewConfig:{plugins:{ptype:"gridviewdragdrop"},listeners:{drop:function(n,o,p,m){this.fireEvent("changedFields")},scope:this}},store:a,columns:e,stripeRows:true,title:FT.i18n("Available"),margins:"0 2 0 0"}));this.secondGridStore=Ext.create("Ext.data.Store",{data:h,fields:this.fields});var g=Ext.value(this.secondColumns,this.columns);this.secondGrid=Ext.create("Ext.grid.Panel",{hideHeaders:this.preventGridHeaders,flex:1,viewConfig:{plugins:{ptype:"gridviewdragdrop"},listeners:{drop:function(n,o,p,m){this.fireEvent("changedFields")},scope:this}},minHeight:150,store:this.secondGridStore,columns:g,stripeRows:true,title:FT.i18n("Selected"),margins:"0 0 0 3",plugins:[Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:1})]});this.add([this.firstGrid,this.secondGrid])}});Ext.ns("FT.validator");FT.validator.shortname=function(c){var a=true;var b=/[^a-zA-Z0-9_\-+=&()# ]/;if(c==""){a="Name is required.\n"}else{if(c.length<1||c.length>128){a="Wrong length. Must be 1-128. \n"}else{if(b.test(c)){a="The name contains illegal characters. Allowed are a-z A-Z 0-9 - + = & ( ) # _\n"}}}return a};FT.validator.positivenumber=function(c){var a=true;var b=/[^a-z0-9]/;if(!Ext.isNumeric(c)){a="Must be number..."}else{if(c<0){a="Must be positive..."}}return a};FT.validator.password=function(a,b){return b==a.getValue()?true:"Passwords doesn't match"};Ext.define("Ext.ux.grid.FiltersFeature",{extend:"Ext.grid.feature.Feature",alias:"feature.filters",uses:["Ext.ux.grid.menu.ListMenu","Ext.ux.grid.menu.RangeMenu","Ext.ux.grid.filter.BooleanFilter","Ext.ux.grid.filter.DateFilter","Ext.ux.grid.filter.ListFilter","Ext.ux.grid.filter.NumericFilter","Ext.ux.grid.filter.StringFilter"],autoReload:true,filterCls:"ux-filtered-column",local:false,menuFilterText:FT.i18n("Filters"),paramPrefix:"filter",showMenu:true,stateId:undefined,updateBuffer:500,hasFeatureEvent:false,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.deferredUpdate=Ext.create("Ext.util.DelayedTask",b.reload,b);b.filters=b.createFiltersCollection();b.filterConfigs=a.filters},attachEvents:function(){var c=this,a=c.view,d=a.headerCt,b=c.getGridPanel();c.bindStore(a.getStore(),true);d.on("menucreate",c.onMenuCreate,c);a.on("refresh",c.onRefresh,c);b.on({scope:c,beforestaterestore:c.applyState,beforestatesave:c.saveState,beforedestroy:c.destroy});b.filters=c;b.addEvents("filterupdate")},createFiltersCollection:function(){return Ext.create("Ext.util.MixedCollection",false,function(a){return a?a.dataIndex:null})},createFilters:function(){var j=this,h=j.filters.getCount(),a=j.getGridPanel(),d=j.createFiltersCollection(),e=a.store.model,g=e.prototype.fields,k,c,b;if(h){b={};j.saveState(null,b)}function l(n,m,o){if(n&&(o||m)){k=g.get(n);c={dataIndex:n,type:k&&k.type&&k.type.type||"auto"};if(Ext.isObject(m)){Ext.apply(c,m)}d.replace(c)}}Ext.Array.each(j.filterConfigs,function(m){l(m.dataIndex,m)});Ext.Array.each(a.columns,function(m){if(m.filterable===false){d.removeAtKey(m.dataIndex)}else{l(m.dataIndex,m.filter,m.filterable)}});j.removeAll();j.addFilters(d.items);if(h){j.applyState(null,b)}},onMenuCreate:function(c,b){var a=this;a.createFilters();b.on("beforeshow",a.onMenuBeforeShow,a)},onMenuBeforeShow:function(d){var c=this,b,a;if(c.showMenu){b=c.menuItem;if(!b||b.isDestroyed){c.createMenuItem(d);b=c.menuItem}a=c.getMenuFilter();if(a){b.menu=a.menu;b.setChecked(a.active);b.setDisabled(a.disabled===true)}b.setVisible(!!a);this.sep.setVisible(!!a)}},createMenuItem:function(b){var a=this;a.sep=b.add("-");a.menuItem=b.add({checked:false,itemId:"filters",text:a.menuFilterText,listeners:{scope:a,checkchange:a.onCheckChange,beforecheckchange:a.onBeforeCheck}})},getGridPanel:function(){return this.view.up("gridpanel")},applyState:function(b,d){var a,c;this.applyingState=true;this.clearFilters();if(d.filters){for(a in d.filters){c=this.filters.get(a);if(c){c.setValue(d.filters[a]);c.setActive(true)}}}this.deferredUpdate.cancel();if(this.local){this.reload()}delete this.applyingState;delete d.filters},saveState:function(a,c){var b={};this.filters.each(function(d){if(d.active){b[d.dataIndex]=d.getValue()}});return c.filters=b},destroy:function(){var a=this;Ext.destroyMembers(a,"menuItem","sep");a.removeAll();a.clearListeners()},removeAll:function(){if(this.filters){Ext.destroy.apply(Ext4,this.filters.items);this.filters.clear()}},bindStore:function(a,b){if(!b&&this.store){if(this.local){a.un("load",this.onLoad,this)}else{a.un("beforeload",this.onBeforeLoad,this)}}if(a){if(this.local){a.on("load",this.onLoad,this)}else{a.on("beforeload",this.onBeforeLoad,this)}}this.store=a},getMenuFilter:function(){var a=this.view.headerCt.getMenu().activeHeader;return a?this.filters.get(a.dataIndex):null},onCheckChange:function(a,b){this.getMenuFilter().setActive(b)},onBeforeCheck:function(a,b){return !b||this.getMenuFilter().isActivatable()},onStateChange:function(d,b){if(d!=="serialize"){var c=this,a=c.getGridPanel();if(b==c.getMenuFilter()){c.menuItem.setChecked(b.active,false)}if((c.autoReload||c.local)&&!c.applyingState){c.deferredUpdate.delay(c.updateBuffer)}c.updateColumnHeadings();if(!c.applyingState){a.saveState()}a.fireEvent("filterupdate",c,b)}},onBeforeLoad:function(a,b){b.params=b.params||{};this.cleanParams(b.params);var c=this.buildQuery(this.getFilterData());Ext.apply(b.params,c)},onLoad:function(a,b){a.filterBy(this.getRecordFilter())},onRefresh:function(){this.updateColumnHeadings()},updateColumnHeadings:function(){var a=this,b=a.view.headerCt;if(b){b.items.each(function(d){var c=a.getFilter(d.dataIndex);d[c&&c.active?"addCls":"removeCls"](a.filterCls)})}},reload:function(){var b=this,a=b.view.getStore(),c;if(b.local){a.clearFilter(true);a.filterBy(b.getRecordFilter())}else{b.deferredUpdate.cancel();a.loadPage(1)}},getRecordFilter:function(){var c=[],a,b;this.filters.each(function(d){if(d.active){c.push(d)}});a=c.length;return function(d){for(b=0;b<a;b++){if(!c[b].validateRecord(d)){return false}}return true}},addFilter:function(a){var c=this.getFilterClass(a.type),b=a.menu?a:new c(a);this.filters.add(b);Ext.util.Observable.capture(b,this.onStateChange,this);return b},addFilters:function(d){if(d){var b,a,c;for(b=0,a=d.length;b<a;b++){c=d[b];if(c){this.addFilter(c)}}}},getFilter:function(a){return this.filters.get(a)},clearFilters:function(){this.filters.each(function(a){a.setActive(false)})},getFilterData:function(){var c=[],b,a;this.filters.each(function(e){if(e.active){var g=[].concat(e.serialize());for(b=0,a=g.length;b<a;b++){c.push({field:e.dataIndex,data:g[b]})}}});return c},buildQuery:function(b){var a={},c,h,j,e,k,d,g=b.length;if(!this.encode){for(c=0;c<g;c++){h=b[c];j=[this.paramPrefix,"[",c,"]"].join("");a[j+"[field]"]=h.field;e=j+"[data]";for(k in h.data){a[[e,"[",k,"]"].join("")]=h.data[k]}}}else{d=[];for(c=0;c<g;c++){h=b[c];d.push(Ext.apply({},{field:h.field},h.data))}if(d.length>0){a[this.paramPrefix]=Ext.JSON.encode(d)}}return a},cleanParams:function(c){if(this.encode){delete c[this.paramPrefix]}else{var b,a;b=new RegExp("^"+this.paramPrefix+"[[0-9]+]");for(a in c){if(b.test(a)){delete c[a]}}}},getFilterClass:function(a){switch(a){case"auto":a="string";break;case"int":case"float":a="numeric";break;case"bool":a="boolean";break}return Ext.ClassManager.getByAlias("gridfilter."+a)}});Ext.define("FT.core.Filter",{extend:"Ext.panel.Panel",uses:["Ext.ux.grid.menu.ListMenu","Ext.ux.grid.menu.RangeMenu","Ext.ux.grid.filter.BooleanFilter","Ext.ux.grid.filter.DateFilter","Ext.ux.grid.filter.ListFilter","Ext.ux.grid.filter.NumericFilter","Ext.ux.grid.filter.StringFilter"],autoReload:true,filterCls:"ux-filtered-column",local:false,menuFilterText:FT.i18n("Filters"),paramPrefix:"filter",showMenu:true,stateId:undefined,updateBuffer:500,hasFeatureEvent:false,initComponent:function(){var a=this;a.deferredUpdate=Ext.create("Ext.util.DelayedTask",a.reload,a);a.filters=a.createFiltersCollection();a.filterConfigs=a.filters;a.attachEvents();this.callParent();this.createFilters()},attachEvents:function(){var a=this;a.bindStore(this.store,true)},createFiltersCollection:function(){return Ext.create("Ext.util.MixedCollection",false,function(a){return a?a.dataIndex:null})},createFilters:function(){var h=this,g=h.filters.getCount(),c=h.createFiltersCollection(),d=this.store.model,e=d.prototype.fields,j,b,a;if(g){a={};h.saveState(null,a)}function k(m,l,n){if(m&&(n||l)){j=e.get(m);b={dataIndex:m,type:j&&j.type&&j.type.type||"auto"};if(Ext.isObject(l)){Ext.apply(b,l)}c.replace(b)}}Ext.Array.each(h.filterConfigs,function(l){k(l.itemId,l)});Ext.Array.each(this.columns,function(l){if(l.filterable===false){c.removeAtKey(l.itemId)}else{k(l.itemId,l.filter,l.filterable)}});h.removeAll();h.addFilters(c.items);if(g){h.applyState(null,a)}},createMenuItem:function(b){var a=this;a.sep=b.add("-");a.menuItem=b.add({checked:false,itemId:"filters",text:a.menuFilterText,listeners:{scope:a,checkchange:a.onCheckChange,beforecheckchange:a.onBeforeCheck}})},applyState:function(c){var a,b;this.applyingState=true;this.clearFilters();if(c.filters){for(a in c.filters){b=this.filters.get(a);if(b){b.setValue(c.filters[a].value);b.setInvert(Ext.isDefined(c.filters[a].invert)?c.filters[a].invert:b.invert);b.setActive(true)}}}this.deferredUpdate.cancel();if(this.local){this.reload()}delete this.applyingState;delete c.filters},saveState:function(a,c){var b={};this.filters.each(function(d){if(d.active){b[d.dataIndex]={value:d.getValue(),invert:d.invert}}});return c.filters=b},getActiveFilters:function(){var a=[];this.filters.each(function(b){if(b.active){log(b);a.push(b)}});return a},destroy:function(){var a=this;this.callParent(arguments);Ext.destroyMembers(a,"menuItem","sep");a.removeAll();a.clearListeners()},removeAll:function(){if(this.filters){Ext.destroy.apply(Ext,this.filters.items);this.filters.clear()}},bindStore:function(a,b){if(!b&&this.store){if(this.local){a.un("load",this.onLoad,this)}else{a.un("beforeload",this.onBeforeLoad,this)}}if(a){if(this.local){a.on("load",this.onLoad,this)}else{a.on("beforeload",this.onBeforeLoad,this)}}this.store=a},getMenuFilter:function(){var a=this.view.headerCt.getMenu().activeHeader;return a?this.filters.get(a.dataIndex):null},onCheckChange:function(a,b){this.getMenuFilter().setActive(b)},onBeforeCheck:function(a,b){return !b||this.getMenuFilter().isActivatable()},onStateChange:function(c,a){if(c!=="serialize"){var b=this;if((b.autoReload||b.local)&&!b.applyingState){b.deferredUpdate.delay(b.updateBuffer)}}},onBeforeLoad:function(a,b){b.params=b.params||{};this.cleanParams(b.params);var c=this.buildQuery(this.getFilterData());Ext.apply(b.params,c)},onLoad:function(a,b){a.filterBy(this.getRecordFilter())},reload:function(){var b=this,a=b.store,c;if(b.local){a.clearFilter(true);a.filterBy(b.getRecordFilter())}else{b.deferredUpdate.cancel();a.loadPage(1)}},getRecordFilter:function(){var c=[],a,b;this.filters.each(function(d){if(d.active){c.push(d)}});a=c.length;return function(d){for(b=0;b<a;b++){if(!c[b].validateRecord(d)){return false}}return true}},addFilter:function(a){return a;var c=this.getFilterClass(a.type),b=a.menu?a:new c(a);log(b);this.filters.add(b);Ext.util.Observable.capture(b,this.onStateChange,this);return b},addFilters:function(d){if(d){var b,a,c;for(b=0,a=d.length;b<a;b++){c=d[b];if(c){this.addFilter(c)}}}},getFilter:function(a){return this.filters.get(a)},clearFilters:function(){this.filters.each(function(a){a.setActive(false)})},getFilterData:function(){var c=[],b,a;this.filters.each(function(e){if(e.active){var g=[].concat(e.serialize());for(b=0,a=g.length;b<a;b++){c.push({field:e.dataIndex,data:g[b]})}}});return c},buildQuery:function(b){var a={},c,h,j,e,k,d,g=b.length;if(!this.encode){for(c=0;c<g;c++){h=b[c];j=[this.paramPrefix,"[",c,"]"].join("");a[j+"[field]"]=h.field;e=j+"[data]";for(k in h.data){a[[e,"[",k,"]"].join("")]=h.data[k]}}}else{d=[];for(c=0;c<g;c++){h=b[c];d.push(Ext.apply({},{field:h.field},h.data))}if(d.length>0){a[this.paramPrefix]=Ext.JSON.encode(d)}}return a},cleanParams:function(c){if(this.encode){delete c[this.paramPrefix]}else{var b,a;b=new RegExp("^"+this.paramPrefix+"[[0-9]+]");for(a in c){if(b.test(a)){delete c[a]}}}},getFilterClass:function(a){switch(a){case"auto":a="string";break;case"int":case"float":a="numeric";break;case"bool":a="boolean";break}return Ext.ClassManager.getByAlias("gridfilter."+a)}});Ext.define("Ext.ux.grid.filter.Filter",{extend:"Ext.util.Observable",active:false,dataIndex:null,menu:null,updateBuffer:500,invert:false,constructor:function(a){Ext.apply(this,a);this.addEvents("activate","deactivate","serialize","update","invertchanged");Ext.ux.grid.filter.Filter.superclass.constructor.call(this);a.floating=false;a.plain=true;a.autoShow=true;a.title="test";a.tbar=[this.invertChecker=Ext.create("Ext.form.field.Checkbox",{xtype:"checkbox",fieldLabel:FT.i18n("invert"),checked:this.invert,handler:function(b,c){this.setInvert(c)},scope:this})];a.tools=[{type:"close",handler:function(e,d,b,c){this.fireEvent("close",this);this.setActive(false)},scope:this}];this.menu=this.createMenu(a);this.menu.on("beforehide",this.returnFalse,this);this.cmp=Ext.create("Ext.container.Container",{items:[this.menu]});this.init(a);if(a&&a.value){this.setValue(a.value);this.setActive(a.active!==false,true);delete a.value}},returnFalse:function(){return false},destroy:function(){if(this.menu){this.cmp.destroy();this.menu.destroy()}this.clearListeners()},init:Ext.emptyFn,createMenu:function(a){return Ext.create("Ext.menu.Menu",a)},getValue:Ext.emptyFn,setValue:Ext.emptyFn,isActivatable:function(){return true},getSerialArgs:Ext.emptyFn,validateRecord:function(){return true},serialize:function(){var b=this.getSerialArgs();var a={invert:this.invert};if(Ext.isArray(b)){Ext.each(b,function(e,c,d){Ext.apply(e,a)},this)}else{Ext.apply(b,a)}this.fireEvent("serialize",b,this);return b},fireUpdate:function(){if(this.active){this.fireEvent("update",this)}this.setActive(this.isActivatable())},setInvert:function(b,a){if(this.invert!=b){this.invert=b;if(a!==true){this.fireEvent("invertchanged",this)}}if(this.invertChecker.getValue()!=b){this.invertChecker.setValue(b)}},setActive:function(b,a){if(this.active!=b){this.active=b;if(a!==true){this.fireEvent(b?"activate":"deactivate",this)}}}});Ext.define("Ext.ux.grid.filter.StringFilter",{extend:"Ext.ux.grid.filter.Filter",alias:"gridfilter.string",iconCls:"ux-gridfilter-text-icon",emptyText:"Enter Filter Text...",selectOnFocus:true,width:125,init:function(a){Ext.applyIf(a,{enableKeyEvents:true,iconCls:this.iconCls,hideLabel:true,listeners:{scope:this,keyup:this.onInputKeyUp,el:{click:function(b){b.stopPropagation()}}}});this.inputItem=Ext.create("Ext.form.field.Text",a);this.menu.add(this.inputItem);this.updateTask=Ext.create("Ext.util.DelayedTask",this.fireUpdate,this)},getValue:function(){return this.inputItem.getValue()},setValue:function(a){this.inputItem.setValue(a);this.fireEvent("update",this)},isActivatable:function(){return this.inputItem.getValue().length>0},getSerialArgs:function(){return{type:"string",value:this.getValue()}},validateRecord:function(a){var b=a.get(this.dataIndex);if(typeof b!="string"){return this.getValue().length===0}return b.toLowerCase().indexOf(this.getValue().toLowerCase())>-1},onInputKeyUp:function(c,b){var a=b.getKey();if(a==b.RETURN&&c.isValid()){b.stopEvent();this.menu.hide();return}this.updateTask.delay(this.updateBuffer)}});Ext.define("Ext.ux.grid.filter.DateFilter",{extend:"Ext.ux.grid.filter.Filter",alias:"gridfilter.date",uses:["Ext.picker.Date","Ext.menu.Menu"],afterText:FT.i18n("After"),beforeText:FT.i18n("Before"),compareMap:{before:"lt",after:"gt",on:"eq"},dateFormat:"m/d/Y",menuItems:["before","after","-","on"],menuItemCfgs:{selectOnFocus:true,width:125},onText:FT.i18n("On"),pickerOpts:{},init:function(d){var h=this,c,e,a,g,b;c=Ext.apply(h.pickerOpts,{xtype:"datepicker",minDate:h.minDate,maxDate:h.maxDate,format:h.dateFormat,listeners:{scope:h,select:h.onMenuSelect}});h.fields={};for(e=0,a=h.menuItems.length;e<a;e++){g=h.menuItems[e];if(g!=="-"){b={itemId:"range-"+g,text:h[g+"Text"],menu:Ext.create("Ext.menu.Menu",{items:[Ext.apply(c,{itemId:g})]}),listeners:{scope:h,checkchange:h.onCheckChange}};g=h.fields[g]=Ext.create("Ext.menu.CheckItem",b)}h.menu.add(g)}},onCheckChange:function(){this.setActive(this.isActivatable());this.fireEvent("update",this)},onInputKeyUp:function(c,b){var a=b.getKey();if(a==b.RETURN&&c.isValid()){b.stopEvent();this.menu.hide()}},onMenuSelect:function(c,b){var a=this.fields,d=this.fields[c.itemId];d.setChecked(true);if(d==a.on){a.before.setChecked(false,true);a.after.setChecked(false,true)}else{a.on.setChecked(false,true);if(d==a.after&&this.getFieldValue("before")<b){a.before.setChecked(false,true)}else{if(d==a.before&&this.getFieldValue("after")>b){a.after.setChecked(false,true)}}}this.fireEvent("update",this);c.up("menu").hide()},getValue:function(){var b,a={};for(b in this.fields){if(this.fields[b].checked){a[b]=this.getFieldValue(b)}}return a},setValue:function(c,b){var a;for(a in this.fields){if(c[a]){this.getPicker(a).setValue(c[a]);this.fields[a].setChecked(true)}else{if(!b){this.fields[a].setChecked(false)}}}this.fireEvent("update",this)},isActivatable:function(){var a;for(a in this.fields){if(this.fields[a].checked){return true}}return false},getSerialArgs:function(){var a=[];for(var b in this.fields){if(this.fields[b].checked){a.push({type:"date",comparison:this.compareMap[b],value:Ext.Date.format(this.getFieldValue(b),this.dateFormat)})}}return a},getFieldValue:function(a){return this.getPicker(a).getValue()},getPicker:function(a){return this.fields[a].menu.items.first()},validateRecord:function(b){var c,e,d=b.get(this.dataIndex),a=Ext.Date.clearTime;if(!Ext.isDate(d)){return false}d=a(d,true).getTime();for(c in this.fields){if(this.fields[c].checked){e=a(this.getFieldValue(c),true).getTime();if(c=="before"&&e<=d){return false}if(c=="after"&&e>=d){return false}if(c=="on"&&e!=d){return false}}}return true}});Ext.define("Ext.ux.grid.filter.ListFilter",{extend:"Ext.ux.grid.filter.Filter",alias:"gridfilter.list",phpMode:false,init:function(a){this.dt=Ext.create("Ext.util.DelayedTask",this.fireUpdate,this)},createMenu:function(a){var b=Ext.create("Ext.ux.grid.menu.ListMenu",a);b.on("checkchange",this.onCheckChange,this);return b},getValue:function(){return this.menu.getSelected()},setValue:function(a){this.menu.setSelected(a);this.fireEvent("update",this)},isActivatable:function(){return this.getValue().length>0},getSerialArgs:function(){return{type:"list",value:this.phpMode?this.getValue().join(","):this.getValue()}},onCheckChange:function(){this.dt.delay(this.updateBuffer)},validateRecord:function(a){var b=this.getValue();return Ext.Array.indexOf(b,a.get(this.dataIndex))>-1}});Ext.define("Ext.ux.grid.filter.NumericFilter",{extend:"Ext.ux.grid.filter.Filter",alias:"gridfilter.numeric",uses:["Ext.form.field.Number"],createMenu:function(a){var b=this,c;c=Ext.create("Ext.ux.grid.menu.RangeMenu",a);c.on("update",b.fireUpdate,b);return c},getValue:function(){return this.menu.getValue()},setValue:function(a){this.menu.setValue(a)},isActivatable:function(){var a=this.getValue(),b;for(b in a){if(a[b]!==undefined){return true}}return false},getSerialArgs:function(){var c,b=[],a=this.menu.getValue();for(c in a){b.push({type:"numeric",comparison:c,value:a[c]})}return b},validateRecord:function(a){var d=a.get(this.dataIndex),b=this.getValue(),c=Ext.isNumber;if(c(b.eq)&&d!=b.eq){return false}if(c(b.lt)&&d>=b.lt){return false}if(c(b.gt)&&d<=b.gt){return false}return true}});Ext.define("Ext.ux.grid.filter.BooleanFilter",{extend:"Ext.ux.grid.filter.Filter",alias:"gridfilter.boolean",defaultValue:false,yesText:FT.i18n("Yes"),noText:FT.i18n("No"),init:function(a){var c=Ext.id();this.options=[Ext.create("Ext.menu.CheckItem",{text:this.yesText,group:c,checked:this.defaultValue===true}),Ext.create("Ext.menu.CheckItem",{text:this.noText,group:c,checked:this.defaultValue===false})];this.menu.add(this.options[0],this.options[1]);for(var b=0;b<this.options.length;b++){this.options[b].on("click",this.fireUpdate,this);this.options[b].on("checkchange",this.fireUpdate,this)}},getValue:function(){return this.options[0].checked},setValue:function(a){this.options[a?0:1].setChecked(true)},getSerialArgs:function(){var a={type:"boolean",value:this.getValue()};return a},validateRecord:function(a){return a.get(this.dataIndex)==this.getValue()}});Ext.define("FT.grid.filter.SuperboxFilter",{extend:"Ext.ux.grid.filter.Filter",alias:"gridfilter.superbox",phpMode:false,init:function(a){this.dt=Ext.create("Ext.util.DelayedTask",this.fireUpdate,this)},createMenu:function(a){var b=Ext.create("FT.grid.menu.SuperboxMenu",a);b.on("change",this.onChange,this);return b},getValue:function(){return this.menu.getSelected()},setValue:function(a){this.menu.setSelected(a);this.dt.cancel();this.fireEvent("update",this)},isActivatable:function(){return this.getValue().length>0},getSerialArgs:function(){return{type:"list",value:this.phpMode?this.getValue().join(","):this.getValue()}},onChange:function(){this.dt.delay(this.updateBuffer)},validateRecord:function(a){var b=this.getValue();return Ext.Array.indexOf(b,a.get(this.dataIndex))>-1}});Ext.define("FT.grid.menu.SuperboxMenu",{extend:"Ext.menu.Menu",loadOnShow:true,single:false,constructor:function(a){this.selected=[];this.addEvents("checkchange");this.callParent([a=a||{}]);this.add(this.superBox=Ext.widget("usereditor",{}));this.relayEvents(this.superBox,["change"])},destroy:function(){if(this.store){this.store.destroy()}this.callParent()},getSelected:function(){return this.superBox.getValue().split(", ")},setSelected:function(a){this.superBox.setValue(a)}});Ext.define("FT.grid.ExportFactory",{extend:"Ext.Base",constructor:function(a){Ext.apply(this,a);this.callParent()},create:function(c,b){var a=null;if(c=="gantt"){a="FT.grid.GanttExportHelper"}else{if(c=="entitygrid"){a="FT.grid.EntityGridExportHelper"}else{if(c=="metagrid"){a="FT.grid.MetaGridExportHelper"}}}if(a===null){throw"No class was found in ExportFactory for "+c}b.type=c;return Ext.create(a,b)}},function(){FT.ExportFactory=Ext.create("FT.grid.ExportFactory",{})});Ext.define("FT.grid.ExportHelper",{extend:"Ext.Base",filename:FT.i18n("FTrack-export"),mixins:{observable:"Ext.util.Observable"},buttonEnabled:false,constructor:function(a){this.mixins.observable.constructor.call(this);this.ignoreColumns=Ext.value(this.ignoreColumns,[]);Ext.apply(this,a);this.callParent(arguments)},getMenu:function(){if(!this.menuButton){this.menuButton=Ext.create("Ext.menu.Item",{glyph:FT.glyph("export"),qtip:FT.tip("toolbar-button-icononly-export"),disabled:!this.buttonEnabled,menu:[{text:FT.i18n("Excel"),handler:Ext.bind(this.onExport,this,["excel"])},{text:FT.i18n("CSV"),handler:Ext.bind(this.onExport,this,["csv"])},{text:FT.i18n("PDF"),handler:Ext.bind(this.onExport,this,["pdf"])}]})}return this.menuButton},getVisibleColumns:function(){var a=[];Ext.each(this.grid.headerCt.gridDataColumns,function(b){if(b.dataIndex&&b.text&&this.ignoreColumns.indexOf(b.dataIndex)==-1){a.push({dataIndex:b.dataIndex,text:b.groupText?b.groupText+" ("+b.text+")":b.text,width:b.getWidth(),summaryType:b.summaryType,objectTypeIds:b.objectTypeIds})}},this);return a},getCfg:function(){return{}},onExport:function(e){var b=this;if(!this.store){throw"Store not set exception"}var a=this.getCfg(),c;Ext.apply(a,{columnMappers:Ext.encode(this.getVisibleColumns()),type:this.type,start:0,limit:1000000,method:e,enableLazyColumns:false,enableLazyCollapsedLoad:false,filename:this.filename,dummygroup:false});Ext.apply(a,this.getStoreParams());Ext.apply(a,this.store.getProxy().extraParams);c=Ext.create("Ext.form.Panel",{url:"/export/createJob",standardSubmit:false});var d=e+"-exportwindow";if(e==="csv"){d="csv-exportwindow"}Ext.widget(d,{submitCfg:a,submitMethod:b.doSubmit,submitForm:c}).show()},getStoreParams:function(){var c,a,b;c={action:"read",filters:this.store.filters.items,sorters:this.store.getSorters()};a=new Ext.data.Operation(c);var d=Ext.create("Ext.data.proxy.Server",{});b=d.getParams(a);return b},disableButton:function(){this.buttonEnabled=false;if(this.menuButton){this.menuButton.disable();this.menuButton.menu.disable()}},enableButton:function(){this.buttonEnabled=true;if(this.menuButton){this.menuButton.enable();this.menuButton.menu.enable()}},setGrid:function(a){if(!a){this.disableButton();return}this.enableButton();this.grid=a;this.store=a.store},doSubmit:function(b,a){b.on("beforeaction",function(c,d){Ext.Function.interceptAfter(d,"doSubmit",function(){c.destroy()})},this,{single:true});b.submit({params:Ext.clone(a)})}});Ext.define("FT.grid.EntityGridExportHelper",{extend:"FT.grid.ExportHelper",constructor:function(a){this.ignoreColumns=["shortcut"];Ext.apply(this,a);this.callParent(arguments)}});Ext.define("FT.grid.GanttExportHelper",{extend:"FT.grid.ExportHelper",constructor:function(a){Ext.apply(this,a);this.callParent(arguments)},getCfg:function(){return{node:null}}});Ext.define("FT.grid.MetaGridExportHelper",{extend:"FT.grid.ExportHelper",constructor:function(a){Ext.apply(this,a);this.callParent(arguments)},setGrid:function(a){if(!a){throw"Invalid grid exception"}this.grid=a;this.store=a.getStore()},onExport:function(e){var b=this;this.metaType=this.grid.getName();if(!this.metaType){throw"MetaGrid name not set exception"}if(!this.store){throw"store not set exception"}var a=this.getCfg(),c;Ext.apply(a,{columnMappers:[],columns:[],type:this.type,start:0,limit:1000000,method:e,filename:this.filename,dummygroup:false});Ext.apply(a,this.getStoreParams());Ext.apply(a,this.store.getProxy().extraParams);c=Ext.create("Ext.form.Panel",{url:"/export/createJob",standardSubmit:false});var d=e+"-exportwindow";if(e==="csv"){d="csv-exportwindow"}Ext.widget(d,{submitCfg:a,submitMethod:b.doSubmit,submitForm:c}).show()}});Ext.define("FT.grid.ExportWindow",{extend:"FT.window.Window",bodyPadding:10,initComponent:function(){var a=this;this.bbar=["->",Ext.create("Ext.button.Button",{text:FT.i18n("Cancel"),handler:function(){a.close()}}),Ext.create("Ext.button.Button",{cls:"button-primary",text:FT.i18n("Export"),handler:a.doExport,scope:a})];this.items=[a.form=Ext.create("Ext.form.Panel",{border:false,items:this.subitems})];a.callParent()},doExport:function(){var b=this.form.getValues();var a=this.submitCfg;Ext.apply(a,b);this.submitMethod(this.submitForm,a);this.close()}});Ext.define("FT.grid.PDFExportWindow",{extend:"FT.grid.ExportWindow",alias:"widget.pdf-exportwindow",title:FT.i18n("PDF export"),modal:true,subitems:[{xtype:"textfield",fieldLabel:FT.i18n("Filename"),labelWidth:80,emptyText:FT.i18n("Enter filename"),name:"filename",width:"100%",style:"margin-bottom:10px;"},{xtype:"radiogroup",fieldLabel:FT.i18n("Layout"),labelWidth:130,defaultType:"radiofield",vertical:true,columns:1,items:[{boxLabel:FT.i18n("Portrait"),name:"layout",inputValue:"portrait",id:"portrait",fieldStyle:"border:0;",style:"margin-bottom:0;",checked:true},{boxLabel:FT.i18n("Landscape"),name:"layout",inputValue:"landscape",id:"landscape",fieldStyle:"border:0;"}]},{xtype:"radiogroup",fieldLabel:FT.i18n("Include page number"),labelWidth:130,defaultType:"radiofield",vertical:true,columns:1,items:[{boxLabel:FT.i18n("Yes"),name:"pagenumber",inputValue:"yes",id:"yes",fieldStyle:"border:0;",style:"margin-bottom:0;",checked:true},{boxLabel:FT.i18n("No"),name:"pagenumber",inputValue:"no",id:"no",fieldStyle:"border:0;"}]}]});Ext.define("FT.grid.ExcelExportWindow",{extend:"FT.grid.ExportWindow",alias:"widget.excel-exportwindow",title:FT.i18n("Excel export"),modal:true,subitems:[{xtype:"textfield",fieldLabel:FT.i18n("Filename"),labelWidth:40,emptyText:FT.i18n("Enter filename"),name:"filename",width:"100%"}]});Ext.define("FT.grid.CSVExportWindow",{extend:"FT.grid.ExcelExportWindow",alias:"widget.csv-exportwindow",title:FT.i18n("CSV export")});Ext.ns("FT.grid.exporthelper");FT.grid.exporthelper.exportReviewSession=function(a){Ext.Ajax.request({url:"/export/createJob",params:{type:"reviewsession",method:"pdf",reviewSessionId:a}})};Ext.define("FT.report.ExportWindow",{extend:"Ext.window.Window",alias:"widget.ft-report-export-window",minHeight:200,bodyPadding:20,maskUi:"ft-dark",modal:true,exportType:undefined,data:undefined,initComponent:function(){var a=this;if(!this.title){this.title=FT.i18n("Export {format}",{values:{format:Ext.String.capitalize(this.exportType)}})}this.bbar=["->",Ext.create("Ext.button.Button",{text:FT.i18n("Cancel"),handler:Ext.bind(this.close,this)}),Ext.create("Ext.button.Button",{cls:"button-primary",text:FT.i18n("Export"),handler:this._doExport,scope:this})];this.callParent()},_doExport:function(){var a={reportId:this.reportId,method:this.exportType};this.items.each(function(d,b,c){if(d.name&&Ext.isFunction(d.getValue)){a[d.name]=d.getValue()}},this);if(this.data){Ext.apply(a,this.data)}this.directFn(a,function(b,c){if(c){this.close()}else{FT.notifyError(FT.i18n("Could not export report. Please try again."))}},this)}});Ext.ns("FT.scheduler");Ext.define("FT.ViewModel",{extend:"Ext.data.Model",fields:[{name:"summaryFunctions",type:"auto",defaultValue:"{}"},{name:"viewid",type:"string"},{name:"name",type:"string",defaultValue:"no name"},{name:"isglobal",type:"bool"},{name:"iseditable",type:"bool"},{name:"isdefault",type:"bool"},{name:"context_id"},{name:"userids",type:"auto"},{name:"displayGroup",type:"string"}],idProperty:"viewid",proxy:{type:"ajax",url:"/views/saveView",reader:{type:"json",root:"view"}},save:function(){this.getProxy().extraParams.viewType=this.store.getViewType();return this.callParent(arguments)},isGlobal:function(){return this.get("isglobal")},isEditable:function(){return this.get("iseditable")},isDefault:function(){return this.get("isdefault")},getName:function(){return this.get("name")},getDisplayGroup:function(){return this.get("displayGroup")},setName:function(a){this.set("name",a)},getSummaryFunctions:function(){return Ext.decode(this.get("summaryFunctions"))},setSummaryFunctions:function(a){this.set("summaryFunctions",Ext.encode(a))},setTemporary:function(b,a){if(this.temporaryData&&this.get(b)==a){delete this.temporaryData[b];if(Ext.Object.getSize(this.temporaryData)==0){delete this.temporaryData}}else{if(this.get(b)!=a){if(!this.temporaryData){this.temporaryData={}}this.temporaryData[b]=a}}},hasTemporaryData:function(){return Ext.isDefined(this.temporaryData)},rejectTemporary:function(){delete this.temporaryData},saveTemporary:function(){var a=Ext.decode(Ext.encode(this.getChanges()));this.reject();this.set(this.temporaryData);this.save({success:function(b,c){this.set(a);FT.notifySuccess(FT.i18n("Your view was saved"))},scope:this})}});Ext.define("FT.store.ViewsStore",{extend:"Ext.data.Store",autoLoad:false,autoDestroy:false,constructor:function(a){a=a||{};this.proxy={type:"batch",url:"/batch/get",extraParams:{method:"getViews"},reader:{type:"json",root:"views"}};this.callParent([a]);assert(this.viewType,"viewType must be provided");this.getProxy().extraParams.viewType=this.viewType},getProjectDefaultView:function(a){if(Ext.isEmpty(a)){return null}var b=this.findExact("context_id",a);if(b!==-1){return this.getAt(b)}return null},getStudioDefaultView:function(){var a=this.findBy(function(b,c){return b.get("context_id")===null&&b.isDefault()});if(a!==-1){return this.getAt(a)}return null},getDefaultView:function(b){var a,c;a=this.getProjectDefaultView(b);if(a){return a}a=this.getStudioDefaultView();if(a){return a}c=this.findExact("viewid","FTRACK_DEFAULT");if(c!==-1){return this.getAt(c)}return null},getViewType:function(){return this.viewType}});Ext.define("FT.entitygrid.ViewModel",{extend:"FT.ViewModel",fields:[{name:"columns",type:"auto",defaultValue:"[]"},{name:"state",type:"auto",defaultValue:"{}"}],getColumns:function(){return this.get("columns")},getState:function(){return this.get("state")},setState:function(a){return this.set("state",a)},setColumns:function(a){return this.set("columns",a)}});Ext.ns("FT.scheduler");Ext.define("FT.scheduler.ViewHelper",{extend:"Ext.util.Observable",isViewDirty:null,previousId:null,store:null,defaultId:null,saveable:true,manageable:true,constructor:function(a){this.callParent(arguments);assert(this.store,"a view store must be provided.");this.viewStore=this.store;assert(this.viewStore.getCount()>0,"There must be views in the store");assert(this.onWriteRecord,"onWriteRecord must be implemented");this.viewStore.on("write",this.onWriteRecord,this);this.createViewSelector();this._delayedViewRefresh=new Ext.util.DelayedTask(this.refreshViews,this)},getStore:function(){return this.viewStore},getDefaultView:function(){var a,b;assert(this.viewStore.getCount()>0,"No view found");a=this.getView(this.previousId);if(a){return a}b=this.viewStore.getDefaultView(FT.app.getProjectId());if(b){return b}return this.viewStore.first()},getView:function(a){if(a==="DEFAULT_VIEW"){return this.viewStore.getDefaultView(FT.app.getProjectId())}var b=this.viewStore.findRecord("viewid",a);if(b){return b}return null},getAllViews:function(){var a=[];var c=FT.Settings.get("currentuser","userid");var b;this.viewStore.each(function(d){if(!d.isDefault()){a.push(d)}},this);return a},addView:function(a){this.viewStore.add(a)},getViewAfterSave:function(){var a=null;if(this.selectThisView){a=this.selectThisView}else{a=this.getCurrentView()}this.selectThisView=null;return a},saveAsNewView:function(b,a){var c=a.copy(true).data;a.reject();delete c.viewid;delete c.displayGroup;c.name=b;c.iseditable=true;c.isglobal=false;c.isdefault=false;var a=this.createView(c);this.selectThisView=a;this.saveView(a)},onWriteRecord:function(d,c,b){var a=this.getViewAfterSave();this.updateViewSelector(a.getId());this.viewSelector.fireEvent("viewChanged",a,false);FT.notifySuccess(FT.i18n("Your view was saved"))},saveView:function(a){if(!a.isEditable()){FT.notifyError(FT.i18n("You cannot edit this view."));return}this.fireEvent("beforesave",a);if(a.dirty||a.phantom){a.save();FT.util.intercom("SAVED-VIEW")}else{FT.notifySuccess(FT.i18n("Nothing was done"))}},saveViews:function(b){var a=this.getCurrentView();this.saveView(a);this.isViewDirty=null},createView:function(b){b.entityId=FT.Settings.get("currentuser","userid");var a=this.store.model.create(b);this.addView(a);return a},rejectOthers:function(){this.viewStore.each(function(a){a.reject()},this)},updateViewSelector:function(a){var c,b,d;c=this.getAllViews();d=[{name:FT.i18n("Default"),value:"DEFAULT_VIEW",isdefault:true,group:undefined}];Ext.each(c,function(e){d.push({name:e.getName(),value:e.getId(),isdefault:false,group:e.getDisplayGroup()})},this);this.viewSelectorStore.loadData(d);if(!Ext.isDefined(a)){b=this.getDefaultView();a=b.getId();if(b.isDefault()){a="DEFAULT_VIEW"}}this.viewSelector.select(a)},getCurrentView:function(){var a=this.viewSelector.getValue();return this.getView(a)},createViewSelector:function(){this.viewSelectorStore=Ext.create("Ext.data.Store",{fields:["name","value","group","isdefault"],mode:"local",proxy:{type:"memory",reader:{type:"json"}}});var a=[];if(this.saveable){a.push({itemId:"savebutton",text:FT.i18n("Save"),handler:function(){this.fireEvent("saveViews");this.saveViews()},scope:this});a.push({text:FT.i18n("Save as"),handler:function(){this.fireEvent("saveViews");Ext.create("FT.window.SimpleSave",{title:FT.i18n("Save view as"),saveHandler:function(d){var b="";this.viewStore.each(function(e){if(e.getName()==d){b="A view with that name already exists"}},this);if(!Ext.isEmpty(b)){return b}var c=this.getCurrentView();this.saveAsNewView(d,c)},saveScope:this})},scope:this})}if(this.manageable){a.push({text:FT.i18n("Manage views"),handler:this.openMangeViewDialog,scope:this})}if(this.saveable||this.manageable){a.push("-")}this.viewSelector=Ext.create("FT.button.Selector",{width:100,text:FT.i18n("Views"),setTextToName:true,iconType:"wide",itemType:"radio",store:this.viewSelectorStore,displayField:"name",sortItems:true,menuSorter:{sorterFn:function(e,c){var d=e.record,b=c.record;if(!d){return -1}if(!b){return 1}if(d.get("isdefault")){return -1}if(b.get("isdefault")){return 1}return d.get("name").toUpperCase()>b.get("name").toUpperCase()?1:-1}},groupField:"group",valueField:"value",selectAction:undefined,tourId:"projects-views",ui:"default",qtip:FT.tip("toolbar-button-views"),beforeItems:a,listeners:{selectionchanged:{fn:function(c){this.previousId=c;this.rejectOthers();var b=this.getView(c);this.viewSelector.fireEvent("viewChanged",b,true);this._updateSaveButton()},delay:1,scope:this}}});this.viewSelector.menu.on("beforeshow",this._updateSaveButton,this);this.updateViewSelector();if(!this.highlightTask){this.highlightTask={run:function(){var b=this.getCurrentView();if(this.isViewDirty!=b.dirty){if(b.dirty){this.isViewDirty=true;this.viewSelector.removeButtonCls("ftrack-button-grey");this.viewSelector.setButtonCls("toolbar-button-highlight");log(b)}else{this.isViewDirty=false;this.viewSelector.setButtonCls("ftrack-button-grey");this.viewSelector.removeButtonCls("toolbar-button-highlight")}}},scope:this,interval:1000};this.isViewDirty=null;Ext.TaskManager.start(this.highlightTask)}},openMangeViewDialog:function(){var a=this.getCurrentView();this._manageViewDialog=Ext.create("FT.window.ManageView",{autoShow:true,width:600,viewType:this.viewStore.getViewType(),projectId:FT.app.getProjectId(),listeners:{"default-changed":this.refreshViews,"userview-changed":this.refreshViews,"userview-removed":this.refreshViews,scope:this}})},_updateSaveButton:function(){var c=this.viewSelector.menu,b,a;if(c&&this.saveable){b=c.getComponent("savebutton");a=this.getCurrentView();if(a.isEditable()){b.enable()}else{b.disable()}}},refreshViews:function(){if(this._manageViewDialog&&this._manageViewDialog.isDestroyed!==true){this._delayedViewRefresh.delay(100);return}var a=this.getCurrentView(),b;this.viewStore.on("load",function(){this.updateViewSelector();b=this.getCurrentView();if(a.getId()!=b.getId()){this.viewSelector.fireEvent("viewChanged",b,true)}},this,{single:true});this.viewStore.load()},getViewSelector:function(){return this.viewSelector}});Ext.define("FT.scheduler.GanttViewHelper",{extend:"FT.scheduler.ViewHelper"});Ext.define("FT.data.MultiStoreInterface",{constructor:function(a){Ext.apply(this,a);this.callParent(arguments);assert(Ext.isArray(this.stores),"this.stores must be an array")},loadEntity:function(a){this._entity=Ext.clone(a);Ext.each(this.stores,function(c,b,d){Ext.apply(c.getProxy().extraParams,{entityId:a.entityId,entityType:a.entityType});c.loadPage(1)})},getEntity:function(){return this._entity},clearFilter:function(){Ext.each(this.stores,function(b,a,c){b.clearFilter()})},filter:function(a){Ext.each(this.stores,function(c,b,d){c.filter(a)})},load:function(){Ext.each(this.stores,function(b,a,c){b.load()})},sort:function(){Ext.each(this.stores,function(b,a,c){b.sort()})},getCount:function(){var a=0;Ext.each(this.stores,function(c,b,d){a+=c.getCount()});return a}});Ext.define("FT.data.MultiStoreInterfaceExtended",{constructor:function(a){Ext.apply(this,a);this.callParent(arguments);assert(Ext.isArray(this.stores),"this.stores must be an array")},loadEntity:function(a){this._entity=Ext.clone(a);Ext.each(this.stores,function(d,b,e){Ext.apply(d.getProxy().extraParams,{entityId:a.entityId,entityType:a.entityType});var g=d.getCount();var c=d.pageSize;if(g>d.pageSize&&this.lastEntityId==a.entityId){c=g;d.load({params:{limit:c,start:0,page:0}})}else{d.loadPage(1)}},this);this.lastEntityId=a.entityId},getEntity:function(){return this._entity}});Ext.define("SavedFilter",{extend:"RAW.data.Setting",fields:[{name:"settingid",type:"string"},{name:"name",type:"string"},{name:"value",type:"string"}]});Ext.define("FT.store.FilterRawSettingsStore",{extend:"RAW.data.SettingStore",autoLoad:false,autoDestroy:false,constructor:function(a){var a=a||{};a.model="SavedFilter";this.callParent(arguments);this.on("beforeload",function(){this.key=FT.Settings.get("currentuser","userid")+this.rawSettingsKey;this.getProxy().extraParams.key=this.key},this)}});Ext.create("FT.store.FilterRawSettingsStore",{title:FT.i18n("Gantt filters"),rawSettingsKey:"gantt",storeId:"FT.store.GanttFilters"});Ext.create("FT.store.FilterRawSettingsStore",{title:FT.i18n("Asset filters"),rawSettingsKey:"asset",storeId:"FT.store.AssetVersionFilters"});Ext.create("FT.store.FilterRawSettingsStore",{title:FT.i18n("Task filters"),rawSettingsKey:"task",storeId:"FT.store.TaskFilters"});Ext.create("FT.store.FilterRawSettingsStore",{title:FT.i18n("Shot filters"),rawSettingsKey:"shot",storeId:"FT.store.ShotFilters"});Ext.create("FT.store.FilterRawSettingsStore",{title:FT.i18n("Activity filters"),rawSettingsKey:"feed",storeId:"FT.store.FeedFilters"});Ext.create("FT.store.FilterRawSettingsStore",{title:FT.i18n("Note filters"),rawSettingsKey:"note",storeId:"FT.store.NoteFilters"});Ext.create("FT.store.FilterRawSettingsStore",{title:FT.i18n("Lists filters"),rawSettingsKey:"lists",storeId:"FT.store.ListFilters"});Ext.create("FT.store.FilterRawSettingsStore",{title:FT.i18n("Filebin filters"),rawSettingsKey:"filebin",storeId:"FT.store.FilebinFilters"});Ext.define("FT.model.User",{extend:"Ext.data.Model",fields:["name","userid",{name:"isactive",type:"boolean"},"thumbid"],sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.Viewers",fields:["editRenderer","ftype","printRenderer","renderName","renderLabel","renderer","summaryRenderer"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getViewers"},reader:{type:"json"}}});Ext.define("FT.data.Broadcast",{extend:"RAW.data.Setting",fields:[{name:"userids",type:"auto"},{name:"entityId",type:"auto"}]});Ext.define("FT.data.entityGridView",{extend:"RAW.data.Setting",fields:[{name:"data",type:"auto"},{name:"name",type:"string"}]});Ext.define("FT.data.EntityGridViewStore",{extend:"RAW.data.SettingStore",constructor:function(a){var a=a||{};a.model="FT.data.entityGridView";this.callParent(arguments);this.on("beforeload",function(){this.key=FT.Settings.get("currentuser","userid")+this.rawSettingsKey;this.getProxy().extraParams.key=this.key},this)}});Ext.create("FT.store.ViewsStore",{model:"FT.entitygrid.ViewModel",title:FT.i18n("My Shot views"),storeId:"FT.store.EntityGridView_shot",viewType:"shot",autoLoad:false});Ext.create("FT.store.ViewsStore",{model:"FT.entitygrid.ViewModel",storeId:"FT.store.EntityGridView_asset",viewType:"asset",title:FT.i18n("My Asset views"),autoLoad:false});Ext.define("AttributesGrid",{extend:"RAW.data.Setting",fields:[{name:"fields",type:"auto"},{name:"columns",type:"auto"},{name:"showid",type:"string"},{name:"type",type:"string"}]});Ext.create("RAW.data.SettingStore",{storeId:"FT.store.AttributesGrid",model:"AttributesGrid",autoLoad:false});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.User",model:"FT.model.User",autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_user",fields:["name","userid","isactive","thumbid"],all:true})},reader:{type:"json"}},sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.ActiveUser",model:"FT.model.User",autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_user",fields:["name","userid","isactive"],all:true,filters:{isactive:[{equals:true}]}})},reader:{type:"json"}},sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.Resources",autoDestroy:false,proxy:{type:"direct",directFn:"FTApi.Resource.query",reader:{type:"json",root:"data"}},sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.Projects",fields:["name","value"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getProjects"},reader:{type:"json"}}});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.AssetType",fields:["name","typeid","short"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_assettype",fields:["name","typeid","short"],all:true})},reader:{type:"json"}},sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{autoLoad:true,storeId:"FT.store.StatusType",fields:["name",{name:"short",mapping:"shortName"}],autoDestroy:false,proxy:{type:"memory",data:[{name:FT.i18n("Not started"),shortName:"NOT_STARTED"},{name:FT.i18n("In progress"),shortName:"IN_PROGRESS"},{name:FT.i18n("Done"),shortName:"DONE"},{name:FT.i18n("Blocked"),shortName:"BLOCKED"}]}});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.NoteCategory",fields:["name","categoryid",{name:"sort",type:"int"},"color"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_notecategory",fields:["name","sort","color","categoryid"],all:true})},reader:{type:"json"}},sorters:[{property:"sort"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.ListType",fields:["name","typeid"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_listtype",fields:["name","typeid"],all:true})},reader:{type:"json"}},sorters:[{property:"sort"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.ObjectType",fields:["name","typeid","sort","icon","children","entityType",{name:"istypeable",type:"boolean"},{name:"iscreatable",type:"boolean"},{name:"isstatusable",type:"boolean"},{name:"istaskable",type:"boolean"},{name:"isschedulable",type:"boolean"}],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getObjectTypes",data:Ext.JSON.encode({})},reader:{type:"json"}},sorters:[{property:"sort"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.AttributeTypes",fields:["name","typeid","config"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getAttributeTypes"},reader:{type:"json"}},sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.AttributeGroups",fields:["name","groupid"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getAttributeGroups"},reader:{type:"json"}},sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.Roles",fields:["name","roleid"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getRoles"},reader:{type:"json"}},sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.TaskType",fields:["name","typeid","sort","color"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_tasktype",fields:["name","typeid","sort","color"],all:true})},reader:{type:"json"}},sorters:[{property:"name"}]});Ext.create("Ext.data.Store",{storeId:"FT.store.TaskStatus",autoLoad:false,fields:["name","color","sort","statusid","state_short"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getAllStatuses"},reader:{root:"data",totalProperty:"total"}}});Ext.create("Ext.data.Store",{storeId:"FT.store.PriorityType",autoLoad:false,fields:["name","color","sort","priorityid"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"dal_query",data:Ext.JSON.encode({source:"dal_prioritytype",fields:["name","color","sort","priorityid"],all:true})},reader:{root:"data",totalProperty:"total"}},sorters:[{property:"sort",direction:"ASC"},{property:"name",direction:"ASC"}]});Ext.create("Ext.data.Store",{storeId:"FT.store.UserSettings",autoLoad:false,fields:["key","value"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getUserSettings"},reader:{type:"json"}}});Ext.create("Ext.data.Store",{storeId:"FT.store.Scope",autoLoad:false,fields:["id","name"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getAllScopes"},reader:{type:"json"}}});Ext.create("Ext.data.Store",{storeId:"FT.store.CustomAttributes",autoLoad:false,fields:["key","registerid"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getCustomAttributes"},reader:{type:"json"}}});Ext.create("Ext.data.Store",{storeId:"FT.store.SchemaTranslations",autoLoad:false,fields:["new","legacy","isAliasedWithclassifiers"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getSchemaTranslations"},reader:{type:"json"}}});Ext.ns("FT.util");FT.util.copyStore=function(c,g){if(Ext.isString(c)){var b=Ext.data.StoreManager.lookup(c)}else{var b=c}g=Ext.value(g,false);var e={model:b.model,sorters:b.sorters,autoLoad:false,autoDestroy:b.autoDestroy};var d=Ext.create("Ext.data.Store",e);var a=function(h,j){var k=h.data.clone().items;var k=Ext.clone(k);j.removeAll(true);j.loadData(k)};if(b.isLoading()||!g){b.on("load",function(h){a(h,d)},this,{single:g})}if(!b.isLoading()){a(b,d)}return d};Ext.define("FT.data.RoleTypeListModel",{extend:"Ext.data.Model",fields:[{name:"name",type:"string"},{name:"value",type:"string"}]});Ext.define("FT.data.RoleListModel",{extend:"Ext.data.Model",fields:[{name:"name",type:"string"},{name:"roleid",type:"string"},{name:"typeid"}]});Ext.define("FT.data.ProjectModel",{extend:"Ext.data.Model",fields:["name","fullname","showid"],proxy:{type:"direct",directFn:"FTAPI.Project.read"}});Ext.define("FT.data.InsightModel",{extend:"Ext.data.Model",fields:["type","title","tasktype","statusid","state",{name:"exclude_non_billable",defaultValue:true},{name:"exclude_blocked",defaultValue:true},{name:"base",defaultValue:FT.getTaskId()}],validations:[{type:"length",field:"type",min:1},{type:"length",field:"title",min:1},{type:"length",field:"base",min:1}]});Ext.define("FT.data.UndoRedoHelperBase",{mixins:{observable:"Ext.util.Observable"},remapBeforeSync:false,reloadAfterCommit:true,enableAutosave:false,pushToken:null,widget:null,saveMaskTarget:false,saving:false,leaveRemovedInStore:true,enableAdd:true,enableRemove:true,enableUpdate:true,askBeforeSaveInvisible:true,statics:{baseStack:Ext.create("Ext.util.MixedCollection"),removeGUID:"remove_31d22bfd-dbc9-45b6-b807-bd1538f51f57",copyGUID:"copy_ba6986b8-fa04-4d04-9f05-941310e5bffe",getFields:function(){return[{name:FT.data.UndoRedoHelperBase.removeGUID,defaultValue:false},{name:FT.data.UndoRedoHelperBase.copyGUID,defaultValue:null}]}},isConfirmCancel:true,initalSave:false,constructor:function(a){Ext.apply(this,a);this.stackKey=Ext.value(this.stackKey,Ext.id());this.doRemove=[];if(this.widget!=null){this.widget.on("undo",function(){this.undo()},this);this.widget.on("redo",function(){this.redo()},this)}this.syncFields=Ext.value(this.syncFields,[]);this.unLock();this.initialize();this._isPreviewChanges=false;this.isLoaded=false;this.addEvents("previewchanged","beforeadd","beforesync","aftersync","syncrecord","saveall");this.mixins.observable.constructor.call(this);if(!Ext.isDefined(this.contentType)){FT.util.Exception("contentType not defined")}this.bindStore(this.store);this.myId=Ext.id();this.task={run:function(){var b=this.unsavedChanges();if(b!=this.anyChanges){this.anyChanges=b;this.fireEvent("changesupdated",{changes:this.anyChanges,undo:this.canUndo(),redo:this.canRedo()})}},scope:this,interval:500};Ext.TaskManager.start(this.task);Ext.util.Observable.observe(FT.data.UndoRedoHelperBase);FT.data.UndoRedoHelperBase.on("saveall",function(b,c){this.syncChanges()},this);FT.data.UndoRedoHelperBase.on("cancelall",function(b,c){this.cancelChanges()},this);if(this.initalSave){this.onStoreLoad()}this.autosaveDelay=new FT.util.DelayedTask(this.autosave,this);this.on("saveChanges",this.startAutosaveDelay,this);if(this.partnerHelper){this.partnerHelper.on("saveChanges",this.startAutosaveDelay,this)}},startAutosaveDelay:function(){if(this.enableAutosave){this.autosaveDelay.delay(100)}},autosave:function(){if(this.fireEvent("beforeautosave")===false||this.issaving===true){this.autosaveDelay.delay(100);return}this.autosaveDelay.cancel();this.forceSaveChanges(true);this.syncChanges()},getSyncId:function(a){return Ext.isDefined(this.syncField)?a.get(this.syncField):a.internalId},restoreBaseStack:function(){var a=this.contentType+this.stackKey;if(a!=this.currentKey){if(!this.statics().baseStack.containsKey(a)){this.statics().baseStack.add(a,{stack:[],removedRecords:[]})}this.stack=this.statics().baseStack.get(a).stack;this.removedRecords=this.statics().baseStack.get(a).removedRecords}this.currentKey=a},initialize:function(){this.position=-1;this.stack=[];this.removedRecords=[]},undo:function(a){this.forceSaveChanges(a);if(this.position<=0){return}this.position-=1;this.store.suspendEvents();this.restoreSaved(this.position);this.store.resumeEvents();this.store.fireEvent("datachanged",this.store)},redo:function(a){this.forceSaveChanges(a);if(this.position>=this.stack.length-1){return}this.position+=1;this.store.suspendEvents();this.restoreSaved(this.position);this.store.resumeEvents();this.store.fireEvent("datachanged",this.store)},canUndo:function(){return this.position>0},canRedo:function(){return this.position<this.stack.length-1},getDataItem:function(){return Ext.isDefined(this.store.data)?this.store.data.items:this.store.tree.flatten()},getChildNodes:function(a){var d=[];for(var b=0;b<a.length;b++){var c=a[b];d.push(c);if(Ext.isDefined(c.childNodes)){d=d.concat(this.getChildNodes(c.childNodes))}}return d},restoreSaved:function(h,a){var e=Ext.isDefined(a)?this.getChildNodes(a):this.getDataItem();this.lock();var c=this.getSaved(h);if(!this.leaveRemovedInStore){this.add(this.removedRecords)}var g=[];var b={};Ext.each(c,function(m,l,o){if(m.phantom){var n=m.copy();n.modified=Ext.clone(m.modified);n.data=Ext.clone(m.data);n.dirty=Ext.clone(m.dirty);n.phantom=Ext.clone(m.phantom);n.internalId=Ext.clone(m.internalId);g.push(n)}b[m.internalId]=m},this);var k=[];Ext.each(g,function(o,l,n){var m=Ext.encode(o.data.link);if(!Ext.isDefined(this.ftData)||m.indexOf(this.ftData.entityId)!=-1){k.push(o)}},this);var d=this.getItemsToRemove(b);this.removeRecordsFromStore(d);if(Ext.isDefined(a)){this.addRecordsOnLoad(a,k)}else{this.addRecordsToStore(k)}var j=0;Ext.each(e,function(m){if(m.dirty){m.reject()}var l=b[m.internalId];if(Ext.isDefined(l)){Ext.iterate(l.modified,function(n,p,o){m.modified[n]=Ext.clone(m.get(n));m.dirty=true;m.set(n,l.get(n))},this)}j+=1},this);this.restoreRemove(e,a);this.reorderRecords(e);this.unLock();this.fireEvent("afterrestoresaved",e)},restoreRemove:function(b,a){if(this.leaveRemovedInStore){return}var c=[];Ext.each(b,function(d){if(d.get(FT.data.UndoRedoHelperBase.removeGUID)){c.push(d)}},this);if(a){Ext.each(c,function(g){var e=Ext.Array.pluck(a,"internalId");var d=e.indexOf(g.internalId);if(d>-1){Ext.Array.erase(a,d,1)}},this)}else{this.store.remove(c)}},correctMax:function(a){if(a>=this.stack.length-1){a=this.stack.length-1}return a},previewChanges:function(a,b){b=Ext.value(b,true);if(this.isTreeStore){return}this._isPreviewChanges=a;if(this._isPreviewChanges){this.lock();this.store.loadData(this.getSaved(this.position));this.unLock()}else{if(b){this.lock();this.store.load();this.unLock()}}this.fireEvent("previewchanged",this,a)},isPreviewChanges:function(){return this._isPreviewChanges},getClone:function(){var a=[];this.store.each(function(c){if(Ext.Object.getSize(c.modified)>0||c.phantom||c.removed||c.wasDirty){var b=c.copy();b.data=Ext.clone(c.data);b.modified=Ext.clone(c.modified);b.phantom=c.phantom;b.dirty=c.dirty;b.removed=c.removed;b.internalId=Ext.clone(c.internalId);a.push(b);c.wasDirty=true}},this);return a},mergeChanges:function(c,b){var a=b;if(!Ext.isDefined(c)){return a}var g=Ext.pluck(b,"internalId");var e=Ext.pluck(c,"internalId");var d=Ext.Array.difference(e,g);Ext.each(c,function(k,h,j){if(d.indexOf(k.internalId)!=-1){a.push(Ext.clone(k))}},this);return a},saveChanges:function(b){if(!Ext.isDefined(b)){b=false}if(this.isLocked()){return}this.position+=1;if(this.position<this.stack.length){Ext.Array.erase(this.stack,this.position,this.stack.length)}var c=this.getClone();var a=this.mergeChanges(this.stack[this.position-1],c);this.stack.push(a);if(this.doRemove.length>0){this.store.remove(this.doRemove);this.saveChangesDelayed.cancel();this.doRemove=[]}this.position=this.correctMax(this.position);if(!b){this.fireEvent("saveChanges")}},getSaved:function(b){var a=[];Ext.each(this.stack[b],function(e,c,d){var g=e.copy();g.phantom=e.phantom;g.data=Ext.clone(e.data);g.dirty=e.dirty;g.modified=Ext.clone(e.modified);g.removed=Ext.clone(e.removed);g.internalId=Ext.clone(e.internalId);a.push(g)},this);return a},isChangesVisible:function(){var c=this.position;var b=Ext.clone(this.stack[c]);var a=true;if(!this.isTreeStore){Ext.each(b,function(g,d,e){var h=this.store.findBy(function(j){if(j.internalId===g.internalId){return j}},this);if(h==-1){a=false}},this)}return a},syncChanges:function(d){var b=this;if(FT.isDemo()){FT.notifySuccess(FT.i18n("You cannot save in demo mode."));return}var e=this.position;var c=Ext.clone(this.stack[e]);var a=this.isChangesVisible();if(!this.askBeforeSaveInvisible||a){this.doSyncChanges(e,c,d)}else{Ext.create("FT.ConfirmDialog",{autoShow:true,title:FT.i18n("All changes not visible"),msg:"All changes are not visible, do you want to continue save anyway?",actionHandler:function(){b.doSyncChanges(e,c,d)}})}},getMappingsFromStore:function(){var a=null;if(this.store.getCount()==0){return{}}this.store.each(function(c){a=c;return false},this);var b={};Ext.each(a.fields.items,function(c){if(Ext.isDefined(c.mapping)){b[c.name]=c.mapping}},this);return b},map:function(a,c){var b=a[c];if(b!=null){return b}return c},remap:function(a){if(!this.remapBeforeSync){return a}var b={};var c=this.getMappingsFromStore();if(c==null){return a}Ext.iterate(a,function(d,g,e){b[this.map(c,d)]=a[d]},this);return b},isRecordPhantom:function(a){return a.phantom},_formatDataBeforeWrite:function(d,c,b){var e=b.fields.get(c),a=e.dateWriteFormat||e.dateFormat||"c";if(e.type===Ext.data.Types.DATE&&Ext.isDate(d)&&a){d=Ext.Date.format(d,a)}return d},getDataToSave:function(b){var e=[];var d=[];var a=[];var c=[];Ext.each(b,function(l,g,j){if(!this.fireEvent("syncRecord",l)){return}var n=l.get(FT.data.UndoRedoHelperBase.removeGUID);if(Ext.isDefined(n)&&n){if(!l.phantom){a.push({entityId:this.getSyncId(l),entityType:l.get("entityType")})}else{c.push(l)}}else{if(this.isRecordPhantom(l)){var m={};Ext.iterate(l.data,function(o,q,p){if(o.indexOf("taskcolumn_")!=0&&o.indexOf("__")!=0||o in l.modified){m[o]=q}},this);var k=Ext.clone(this.remap(m));Ext.iterate(k,function(o,q,p){k[o]=this._formatDataBeforeWrite(q,o,l)},this);k.extId=l.internalId;d.push(k)}else{var h={entityId:this.getSyncId(l),entityType:l.get("entityType"),data:[]};var m={};Ext.iterate(l.modified,function(o,q,p){m[o]=this._formatDataBeforeWrite(l.data[o],o,l)},this);Ext.each(this.syncFields,function(q,o,p){if(!Ext.isDefined(m[q])){m[q]=l.data[q]}},this);h.data=Ext.clone(this.remap(m));e.push(h)}}},this);return{update:e,add:d,remove:a,softRemove:c}},doSyncChanges:function(j,g,c){if(!Ext.isDefined(c)){c={force:false,pass:""}}var l=this.getDataToSave(g);var d=l.update;var k=l.add;var h=l.remove;var e=l.softRemove;if(this.saving||d.length<1&&k.length<1&&h.length<1&&this.fireEvent("beforeCancelSync")){if(e.length){this.initialize();var b=this.store.getNewRecords();this.store.remove(b);this.store.each(function(m){m.commit(true);m.wasDirty=false},this);this.saveChanges()}return}var a={};if(Ext.isDefined(this.extraDataCallback)){a=this.extraDataCallback.call(this.extraDataCallbackScope)}if(this.fireEvent("beforesync",d,k,h)===false){return}if(!this.enableAdd){k=[]}if(!this.enableRemove){h=[]}if(!this.enableUpdate){d=[]}if(h.length>0&&c.force===false){this.confirmRemove(h);return}this.saving=true;if(this.saveMaskTarget&&!this.enableAutosave){this.saveMask=Ext.create("Ext.LoadMask",{target:this.saveMaskTarget,msg:"Saving..."});this.saveMask.show()}Ext.Ajax.request({params:{update:Ext.encode(d),add:Ext.encode(k),remove:Ext.encode(h),sourceType:Ext.encode(this.contentType),forceData:FT.encode64(Ext.encode(c)),pushToken:this.pushToken,extraData:Ext.encode(a)},url:"/track/commitChanges",timeout:900000,success:function(q){var w=Ext.decode(q.responseText);if(!w.success){FT.notifyError(w.message);this.fireEvent("cancelsync")}else{this.initialize();FT.notifyCommitSuccess(w);if(this.reloadAfterCommit){this.isLoaded=false;this.store.load()}else{this.fireEvent("beforeaftersync",w);var n=[];this.store.each(function(x){if(x.get(FT.data.UndoRedoHelperBase.removeGUID)){n.push(x)}},this);var p=[];Ext.each(this.store.getModifiedRecords(),function(x){p.push(x.get("entityId"))});this.fireEvent("beforeremoveitems");for(var s=0;s<n.length;s++){this.store.remove(n[s])}this.fireEvent("afterremoveitems");Ext.each(this.store.getModifiedRecords(),function(x){if(p.indexOf(x.get("entityId"))===-1){x.commit(false)}});var u=[];Ext.each(w.changes,function(x){u.push(x.entityId)});var t=this.getDataItem();for(var s=0;s<t.length;s++){var m=u.indexOf(t[s].get("entityId"))!==-1;var o=Ext.isDefined(t[s].isRoot)&&t[s].isRoot();if(m||o){if(t[s].dirty==true){t[s].commit(false)}t[s].wasDirty=false}}this.store.fireEvent("datachanged",this.store);this.saveChanges(true)}this.fireEvent("aftersync",this.store,this,d,k,h)}},callback:function(){this.saving=false;if(this.saveMask){this.saveMask.hide();this.saveMask.destroy();delete this.saveMask}},scope:this})},confirmRemove:function(a){var b=Ext.create("FT.window.SelectedItemsRemoveDialog",{callback:function(){this.syncChanges({force:true})},listeners:{"user-cancel":function(){this.cancelChanges(true)},scope:this},scope:this,numberOfSelectedItems:a.length});b.show()},restoreSavedDataFromBaseStack:function(a){this.restoreBaseStack();if(this.isLoaded){this.store.suspendEvents();this.restoreSaved(this.position,a);this.store.resumeEvents()}},onProxyLoad:function(b){var d=this,c=b.getResultSet(),a=b.getRecords();if(b.success===false){return true}this.restoreSavedDataFromBaseStack(a);return true},onStoreLoad:function(){if(this.isPreviewChanges()){this.previewChanges(false,false)}if(!this.isLoaded){this.saveChanges(true)}this.fireEvent("changesvisible",this.isChangesVisible());this.isLoaded=true},onBeforeLoad:function(){this.forceSaveChanges()},isLocked:function(){return this.locked},lock:function(){this.locked=true},unLock:function(){if(Ext.isDefined(this.saveChangesDelayed)){this.saveChangesDelayed.cancel()}this.locked=false},add:function(a){a=Ext.isArray(a)?a:[a];this.store.insert(0,a)},getStoreConfig:function(){var a={entityId:Ext.decode(this.store.getProxy().extraParams.data).entityId,entityType:Ext.decode(this.store.getProxy().extraParams.data).entityType,fields:this.store.model.prototype.fields.keys};return a},cancelChanges:function(a){if(!Ext.isDefined(a)){a=false}if(!a&&this.isConfirmCancel&&this.unsavedChanges()){Ext.Msg.show({title:FT.i18n("Cancel changes"),msg:"You are about to cancel unsaved changes, do you want to continue?",width:300,buttons:Ext.Msg.YESNO,fn:function(b){if(b=="yes"){this.internalCancelChanges()}},scope:this,modal:true,closable:false,icon:Ext.window.MessageBox.WARNING})}else{this.internalCancelChanges()}},internalCancelChanges:function(a){if(!Ext.isDefined(a)){a=false}this.position=0;this.store.suspendEvents();this.restoreSaved(this.position);Ext.Array.erase(this.stack,1,this.stack.length);if(!a){this.fireEvent("cancelchanges")}this.store.resumeEvents();this.store.fireEvent("datachanged",this.store)},remove:function(a){if(a.length===0||this.isLocked()){return}var b=[];Ext.each(a,function(e,c,d){if(!Ext.isDefined(e.data[FT.data.UndoRedoHelperBase.removeGUID])){FT.util.Exception("UndoRedoHelper will not work with if removeGUID not present in model.")}e.set(FT.data.UndoRedoHelperBase.removeGUID,true);if(!this.leaveRemovedInStore){this.removedRecords.push(e)}},this);if(!this.leaveRemovedInStore){this.removedRecords=Ext.Array.unique(this.removedRecords);this.doRemove=this.doRemove.concat(a);this.saveChangesDelayed.delay(250)}},setFtData:function(a){this.ftData=a},unsavedChanges:function(){if(Ext.isDefined(this.stack)&&Ext.isDefined(this.stack[this.position])){return this.stack[this.position].length}return 0},getStore:function(){},bindStore:function(a){this.store=a;this.store.undoRedo=this;this.isTreeStore=this.store.alias[0]=="store.tree";if(this.isTreeStore&&!this.leaveRemovedInStore){FT.util.Exception("leaveRemovedInStore <false> not supported with a treestore")}this.prepareStore();this.saveChangesDelayed=new FT.util.DelayedTask(this.saveChanges,this);this.store.on({scope:this,beforeload:this.onBeforeLoad,load:this.onStoreLoad,update:this.updateItems,remove:this.removeItems,add:Ext.bind(this.saveChangesDelayed.delay,this,[250]),manualappend:Ext.bind(this.saveChangesDelayed.delay,this,[250])});this.store.idProperty=this.store.getProxy().getReader().idProperty},updateItems:function(j,e,b,c){if(Ext.isArray(c)){var g=["expanded"];var k=0;var a=c.length;var h;for(var d=0;d<a;d++){h=c[d];if(g.indexOf(h)!=-1){k++}}if(c.length!=k){this.saveChangesDelayed.delay(250)}}},removeItems:function(){this.saveChangesDelayed.delay(250)},forceSaveChanges:function(a){if(this.saveChangesDelayed.isRunning()){this.saveChangesDelayed.cancel();this.saveChanges(a)}}});Ext.define("FT.data.UndoRedoHelper",{extend:"FT.data.UndoRedoHelperBase",prepareStore:function(){this.store.onProxyLoad=Ext.Function.createInterceptor(this.store.onProxyLoad,this.onProxyLoad,this)},getItemsToRemove:function(b){var a=[];this.store.each(function(c){if(c.phantom){a.push(c)}},this);return a},addRecordsOnLoad:function(a,b){Ext.Array.insert(a,0,b)},addRecordsToStore:function(a){this.store.insert(0,a)},removeRecordsFromStore:function(a){this.store.remove(a)},reorderRecords:function(){}});Ext.define("FT.data.UndoRedoHelperTree",{extend:"FT.data.UndoRedoHelperBase",prepareStore:function(){this.store.addEvents("manualappend");this.store.each=function(b,a){Ext.each(a.store.tree.flatten(),Ext.bind(b,a))};this.store.on("read",function(c,b,a){if(a===null){return}this.restoreSavedDataFromBaseStack(a)},this)},getItemsToRemove:function(b){var a=[];this.store.each(function(c){if(c.phantom&&!Ext.isDefined(b[c.internalId])){a.push(c)}},this);return a},addRecordsOnLoad:function(a,c){var b=this.getChildNodes(a);b=b.concat(c);this.store.resumeEvents();Ext.each(b,function(d){Ext.each(c,function(e){if(d.internalId==e.getParentId()){d.insertChild(0,e)}},this)},this);this.store.suspendEvents()},addRecordsToStore:function(a){if(a.length==0){return}this.store.resumeEvents();Ext.each(a,function(b){var c=false;this.store.each(function(d){if(d.internalId==b.internalId){c=true;return false}},this);if(!c){this.store.each(function(d){var e=d.getId()?d.getId():d.get("entityId");if(e==""){e=d.internalId}if(d.get("entityId")==b.get("parent_id")){d.insertChild(0,b);return false}},this)}},this);this.store.suspendEvents()},removeRecordsFromStore:function(a){this.store.resumeEvents();Ext.each(a,function(b){b.remove()},this);this.store.suspendEvents()},reorderRecords:function(a){var c=[],b,d;this.store.resumeEvents();Ext.each(a,function(e){if(e.parentNode!==null&&e.parentNode.internalId!==e.getParentId()){c.push(e)}},this);Ext.each(c,function(e){d=e.getParentId();b=this.store.tree.nodeHash[d];if(b){b.insertChild(0,e)}},this);this.store.suspendEvents()},getDataToSave:function(){var d=this.callParent(arguments),b=[],k,g,e,j,c,a,h;Ext.each(d.update,function(l){a=[];Ext.iterate(l.data,function(m,n){g=this.store.getNodeById(l.entityId);if(!Ext.isDefined(g)){return true}if(!g.isTaskTypeColumn(m)){return true}entityIds=g.getTaskColumnEntityId(m);j=g.getDataIndexFromTaskColumnIndex(m);originalValues=g.modified[m];Ext.each(entityIds,function(p,o){if(n[o]!=originalValues[o]){k={};k[j]=n[o];b.push({entityId:p,entityType:"task",data:k})}},this);a.push(m)},this);for(h=0;h<a.length;h++){delete l.data[a[h]]}},this);d.update=d.update.concat(b);return d}});Ext.define("FT.data.UndoRedoButtonInteraction",{mixins:{observable:"Ext.util.Observable"},notificationEvent:"changesupdated",constructor:function(a){this.mixins.observable.constructor.call(this);Ext.apply(this,a);this.callParent();this.mon(this.undoRedoHelper,this.notificationEvent,function(c){try{if(this["save"]){if(c.changes){this["save"].removeCls("ftrack-button-grey");this["save"].addCls("toolbar-button-highlight")}else{this["save"].addCls("ftrack-button-grey");this["save"].removeCls("toolbar-button-highlight")}}if(this["undo"]){var b=this["undo"];if(c.undo){b.setDisabled(false)}else{b.setDisabled(true)}}if(this["redo"]){var b=this["redo"];if(c.redo){b.setDisabled(false)}else{b.setDisabled(true)}}}catch(d){log("ERROR IN Schedulinghelper setupButtonInteractions")}},this.buttons)}});Ext.define("FT.data.UndoRedoSyncer",{mixins:{observable:"Ext.util.Observable"},helpers:null,constructor:function(a){this.mixins.observable.constructor.call(this);Ext.apply(this,a);this.callParent();this.undoStack=[];this.redoStack=[];this.lock=false;Ext.each(this.helpers,function(b){b.syncId=Ext.id();b.on("saveChanges",function(){if(!this.lock){this.undoStack.push(b.syncId)}this.redoStack=[];this.updateButtons()},this);b.on("cancelchanges",function(){this.undoStack=[];this.redoStack=[];this.updateButtons();Ext.each(this.helpers,function(c){if(c!=this){c.internalCancelChanges(true)}c.stack=[[]]},this)},this)},this);this.helpers[0].on("beforesync",function(){this.lock=true},this);this.helpers[0].on("cancelsync",function(){this.lock=false},this);this.helpers[0].on("aftersync",function(){this.undoStack=[];this.redoStack=[];this.updateButtons();this.lock=false},this);this.helpers[0].on("beforeremoveitems",function(){this.lockAll()},this);this.helpers[0].on("afterremoveitems",function(){this.unLockAll()},this)},undo:function(){var a=this.undoStack.pop();if(a){this.lockAll();Ext.each(this.helpers,function(b){if(b.syncId==a){b.unLock();b.undo()}},this);this.unLockAll();this.redoStack.push(a);this.updateButtons()}},redo:function(){var a=this.redoStack.pop();if(a){this.lockAll();Ext.each(this.helpers,function(b){if(b.syncId==a){b.unLock();b.redo()}},this);this.unLockAll();this.undoStack.push(a);this.updateButtons()}},updateButtons:function(){this.helpers[0].fireEvent("updateButtons",{changes:this.undoStack.length!=0,undo:this.undoStack.length!=0,redo:this.redoStack.length!=0})},lockAll:function(){Ext.each(this.helpers,function(a){a.lock()})},unLockAll:function(){Ext.each(this.helpers,function(a){a.unLock()})}});Ext.define("Sch.util.Patch",{target:null,minVersion:null,maxVersion:null,reportUrl:null,description:null,applyFn:null,ieOnly:false,overrides:null,onClassExtended:function(a,b){if(Sch.disableOverrides){return}if(b.ieOnly&&!Ext.isIE){return}if((!b.minVersion||Ext.versions.extjs.equals(b.minVersion)||Ext.versions.extjs.isGreaterThan(b.minVersion))&&(!b.maxVersion||Ext.versions.extjs.equals(b.maxVersion)||Ext.versions.extjs.isLessThan(b.maxVersion))){if(b.applyFn){b.applyFn()}else{Ext.ClassManager.get(b.target).override(b.overrides)}}}});Ext.define("Sch.tooltip.ClockTemplate",{constructor:function(){var k=Math.PI/180,n=Math.cos,l=Math.sin,o=7,c=2,d=10,m=6,g=3,a=10,e=Ext.isIE&&(Ext.ieVersion<9||Ext.isIEQuirks);function b(p){var t=p*k,q=n(t),z=l(t),u=m*l((90-p)*k),w=m*n((90-p)*k),A=Math.min(m,m-u),s=p>180?w:0,B="progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11 = "+q+", M12 = "+-z+", M21 = "+z+", M22 = "+q+")";return Ext.String.format("filter:{0};-ms-filter:{0};top:{1}px;left:{2}px;",B,A+g,s+a)}function j(p){var t=p*k,q=n(t),z=l(t),u=o*l((90-p)*k),w=o*n((90-p)*k),A=Math.min(o,o-u),s=p>180?w:0,B="progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11 = "+q+", M12 = "+-z+", M21 = "+z+", M22 = "+q+")";return Ext.String.format("filter:{0};-ms-filter:{0};top:{1}px;left:{2}px;",B,A+c,s+d)}function h(p){return Ext.String.format("transform:rotate({0}deg);-ms-transform:rotate({0}deg);-moz-transform: rotate({0}deg);-webkit-transform: rotate({0}deg);-o-transform:rotate({0}deg);",p)}return new Ext.XTemplate('<div class="sch-clockwrap {cls}"><div class="sch-clock"><div class="sch-hourIndicator" style="{[this.getHourStyle((values.date.getHours()%12) * 30)]}">{[Ext.Date.monthNames[values.date.getMonth()].substr(0,3)]}</div><div class="sch-minuteIndicator" style="{[this.getMinuteStyle(values.date.getMinutes() * 6)]}">{[values.date.getDate()]}</div></div><span class="sch-clock-text">{text}</span></div>',{compiled:true,disableFormats:true,getMinuteStyle:e?j:h,getHourStyle:e?b:h})}});Ext.define("Sch.tooltip.Tooltip",{extend:"Ext.tip.ToolTip",requires:["Sch.tooltip.ClockTemplate"],autoHide:false,anchor:"b",padding:"0 3 0 0",showDelay:0,hideDelay:0,quickShowInterval:0,dismissDelay:0,trackMouse:false,valid:true,anchorOffset:5,shadow:false,frame:false,constructor:function(b){var a=Ext.create("Sch.tooltip.ClockTemplate");this.renderTo=document.body;this.startDate=this.endDate=new Date;if(!this.template){this.template=Ext.create("Ext.XTemplate",'<div class="{[values.valid ? "sch-tip-ok" : "sch-tip-notok"]}">','{[this.renderClock(values.startDate, values.startText, "sch-tooltip-startdate")]}','{[this.renderClock(values.endDate, values.endText, "sch-tooltip-enddate")]}',"</div>",{compiled:true,disableFormats:true,renderClock:function(d,e,c){return a.apply({date:d,text:e,cls:c})}})}this.callParent(arguments)},update:function(a,e,d){if(this.startDate-a!==0||this.endDate-e!==0||this.valid!==d){this.startDate=a;this.endDate=e;this.valid=d;var c=this.schedulerView.getFormattedDate(a),b=this.schedulerView.getFormattedEndDate(e,a);if(this.mode==="calendar"&&e.getHours()===0&&e.getMinutes()===0&&!(e.getYear()===a.getYear()&&e.getMonth()===a.getMonth()&&e.getDate()===a.getDate())){e=Sch.util.Date.add(e,Sch.util.Date.DAY,-1)}this.callParent([this.template.apply({valid:d,startDate:a,endDate:e,startText:c,endText:b})])}},show:function(b,a){if(!b){return}if(Sch.util.Date.compareUnits(this.schedulerView.getTimeResolution().unit,Sch.util.Date.DAY)>=0){this.mode="calendar";this.addCls("sch-day-resolution")}else{this.mode="clock";this.removeCls("sch-day-resolution")}this.mouseOffsets=[a-18,-7];this.setTarget(b);this.callParent();this.alignTo(b,"bl-tl",this.mouseOffsets);this.mon(Ext.getBody(),"mousemove",this.onMyMouseMove,this);this.mon(Ext.getBody(),"mouseup",this.onMyMouseUp,this,{single:true})},onMyMouseMove:function(){this.el.alignTo(this.target,"bl-tl",this.mouseOffsets)},onMyMouseUp:function(){this.mun(Ext.getBody(),"mousemove",this.onMyMouseMove,this)},afterRender:function(){this.callParent(arguments);this.el.on("mouseenter",this.onElMouseEnter,this)},onElMouseEnter:function(){this.alignTo(this.target,"bl-tl",this.mouseOffsets)}});Ext.define("Sch.util.Date",{requires:"Ext.Date",singleton:true,unitHash:null,unitsByName:{},unitNames:{YEAR:{single:"year",plural:"years",abbrev:"yr"},QUARTER:{single:"quarter",plural:"quarters",abbrev:"q"},MONTH:{single:"month",plural:"months",abbrev:"mon"},WEEK:{single:"week",plural:"weeks",abbrev:"w"},DAY:{single:"day",plural:"days",abbrev:"d"},HOUR:{single:"hour",plural:"hours",abbrev:"h"},MINUTE:{single:"minute",plural:"minutes",abbrev:"min"},SECOND:{single:"second",plural:"seconds",abbrev:"s"},MILLI:{single:"ms",plural:"ms",abbrev:"ms"}},constructor:function(){var a=Ext.Date;var c=this.unitHash={MILLI:a.MILLI,SECOND:a.SECOND,MINUTE:a.MINUTE,HOUR:a.HOUR,DAY:a.DAY,WEEK:"w",MONTH:a.MONTH,QUARTER:"q",YEAR:a.YEAR};Ext.apply(this,c);var b=this;this.units=[b.MILLI,b.SECOND,b.MINUTE,b.HOUR,b.DAY,b.WEEK,b.MONTH,b.QUARTER,b.YEAR];this.setUnitNames(this.unitNames)},setUnitNames:function(e){var d=this.unitsByName={};this.unitNames=e;var b=this.unitHash;for(var a in b){if(b.hasOwnProperty(a)){var c=b[a];e[c]=e[a];d[a]=c;d[c]=c}}},betweenLesser:function(b,d,a){var c=b.getTime();return d.getTime()<=c&&c<a.getTime()},constrain:function(b,c,a){return this.min(this.max(b,c),a)},compareUnits:function(c,b){var a=Ext.Array.indexOf(this.units,c),d=Ext.Array.indexOf(this.units,b);return a>d?1:a<d?-1:0},isUnitGreater:function(b,a){return this.compareUnits(b,a)>0},copyTimeValues:function(b,a){b.setHours(a.getHours());b.setMinutes(a.getMinutes());b.setSeconds(a.getSeconds());b.setMilliseconds(a.getMilliseconds())},add:function(b,c,e){var g=Ext.Date.clone(b);if(!c||e===0){return g}switch(c.toLowerCase()){case this.MILLI:g=new Date(b.getTime()+e);break;case this.SECOND:g=new Date(b.getTime()+e*1000);break;case this.MINUTE:g=new Date(b.getTime()+e*60000);break;case this.HOUR:g=new Date(b.getTime()+e*3600000);break;case this.DAY:g.setDate(b.getDate()+e);break;case this.WEEK:g.setDate(b.getDate()+e*7);break;case this.MONTH:var a=b.getDate();if(a>28){a=Math.min(a,Ext.Date.getLastDateOfMonth(this.add(Ext.Date.getFirstDateOfMonth(b),this.MONTH,e)).getDate())}g.setDate(a);g.setMonth(g.getMonth()+e);break;case this.QUARTER:g=this.add(b,this.MONTH,e*3);break;case this.YEAR:g.setFullYear(b.getFullYear()+e);break}return g},getMeasuringUnit:function(a){if(a===this.WEEK){return this.DAY}return a},getDurationInUnit:function(d,a,c){var b;switch(c){case this.YEAR:b=Math.round(this.getDurationInYears(d,a));break;case this.QUARTER:b=Math.round(this.getDurationInMonths(d,a)/3);break;case this.MONTH:b=Math.round(this.getDurationInMonths(d,a));break;case this.WEEK:b=Math.round(this.getDurationInDays(d,a))/7;break;case this.DAY:b=Math.round(this.getDurationInDays(d,a));break;case this.HOUR:b=Math.round(this.getDurationInHours(d,a));break;case this.MINUTE:b=Math.round(this.getDurationInMinutes(d,a));break;case this.SECOND:b=Math.round(this.getDurationInSeconds(d,a));break;case this.MILLI:b=Math.round(this.getDurationInMilliseconds(d,a));break}return b},getUnitToBaseUnitRatio:function(b,a){if(b===a){return 1}switch(b){case this.YEAR:switch(a){case this.QUARTER:return 1/4;case this.MONTH:return 1/12}break;case this.QUARTER:switch(a){case this.YEAR:return 4;case this.MONTH:return 1/3}break;case this.MONTH:switch(a){case this.YEAR:return 12;case this.QUARTER:return 3}break;case this.WEEK:switch(a){case this.DAY:return 1/7;case this.HOUR:return 1/168}break;case this.DAY:switch(a){case this.WEEK:return 7;case this.HOUR:return 1/24;case this.MINUTE:return 1/1440}break;case this.HOUR:switch(a){case this.DAY:return 24;case this.MINUTE:return 1/60}break;case this.MINUTE:switch(a){case this.HOUR:return 60;case this.SECOND:return 1/60;case this.MILLI:return 1/60000}break;case this.SECOND:switch(a){case this.MILLI:return 1/1000}break;case this.MILLI:switch(a){case this.SECOND:return 1000}break}return -1},getDurationInMilliseconds:function(b,a){return a-b},getDurationInSeconds:function(b,a){return(a-b)/1000},getDurationInMinutes:function(b,a){return(a-b)/60000},getDurationInHours:function(b,a){return(a-b)/3600000},getDurationInDays:function(b,a){return(a-b)/86400000},getDurationInBusinessDays:function(h,b){var c=Math.round((b-h)/86400000),a=0,g;for(var e=0;e<c;e++){g=this.add(h,this.DAY,e).getDay();if(g!==6&&g!==0){a++}}return a},getDurationInMonths:function(b,a){return(a.getFullYear()-b.getFullYear())*12+(a.getMonth()-b.getMonth())},getDurationInYears:function(b,a){return this.getDurationInMonths(b,a)/12},min:function(b,a){return b<a?b:a},max:function(b,a){return b>a?b:a},intersectSpans:function(c,d,b,a){return this.betweenLesser(c,b,a)||this.betweenLesser(b,c,d)},getNameOfUnit:function(a){a=this.getUnitByName(a);switch(a.toLowerCase()){case this.YEAR:return"YEAR";case this.QUARTER:return"QUARTER";case this.MONTH:return"MONTH";case this.WEEK:return"WEEK";case this.DAY:return"DAY";case this.HOUR:return"HOUR";case this.MINUTE:return"MINUTE";case this.SECOND:return"SECOND";case this.MILLI:return"MILLI"}throw"Incorrect UnitName"},getReadableNameOfUnit:function(b,a){return this.unitNames[b][a?"plural":"single"]},getShortNameOfUnit:function(a){return this.unitNames[a].abbrev},getUnitByName:function(a){if(!this.unitsByName[a]){Ext.Error.raise("Unknown unit name: "+a)}return this.unitsByName[a]},getNext:function(c,h,a,g){var e=Ext.Date.clone(c);g=arguments.length<4?1:g;a=a||1;switch(h){case this.MILLI:e=this.add(c,h,a);break;case this.SECOND:e=this.add(c,h,a);e.setMilliseconds(0);break;case this.MINUTE:e=this.add(c,h,a);e.setSeconds(0);e.setMilliseconds(0);break;case this.HOUR:e=this.add(c,h,a);e.setMinutes(0);e.setSeconds(0);e.setMilliseconds(0);break;case this.DAY:var d=c.getHours()===23&&this.add(e,this.HOUR,1).getHours()===1;if(d){e=this.add(e,this.DAY,2);Ext.Date.clearTime(e);return e}Ext.Date.clearTime(e);e=this.add(e,this.DAY,a);break;case this.WEEK:Ext.Date.clearTime(e);var b=e.getDay();e=this.add(e,this.DAY,g-b+7*(a-(g<=b?0:1)));if(e.getDay()!==g){e=this.add(e,this.HOUR,1)}else{Ext.Date.clearTime(e)}break;case this.MONTH:e=this.add(e,this.MONTH,a);e.setDate(1);Ext.Date.clearTime(e);break;case this.QUARTER:e=this.add(e,this.MONTH,(a-1)*3+(3-e.getMonth()%3));Ext.Date.clearTime(e);e.setDate(1);break;case this.YEAR:e=new Date(e.getFullYear()+a,0,1);break;default:throw"Invalid date unit"}return e},getNumberOfMsFromTheStartOfDay:function(a){return a-Ext.Date.clearTime(a,true)||86400000},getNumberOfMsTillTheEndOfDay:function(a){return this.getStartOfNextDay(a,true)-a},getStartOfNextDay:function(b,e){var d=this.add(Ext.Date.clearTime(b,e),this.DAY,1);if(d.getDate()==b.getDate()){var c=this.add(Ext.Date.clearTime(b,e),this.DAY,2).getTimezoneOffset();var a=b.getTimezoneOffset();d=this.add(d,this.MINUTE,a-c)}return d},getEndOfPreviousDay:function(b){var a=Ext.Date.clearTime(b,true);if(a-b){return a}else{return this.add(a,this.DAY,-1)}},timeSpanContains:function(c,b,d,a){return d-c>=0&&b-a>=0}});Ext.define("Sch.util.Debug",{singleton:true,runDiagnostics:function(){var d;var a=window.console;if(a&&a.log){d=function(n){a.log(n)}}else{if(!window.schedulerDebugWin){window.schedulerDebugWin=new Ext.Window({height:400,width:500,bodyStyle:"padding:10px",closeAction:"hide",autoScroll:true})}window.schedulerDebugWin.show();schedulerDebugWin.update("");d=function(n){schedulerDebugWin.update((schedulerDebugWin.body.dom.innerHTML||"")+n+"<br/>")}}var e=Ext.select(".sch-schedulerpanel");if(e.getCount()===0){d("No scheduler component found")}var m=Ext.getCmp(e.elements[0].id),k=m.getResourceStore(),c=m.getEventStore();if(!c.isEventStore){d("Your event store must be or extend Sch.data.EventStore")}d("Scheduler view start: "+m.getStart()+", end: "+m.getEnd());if(!k){d("No store configured");return}if(!c){d("No event store configured");return}d(k.getCount()+" records in the resource store");d(c.getCount()+" records in the eventStore");var l=c.model.prototype.idProperty;var b=k.model.prototype.idProperty;var j=c.model.prototype.fields.getByKey(l);var g=k.model.prototype.fields.getByKey(b);if(!(c.model.prototype instanceof Sch.model.Event)){d("Your event model must extend Sch.model.Event")}if(!(k.model.prototype instanceof Sch.model.Resource)){d("Your event model must extend Sch.model.Resource")}if(!j){d("idProperty on the event model is incorrectly setup, value: "+l)}if(!g){d("idProperty on the resource model is incorrectly setup, value: "+b)}var h=m.getSchedulingView();d(h.el.select(h.eventSelector).getCount()+" events present in the DOM");if(c.getCount()>0){if(!c.first().getStartDate()||!(c.first().getStartDate() instanceof Date)){d("The eventStore reader is misconfigured - The StartDate field is not setup correctly, please investigate");d("StartDate is configured with dateFormat: "+c.model.prototype.fields.getByKey("StartDate").dateFormat);d("See Ext JS docs for information about different date formats: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Date")}if(!c.first().getEndDate()||!(c.first().getEndDate() instanceof Date)){d("The eventStore reader is misconfigured - The EndDate field is not setup correctly, please investigate");d("EndDate is configured with dateFormat: "+c.model.prototype.fields.getByKey("EndDate").dateFormat);d("See Ext JS docs for information about different date formats: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Date")}if(c.proxy&&c.proxy.reader&&c.proxy.reader.jsonData){d("Dumping jsonData to console");console&&console.dir&&console.dir(c.proxy.reader.jsonData)}d("Records in the event store:");c.each(function(o,n){d(n+1+". "+o.startDateField+":"+o.getStartDate()+", "+o.endDateField+":"+o.getEndDate()+", "+o.resourceIdField+":"+o.getResourceId());if(!o.getStartDate()){d(o.getStartDate())}})}else{d("Event store has no data. Has it been loaded properly?")}if(k instanceof Ext.data.TreeStore){k=k.nodeStore}if(k.getCount()>0){d("Records in the resource store:");k.each(function(o,n){d(n+1+". "+o.idProperty+":"+o.getId());return})}else{d("Resource store has no data.");return}d("Everything seems to be setup ok!")}});Ext.define("Sch.util.DragTracker",{extend:"Ext.dd.DragTracker",xStep:1,yStep:1,setXStep:function(a){this.xStep=a},setYStep:function(a){this.yStep=a},getRegion:function(){var e=this.startXY,d=this.getXY(),b=Math.min(e[0],d[0]),g=Math.min(e[1],d[1]),c=Math.abs(e[0]-d[0]),a=Math.abs(e[1]-d[1]);return new Ext.util.Region(g,b+c,g+a,b)},onMouseDown:function(g,d){if(this.disabled||g.dragTracked){return}var c=g.getXY(),h,b,a=c[0],j=c[1];if(this.xStep>1){h=this.el.getX();a-=h;a=Math.round(a/this.xStep)*this.xStep;a+=h}if(this.yStep>1){b=this.el.getY();j-=b;j=Math.round(j/this.yStep)*this.yStep;j+=b}this.dragTarget=this.delegate?d:this.handle.dom;this.startXY=this.lastXY=[a,j];this.startRegion=Ext.fly(this.dragTarget).getRegion();if(this.fireEvent("mousedown",this,g)===false||this.fireEvent("beforedragstart",this,g)===false||this.onBeforeStart(g)===false){return}this.mouseIsDown=true;g.dragTracked=true;if(this.preventDefault!==false){g.preventDefault()}Ext.getDoc().on({scope:this,mouseup:this.onMouseUp,mousemove:this.onMouseMove,selectstart:this.stopSelect});if(this.autoStart){this.timer=Ext.defer(this.triggerStart,this.autoStart===true?1000:this.autoStart,this,[g])}},onMouseMove:function(h,g){if(this.active&&Ext.isIE&&!h.browserEvent.button){h.preventDefault();this.onMouseUp(h);return}h.preventDefault();var d=h.getXY(),b=this.startXY;if(!this.active){if(Math.max(Math.abs(b[0]-d[0]),Math.abs(b[1]-d[1]))>this.tolerance){this.triggerStart(h)}else{return}}var a=d[0],j=d[1];if(this.xStep>1){a-=this.startXY[0];a=Math.round(a/this.xStep)*this.xStep;a+=this.startXY[0]}if(this.yStep>1){j-=this.startXY[1];j=Math.round(j/this.yStep)*this.yStep;j+=this.startXY[1]}var c=this.xStep>1||this.yStep>1;if(!c||a!==d[0]||j!==d[1]){this.lastXY=[a,j];if(this.fireEvent("mousemove",this,h)===false){this.onMouseUp(h)}else{this.onDrag(h);this.fireEvent("drag",this,h)}}}});Ext.define("Sch.preset.ViewPreset",{columnWidth:null,rowHeight:null,timeAxisColumnWidth:null,dateFormat:"G:i",shiftUnit:"HOUR",shiftIncrement:1,defaultSpan:12,timeResolution:null,headerConfig:null,headers:null,mainHeader:0,constructor:function(a){Ext.apply(this,a)},getHeaders:function(){if(this.headers){return this.headers}var a=this.headerConfig;this.mainHeader=a.top?1:0;return this.headers=[].concat(a.top||[],a.middle||[],a.bottom||[])},getMainHeader:function(){return this.getHeaders()[this.mainHeader]},getBottomHeader:function(){var a=this.getHeaders();return a[a.length-1]},getTimeAxisConfig:function(){return{mainUnit:this.getMainHeader().unit,unit:this.getBottomHeader().unit,increment:this.getBottomHeader().increment,shiftUnit:this.shiftUnit,shiftIncrement:this.shiftIncrement,defaultSpan:this.defaultSpan,resolutionUnit:this.timeResolution.unit,resolutionIncrement:this.timeResolution.increment}},clone:function(){var a={};var b=this;Ext.each(["columnWidth","rowHeight","timeAxisColumnWidth","dateFormat","shiftUnit","shiftIncrement","defaultSpan","timeResolution","headerConfig"],function(c){a[c]=b[c]});return new this.self(Ext.clone(a))}});Ext.define("Sch.preset.Manager",{extend:"Ext.util.MixedCollection",requires:["Sch.util.Date","Sch.preset.ViewPreset"],singleton:true,constructor:function(){this.callParent(arguments);this.registerDefaults()},registerPreset:function(b,a){if(a){var c=a.headerConfig;var d=Sch.util.Date;for(var e in c){if(c.hasOwnProperty(e)){if(d[c[e].unit]){c[e].unit=d[c[e].unit.toUpperCase()]}}}if(!a.timeColumnWidth){a.timeColumnWidth=50}if(a.timeResolution&&d[a.timeResolution.unit]){a.timeResolution.unit=d[a.timeResolution.unit.toUpperCase()]}if(a.shiftUnit&&d[a.shiftUnit]){a.shiftUnit=d[a.shiftUnit.toUpperCase()]}}if(this.isValidPreset(a)){if(this.containsKey(b)){this.removeAtKey(b)}this.add(b,new Sch.preset.ViewPreset(a))}else{throw"Invalid preset, please check your configuration"}},isValidPreset:function(a){var d=Sch.util.Date,b=true,c=Sch.util.Date.units;for(var e in a.headerConfig){if(a.headerConfig.hasOwnProperty(e)){b=b&&Ext.Array.indexOf(c,a.headerConfig[e].unit)>=0}}if(a.timeResolution){b=b&&Ext.Array.indexOf(c,a.timeResolution.unit)>=0}if(a.shiftUnit){b=b&&Ext.Array.indexOf(c,a.shiftUnit)>=0}return b},getPreset:function(a){return this.get(a)},deletePreset:function(a){this.removeAtKey(a)},registerDefaults:function(){var b=this,a=this.defaultPresets;for(var c in a){b.registerPreset(c,a[c])}},defaultPresets:{minuteAndHour:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"G:i",shiftIncrement:1,shiftUnit:"HOUR",defaultSpan:24,timeResolution:{unit:"MINUTE",increment:30},headerConfig:{middle:{unit:"MINUTE",increment:"30",align:"center",dateFormat:"i"},top:{unit:"HOUR",align:"center",dateFormat:"D, GA/m"}}},hourAndDay:{timeColumnWidth:60,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"G:i",shiftIncrement:1,shiftUnit:"DAY",defaultSpan:24,timeResolution:{unit:"MINUTE",increment:30},headerConfig:{middle:{unit:"HOUR",align:"center",dateFormat:"G:i"},top:{unit:"DAY",align:"center",dateFormat:"D d/m"}}},dayAndWeek:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d G:i",shiftUnit:"DAY",shiftIncrement:1,defaultSpan:5,timeResolution:{unit:"HOUR",increment:1},headerConfig:{middle:{unit:"DAY",align:"center",dateFormat:"D d M"},top:{unit:"WEEK",align:"center",renderer:function(c,b,a){return Sch.util.Date.getShortNameOfUnit("WEEK")+"."+Ext.Date.format(c,"W M Y")}}}},weekAndDay:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:1,timeResolution:{unit:"DAY",increment:1},headerConfig:{bottom:{unit:"DAY",align:"center",increment:1,dateFormat:"d/m"},middle:{unit:"WEEK",dateFormat:"D d M"}}},weekAndMonth:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:5,defaultSpan:6,timeResolution:{unit:"DAY",increment:1},headerConfig:{middle:{unit:"WEEK",renderer:function(c,b,a){return Ext.Date.format(c,"d M")}},top:{unit:"MONTH",align:"center",dateFormat:"M Y"}}},monthAndYear:{timeColumnWidth:110,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftIncrement:3,shiftUnit:"MONTH",defaultSpan:12,timeResolution:{unit:"DAY",increment:1},headerConfig:{middle:{unit:"MONTH",align:"center",dateFormat:"M Y"},top:{unit:"YEAR",align:"center",dateFormat:"Y"}}},year:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"YEAR",shiftIncrement:1,defaultSpan:1,timeResolution:{unit:"MONTH",increment:1},headerConfig:{middle:{unit:"QUARTER",align:"center",renderer:function(c,b,a){return Ext.String.format(Sch.util.Date.getShortNameOfUnit("QUARTER").toUpperCase()+"{0}",Math.floor(c.getMonth()/3)+1)}},top:{unit:"YEAR",align:"center",dateFormat:"Y"}}},weekAndDayLetter:{timeColumnWidth:20,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"DAY",increment:1},headerConfig:{bottom:{unit:"DAY",align:"center",renderer:function(a){return Ext.Date.dayNames[a.getDay()].substring(0,1)}},middle:{unit:"WEEK",dateFormat:"D d M Y"}}},weekDateAndMonth:{timeColumnWidth:30,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"DAY",increment:1},headerConfig:{middle:{unit:"WEEK",align:"center",dateFormat:"d"},top:{unit:"MONTH",dateFormat:"Y F"}}}}});Ext.define("Sch.feature.AbstractTimeSpan",{extend:"Ext.AbstractPlugin",lockableScope:"top",schedulerView:null,timeAxis:null,containerEl:null,expandToFitView:false,disabled:false,cls:null,template:null,store:null,renderElementsBuffered:false,renderDelay:15,refreshSizeOnItemUpdate:true,_resizeTimer:null,_renderTimer:null,constructor:function(a){this.uniqueCls=this.uniqueCls||"sch-timespangroup-"+Ext.id();Ext.apply(this,a);this.callParent(arguments)},setDisabled:function(a){if(a){this.removeElements()}this.disabled=a},getElements:function(){if(this.containerEl){return this.containerEl.select("."+this.uniqueCls)}return null},removeElements:function(){var a=this.getElements();if(a){a.each(function(b){b.destroy()})}},init:function(a){if(Ext.versions.touch&&!a.isReady()){a.on("viewready",function(){this.init(a)},this);return}this.schedulerView=a.getSchedulingView();this.panel=a;this.timeAxis=a.getTimeAxis();if(!this.store){Ext.Error.raise("Error: You must define a store for this plugin")}if(!this.schedulerView.getEl()){this.schedulerView.on({afterrender:this.onAfterRender,scope:this})}else{this.onAfterRender()}this.schedulerView.on({destroy:this.onDestroy,scope:this})},onAfterRender:function(c){var a=this.schedulerView;this.containerEl=a.getSecondaryCanvasEl();this.storeListeners={load:this.renderElements,datachanged:this.renderElements,clear:this.renderElements,add:this.renderElements,remove:this.renderElements,update:this.refreshSingle,addrecords:this.renderElements,removerecords:this.renderElements,updaterecord:this.refreshSingle,scope:this};this.store.on(this.storeListeners);if(Ext.data.NodeStore&&a.store instanceof Ext.data.NodeStore){if(a.animate){}else{a.mon(a.store,{expand:this.renderElements,collapse:this.renderElements,scope:this})}}a.on({bufferedrefresh:this.renderElements,refresh:this.renderElements,itemadd:this.refreshSizeOnItemUpdate?this.refreshSizes:this.renderElements,itemremove:this.refreshSizeOnItemUpdate?this.refreshSizes:this.renderElements,itemupdate:this.refreshSizeOnItemUpdate?this.refreshSizes:this.renderElements,groupexpand:this.renderElements,groupcollapse:this.renderElements,columnwidthchange:this.renderElements,resize:this.renderElements,scope:this});if(a.headerCt){a.headerCt.on({add:this.renderElements,remove:this.renderElements,scope:this})}this.panel.on({viewchange:this.renderElements,show:this.refreshSizes,orientationchange:function(){this.renderElementsBuffered=false;clearTimeout(this._renderTimer);clearTimeout(this._resizeTimer)},scope:this});var b=a.getRowContainerEl();if(b&&b.down(".sch-timetd")){this.renderElements()}},refreshSizes:function(){clearTimeout(this._resizeTimer);this._resizeTimer=Ext.Function.defer(function(){if(!this.schedulerView.isDestroyed&&this.schedulerView.getOrientation()==="horizontal"){var a=this.schedulerView.getTimeSpanRegion(new Date,null,this.expandToFitView);this.getElements().setHeight(a.bottom-a.top)}},this.renderDelay,this)},renderElements:function(){if(this.renderElementsBuffered||this.disabled){return}this.renderElementsBuffered=true;clearTimeout(this._renderTimer);this._renderTimer=Ext.Function.defer(this.renderElementsInternal,this.renderDelay,this)},renderElementsInternal:function(){this.renderElementsBuffered=false;if(this.disabled||this.schedulerView.isDestroyed){return}if(Ext.versions.extjs&&!this.schedulerView.el.down("table")){return}this.removeElements();Ext.DomHelper.append(this.containerEl,this.generateMarkup())},generateMarkup:function(b){var d=this.timeAxis.getStart(),a=this.timeAxis.getEnd(),c=this.getElementData(d,a,null,b);return this.template.apply(c)},getElementData:function(b,a){throw"Abstract method call"},onDestroy:function(){clearTimeout(this._renderTimer);clearTimeout(this._resizeTimer);if(this.store.autoDestroy){this.store.destroy()}this.store.un(this.storeListeners)},refreshSingle:function(c,b){var e=Ext.get(this.uniqueCls+"-"+b.internalId);if(e){var h=this.timeAxis.getStart(),a=this.timeAxis.getEnd(),g=this.getElementData(h,a,[b])[0],d=b.clsField||"Cls";if(g){e.dom.className=this.cls+" "+this.uniqueCls+" "+(g[d]||"");e.setTop(g.top);e.setLeft(g.left);e.setSize(g.width,g.height)}else{Ext.destroy(e)}}else{this.renderElements()}}});Ext.define("Sch.feature.DragCreator",{requires:["Ext.XTemplate","Sch.util.Date","Sch.util.DragTracker","Sch.tooltip.Tooltip","Sch.tooltip.ClockTemplate"],disabled:false,showHoverTip:true,showDragTip:true,dragTolerance:2,validatorFn:Ext.emptyFn,validatorFnScope:null,constructor:function(a){Ext.apply(this,a||{});this.lastTime=new Date;this.template=this.template||Ext.create("Ext.Template",'<div class="sch-dragcreator-proxy"><div class="sch-event-inner">&#160;</div></div>',{compiled:true,disableFormats:true});this.schedulerView.on("destroy",this.onSchedulerDestroy,this);this.schedulerView.el.on("mousemove",this.setupTooltips,this,{single:true});this.callParent([a])},setDisabled:function(a){this.disabled=a;if(this.hoverTip){this.hoverTip.setDisabled(a)}if(this.dragTip){this.dragTip.setDisabled(a)}},getProxy:function(){if(!this.proxy){this.proxy=this.template.append(this.schedulerView.getSecondaryCanvasEl(),{},true)}return this.proxy},onMouseMove:function(c){var a=this.hoverTip;if(a.disabled||this.dragging){return}if(c.getTarget("."+this.schedulerView.timeCellCls,5)&&!c.getTarget(this.schedulerView.eventSelector)){var b=this.schedulerView.getDateFromDomEvent(c,"floor");if(b){if(b-this.lastTime!==0){this.updateHoverTip(b);if(a.hidden){a[Sch.util.Date.compareUnits(this.schedulerView.getTimeResolution().unit,Sch.util.Date.DAY)>=0?"addCls":"removeCls"]("sch-day-resolution");a.show()}}}else{a.hide();this.lastTime=null}}else{a.hide();this.lastTime=null}},updateHoverTip:function(a){if(a){var b=this.schedulerView.getFormattedDate(a);this.hoverTip.update(this.hoverTipTemplate.apply({date:a,text:b}));this.lastTime=a}},onBeforeDragStart:function(d,h){var b=this.schedulerView,a=h.getTarget("."+b.timeCellCls,5);if(a&&!h.getTarget(b.eventSelector)){var c=b.resolveResource(a);var g=b.getDateFromDomEvent(h);if(!this.disabled&&a&&b.fireEvent("beforedragcreate",b,c,g,h)!==false){this.resourceRecord=c;this.originalStart=g;this.resourceRegion=b.getScheduleRegion(this.resourceRecord,this.originalStart);this.dateConstraints=b.getDateConstraints(this.resourceRecord,this.originalStart);return true}}return false},onDragStart:function(){var d=this,b=d.schedulerView,c=d.getProxy(),a=d.schedulerView.snapToIncrement;this.dragging=true;if(this.hoverTip){this.hoverTip.disable()}d.start=d.originalStart;d.end=d.start;if(b.getOrientation()==="horizontal"){d.rowBoundaries={top:d.resourceRegion.top,bottom:d.resourceRegion.bottom};c.setRegion({top:d.rowBoundaries.top,right:d.tracker.startXY[0],bottom:d.rowBoundaries.bottom,left:d.tracker.startXY[0]})}else{d.rowBoundaries={left:d.resourceRegion.left,right:d.resourceRegion.right};c.setRegion({top:d.tracker.startXY[1],right:d.resourceRegion.right,bottom:d.tracker.startXY[1],left:d.resourceRegion.left})}c.show();d.schedulerView.fireEvent("dragcreatestart",d.schedulerView);if(d.showDragTip){d.dragTip.enable();d.dragTip.update(d.start,d.end,true);d.dragTip.show(c);d.dragTip.el.setStyle("visibility","visible")}},onDrag:function(g,j){var d=this,c=d.schedulerView,b=d.tracker.getRegion().constrainTo(d.resourceRegion),h=c.getStartEndDatesFromRegion(b,"round");if(!h){return}d.start=h.start||d.start;d.end=h.end||d.end;var a=d.dateConstraints;if(a){d.end=Sch.util.Date.constrain(d.end,a.start,a.end);d.start=Sch.util.Date.constrain(d.start,a.start,a.end)}d.valid=this.validatorFn.call(d.validatorFnScope||d,d.resourceRecord,d.start,d.end)!==false;if(d.showDragTip){d.dragTip.update(d.start,d.end,d.valid)}Ext.apply(b,d.rowBoundaries);this.getProxy().setRegion(b)},onDragEnd:function(d,g){var c=this,a=c.schedulerView,b=true;c.dragging=false;if(c.showDragTip){c.dragTip.disable()}if(!c.start||!c.end||c.end-c.start<=0){c.valid=false}c.createContext={start:c.start,end:c.end,resourceRecord:c.resourceRecord,e:g,finalize:function(){c.finalize.apply(c,arguments)}};if(c.valid){b=a.fireEvent("beforedragcreatefinalize",c,c.createContext,g)!==false}if(b){c.finalize(c.valid)}},finalize:function(a){var b=this.createContext;var d=this.schedulerView;if(a){var c=Ext.create(d.eventStore.model);if(Ext.data.TreeStore&&d.eventStore instanceof Ext.data.TreeStore){c.set("leaf",true);d.eventStore.append(c)}c.assign(b.resourceRecord);c.setStartEndDate(b.start,b.end);d.fireEvent("dragcreateend",d,c,b.resourceRecord,b.e)}else{this.proxy.hide()}this.schedulerView.fireEvent("afterdragcreate",d);if(this.hoverTip){this.hoverTip.enable()}},tipCfg:{trackMouse:true,bodyCssClass:"sch-hovertip",autoHide:false,dismissDelay:1000,showDelay:300},dragging:false,setupTooltips:function(){var b=this,a=b.schedulerView;b.tracker=new Sch.util.DragTracker({el:a.el,tolerance:b.dragTolerance,listeners:{beforedragstart:b.onBeforeDragStart,dragstart:b.onDragStart,drag:b.onDrag,dragend:b.onDragEnd,scope:b}});if(this.showDragTip){this.dragTip=Ext.create("Sch.tooltip.Tooltip",{cls:"sch-dragcreate-tip",schedulerView:a,listeners:{beforeshow:function(){return b.dragging}}})}if(b.showHoverTip){var c=a.el;b.hoverTipTemplate=b.hoverTipTemplate||Ext.create("Sch.tooltip.ClockTemplate");b.hoverTip=new Ext.ToolTip(Ext.applyIf({renderTo:document.body,target:c,disabled:b.disabled},b.tipCfg));b.hoverTip.on("beforeshow",b.tipOnBeforeShow,b);a.mon(c,{mouseleave:function(){b.hoverTip.hide()},mousemove:b.onMouseMove,scope:b})}},onSchedulerDestroy:function(){if(this.hoverTip){this.hoverTip.destroy()}if(this.dragTip){this.dragTip.destroy()}if(this.tracker){this.tracker.destroy()}if(this.proxy){Ext.destroy(this.proxy);this.proxy=null}},tipOnBeforeShow:function(a){return !this.disabled&&!this.dragging&&this.lastTime!==null}});Ext.define("Sch.feature.DropZone",{extend:"Ext.dd.DropZone",constructor:function(){this.callParent(arguments);var a=this.schedulerView;this.proxyTpl=this.proxyTpl||new Ext.XTemplate('<span class="sch-dd-newtime">{[ this.getText(values) ]}</span>',{getText:function(b){var c=a.getFormattedDate(b.StartDate);if(b.Duration){c+=" - "+a.getFormattedEndDate(Sch.util.Date.add(b.StartDate,Sch.util.Date.MILLI,b.Duration),b.StartDate)}return c}})},validatorFn:Ext.emptyFn,getTargetFromEvent:function(a){return a.getTarget("."+this.schedulerView.timeCellCls)},onNodeEnter:function(d,a,c,b){Ext.fly(d).addCls("sch-dd-cellover")},onNodeOut:function(d,a,c,b){Ext.fly(d).removeCls("sch-dd-cellover")},onNodeOver:function(k,a,j,h){var d=this.schedulerView,c=d.getDateFromDomEvent(j,"round"),g;if(!c){return this.dropNotAllowed}this.proxyTpl.overwrite(a.proxy.el.down(".sch-dd-proxy-hd"),{StartDate:c,Duration:h.duration});var b=d.resolveResource(j.getTarget("."+d.timeCellCls));if(this.validatorFn.call(this.validatorFnScope||this,h.records,b,c,h.duration,j)!==false){return this.dropAllowed+(this.enableCopy&&j.ctrlKey?" add":"")}else{return this.dropNotAllowed}},onNodeDrop:function(k,c,l,h){var n=this.schedulerView,b=n.resolveResource(k),g=n.getDateFromDomEvent(l,"round"),a=false,m=this.enableCopy&&l.ctrlKey;if(g&&this.validatorFn.call(this.validatorFnScope||this,h.records,b,g,h.duration,l)!==false){var d,j=n.resourceStore.indexOf(b);if(m){d=this.copyRecords(h.records,g,b,h.sourceEventRecord,j);a=true}else{a=this.updateRecords(h.records,g,b,h.sourceEventRecord,j,h)}if(a){n.getSelectionModel().deselectAll()}n.fireEvent("eventdrop",n,m?d:h.records,m)}n.fireEvent("aftereventdrop",n);return a},updateRecords:function(e,c,t,m,d,j){if(e.length===1){m.beginEdit();m.assign(t);m.setStartDate(c);m.setEndDate(Sch.util.Date.add(c,Sch.util.Date.MILLI,j.duration));m.endEdit();return true}var k=m.getStartDate(),p=this.schedulerView.resourceStore,s=c-k,l=p.indexOf(m.getResource()),o,n,g,a,q,b=p.getCount(),h;for(h=0;h<e.length;h++){a=e[h];n=p.indexOf(a.getResource());q=n-l+d;if(q<0||q>b){return false}}for(h=0;h<e.length;h++){a=e[h];n=p.indexOf(a.getResource());o=n-l;g=p.getAt(d+o);a.beginEdit();a.assign(g);a.setStartDate(Sch.util.Date.add(a.getStartDate(),Sch.util.Date.MILLI,s));a.setEndDate(Sch.util.Date.add(a.getEndDate(),Sch.util.Date.MILLI,s));a.endEdit()}return true},copyRecords:function(d,h,b,g,c){var a=d[0],e=a.copy(),j=g.getEndDate()-g.getStartDate();e.assign(b);e.setStartDate(h);e.setEndDate(Sch.util.Date.add(h,Sch.util.Date.MILLI,j));return[e]}});Ext.define("Sch.feature.PointDragZone",{extend:"Ext.dd.DragZone",requires:["Sch.tooltip.Tooltip"],repairHighlight:false,repairHighlightColor:"transparent",containerScroll:true,dropAllowed:"sch-dragproxy",dropNotAllowed:"sch-dragproxy",constructor:function(b,a){this.proxy=this.proxy||Ext.create("Ext.dd.StatusProxy",{shadow:false,dropAllowed:this.dropAllowed,dropNotAllowed:this.dropNotAllowed});this.callParent(arguments);this.isTarget=true;this.scroll=false;this.ignoreSelf=false;Ext.dd.ScrollManager.register(this.schedulerView.el);if(this.schedulerView.rtl){this.proxy.addCls("sch-rtl")}},destroy:function(){this.callParent(arguments);if(this.tip){this.tip.destroy()}Ext.dd.ScrollManager.unregister(this.schedulerView.el)},autoOffset:function(a,b){this.setDelta(this.dragData.offsets[0],this.dragData.offsets[1])},constrainTo:function(a,b){this.resetConstraints();this.initPageX=a.left;this.initPageY=a.top;this.setXConstraint(a.left,a.right-(b.right-b.left),this.xTickSize);this.setYConstraint(a.top,a.bottom-(b.bottom-b.top),this.yTickSize)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=c;this.maxX=b;if(a){this.setXTicks(this.initPageX,a)}this.constrainX=true},setYConstraint:function(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=a;this.maxY=c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,resolveStartEndDates:function(e){var a=this.dragData,c,d=a.origStart,b=a.origEnd;if(!a.startsOutsideView){c=this.schedulerView.getStartEndDatesFromRegion(e,"round");if(c){d=c.start||a.startDate;b=Sch.util.Date.add(d,Sch.util.Date.MILLI,a.duration)}}else{if(!a.endsOutsideView){c=this.schedulerView.getStartEndDatesFromRegion(e,"round");if(c){b=c.end||a.endDate;d=Sch.util.Date.add(b,Sch.util.Date.MILLI,-a.duration)}}}return{startDate:d,endDate:b}},onDragOver:function(c,g){var a=this.dragData;if(!a.originalHidden){Ext.each(a.eventEls,function(e){e.addCls("x-hidden")});a.originalHidden=true}var d=a.startDate;var b=a.newResource;this.updateDragContext(c);if(a.startDate-d!==0||b!==a.newResource){this.schedulerView.fireEvent("eventdrag",this.schedulerView,a.eventRecords,a.startDate,a.newResource,a)}if(this.showTooltip){this.tip.update(a.startDate,a.endDate,a.valid)}},onStartDrag:function(b,d){var c=this.schedulerView,a=this.dragData;c.fireEvent("eventdragstart",c,a.eventRecords)},startDrag:function(){var b=this.callParent(arguments);this.dragData.refElement=this.proxy.el.down("#sch-id-dd-ref");if(this.showTooltip){var a=this.schedulerView;if(!this.tip){this.tip=Ext.create("Sch.tooltip.Tooltip",{schedulerView:a,cls:"sch-dragdrop-tip",renderTo:document.body})}this.tip.update(this.dragData.origStart,this.dragData.origEnd,true);this.tip.el.setStyle("visibility");this.tip.show(this.dragData.refElement,this.dragData.offsets[0])}return b},getDragData:function(B){var w=this.schedulerView,u=B.getTarget(w.eventSelector);if(!u){return}var n=w.resolveEventRecord(u);if(!n||n.isDraggable()===false||w.fireEvent("beforeeventdrag",w,n,B)===false){return null}var k=B.getXY(),a=Ext.get(u),C=a.getXY(),m=[k[0]-C[0],k[1]-C[1]],o=a.getRegion(),y=w.getSnapPixelAmount();var b=w.resolveResource(u);this.clearTicks();if(w.constrainDragToResource){if(!b){throw"Resource could not be resolved for event: "+n.getId()}this.constrainToResource(w.getScheduleRegion(b,n),o,w.getOrientation())}else{this.constrainTo(w.getScheduleRegion(null,n),o)}if(y>1){if(w.getOrientation()==="horizontal"){this.setXConstraint(this.leftConstraint,this.rightConstraint,y)}else{this.setYConstraint(this.topConstraint,this.bottomConstraint,y)}}var d=n.getStartDate(),q=n.getEndDate(),p=w.timeAxis,l=p.getStart(),j=p.getEnd(),z=d<l,x=q>j,c=Ext.getBody().getScroll(),h=this.getRelatedRecords(n),A=[a];Ext.Array.each(h,function(s){var e=w.getElementFromEventRecord(s);if(e){A.push(e)}});var g={offsets:m,eventEls:A,repairXY:C,eventRecords:[n].concat(h),relatedEventRecords:h,resourceRecord:b,origStart:d,origEnd:q,startDate:d,endDate:q,duration:q-d,startsOutsideView:z,endsOutsideView:x,bodyScroll:c,eventObj:B};g.ddel=this.getDragElement(a,g);return g},constrainToResource:function(b,c,a){this.resetConstraints();this.initPageX=b.left;this.initPageY=b.top;if(a==="horizontal"){this.setXConstraint(b.left,b.right-(c.right-c.left),this.xTickSize);this.setYConstraint(c.top,c.top,this.yTickSize)}else{this.setXConstraint(c.left,c.left,this.xTickSize);this.setYConstraint(b.top,b.bottom-(c.bottom-c.top),this.yTickSize)}},getRelatedRecords:function(c){var b=this.schedulerView;var d=b.selModel;var a=[];if(d.selected.getCount()>1){d.selected.each(function(e){if(e!==c&&e.isDraggable()!==false){a.push(e)}})}return a},getDragElement:function(a,e){var c=this.schedulerView;var d=e.eventEls;var g;if(d.length>1){var b=Ext.get(Ext.core.DomHelper.createDom({tag:"div",cls:"sch-dd-wrap",style:{overflow:"visible"}}));Ext.Array.each(d,function(j){g=j.dom.cloneNode(true);if(j.dom===a.dom){g.id="sch-id-dd-ref"}else{g.id=Ext.id()}b.appendChild(g);var h=j.getOffsetsTo(a);Ext.fly(g).setStyle({left:h[0]+"px",top:h[1]+"px"})});return b.dom}else{g=a.dom.cloneNode(true);g.id="sch-id-dd-ref";g.style.left=0;g.style.top=0;return g}},onDragDrop:function(j,k){this.updateDragContext(j);var d=this,b=d.schedulerView,h=d.cachedTarget||Ext.dd.DragDropMgr.getDDById(k),g=d.dragData,a=false,c=true;g.ddCallbackArgs=[h,j,k];if(g.valid&&g.startDate&&g.endDate){g.finalize=function(){d.finalize.apply(d,arguments)};c=b.fireEvent("beforeeventdropfinalize",d,g,j)!==false;if(c&&d.isValidDrop(g.resourceRecord,g.newResource,g.relatedEventRecords)){a=g.startDate-g.origStart!==0||g.newResource!==g.resourceRecord}}if(c){d.finalize(g.valid&&a)}},finalize:function(a){var c=this,b=c.schedulerView,d=c.dragData;if(c.tip){c.tip.hide()}if(a){c.updateRecords(d);if(Ext.isIE9){c.proxy.el.setStyle("visibility","hidden");Ext.Function.defer(c.onValidDrop,10,c,d.ddCallbackArgs)}else{c.onValidDrop.apply(c,d.ddCallbackArgs)}b.fireEvent("aftereventdrop",b,d.eventRecords)}else{c.onInvalidDrop.apply(c,d.ddCallbackArgs)}},updateRecords:function(a){throw"Must be implemented by subclass"},isValidDrop:function(a,b,c){return true},onInvalidDrop:function(d,c,g){if(Ext.isIE&&!c){c=d;d=d.getTarget()||document.body}var a=this.schedulerView,b;if(this.tip){this.tip.hide()}Ext.each(this.dragData.eventEls,function(e){e.removeCls("x-hidden")});b=this.callParent([d,c,g]);a.fireEvent("aftereventdrop",a,this.dragData.eventRecords);return b}});Ext.define("Sch.feature.SchedulerDragZone",{extend:"Sch.feature.PointDragZone",requires:["Sch.tooltip.Tooltip"],onDragOver:function(b,c){this.callParent(arguments);if(this.showTooltip){var a=this.getDragContext(b);if(a){this.tip.update(a.startDate,a.endDate,a.valid)}}},getDragContext:function(d){var a=this.dragData;if(!a.refElement){return}var c=this.schedulerView,g=a.refElement.getRegion();var b=this.resolveStartEndDates(g);b.resource=c.constrainDragToResource?a.resourceRecord:this.resolveResource([g.left+a.offsets[0],g.top+a.offsets[1]],d);if(b.resource){b.valid=this.validatorFn.call(this.validatorFnScope||this,a.eventRecords,b.resource,b.startDate,a.duration,d)}else{b.valid=false}return b},startDrag:function(){var b=this.callParent(arguments);if(this.showTooltip){var a=this.schedulerView;if(!this.tip){this.tip=Ext.create("Sch.tooltip.Tooltip",{schedulerView:a,cls:"sch-dragdrop-tip"})}this.tip.update(this.dragData.startDate,this.dragData.endDate,true);this.tip.el.setStyle("visibility");this.tip.show(this.proxy.el,this.dragData.offsets[0])}return b},updateRecords:function(c){var j=this,n=j.schedulerView,k=n.resourceStore,e=c.newResource,g=c.eventRecords,l=g[0];l.beginEdit();if(e!==c.resourceRecord){l.unassign(c.resourceRecord);l.assign(e)}l.setStartDate(c.startDate,true,n.eventStore.skipWeekendsDuringDragDrop);l.endEdit();var b=c.startDate,d=c.relatedEventRecords,a=b-c.origStart,h,m=Ext.data.TreeStore&&k instanceof Ext.data.TreeStore;if(m){h=n.indexOf(c.resourceRecord)-n.indexOf(e)}else{h=k.indexOf(c.resourceRecord)-k.indexOf(e)}Ext.each(d,function(p){p.shift(Ext.Date.MILLI,a);if(m){var o=n.store.indexOf(p.getResource())-h;p.setResource(n.store.getAt(o))}else{p.setResource(k.getAt(k.indexOf(p.getResource())-h))}});n.fireEvent("eventdrop",n,c.eventRecords,false)},isValidDrop:function(e,b,c){if(e===b||c.length===0){return true}var g=this,l=g.schedulerView,a=true,d,h=l.resourceStore,j,k=Ext.data.TreeStore&&h instanceof Ext.data.TreeStore;if(k){d=l.indexOf(e)-l.indexOf(b)}else{d=h.indexOf(e)-h.indexOf(b)}Ext.each(c,function(m){if(k){j=l.store.indexOf(e)-d;if(j<0||j>=l.store.getCount()){a=false;return false}}else{j=h.indexOf(e)-d;if(j<0||j>=h.getCount()){a=false;return false}}});return a},resolveResource:function(g,d){var b=this.proxy.el.dom;b.style.display="none";var c=document.elementFromPoint(g[0]-this.dragData.bodyScroll.left,g[1]-this.dragData.bodyScroll.top);if(Ext.isIE8&&d&&d.browserEvent.synthetic){c=document.elementFromPoint(g[0]-this.dragData.bodyScroll.left,g[1]-this.dragData.bodyScroll.top)}b.style.display="block";if(!c){return null}if(!c.className.match(this.schedulerView.timeCellCls)){var a=Ext.fly(c).up("."+this.schedulerView.timeCellCls);if(a){c=a.dom}else{return null}}return this.schedulerView.resolveResource(c)},updateDragContext:function(d){var a=this.dragData;if(!a.refElement){return}var c=this.schedulerView,g=a.refElement.getRegion();var b=this.resolveStartEndDates(g);a.startDate=b.startDate;a.endDate=b.endDate;a.newResource=c.constrainDragToResource?a.resourceRecord:this.resolveResource([g.left+a.offsets[0],g.top+a.offsets[1]],d);if(a.newResource){a.valid=this.validatorFn.call(this.validatorFnScope||this,a.eventRecords,a.newResource,a.startDate,a.duration,d)}else{a.valid=false}}});Ext.define("Sch.feature.DragDrop",{requires:["Ext.XTemplate","Sch.feature.SchedulerDragZone"],validatorFn:function(b,a,c,g,d){return true},enableCopy:false,showTooltip:true,constructor:function(d,a){Ext.apply(this,a);this.schedulerView=d;var b=!!document.elementFromPoint;if(b){this.initProxyLessDD()}else{if(typeof console!=="undefined"){var e=console;e.log("WARNING: Your browser does not support document.elementFromPoint required for the Drag drop feature")}}this.schedulerView.on("destroy",this.cleanUp,this);this.callParent([a])},cleanUp:function(){if(this.schedulerView.eventDragZone){this.schedulerView.eventDragZone.destroy()}if(this.schedulerView.dropZone){this.schedulerView.dropZone.destroy()}},initProxyLessDD:function(){var a=this.schedulerView;a.eventDragZone=Ext.create("Sch.feature.SchedulerDragZone",a.ownerCt.el,Ext.apply({ddGroup:a.id,schedulerView:a,enableCopy:this.enableCopy,validatorFn:this.validatorFn,validatorFnScope:this.validatorFnScope,showTooltip:this.showTooltip},this.dragConfig))}});Ext.define("Sch.feature.ResizeZone",{extend:"Ext.util.Observable",requires:["Ext.resizer.Resizer","Sch.tooltip.Tooltip"],showTooltip:true,validatorFn:Ext.emptyFn,validatorFnScope:null,origEl:null,constructor:function(a){Ext.apply(this,a);var b=this.schedulerView;b.on({destroy:this.cleanUp,scope:this});b.mon(b.el,{mousedown:this.onMouseDown,mouseup:this.onMouseUp,scope:this,delegate:".sch-resizable-handle"});this.callParent(arguments)},onMouseDown:function(h,a){var b=this.schedulerView;var g=this.eventRec=b.resolveEventRecord(a);var c=this.getHandlePosition(a);var d=g.isResizable();if(d===false||typeof d==="string"&&!a.className.match(d)){return}this.eventRec=g;this.handlePos=c;this.origEl=Ext.get(h.getTarget(".sch-event"));b.el.on({mousemove:this.onMouseMove,scope:this,single:true})},onMouseUp:function(c,a){var b=this.schedulerView;b.el.un({mousemove:this.onMouseMove,scope:this,single:true})},onMouseMove:function(g,a){var b=this.schedulerView;var d=this.eventRec;if(!d||b.fireEvent("beforeeventresize",b,d,g)===false){return}delete this.eventRec;g.stopEvent();var c=this.handlePos;this.resizer=this.createResizer(this.origEl,d,c,g,a);this.resizer.resizeTracker.onMouseDown(g,this.resizer[c].dom);if(this.showTooltip){if(!this.tip){this.tip=Ext.create("Sch.tooltip.Tooltip",{schedulerView:b,cls:"sch-resize-tip"})}this.tip.update(d.getStartDate(),d.getEndDate(),true);this.tip.show(this.origEl)}b.fireEvent("eventresizestart",b,d)},getHandlePosition:function(a){if(this.schedulerView.getOrientation()==="horizontal"){if(this.schedulerView.rtl){return a.className.match("start")?"east":"west"}return a.className.match("start")?"west":"east"}else{return a.className.match("start")?"north":"south"}},createResizer:function(c,g,b){var l=this.schedulerView,e=l.resolveResource(c),h=l.getSnapPixelAmount(),k=l.getScheduleRegion(e,g),a=l.getDateConstraints(e,g),d={target:c,dateConstraints:a,resourceRecord:e,eventRecord:g,handles:b.substring(0,1),minHeight:c.getHeight(),constrainTo:k,listeners:{resizedrag:this.partialResize,resize:this.afterResize,scope:this}};if(l.getOrientation()==="vertical"){if(h>0){Ext.apply(d,{minHeight:h,heightIncrement:h})}}else{if(h>0){Ext.apply(d,{minWidth:h,widthIncrement:h})}}var j=Ext.create("Ext.resizer.Resizer",d);c.setStyle("z-index",parseInt(c.getStyle("z-index"),10)+1);return j},getStartEndDates:function(g){var e=this.resizer,c=e.el,d=this.schedulerView,b=d.rtl&&e.handles[0]==="e"||!d.rtl&&e.handles[0]==="w"||e.handles[0]==="n",h,a;if(b){a=e.eventRecord.getEndDate();h=d.getDateFromXY([d.rtl?c.getRight():c.getLeft(),c.getTop()],"round")}else{h=e.eventRecord.getStartDate();a=d.getDateFromXY([d.rtl?c.getLeft():c.getRight(),c.getBottom()],"round")}if(e.dateConstraints){h=Sch.util.Date.constrain(h,e.dateConstraints.start,e.dateConstraints.end);a=Sch.util.Date.constrain(a,e.dateConstraints.start,e.dateConstraints.end)}return{start:h,end:a}},partialResize:function(b,d,j,h){var l=this.schedulerView,k=this.getStartEndDates(h.getXY()),c=k.start,g=k.end;if(!c||!g||b.start-c===0&&b.end-g===0){return}var a=this.validatorFn.call(this.validatorFnScope||this,b.resourceRecord,b.eventRecord,c,g)!==false;b.end=g;b.start=c;l.fireEvent("eventpartialresize",l,b.eventRecord,c,g,b.el);if(this.showTooltip){this.tip.update(c,g,a)}},afterResize:function(a,o,g,j){if(this.showTooltip){this.tip.hide()}var l=this,k=a.resourceRecord,m=a.eventRecord,d=m.getStartDate(),s=m.getEndDate(),b=a.start||d,c=a.end||s,q=l.schedulerView,p=false,n=true;l.resizeContext={eventRecord:m,start:b,end:c,finalize:function(){l.finalize.apply(l,arguments)}};if(b&&c&&c-b>0&&(b-d!==0||c-s!==0)&&l.validatorFn.call(l.validatorFnScope||l,k,m,b,c,j)!==false){n=q.fireEvent("beforeeventresizefinalize",l,l.resizeContext,j)!==false;p=true}else{q.refreshKeepingScroll()}if(n){l.finalize(p)}},finalize:function(a){var b=this.schedulerView;var c=this.resizeContext;if(a){c.eventRecord.setStartEndDate(c.start,c.end,b.eventStore.skipWeekendsDuringDragDrop)}else{b.refreshKeepingScroll()}this.resizer.destroy();b.fireEvent("eventresizeend",b,c.eventRecord);this.resizeContext=null},cleanUp:function(){if(this.tip){this.tip.destroy()}}});Ext.define("Sch.eventlayout.Horizontal",{view:null,nbrOfBandsByResource:null,constructor:function(a){Ext.apply(this,a);this.nbrOfBandsByResource={}},clearCache:function(a){if(a){delete this.nbrOfBandsByResource[a.internalId]}else{this.nbrOfBandsByResource={}}},getNumberOfBands:function(b,c){if(!this.view.dynamicRowHeight){return 1}var a=this.nbrOfBandsByResource;if(a.hasOwnProperty(b.internalId)){return a[b.internalId]}return this.calculateNumberOfBands(b,c)},getRowHeight:function(b,c){var a=this.view;var d=this.getNumberOfBands(b,c);return d*a.rowHeight-(d-1)*a.barMargin},calculateNumberOfBands:function(c,e){var d=[];e=e||this.view.eventStore.getEventsForResource(c);for(var a=0;a<e.length;a++){var b=e[a];d[d.length]={start:b.getStartDate(),end:b.getEndDate()}}return this.applyLayout(d,c)},applyLayout:function(a,b){var c=a.slice();c.sort(this.sortEvents);return this.nbrOfBandsByResource[b.internalId]=this.layoutEventsInBands(0,c)},sortEvents:function(e,d){var c=e.start-d.start===0;if(c){return e.end>d.end?-1:1}else{return e.start<d.start?-1:1}},layoutEventsInBands:function(e,b){var a=this.view;do{var d=b[0],c=e===0?a.barMargin:e*a.rowHeight-(e-1)*a.barMargin;if(c>=a.cellBottomBorderWidth){c-=a.cellBottomBorderWidth}while(d){d.top=c;Ext.Array.remove(b,d);d=this.findClosestSuccessor(d,b)}e++}while(b.length>0);return e},findClosestSuccessor:function(h,e){var c=Infinity,g,a=h.end,j;for(var d=0,b=e.length;d<b;d++){j=e[d].start-a;if(j>=0&&j<c){g=e[d];c=j}}return g}});Ext.define("Sch.eventlayout.Vertical",{requires:["Sch.util.Date"],constructor:function(a){Ext.apply(this,a)},applyLayout:function(a,g){if(a.length===0){return}a.sort(this.sortEvents);var d,c,m=this.view,n=Sch.util.Date,p=1,u,b,k=g-2*m.barMargin,e,t;for(var w=0,s=a.length;w<s;w++){e=a[w];d=e.start;c=e.end;b=this.findStartSlot(a,e);var x=this.getCluster(a,w);if(x.length>1){e.left=b.start;e.width=b.end-b.start;t=1;while(t<x.length-1&&x[t+1].start-e.start===0){t++}var q=this.findStartSlot(a,x[t]);if(q&&q.start<0.8){x=x.slice(0,t)}}var h=x.length,o=(b.end-b.start)/h;for(t=0;t<h;t++){x[t].width=o;x[t].left=b.start+t*o}w+=h-1}for(w=0,s=a.length;w<s;w++){a[w].width=a[w].width*k;a[w].left=m.barMargin+a[w].left*k}},findStartSlot:function(p,c){var b=Sch.util.Date,d=c.start,h=c.end,e=0,g,o=0,k,n,a=Ext.Array.indexOf(p,c),m=this.getPriorOverlappingEvents(p,c),l;if(m.length===0){return{start:0,end:1}}for(l=0;l<m.length;l++){if(l===0&&m[0].left>0){return{start:0,end:m[0].left}}else{if(m[l].left+m[l].width<(l<m.length-1?m[l+1].left:1)){return{start:m[l].left+m[l].width,end:l<m.length-1?m[l+1].left:1}}}}return false},getPriorOverlappingEvents:function(e,g){var h=Sch.util.Date,j=g.start,b=g.end,c=[];for(var d=0,a=Ext.Array.indexOf(e,g);d<a;d++){if(h.intersectSpans(j,b,e[d].start,e[d].end)){c.push(e[d])}}c.sort(function(l,k){return l.left<k.left?-1:1});return c},getCluster:function(e,h){if(h>=e.length-1){return[e[h]]}var c=[e[h]],j=e[h].start,b=e[h].end,a=e.length,g=Sch.util.Date,d=h+1;while(d<a&&g.intersectSpans(j,b,e[d].start,e[d].end)){c.push(e[d]);j=g.max(j,e[d].start);b=g.min(e[d].end,b);d++}return c},sortEvents:function(e,d){var c=e.start-d.start===0;if(c){return e.end>d.end?-1:1}else{return e.start<d.start?-1:1}}});Ext.define("Sch.column.Resource",{extend:"Ext.grid.Column",alias:"widget.resourcecolumn",cls:"sch-resourcecolumn-header",align:"center",menuDisabled:true,hideable:false,sortable:false,locked:false,lockable:false,model:null});Ext.define("Sch.view.model.TimeAxis",{extend:"Ext.util.Observable",requires:["Ext.Date","Sch.util.Date"],timeAxis:null,availableWidth:0,tickWidth:100,snapToIncrement:false,forceFit:false,suppressFit:false,columnConfig:{},constructor:function(a){var b=this;Ext.apply(this,a);b.addEvents("update");if(b.timeAxis.preset){b.tickWidth=b.timeAxis.preset.timeColumnWidth}b.timeAxis.on("reconfigure",b.onTimeAxisReconfigure,b);this.callParent(arguments)},destroy:function(){this.timeAxis.un("reconfigure",this.onTimeAxisReconfigure,this)},onTimeAxisReconfigure:function(){this.tickWidth=this.timeAxis.preset.timeColumnWidth;this.update()},getColumnConfig:function(){return this.columnConfig},update:function(d,b){var e=this.timeAxis,c=e.headerConfig;this.availableWidth=Math.max(d||this.availableWidth,0);if(this.forceFit&&this.availableWidth<=0){return}this.columnConfig={};for(var g in c){if(c[g].cellGenerator){this.columnConfig[g]=c[g].cellGenerator.call(this,this.timeAxis.getStart(),this.timeAxis.getEnd())}else{this.columnConfig[g]=this.createHeaderRow(g,c[g])}}var a=this.columnConfig.bottom||this.columnConfig.middle;this.tickWidth=this.calculateTickWidth(this.getTickWidth());if(!Ext.isNumber(this.availableWidth)||this.availableWidth<0){throw"Invalid available width provided to Sch.view.model.TimeAxis"}if(!Ext.isNumber(this.tickWidth)||this.tickWidth<=0){throw"Invalid column width calculated in Sch.view.model.TimeAxis"}if(!b){this.fireEvent("update",this)}},createHeaderRow:function(a,d){var c=[],e=this,h,g=d.align,b=Ext.Date.clearTime(new Date);e.timeAxis.forEachInterval(a,function(l,j,k){h={align:g,start:l,end:j,headerCls:""};if(d.renderer){h.header=d.renderer.call(d.scope||e,l,j,h,k)}else{h.header=Ext.Date.format(l,d.dateFormat)}if(d.unit===Sch.util.Date.DAY&&(!d.increment||d.increment===1)){h.headerCls+=" sch-dayheadercell-"+l.getDay();if(Ext.Date.clearTime(l,true)-b===0){h.headerCls+=" sch-dayheadercell-today"}}c.push(h)});return c},getDistanceBetweenDates:function(g,b){var d=this.timeAxis.unit,c,e=Sch.util.Date.getMeasuringUnit(d),a=Sch.util.Date.getDurationInUnit(g,b,e);if(this.timeAxis.isContinuous()){c=a*this.getSingleUnitInPixels(e)}else{c=this.getPositionFromDate(b)-this.getPositionFromDate(g)}return c},getPositionFromDate:function(a){var c=null,b=this.timeAxis.getTickFromDate(a);if(b>=0){c=this.tickWidth*b}return c},getDateFromPosition:function(a,d){var c=a/this.getTickWidth(),b=this.timeAxis.getCount();if(c<0||c>b){return null}return this.timeAxis.getDateFromTick(c,d)},getSingleUnitInPixels:function(a){return Sch.util.Date.getUnitToBaseUnitRatio(this.timeAxis.getUnit(),a)*this.tickWidth/this.timeAxis.increment},getSnapPixelAmount:function(){if(this.snapToIncrement){var a=this.timeAxis.getResolution();return(a.increment||1)*this.getSingleUnitInPixels(a.unit)}else{return 1}},getTickWidth:function(){return this.tickWidth},setTickWidth:function(b,a){this.tickWidth=b;this.update(null,a)},getTotalWidth:function(){return this.tickWidth*this.timeAxis.getCount()},calculateTickWidth:function(c){var k=this.forceFit;var b=0,e=this.timeAxis.getUnit(),m=this.timeAxis.getCount(),j=Number.MAX_VALUE,g,a;if(this.snapToIncrement){var h=this.timeAxis.getResolution(),l=h.unit,d=h.increment;j=Sch.util.Date.getUnitToBaseUnitRatio(e,l)*d}g=Sch.util.Date.getMeasuringUnit(e);j=Math.min(j,Sch.util.Date.getUnitToBaseUnitRatio(e,g));a=Math[k?"floor":"round"](this.getAvailableWidth()/this.timeAxis.getCount());if(!this.suppressFit){b=k||c<a?a:c;if(j>0&&(!k||j<1)){b=Math.round(Math.max(1,Math[k?"floor":"round"](j*b))/j)}}else{b=c}return b},getAvailableWidth:function(){return this.availableWidth},setAvailableWidth:function(a){this.availableWidth=Math.max(0,a);var b=this.calculateTickWidth(this.tickWidth);if(b!==this.tickWidth){this.tickWidth=b;this.update()}},fitToAvailableWidth:function(a){var b=Math.floor(this.availableWidth/this.timeAxis.getCount());this.setTickWidth(b,a)},setForceFit:function(a){if(a!==this.forceFit){this.forceFit=a;this.update()}},setSnapToIncrement:function(a){if(a!==this.snapToIncrement){this.snapToIncrement=a;this.update()}}});Ext.define("Sch.view.HorizontalTimeAxis",{extend:"Ext.util.Observable",requires:["Ext.XTemplate"],trackHeaderOver:true,compactCellWidthThreshold:15,baseCls:"sch-column-header",tableCls:"sch-header-row",headerHtmlRowTpl:'<table border="0" cellspacing="0" cellpadding="0" style="width: {totalWidth}px; {tstyle}" class="{{tableCls}} sch-header-row-{position} {cls}"><thead><tr><tpl for="cells"><td class="{{baseCls}} {headerCls}" style="position : static; text-align: {align}; width: {width}px; {style}" tabIndex="0"headerPosition="{parent.position}" headerIndex="{[xindex-1]}"><div class="sch-simple-timeheader">{header}</div></td></tpl></tr></thead></table>',model:null,hoverCls:"",containerEl:null,constructor:function(d){var e=this;var b=!!Ext.versions.touch;var a=b?"tap":"click";Ext.apply(this,d);e.callParent(arguments);e.model.on({update:e.onModelUpdate,scope:e});this.addEvents("refresh");e.containerEl=Ext.get(e.containerEl);if(!(e.headerHtmlRowTpl instanceof Ext.Template)){e.headerHtmlRowTpl=e.headerHtmlRowTpl.replace("{{baseCls}}",this.baseCls).replace("{{tableCls}}",this.tableCls);e.headerHtmlRowTpl=new Ext.XTemplate(e.headerHtmlRowTpl)}if(e.trackHeaderOver&&e.hoverCls){e.containerEl.on({mousemove:e.highlightCell,delegate:".sch-column-header",scope:e});e.containerEl.on({mouseleave:e.clearHighlight,scope:e})}var c={scope:this,delegate:".sch-column-header"};if(b){c.tap=this.onElClick("tap");c.doubletap=this.onElClick("doubletap");this.addEvents("timeheadertap","timeheaderdoubletap")}else{c.click=this.onElClick("click");c.dblclick=this.onElClick("dblclick");this.addEvents("timeheaderclick","timeheaderdblclick")}e._listenerCfg=c;if(e.containerEl){e.containerEl.on(c)}},destroy:function(){var a=this;if(a.containerEl){a.containerEl.un(a._listenerCfg);a.containerEl.un({mousemove:a.highlightCell,delegate:".sch-simple-timeheader",scope:a});a.containerEl.un({mouseleave:a.clearHighlight,scope:a})}a.model.un({update:a.onModelUpdate,scope:a})},onModelUpdate:function(){this.render()},getHTML:function(h,g,d){var b=this.model.getColumnConfig();var a=this.model.getTotalWidth();var c="";var e;if(b.top){this.embedCellWidths(b.top);c+=this.headerHtmlRowTpl.apply({totalWidth:a,cells:b.top,position:"top",tstyle:"border-top : 0;"})}if(b.middle){this.embedCellWidths(b.middle);c+=this.headerHtmlRowTpl.apply({totalWidth:a,cells:b.middle,position:"middle",tstyle:b.top?"":"border-top : 0;",cls:!b.bottom&&this.model.getTickWidth()<=this.compactCellWidthThreshold?"sch-header-row-compact":""})}if(b.bottom){this.embedCellWidths(b.bottom);c+=this.headerHtmlRowTpl.apply({totalWidth:a,cells:b.bottom,position:"bottom",tstyle:"",cls:this.model.getTickWidth()<=this.compactCellWidthThreshold?"sch-header-row-compact":""})}return c+'<div class="sch-header-secondary-canvas"></div>'},render:function(){if(!this.containerEl){return}var e=this.containerEl,g=e.dom,d=g.style.display,a=this.model.getColumnConfig(),b=g.parentNode;g.style.display="none";b.removeChild(g);var c=this.getHTML();g.innerHTML=c;if(!a.top&&!a.middle){this.containerEl.addCls("sch-header-single-row")}else{this.containerEl.removeCls("sch-header-single-row")}b&&b.appendChild(g);g.style.display=d;this.fireEvent("refresh",this)},embedCellWidths:function(b){var e=Ext.isIE7||Ext.isSafari?1:0;for(var c=0;c<b.length;c++){var a=b[c];var d=this.model.getDistanceBetweenDates(a.start,a.end);if(d){a.width=d-(c?e:0)}else{a.width=0;a.style="display: none"}}},onElClick:function(a){return function(e,g){g=e.delegatedTarget||g;var b=Ext.fly(g).getAttribute("headerPosition"),c=Ext.fly(g).getAttribute("headerIndex"),d=this.model.getColumnConfig()[b][c];this.fireEvent("timeheader"+a,this,d.start,d.end,e)}},highlightCell:function(c,a){var b=this;if(a!==b.highlightedCell){b.clearHighlight();b.highlightedCell=a;Ext.fly(a).addCls(b.hoverCls)}},clearHighlight:function(){var b=this,a=b.highlightedCell;if(a){Ext.fly(a).removeCls(b.hoverCls);delete b.highlightedCell}}});Ext.define("Sch.column.timeAxis.Horizontal",{extend:"Ext.grid.column.Column",alias:"widget.timeaxiscolumn",draggable:false,groupable:false,hideable:false,sortable:false,fixed:true,menuDisabled:true,cls:"sch-simple-timeaxis",tdCls:"sch-timetd",requires:["Sch.view.HorizontalTimeAxis"],timeAxisViewModel:null,headerView:null,hoverCls:"sch-column-header-over",trackHeaderOver:true,compactCellWidthThreshold:20,initComponent:function(){this.ownHoverCls=this.hoverCls;this.hoverCls="";this.callParent(arguments)},afterRender:function(){var a=this;a.headerView=new Sch.view.HorizontalTimeAxis({model:a.timeAxisViewModel,containerEl:a.titleEl,hoverCls:a.ownHoverCls,trackHeaderOver:a.trackHeaderOver,compactCellWidthThreshold:a.compactCellWidthThreshold});a.headerView.on("refresh",a.onTimeAxisViewRefresh,a);a.ownerCt.on("afterlayout",function(){a.mon(a.ownerCt,"resize",a.onHeaderContainerResize,a);if(this.getWidth()>0){a.timeAxisViewModel.update(a.getAvailableWidthForSchedule());a.setWidth(a.timeAxisViewModel.getTotalWidth())}},null,{single:true});this.enableBubble("timeheaderclick","timeheaderdblclick");a.relayEvents(a.headerView,["timeheaderclick","timeheaderdblclick"]);a.callParent(arguments)},initRenderData:function(){var a=this;a.renderData.headerCls=a.renderData.headerCls||a.headerCls;return a.callParent(arguments)},destroy:function(){if(this.headerView){this.headerView.destroy()}this.callParent(arguments)},onTimeAxisViewRefresh:function(){this.headerView.un("refresh",this.onTimeAxisViewRefresh,this);this.setWidth(this.timeAxisViewModel.getTotalWidth());this.headerView.on("refresh",this.onTimeAxisViewRefresh,this)},getAvailableWidthForSchedule:function(){var c=this.ownerCt.getWidth();var a=this.ownerCt.items;for(var b=1;b<a.length;b++){c-=a.get(b).getWidth()}return c-Ext.getScrollbarSize().width-1},onResize:function(){this.callParent(arguments);this.timeAxisViewModel.setAvailableWidth(this.getAvailableWidthForSchedule())},onHeaderContainerResize:function(){this.timeAxisViewModel.setAvailableWidth(this.getAvailableWidthForSchedule());this.headerView.render()}});Ext.define("Sch.column.timeAxis.Vertical",{extend:"Ext.grid.column.Column",alias:"widget.verticaltimeaxis",align:"right",draggable:false,groupable:false,hideable:false,sortable:false,menuDisabled:true,timeAxis:null,timeAxisViewModel:null,cellTopBorderWidth:null,cellBottomBorderWidth:null,totalBorderWidth:null,initComponent:function(){this.callParent(arguments);this.tdCls=(this.tdCls||"")+" sch-verticaltimeaxis-cell";this.scope=this;this.totalBorderWidth=this.cellTopBorderWidth+this.cellBottomBorderWidth},afterRender:function(){this.callParent(arguments);var a=this.up("panel");a.getView().on("resize",this.onContainerResize,this)},onContainerResize:function(c,b,a){this.timeAxisViewModel.update(a-21)},renderer:function(e,c,a,g){var b=this.timeAxis.headerConfig,d=b.bottom||b.middle;c.style="height:"+(this.timeAxisViewModel.getTickWidth()-this.totalBorderWidth)+"px";if(d.renderer){return d.renderer.call(d.scope||this,a.data.start,a.data.end,c,g)}else{return Ext.Date.format(a.data.start,d.dateFormat)}}});Ext.define("Sch.mixin.Lockable",{extend:"Ext.grid.Lockable",useSpacer:true,syncRowHeight:false,injectLockable:function(){var l=this;var j=Ext.data.TreeStore&&l.store instanceof Ext.data.TreeStore;var c=l.getEventSelectionModel?l.getEventSelectionModel():l.getSelectionModel();l.lockedGridConfig=Ext.apply({},l.lockedGridConfig||{});l.normalGridConfig=Ext.apply({},l.schedulerConfig||l.normalGridConfig||{});if(l.lockedXType){l.lockedGridConfig.xtype=l.lockedXType}if(l.normalXType){l.normalGridConfig.xtype=l.normalXType}var a=l.lockedGridConfig,k=l.normalGridConfig;Ext.applyIf(l.lockedGridConfig,{useArrows:true,trackMouseOver:false,split:true,animCollapse:false,collapseDirection:"left",region:"west"});Ext.applyIf(l.normalGridConfig,{viewType:l.viewType,layout:"fit",sortableColumns:false,enableColumnMove:false,enableColumnResize:false,enableColumnHide:false,getSchedulingView:function(){var o=typeof console!=="undefined"?console:false;if(o&&o.log){o.log('getSchedulingView is deprecated on the inner grid panel. Instead use getView on the "normal" subgrid.')}return this.getView()},selModel:c,collapseDirection:"right",animCollapse:false,region:"center"});if(l.orientation==="vertical"){a.store=k.store=l.timeAxis}if(a.width){l.syncLockedWidth=Ext.emptyFn;a.scroll="horizontal";a.scrollerOwner=true}var e=l.lockedViewConfig=l.lockedViewConfig||{};var m=l.normalViewConfig=l.normalViewConfig||{};if(j){var h=Ext.tree.View.prototype.onUpdate;e.onUpdate=function(){this.refreshSize=Ext.emptyFn;Ext.suspendLayouts();h.apply(this,arguments);Ext.resumeLayouts();this.refreshSize=Ext.tree.View.prototype.refreshSize};e.store=m.store=l.store.nodeStore}var g=l.layout;var d=a.width;this.callParent(arguments);var n=l.lockedGrid.getView();var b=l.normalGrid.getView();if(d||g==="border"){if(d){l.lockedGrid.setWidth(d)}b.addCls("sch-timeline-horizontal-scroll");n.addCls("sch-locked-horizontal-scroll")}if(l.normalGrid.collapsed){l.normalGrid.collapsed=false;b.on("boxready",function(){l.normalGrid.collapse()},l,{delay:10})}if(Ext.getScrollbarSize().width===0){n.addCls("sch-ganttpanel-force-locked-scroll")}if(j){this.setupLockableTree()}if(l.useSpacer){b.on("refresh",l.updateSpacer,l);n.on("refresh",l.updateSpacer,l)}if(g!=="fit"){l.layout=g}if(n.store!==b.store){Ext.Error.raise("Sch.mixin.Lockable setup failed, not sharing store between the two views")}if(b.bufferedRenderer){this.lockedGrid.on("expand",function(){n.el.dom.scrollTop=b.el.dom.scrollTop});this.patchBufferedRenderingPlugin(b.bufferedRenderer);this.patchBufferedRenderingPlugin(n.bufferedRenderer)}},setupLockableTree:function(){var c=this;var b=c.lockedGrid.getView();var a=Sch.mixin.FilterableTreeView.prototype;b.initTreeFiltering=a.initTreeFiltering;b.onFilterChangeStart=a.onFilterChangeStart;b.onFilterChangeEnd=a.onFilterChangeEnd;b.onFilterCleared=a.onFilterCleared;b.onFilterSet=a.onFilterSet;b.initTreeFiltering()},updateSpacer:function(){var h=this.lockedGrid.getView();var e=this.normalGrid.getView();if(h.rendered&&e.rendered&&h.el.child("table")){var g=this,c=h.el,d=e.el.dom,b=c.dom.id+"-spacer",j=d.offsetHeight-d.clientHeight+"px";g.spacerEl=Ext.getDom(b);if(Ext.isIE6||Ext.isIE7||Ext.isIEQuirks&&Ext.isIE8&&g.spacerEl){Ext.removeNode(g.spacerEl);g.spacerEl=null}if(g.spacerEl){g.spacerEl.style.height=j}else{var a=c;Ext.core.DomHelper.append(a,{id:b,style:"height: "+j})}}},onLockedViewScroll:function(){this.callParent(arguments);var a=this.lockedGrid.getView().bufferedRenderer;if(a){a.onViewScroll()}},onNormalViewScroll:function(){this.callParent(arguments);var a=this.normalGrid.getView().bufferedRenderer;if(a){a.onViewScroll()}},patchBufferedRenderingPlugin:function(b){b.variableRowHeight=true;b.view.on("afterrender",function(){b.view.el.un("scroll",b.onViewScroll,b)},this,{single:true,delay:1});var a=b.stretchView;b.stretchView=function(d,c){var g=this,e=g.store.buffered?g.store.getTotalCount():g.store.getCount();if(e&&g.view.all.endIndex===e-1){c=g.bodyTop+d.body.dom.offsetHeight}a.apply(this,[d,c])}}});Ext.define("Sch.model.Customizable",{extend:"Ext.data.Model",idProperty:null,customizableFields:null,previous:null,onClassExtended:function(b,d,a){var c=a.onBeforeCreated;a.onBeforeCreated=function(g,m){c.call(this,g,m);var l=g.prototype;if(!l.customizableFields){return}l.customizableFields=(g.superclass.customizableFields||[]).concat(l.customizableFields);var h=l.customizableFields;var k={};Ext.Array.each(h,function(n){if(typeof n=="string"){n={name:n}}k[n.name]=n});var e=l.fields;var j=[];e.each(function(n){if(n.isCustomizableField){j.push(n)}});e.removeAll(j);Ext.Object.each(k,function(n,q){q.isCustomizableField=true;var s=q.name||q.getName();var x=s==="Id"?"idProperty":s.charAt(0).toLowerCase()+s.substr(1)+"Field";var t=l[x];var w=t||s;if(e.containsKey(w)){e.getByKey(w).isCustomizableField=true;h.push(new Ext.data.Field(Ext.applyIf({name:s,isCustomizableField:true},e.getByKey(w))))}else{e.add(new Ext.data.Field(Ext.applyIf({name:w,isCustomizableField:true},q)))}var p=Ext.String.capitalize(s);if(p!="Id"){var u="get"+p;var o="set"+p;if(!l[u]||l[u].__getterFor__&&l[u].__getterFor__!=w){l[u]=function(){return this.data[w]};l[u].__getterFor__=w}if(!l[o]||l[o].__setterFor__&&l[o].__setterFor__!=w){l[o]=function(y){return this.set(w,y)};l[o].__setterFor__=w}}})}},set:function(d,b){var a;this.previous=this.previous||{};if(arguments.length>1){a=this.get(d);if(a!==b){this.previous[d]=a}}else{for(var c in d){a=this.get(c);if(a!==d[c]){this.previous[c]=a}}}this.callParent(arguments)},afterEdit:function(){this.callParent(arguments);delete this.previous},reject:function(){var b=this,a=b.modified,c;b.previous=b.previous||{};for(c in a){if(a.hasOwnProperty(c)){if(typeof a[c]!="function"){b.previous[c]=b.get(c)}}}b.callParent(arguments);delete b.previous}});Ext.define("Sch.model.Range",{extend:"Sch.model.Customizable",requires:["Sch.util.Date"],idProperty:"Id",startDateField:"StartDate",endDateField:"EndDate",nameField:"Name",clsField:"Cls",customizableFields:[{name:"StartDate",type:"date",dateFormat:"c"},{name:"EndDate",type:"date",dateFormat:"c"},{name:"Cls",type:"string"},{name:"Name",type:"string"}],setStartDate:function(a,d){var c=this.getEndDate();var b=this.getStartDate();this.set(this.startDateField,a);if(d===true&&c&&b){this.setEndDate(Sch.util.Date.add(a,Sch.util.Date.MILLI,c-b))}},setEndDate:function(b,d){var a=this.getStartDate();var c=this.getEndDate();this.set(this.endDateField,b);if(d===true&&a&&c){this.setStartDate(Sch.util.Date.add(b,Sch.util.Date.MILLI,-(c-a)))}},setStartEndDate:function(b,a){this.beginEdit();this.set(this.startDateField,b);this.set(this.endDateField,a);this.endEdit()},getDates:function(){var c=[],b=this.getEndDate();for(var a=Ext.Date.clearTime(this.getStartDate(),true);a<b;a=Sch.util.Date.add(a,Sch.util.Date.DAY,1)){c.push(a)}return c},forEachDate:function(b,a){return Ext.each(this.getDates(),b,a)},isValid:function(){var b=this.callParent(arguments);if(b){var c=this.getStartDate(),a=this.getEndDate();b=!c||!a||a-c>=0}return b},shift:function(b,a){this.setStartEndDate(Sch.util.Date.add(this.getStartDate(),b,a),Sch.util.Date.add(this.getEndDate(),b,a))}});Ext.define("Sch.model.TimeAxisTick",{extend:"Sch.model.Range",startDateField:"start",endDateField:"end"});Ext.define("Sch.model.Event",{extend:"Sch.model.Range",idProperty:"Id",config:{idProperty:"Id"},customizableFields:[{name:"Id"},{name:"ResourceId"},{name:"Draggable",type:"boolean",persist:false,defaultValue:true},{name:"Resizable",persist:false,defaultValue:true}],resourceIdField:"ResourceId",draggableField:"Draggable",resizableField:"Resizable",getResource:function(b){if(this.stores&&this.stores.length>0){var a=this.stores[0].resourceStore;b=b||this.get(this.resourceIdField);if(Ext.data.TreeStore&&a instanceof Ext.data.TreeStore){return a.getNodeById(b)||a.getRootNode().findChildBy(function(c){return c.internalId===b})}else{return a.getById(b)||a.data.map[b]}}return null},setResource:function(a){this.set(this.resourceIdField,a instanceof Ext.data.Model?a.getId()||a.internalId:a)},assign:function(a){this.setResource.apply(this,arguments)},unassign:function(a){},isDraggable:function(){return this.getDraggable()},isResizable:function(){return this.getResizable()},isPersistable:function(){var b=this.getResources();var a=true;Ext.each(b,function(c){if(c.phantom){a=false;return false}});return a},forEachResource:function(d,c){var a=this.getResources();for(var b=0;b<a.length;b++){if(d.call(c||this,a[b])===false){return}}},getResources:function(){var a=this.getResource();return a?[a]:[]}});Ext.define("Sch.model.Resource",{extend:"Sch.model.Customizable",idProperty:"Id",config:{idProperty:"Id"},nameField:"Name",customizableFields:["Id",{name:"Name",type:"string"}],getEventStore:function(){return this.stores[0]&&this.stores[0].eventStore||this.parentNode&&this.parentNode.getEventStore()},getEvents:function(d){var c=[],e,g=this.getId()||this.internalId;d=d||this.getEventStore();for(var b=0,a=d.getCount();b<a;b++){e=d.getAt(b);if(e.data[e.resourceIdField]===g){c.push(e)}}return c}});Ext.define("Sch.data.mixin.EventStore",{model:"Sch.model.Event",config:{model:"Sch.model.Event"},requires:["Sch.util.Date"],isEventStore:true,setResourceStore:function(a){if(this.resourceStore){this.resourceStore.un({beforesync:this.onResourceStoreBeforeSync,write:this.onResourceStoreWrite,scope:this})}this.resourceStore=a;if(a){a.on({beforesync:this.onResourceStoreBeforeSync,write:this.onResourceStoreWrite,scope:this})}},onResourceStoreBeforeSync:function(b,c){var a=b.create;if(a){for(var e,d=a.length-1;d>=0;d--){e=a[d];e._phantomId=e.internalId}}},onResourceStoreWrite:function(c,b){if(b.wasSuccessful()){var d=this,a=b.getRecords();Ext.each(a,function(e){if(e._phantomId&&!e.phantom){d.each(function(g){if(g.getResourceId()===e._phantomId){g.assign(e)}})}})}},isDateRangeAvailable:function(g,a,b,d){var c=true,e=Sch.util.Date;this.each(function(h){if(e.intersectSpans(g,a,h.getStartDate(),h.getEndDate())&&d===h.getResource()&&(!b||b!==h)){c=false;return false}});return c},getEventsInTimeSpan:function(d,b,a){if(a!==false){var c=Sch.util.Date;return this.queryBy(function(h){var g=h.getStartDate(),e=h.getEndDate();return g&&e&&c.intersectSpans(g,e,d,b)})}else{return this.queryBy(function(h){var g=h.getStartDate(),e=h.getEndDate();return g&&e&&g-d>=0&&b-e>=0})}},getTotalTimeSpan:function(){var a=new Date(9999,0,1),b=new Date(0),c=Sch.util.Date;this.each(function(d){if(d.getStartDate()){a=c.min(d.getStartDate(),a)}if(d.getEndDate()){b=c.max(d.getEndDate(),b)}});a=a<new Date(9999,0,1)?a:null;b=b>new Date(0)?b:null;return{start:a||null,end:b||a||null}},getEventsForResource:function(e){var c=[],d,g=e.getId()||e.internalId;for(var b=0,a=this.getCount();b<a;b++){d=this.getAt(b);if(d.data[d.resourceIdField]==g){c.push(d)}}return c},getClosestSuccessor:function(h,e){var c=Infinity,a=h.getEnd(),g,j;e=e||this.getRange();for(var d=0,b=e.length;d<b;d++){j=e[d].getStart()-a;if(j>=0&&j<c){g=e[d];c=j}}return g},append:function(a){throw"Must be implemented by consuming class"}});Ext.define("Sch.data.EventStore",{extend:"Ext.data.Store",model:"Sch.model.Event",config:{model:"Sch.model.Event"},mixins:["Sch.data.mixin.EventStore"],getByInternalId:function(a){return this.data.getByKey(a)},append:function(a){this.add(a)}});Ext.define("Sch.data.mixin.ResourceStore",{});Ext.define("Sch.data.FilterableNodeStore",{extend:"Ext.data.NodeStore",onNodeExpand:function(g,d,c){var b=[];for(var e=0;e<d.length;e++){var a=d[e];if(!(a.isHidden&&a.isHidden()||a.hidden||a.data.hidden)){b[b.length]=a}}return this.callParent([g,b,c])}});Ext.define("Sch.data.mixin.FilterableTreeStore",{requires:["Sch.data.FilterableNodeStore"],nodeStoreClassName:"Sch.data.FilterableNodeStore",nodeStore:null,isFilteredFlag:false,lastTreeFilter:null,initTreeFiltering:function(){if(!this.nodeStore){this.nodeStore=this.createNodeStore(this)}this.addEvents("filter-set","filter-clear","nodestore-datachange-start","nodestore-datachange-end")},createNodeStore:function(a){return Ext.create(this.nodeStoreClassName,{treeStore:a,recursive:true,rootVisible:this.rootVisible})},clearTreeFilter:function(){if(!this.isTreeFiltered()){return}this.refreshNodeStoreContent();this.isFilteredFlag=false;this.lastTreeFilter=null;this.fireEvent("filter-clear",this)},refreshNodeStoreContent:function(g){var a=this.getRootNode(),d=[];var c=this.rootVisible;var b=function(l){if(l.isHidden&&l.isHidden()||l.hidden||l.data.hidden){return}if(c||l!=a){d[d.length]=l}if(!l.data.leaf&&l.isExpanded()){var m=l.childNodes,j=m.length;for(var h=0;h<j;h++){b(m[h])}}};b(a);this.fireEvent("nodestore-datachange-start",this);var e=this.nodeStore;if(!this.loadDataInNodeStore||!this.loadDataInNodeStore(d)){e.loadRecords(d)}if(!g){e.fireEvent("clear",e)}this.fireEvent("nodestore-datachange-end",this)},getIndexInTotalDataset:function(b){var a=this.getRootNode(),d=-1;var e=this.rootVisible;if(!e&&b==a){return -1}var c=function(j){if(j.isHidden&&j.isHidden()||j.hidden||j.data.hidden){if(j==b){return false}}if(e||j!=a){d++}if(j==b){return false}if(!j.data.leaf&&j.isExpanded()){var l=j.childNodes,h=l.length;for(var g=0;g<h;g++){if(c(l[g])===false){return false}}}};c(a);return d},isTreeFiltered:function(){return this.isFilteredFlag},filterTreeBy:function(u,b){var h;if(arguments.length==1&&Ext.isObject(arguments[0])){b=u.scope;h=u.filter}else{h=u;u={filter:h}}this.fireEvent("nodestore-datachange-start",this);u=u||{};var k=u.shallow;var t=u.checkParents||k;var j=u.fullMathchingParents;var c=u.onlyParents||j;var e=this.rootVisible;if(c&&t){throw new Error("Can't combine `onlyParents` and `checkParents` options")}var p={};var n=this.getRootNode(),d=[];var a=function(x){var w=x.parentNode;while(w&&!p[w.internalId]){p[w.internalId]=true;w=w.parentNode}};var l=function(z){if(z.isHidden&&z.isHidden()||z.hidden||z.data.hidden){return}var x,A,y,w;if(z.data.leaf){if(h.call(b,z,p)){d[d.length]=z;a(z)}}else{if(e||z!=n){d[d.length]=z}if(c){x=h.call(b,z);A=z.childNodes;y=A.length;if(x){p[z.internalId]=true;a(z);if(j){z.cascadeBy(function(B){if(B!=z){d[d.length]=B;if(!B.data.leaf){p[B.internalId]=true}}});return}}for(w=0;w<y;w++){if(x&&A[w].data.leaf){d[d.length]=A[w]}else{if(!A[w].data.leaf){l(A[w])}}}}else{if(t){x=h.call(b,z,p);if(x){p[z.internalId]=true;a(z)}}if(!t||!k||k&&(x||z==n&&!e)){A=z.childNodes;y=A.length;for(w=0;w<y;w++){l(A[w])}}}}};l(n);var g=[];for(var q=0,s=d.length;q<s;q++){var m=d[q];if(m.data.leaf||p[m.internalId]){g[g.length]=m}}var o=this.nodeStore;if(!this.loadDataInNodeStore||!this.loadDataInNodeStore(g)){o.loadRecords(g,false);o.fireEvent("clear",o)}this.isFilteredFlag=true;this.lastTreeFilter=u;this.fireEvent("nodestore-datachange-end",this);this.fireEvent("filter-set",this)},hideNodesBy:function(b,a){if(this.isFiltered()){throw new Error("Can't hide nodes of the filtered tree store")}var c=this;a=a||this;this.getRootNode().cascadeBy(function(d){d.hidden=b.call(a,d,c)});this.refreshNodeStoreContent()},showAllNodes:function(){this.getRootNode().cascadeBy(function(a){a.hidden=a.data.hidden=false});this.refreshNodeStoreContent()}});Ext.define("Sch.data.ResourceStore",{extend:"Ext.data.Store",model:"Sch.model.Resource",config:{model:"Sch.model.Resource"},mixins:["Sch.data.mixin.ResourceStore"]});Ext.define("Sch.data.ResourceTreeStore",{extend:"Ext.data.TreeStore",model:"Sch.model.Resource",mixins:["Sch.data.mixin.ResourceStore","Sch.data.mixin.FilterableTreeStore"],constructor:function(){this.callParent(arguments);this.initTreeFiltering()}});Ext.define("Sch.data.TimeAxis",{extend:"Ext.data.JsonStore",requires:["Sch.util.Date"],model:"Sch.model.TimeAxisTick",continuous:true,autoAdjust:true,preset:null,unit:null,increment:null,resolutionUnit:null,resolutionIncrement:null,weekStartDay:null,mainUnit:null,shiftUnit:null,headerConfig:null,shiftIncrement:1,defaultSpan:1,constructor:function(a){var b=this;if(b.setModel){b.setModel(b.model)}b.originalContinuous=b.continuous;b.callParent(arguments);b.addEvents("beforereconfigure","reconfigure");b.on("datachanged",function(){b.fireEvent("reconfigure",b)});if(a&&b.start){b.reconfigure(a)}},reconfigure:function(a){Ext.apply(this,a);var b=this.generateTicks(this.start,this.end,this.unit,this.increment||1,this.mainUnit);if(this.fireEvent("beforereconfigure",this,this.start,this.end)!==false){this.removeAll(true);this.suspendEvents();this.add(b);if(this.getCount()===0){Ext.Error.raise("Invalid time axis configuration or filter, please check your input data.")}this.resumeEvents();this.fireEvent("datachanged",this);this.fireEvent("refresh",this)}},setTimeSpan:function(b,a){this.reconfigure({start:b,end:a})},filterBy:function(b,a){this.continuous=false;a=a||this;this.clearFilter(true);this.suspendEvents(true);this.filter([{filterFn:function(d,c){return b.call(a,d.data,c)}}]);if(this.getCount()===0){Ext.Error.raise("Invalid time axis filter - no columns passed through the filter. Please check your filter method.");this.clearFilter();this.resumeEvents();Ext.Error.raise("Invalid time axis filter - no ticks passed through the filter. Please check your filter method.");return}this.resumeEvents()},isContinuous:function(){return this.continuous&&!this.isFiltered()},clearFilter:function(){this.continuous=this.originalContinuous;this.callParent(arguments)},generateTicks:function(a,d,h,k){var j=[],g,b=Sch.util.Date,e=0;h=h||this.unit;k=k||this.increment;if(this.autoAdjust){a=this.floorDate(a||this.getStart(),false);d=this.ceilDate(d||b.add(a,this.mainUnit,this.defaultSpan),false)}while(a<d){g=this.getNext(a,h,k);if(h===b.HOUR&&k>1&&j.length>0&&e===0){var c=j[j.length-1];e=(c.start.getHours()+k)%24-c.end.getHours();if(e!==0){g=b.add(g,b.HOUR,e)}}j.push({start:a,end:g});a=g}return j},getTickFromDate:function(c){if(this.getStart()>c||this.getEnd()<c){return -1}var g=this.getRange(),e,a,d,b;for(d=0,b=g.length;d<b;d++){a=g[d].data.end;if(c<=a){e=g[d].data.start;return d+(c>e?(c-e)/(a-e):0)}}return -1},getDateFromTick:function(d,g){var h=this.getCount();if(d===h){return this.getEnd()}var a=Math.floor(d),e=d-a,c=this.getAt(a).data;var b=Sch.util.Date.add(c.start,Sch.util.Date.MILLI,e*(c.end-c.start));if(g){b=this[g+"Date"](b)}return b},getTicks:function(){var a=[];this.each(function(b){a.push(b.data)});return a},getStart:function(){var a=this.first();if(a){return Ext.Date.clone(a.data.start)}return null},getEnd:function(){var a=this.last();if(a){return Ext.Date.clone(a.data.end)}return null},floorDate:function(x,d,z){d=d!==false;var p=Ext.Date.clone(x),b=d?this.getStart():null,y=this.resolutionIncrement,m;if(z){m=z}else{m=d?this.resolutionUnit:this.mainUnit}switch(m){case Sch.util.Date.MILLI:if(d){var g=Sch.util.Date.getDurationInMilliseconds(b,p),e=Math.floor(g/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.MILLI,e)}break;case Sch.util.Date.SECOND:if(d){var l=Sch.util.Date.getDurationInSeconds(b,p),w=Math.floor(l/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.MILLI,w*1000)}else{p.setMilliseconds(0)}break;case Sch.util.Date.MINUTE:if(d){var s=Sch.util.Date.getDurationInMinutes(b,p),a=Math.floor(s/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.SECOND,a*60)}else{p.setSeconds(0);p.setMilliseconds(0)}break;case Sch.util.Date.HOUR:if(d){var q=Sch.util.Date.getDurationInHours(this.getStart(),p),n=Math.floor(q/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.MINUTE,n*60)}else{p.setMinutes(0);p.setSeconds(0);p.setMilliseconds(0)}break;case Sch.util.Date.DAY:if(d){var c=Sch.util.Date.getDurationInDays(b,p),h=Math.floor(c/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.DAY,h)}else{Ext.Date.clearTime(p)}break;case Sch.util.Date.WEEK:var u=p.getDay();Ext.Date.clearTime(p);if(u!==this.weekStartDay){p=Sch.util.Date.add(p,Sch.util.Date.DAY,-(u>this.weekStartDay?u-this.weekStartDay:7-u-this.weekStartDay))}break;case Sch.util.Date.MONTH:if(d){var t=Sch.util.Date.getDurationInMonths(b,p),k=Math.floor(t/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.MONTH,k)}else{Ext.Date.clearTime(p);p.setDate(1)}break;case Sch.util.Date.QUARTER:Ext.Date.clearTime(p);p.setDate(1);p=Sch.util.Date.add(p,Sch.util.Date.MONTH,-(p.getMonth()%3));break;case Sch.util.Date.YEAR:if(d){var o=Sch.util.Date.getDurationInYears(b,p),j=Math.floor(o/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.YEAR,j)}else{p=new Date(x.getFullYear(),0,1)}break}return p},roundDate:function(u){var n=Ext.Date.clone(u),b=this.getStart(),w=this.resolutionIncrement;switch(this.resolutionUnit){case Sch.util.Date.MILLI:var e=Sch.util.Date.getDurationInMilliseconds(b,n),d=Math.round(e/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.MILLI,d);break;case Sch.util.Date.SECOND:var k=Sch.util.Date.getDurationInSeconds(b,n),t=Math.round(k/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.MILLI,t*1000);break;case Sch.util.Date.MINUTE:var p=Sch.util.Date.getDurationInMinutes(b,n),a=Math.round(p/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.SECOND,a*60);break;case Sch.util.Date.HOUR:var o=Sch.util.Date.getDurationInHours(this.getStart(),n),l=Math.round(o/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.MINUTE,l*60);break;case Sch.util.Date.DAY:var c=Sch.util.Date.getDurationInDays(b,n),g=Math.round(c/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.DAY,g);break;case Sch.util.Date.WEEK:Ext.Date.clearTime(n);var q=n.getDay()-this.weekStartDay,x;if(q<0){q=7+q}if(Math.round(q/7)===1){x=7-q}else{x=-q}n=Sch.util.Date.add(n,Sch.util.Date.DAY,x);break;case Sch.util.Date.MONTH:var s=Sch.util.Date.getDurationInMonths(b,n)+n.getDate()/Ext.Date.getDaysInMonth(n),j=Math.round(s/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.MONTH,j);break;case Sch.util.Date.QUARTER:Ext.Date.clearTime(n);n.setDate(1);n=Sch.util.Date.add(n,Sch.util.Date.MONTH,3-n.getMonth()%3);break;case Sch.util.Date.YEAR:var m=Sch.util.Date.getDurationInYears(b,n),h=Math.round(m/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.YEAR,h);break}return n},ceilDate:function(c,b,g){var e=Ext.Date.clone(c);b=b!==false;var a=b?this.resolutionIncrement:1,h=false,d;if(g){d=g}else{d=b?this.resolutionUnit:this.mainUnit}switch(d){case Sch.util.Date.DAY:if(e.getMinutes()>0||e.getSeconds()>0||e.getMilliseconds()>0){h=true}break;case Sch.util.Date.WEEK:Ext.Date.clearTime(e);if(e.getDay()!==this.weekStartDay){h=true}break;case Sch.util.Date.MONTH:Ext.Date.clearTime(e);if(e.getDate()!==1){h=true}break;case Sch.util.Date.QUARTER:Ext.Date.clearTime(e);if(e.getMonth()%3!==0){h=true}break;case Sch.util.Date.YEAR:Ext.Date.clearTime(e);if(e.getMonth()!==0&&e.getDate()!==1){h=true}break;default:break}if(h){return this.getNext(e,d,a)}else{return e}},getNext:function(b,c,a){return Sch.util.Date.getNext(b,c,a,this.weekStartDay)},getResolution:function(){return{unit:this.resolutionUnit,increment:this.resolutionIncrement}},setResolution:function(b,a){this.resolutionUnit=b;this.resolutionIncrement=a||1},shift:function(a,b){this.setTimeSpan(Sch.util.Date.add(this.getStart(),b,a),Sch.util.Date.add(this.getEnd(),b,a))},shiftNext:function(a){a=a||this.getShiftIncrement();var b=this.getShiftUnit();this.setTimeSpan(Sch.util.Date.add(this.getStart(),b,a),Sch.util.Date.add(this.getEnd(),b,a))},shiftPrevious:function(a){a=-(a||this.getShiftIncrement());var b=this.getShiftUnit();this.setTimeSpan(Sch.util.Date.add(this.getStart(),b,a),Sch.util.Date.add(this.getEnd(),b,a))},getShiftUnit:function(){return this.shiftUnit||this.getMainUnit()},getShiftIncrement:function(){return this.shiftIncrement||1},getUnit:function(){return this.unit},getIncrement:function(){return this.increment},dateInAxis:function(a){return Sch.util.Date.betweenLesser(a,this.getStart(),this.getEnd())},timeSpanInAxis:function(b,a){if(this.isContinuous()){return Sch.util.Date.intersectSpans(b,a,this.getStart(),this.getEnd())}else{return b<this.getStart()&&a>this.getEnd()||this.getTickFromDate(b)!==this.getTickFromDate(a)}},forEachInterval:function(b,a,c){c=c||this;if(!this.headerConfig){return}if(b==="top"||b==="middle"&&this.headerConfig.bottom){this.forEachAuxInterval(b,a,c)}else{this.each(function(e,d){return a.call(c,e.data.start,e.data.end,d)})}},forEachMainInterval:function(a,b){this.forEachInterval("middle",a,b)},forEachAuxInterval:function(b,a,g){g=g||this;var c=this.getEnd(),h=this.getStart(),e=0,d;if(h>c){throw"Invalid time axis configuration"}while(h<c){d=Sch.util.Date.min(this.getNext(h,this.headerConfig[b].unit,this.headerConfig[b].increment||1),c);a.call(g,h,d,e);h=d;e++}}});Ext.define("Sch.view.Horizontal",{requires:["Ext.util.Region","Ext.Element","Sch.util.Date"],view:null,constructor:function(a){Ext.apply(this,a)},translateToScheduleCoordinate:function(a){var b=this.view;if(b.rtl){return b.getTimeAxisColumn().getEl().getRight()-a}return a-b.getEl().getX()+b.getScroll().left},translateToPageCoordinate:function(a){var b=this.view;return a+b.getEl().getX()-b.getScroll().left},getEventRenderData:function(a,b,c){var j=b||a.getStartDate(),h=c||a.getEndDate()||j,l=this.view,g=l.timeAxis.getStart(),m=l.timeAxis.getEnd(),k=Math,e=l.getXFromDate(Sch.util.Date.max(j,g)),n=l.getXFromDate(Sch.util.Date.min(h,m)),d={};if(this.view.rtl){d.right=k.min(e,n)}else{d.left=k.min(e,n)}d.width=k.max(1,k.abs(n-e))-l.eventBorderWidth;if(l.managedEventSizing){d.top=k.max(0,l.barMargin-(Ext.isIE&&!Ext.isStrict?0:l.eventBorderWidth-l.cellTopBorderWidth));d.height=l.rowHeight-2*l.barMargin-l.eventBorderWidth}d.start=j;d.end=h;d.startsOutsideView=j<g;d.endsOutsideView=h>m;return d},getScheduleRegion:function(e,h){var c=Ext.Element.prototype.getRegion?"getRegion":"getPageBox",l=this.view,k=e?Ext.fly(l.getRowNode(e))[c]():l.getTableRegion(),g=l.timeAxis.getStart(),n=l.timeAxis.getEnd(),b=l.getDateConstraints(e,h)||{start:g,end:n},d=this.translateToPageCoordinate(l.getXFromDate(b.start)),m=this.translateToPageCoordinate(l.getXFromDate(b.end)),j=k.top+l.barMargin,a=k.bottom-l.barMargin-l.eventBorderWidth;return new Ext.util.Region(j,Math.max(d,m),a,Math.min(d,m))},getResourceRegion:function(l,e,k){var o=this.view,d=o.getRowNode(l),g=Ext.fly(d).getOffsetsTo(o.getEl()),m=o.timeAxis.getStart(),q=o.timeAxis.getEnd(),c=e?Sch.util.Date.max(m,e):m,h=k?Sch.util.Date.min(q,k):q,j=o.getXFromDate(c),p=o.getXFromDate(h),n=g[1]+o.cellTopBorderWidth,a=g[1]+Ext.fly(d).getHeight()-o.cellBottomBorderWidth;if(!Ext.versions.touch){var b=o.getScroll();n+=b.top;a+=b.top}return new Ext.util.Region(n,Math.max(j,p),a,Math.min(j,p))},columnRenderer:function(d,s,m,o,q){var p=this.view;var b=p.eventStore.getEventsForResource(m);if(b.length===0){return}var j=p.timeAxis,n=[],h,e;for(h=0,e=b.length;h<e;h++){var a=b[h],c=a.getStartDate(),g=a.getEndDate();if(c&&g&&j.timeSpanInAxis(c,g)){n[n.length]=p.generateTplData(a,m,o)}}if(p.dynamicRowHeight){var k=p.eventLayout.horizontal;k.applyLayout(n,m);s.rowHeight=k.getRowHeight(m,b)}return p.eventTpl.apply(n)},resolveResource:function(b){var a=this.view;var c=a.findRowByChild(b);if(c){return a.getRecordForRowNode(c)}return null},getTimeSpanRegion:function(b,j,h){var d=this.view,c=d.getXFromDate(b),e=d.getXFromDate(j||b),a,g;if(!g){g=d.getTableRegion()}if(h){a=Math.max(g?g.bottom-g.top:0,d.getEl().dom.clientHeight)}else{a=g?g.bottom-g.top:0}return new Ext.util.Region(0,Math.max(c,e),a,Math.min(c,e))},getStartEndDatesFromRegion:function(c,b){var a=this.view.getDateFromCoordinate(c.left,b),d=this.view.getDateFromCoordinate(c.right,b);if(d&&a){return{start:Sch.util.Date.min(a,d),end:Sch.util.Date.max(a,d)}}return null},onEventAdd:function(o,n){var m=this.view;var e={};for(var h=0,c=n.length;h<c;h++){var a=n[h].getResources();for(var g=0,d=a.length;g<d;g++){var b=a[g];e[b.getId()]=b}}Ext.Object.each(e,function(k,j){m.repaintEventsForResource(j)})},onEventRemove:function(l,e){var j=this.view;var k=this.resourceStore;var g=Ext.tree&&Ext.tree.View&&j instanceof Ext.tree.View;if(!Ext.isArray(e)){e=[e]}var h=function(m){if(j.store.indexOf(m)>=0){j.repaintEventsForResource(m)}};for(var d=0;d<e.length;d++){var a=e[d].getResources();if(a.length>1){Ext.each(a,h,this)}else{var b=j.getEventNodeByRecord(e[d]);if(b){var c=j.resolveResource(b);if(Ext.Element.prototype.fadeOut){Ext.get(b).fadeOut({callback:function(){h(c)}})}else{Ext.Anim.run(Ext.get(b),"fade",{out:true,duration:500,after:function(){h(c)},autoClear:false})}}}}},onEventUpdate:function(c,d,b){var e=d.previous;var a=this.view;if(e&&e[d.resourceIdField]){var g=d.getResource(e[d.resourceIdField]);if(g){a.repaintEventsForResource(g)}}var h=d.getResources();Ext.each(h,function(j){a.repaintEventsForResource(j)})},setColumnWidth:function(c,b){var a=this.view;a.getTimeAxisViewModel().setTickWidth(c,b);a.fireEvent("columnwidthchange",a,c)},getVisibleDateRange:function(){var d=this.view;if(!d.getEl()){return null}var c=d.getTableRegion(),b=d.timeAxis.getStart(),g=d.timeAxis.getEnd(),e=d.getWidth();if(c.right-c.left<e){return{startDate:b,endDate:g}}var a=d.getScroll();return{startDate:d.getDateFromCoordinate(a.left,null,true),endDate:d.getDateFromCoordinate(a.left+e,null,true)}}});Ext.define("Sch.view.Vertical",{view:null,constructor:function(a){Ext.apply(this,a)},translateToScheduleCoordinate:function(b){var a=this.view;return b-a.el.getY()+a.el.getScroll().top},translateToPageCoordinate:function(d){var b=this.view;var c=b.el,a=c.getScroll();return d+c.getY()-a.top},getEventRenderData:function(a){var h=a.getStartDate(),g=a.getEndDate(),k=this.view,e=k.timeAxis.getStart(),l=k.timeAxis.getEnd(),j=Math,d=j.floor(k.getCoordinateFromDate(Sch.util.Date.max(h,e))),m=j.floor(k.getCoordinateFromDate(Sch.util.Date.min(g,l))),c=this.getResourceColumnWidth(a.getResource()),b;b={top:j.max(0,j.min(d,m)-k.eventBorderWidth),height:j.max(1,j.abs(d-m))};if(k.managedEventSizing){b.left=k.barMargin;b.width=c-2*k.barMargin-k.eventBorderWidth}b.start=h;b.end=g;b.startsOutsideView=h<e;b.endsOutsideView=g>l;return b},getScheduleRegion:function(d,g){var j=this.view,h=d?Ext.fly(j.getCellByPosition({column:j.resourceStore.indexOf(d),row:0})).getRegion():j.getTableRegion(),e=j.timeAxis.getStart(),m=j.timeAxis.getEnd(),a=j.getDateConstraints(d,g)||{start:e,end:m},c=this.translateToPageCoordinate(j.getCoordinateFromDate(Sch.util.Date.min(e,a.start))),l=this.translateToPageCoordinate(j.getCoordinateFromDate(Sch.util.Date.max(m,a.end))),b=h.left+j.barMargin,k=(d?h.left+this.getResourceColumnWidth(d):h.right)-j.barMargin;return new Ext.util.Region(Math.min(c,l),k,Math.max(c,l),b)},getResourceColumnWidth:function(d){var a=this.view,b=a.resourceStore.indexOf(d),c=a.headerCt.getGridColumns()[b];return c.rendered?c.getWidth():c.width},getResourceRegion:function(j,b,h){var l=this.view,e=l.resourceStore.indexOf(j)*this.getResourceColumnWidth(j),k=l.timeAxis.getStart(),o=l.timeAxis.getEnd(),a=b?Sch.util.Date.max(k,b):k,d=h?Sch.util.Date.min(o,h):o,g=Math.max(0,l.getCoordinateFromDate(a)-l.cellTopBorderWidth),n=l.getCoordinateFromDate(d)-l.cellTopBorderWidth,c=e+l.cellBorderWidth,m=e+this.getResourceColumnWidth(j)-l.cellBorderWidth;return new Ext.util.Region(Math.min(g,n),m,Math.max(g,n),c)},columnRenderer:function(g,t,n,p,s){var q=this.view;var e="";if(p===0){var a=Sch.util.Date,m=q.timeAxis,o,c,k,h;o=[];c=q.eventStore.getEventsForResource(n);for(k=0,h=c.length;k<h;k++){var b=c[k],d=b.getStartDate(),j=b.getEndDate();if(d&&j&&m.timeSpanInAxis(d,j)){o.push(q.generateTplData(b,n,s))}}q.eventLayout.vertical.applyLayout(o,this.getResourceColumnWidth(n));e="&#160;"+q.eventTpl.apply(o);if(Ext.isIE){t.tdAttr='style="z-index:1000"'}}if(s%2===1){t.tdCls+=" "+q.altColCls}return e},resolveResource:function(b){var a=this.view;b=Ext.fly(b).is(a.cellSelector)?b:Ext.fly(b).up(a.cellSelector);if(b){var c=a.getHeaderByCell(b.dom?b.dom:b);if(c){return a.resourceStore.getAt(a.headerCt.getHeaderIndex(c))}}return null},onEventUpdate:function(b,c){this.renderSingle.call(this,c);var a=this.view;var d=c.previous;if(d&&d[c.resourceIdField]){var e=c.getResource(d[c.resourceIdField]);this.relayoutRenderedEvents(e)}this.relayoutRenderedEvents(c.getResource())},onEventAdd:function(b,c){var a=this.view;if(c.length===1){this.renderSingle(c[0]);this.relayoutRenderedEvents(c[0].getResource())}else{a.repaintEventsForResource(a.store.first())}},onEventRemove:function(b,c){var a=this.view;if(c.length===1){this.relayoutRenderedEvents(this.getResourceByEventRecord(c[0]))}else{a.repaintEventsForResource(a.store.first())}},relayoutRenderedEvents:function(j){var h=[],b=this.view,d,a,g,e,c=b.eventStore.getEventsForResource(j);if(c.length>0){for(d=0,a=c.length;d<a;d++){g=c[d];e=b.getEventNodeByRecord(g);if(e){h.push({start:g.getStartDate(),end:g.getEndDate(),id:e.id})}}b.eventLayout.vertical.applyLayout(h,this.getResourceColumnWidth(j));for(d=0;d<h.length;d++){g=h[d];Ext.fly(g.id).setStyle({left:g.left+"px",width:g.width+"px"})}}},renderSingle:function(d){var h=d.getResource();var a=this.view;var c=a.getEventNodeByRecord(d);var g=a.resourceStore.indexOf(h);if(c){Ext.fly(c).remove()}var b=a.getCell(a.store.getAt(0),a.headerCt.getHeaderAtIndex(g)).first();var e=a.generateTplData(d,h,g);a.eventTpl.append(b,[e])},getTimeSpanRegion:function(b,h){var d=this.view,a=d.getCoordinateFromDate(b),g=d.getCoordinateFromDate(h||b),c=d.getTableRegion(),e=c?c.right-c.left:d.el.dom.clientWidth;return new Ext.util.Region(Math.min(a,g),e,Math.max(a,g),0)},getStartEndDatesFromRegion:function(c,b){var a=this.view.getDateFromCoordinate(c.top,b),d=this.view.getDateFromCoordinate(c.bottom,b);if(a&&d){return{start:Sch.util.Date.min(a,d),end:Sch.util.Date.max(a,d)}}else{return null}},setColumnWidth:function(c,b){var a=this.view;if(a.panel){a.panel.resourceColumnWidth=c}var d=a.headerCt;d.suspendLayout=true;d.items.each(function(e){if(e.rendered){e.minWidth=undefined;e.setWidth(c)}});d.suspendLayout=false;d.doLayout();if(!b){a.refresh()}a.fireEvent("columnwidthchange",a,c)},getVisibleDateRange:function(){var e=this.view;if(!e.rendered){return null}var c=e.getEl().getScroll(),b=e.getHeight(),d=e.getTableRegion(),g=e.timeAxis.getEnd();if(d.bottom-d.top<b){var a=e.timeAxis.getStart();return{startDate:a,endDate:endDate}}return{startDate:e.getDateFromCoordinate(c.top,null,true),endDate:e.getDateFromCoordinate(c.top+b,null,true)||g}}});Ext.define("Sch.selection.EventModel",{extend:"Ext.selection.Model",alias:"selection.eventmodel",requires:["Ext.util.KeyNav"],deselectOnContainerClick:true,constructor:function(a){this.addEvents("beforedeselect","beforeselect","deselect","select");this.callParent(arguments)},bindComponent:function(a){var b=this,c={refresh:b.refresh,scope:b};b.view=a;b.bindStore(a.getEventStore());a.on({eventclick:b.onEventClick,itemclick:b.onItemClick,scope:this});a.on(c)},onEventClick:function(b,a,c){this.selectWithEvent(a,c)},onItemClick:function(){if(this.deselectOnContainerClick){this.deselectAll()}},onSelectChange:function(d,b,k,a){var g=this,h=g.view,j=g.store,e=b?"select":"deselect",c=0;if((k||g.fireEvent("before"+e,g,d))!==false&&a()!==false){if(b){h.onEventSelect(d,k)}else{h.onEventDeselect(d,k)}if(!k){g.fireEvent(e,g,d)}}},selectRange:function(){},selectNode:function(c,d,a){var b=this.view.resolveEventRecord(c);if(b){this.select(b,d,a)}},deselectNode:function(c,d,a){var b=this.view.resolveEventRecord(c);if(b){this.deselect(b,a)}}});Ext.define("Sch.plugin.Printable",{extend:"Ext.AbstractPlugin",lockableScope:"top",docType:"<!DOCTYPE HTML>",beforePrint:Ext.emptyFn,afterPrint:Ext.emptyFn,autoPrintAndClose:true,fakeBackgroundColor:true,scheduler:null,constructor:function(a){Ext.apply(this,a)},init:function(a){this.scheduler=a;a.print=Ext.Function.bind(this.print,this)},mainTpl:new Ext.XTemplate('{docType}<html class="x-border-box {htmlClasses}"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /><title>{title}</title>{styles}</head><body class="sch-print-body {bodyClasses}"><div class="sch-print-ct {componentClasses}" style="width:{totalWidth}px"><div class="sch-print-headerbg" style="border-left-width:{totalWidth}px;height:{headerHeight}px;"></div><div class="sch-print-header-wrap">{[this.printLockedHeader(values)]}{[this.printNormalHeader(values)]}</div>{[this.printLockedGrid(values)]}{[this.printNormalGrid(values)]}</div><script type="text/javascript">{setupScript}<\/script></body></html>',{printLockedHeader:function(a){var b="";if(a.lockedGrid){b+='<div style="left:-'+a.lockedScroll+"px;margin-right:-"+a.lockedScroll+"px;width:"+(a.lockedWidth+a.lockedScroll)+'px"';b+='class="sch-print-lockedheader x-grid-header-ct x-grid-header-ct-default x-docked x-docked-top x-grid-header-ct-docked-top x-grid-header-ct-default-docked-top x-box-layout-ct x-docked-noborder-top x-docked-noborder-right x-docked-noborder-left">';b+=a.lockedHeader;b+="</div>"}return b},printNormalHeader:function(a){var b="";if(a.normalGrid){b+='<div style="left:'+(a.lockedGrid?a.lockedWidth:"0")+"px;width:"+a.normalWidth+'px;" class="sch-print-normalheader x-grid-header-ct x-grid-header-ct-default x-docked x-docked-top x-grid-header-ct-docked-top x-grid-header-ct-default-docked-top x-box-layout-ct x-docked-noborder-top x-docked-noborder-right x-docked-noborder-left">';b+='<div style="margin-left:-'+a.normalScroll+'px">'+a.normalHeader+"</div>";b+="</div>"}return b},printLockedGrid:function(a){var b="";if(a.lockedGrid){b+='<div id="lockedRowsCt" style="left:-'+a.lockedScroll+"px;margin-right:-"+a.lockedScroll+"px;width:"+(a.lockedWidth+a.lockedScroll)+"px;top:"+a.headerHeight+'px;" class="sch-print-locked-rows-ct '+a.innerLockedClasses+' x-grid-inner-locked">';b+=a.lockedRows;b+="</div>"}return b},printNormalGrid:function(a){var b="";if(a.normalGrid){b+='<div id="normalRowsCt" style="left:'+(a.lockedGrid?a.lockedWidth:"0")+"px;top:"+a.headerHeight+"px;width:"+a.normalWidth+'px" class="sch-print-normal-rows-ct '+a.innerNormalClasses+'">';b+='<div style="position:relative;overflow:visible;margin-left:-'+a.normalScroll+'px">'+a.normalRows+"</div>";b+="</div>"}return b}}),getGridContent:function(p){var o=p.normalGrid,e=p.lockedGrid,q=e.getView(),h=o.getView(),l,d,n,k,m,b,j;this.beforePrint(p);if(e.collapsed&&!o.collapsed){b=e.getWidth()+o.getWidth()}else{b=o.getWidth();j=e.getWidth()}var c=q.store.getRange();d=q.tpl.apply(q.collectData(c,0));n=h.tpl.apply(h.collectData(c,0));k=q.el.getScroll().left;m=h.el.getScroll().left;var a=document.createElement("div");a.innerHTML=d;if(Ext.versions.extjs.isLessThan("4.2.1")){e.headerCt.items.each(function(t,s){if(t.isHidden()){Ext.fly(a).down("colgroup:nth-child("+(s+1)+") col").setWidth(0)}})}d=a.innerHTML;if(Sch.feature&&Sch.feature.AbstractTimeSpan){var g=(p.plugins||[]).concat(p.normalGrid.plugins||[]).concat(p.columnLinesFeature||[]);Ext.each(g,function(s){if(s instanceof Sch.feature.AbstractTimeSpan&&s.generateMarkup){n=s.generateMarkup(true)+n}})}this.afterPrint(p);return{normalHeader:o.headerCt.el.dom.innerHTML,lockedHeader:e.headerCt.el.dom.innerHTML,lockedGrid:!e.collapsed,normalGrid:!o.collapsed,lockedRows:d,normalRows:n,lockedScroll:k,normalScroll:m,lockedWidth:j-(Ext.isWebKit?1:0),normalWidth:b,headerHeight:o.headerCt.getHeight(),innerLockedClasses:e.view.el.dom.className,innerNormalClasses:o.view.el.dom.className+(this.fakeBackgroundColor?" sch-print-fake-background":""),width:p.getWidth()}},getStylesheets:function(){return Ext.getDoc().select('link[rel="stylesheet"]')},print:function(){var h=this.scheduler;if(!(this.mainTpl instanceof Ext.Template)){var a=22;this.mainTpl=Ext.create("Ext.XTemplate",this.mainTpl,{compiled:true,disableFormats:true})}var j=h.getView(),k=this.getStylesheets(),e=Ext.get(Ext.core.DomHelper.createDom({tag:"div"})),b;k.each(function(l){e.appendChild(l.dom.cloneNode(true))});b=e.dom.innerHTML+"";var g=this.getGridContent(h),c=this.mainTpl.apply(Ext.apply({waitText:this.waitText,docType:this.docType,htmlClasses:Ext.getBody().parent().dom.className,bodyClasses:Ext.getBody().dom.className,componentClasses:h.el.dom.className,title:h.title||"",styles:b,totalWidth:h.getWidth(),setupScript:"window.onload = function(){ ("+this.setupScript.toString()+")("+h.syncRowHeight+", "+this.autoPrintAndClose+", "+Ext.isChrome+", "+Ext.isIE+"); };"},g));var d=window.open("","printgrid");this.printWindow=d;d.document.write(c);d.document.close()},setupScript:function(e,a,d,b){var c=function(){if(e){var g=document.getElementById("lockedRowsCt"),p=document.getElementById("normalRowsCt"),h=g&&g.getElementsByTagName("tr"),n=p&&p.getElementsByTagName("tr"),l=n&&h?n.length:0;for(var k=0;k<l;k++){var j=n[k].clientHeight;var m=h[k].clientHeight;var o=Math.max(j,m)+"px";h[k].style.height=n[k].style.height=o}}if(a){window.print();if(!d){window.close()}}};if(b){setTimeout(c,0)}else{c()}}});Ext.define("Sch.plugin.Export",{extend:"Ext.util.Observable",alternateClassName:"Sch.plugin.PdfExport",mixins:["Ext.AbstractPlugin"],requires:["Ext.XTemplate"],lockableScope:"top",printServer:undefined,tpl:null,exportDialogClassName:"Sch.widget.ExportDialog",exportDialogConfig:{},defaultConfig:{format:"A4",orientation:"portrait",range:"complete",showHeader:true,singlePageExport:false},expandAllBeforeExport:false,pageSizes:{A5:{width:5.8,height:8.3},A4:{width:8.3,height:11.7},A3:{width:11.7,height:16.5},Letter:{width:8.5,height:11},Legal:{width:8.5,height:14}},openAfterExport:true,fileFormat:"pdf",DPI:72,constructor:function(a){a=a||{};if(a.exportDialogConfig){Ext.Object.each(this.defaultConfig,function(c,b,e){var d=a.exportDialogConfig[c];if(d){e[c]=d}})}this.callParent([a]);if(!this.tpl){this.tpl=new Ext.XTemplate('<!DOCTYPE html><html class="x-border-box {htmlClasses}"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /><title>{column}/{row}</title>{styles}</head><body class="x-webkit sch-export {bodyClasses}">','<tpl if="showHeader">','<div class="sch-export-header" style="width:{totalWidth}px"><h2>{column}/{row}</h2></div>',"</tpl>",'<div class="{componentClasses}" style="height:{bodyHeight}px; width:{totalWidth}px; position: relative !important">{HTML}</div></body></html>',{disableFormats:true})}this.addEvents("hidedialogwindow","showdialogerror","updateprogressbar");this.setFileFormat(this.fileFormat)},init:function(a){this.scheduler=a;a.showExportDialog=Ext.Function.bind(this.showExportDialog,this);a.doExport=Ext.Function.bind(this.doExport,this)},setFileFormat:function(a){if(typeof a!=="string"){this.fileFormat="pdf"}else{a=a.toLowerCase();if(a==="png"){this.fileFormat=a}else{this.fileFormat="pdf"}}},showExportDialog:function(){var b=this,a=b.scheduler.getSchedulingView();if(b.win){b.win.destroy();b.win=null}b.win=Ext.create(b.exportDialogClassName,{plugin:b,exportDialogConfig:Ext.apply({startDate:b.scheduler.getStart(),endDate:b.scheduler.getEnd(),rowHeight:a.rowHeight,columnWidth:a.timeAxisViewModel.getTickWidth(),defaultConfig:b.defaultConfig},b.exportDialogConfig)});b.saveRestoreData();b.win.show()},saveRestoreData:function(){var b=this.scheduler,a=b.getSchedulingView(),c=b.normalGrid,d=b.lockedGrid;this.restoreSettings={width:b.getWidth(),height:b.getHeight(),rowHeight:a.rowHeight,columnWidth:a.timeAxisViewModel.getTickWidth(),startDate:b.getStart(),endDate:b.getEnd(),normalWidth:c.getWidth(),normalLeft:c.getEl().getStyle("left"),lockedWidth:d.getWidth(),lockedCollapse:d.collapsed,normalCollapse:c.collapsed}},getStylesheets:function(){var c=Ext.getDoc().select('link[rel="stylesheet"]'),a=Ext.get(Ext.core.DomHelper.createDom({tag:"div"})),b;c.each(function(d){a.appendChild(d.dom.cloneNode(true))});b=a.dom.innerHTML+"";return b},doExport:function(o,k,s){this.mask();var N=this,q=N.scheduler,t=q.getSchedulingView(),n=N.getStylesheets(),L=o||N.defaultConfig,u=q.normalGrid,I=q.lockedGrid,D=u.headerCt.getHeight();if(!N.restoreSettings){N.saveRestoreData()}u.expand();I.expand();N.fireEvent("updateprogressbar",0.1);if(this.expandAllBeforeExport&&q.expandAll){q.expandAll()}var M=q.timeAxis.getTicks(),x=t.timeAxisViewModel.getTickWidth(),G,e,h;if(!L.singlePageExport){if(L.orientation==="landscape"){G=N.pageSizes[L.format].height*N.DPI;h=N.pageSizes[L.format].width*N.DPI}else{G=N.pageSizes[L.format].width*N.DPI;h=N.pageSizes[L.format].height*N.DPI}var K=41;e=Math.floor(h)-D-(L.showHeader?K:0)}t.timeAxisViewModel.suppressFit=true;if(L.range!=="complete"){var d,b,m,c,A;if(L.range==="date"){d=new Date(L.dateFrom);b=new Date(L.dateTo);if(Sch.util.Date.getDurationInDays(d,b<1)){b=Sch.util.Date.add(b,Sch.util.Date.DAY,1);b=Sch.util.Date.constrain(b,q.getStart(),q.getEnd())}}else{if(L.range==="current"){m=t.getVisibleDateRange();d=m.startDate;b=m.endDate;if(!b){b=t.timeAxis.getEnd()}}}c=Math.floor(t.timeAxis.getTickFromDate(d));A=Math.floor(t.timeAxis.getTickFromDate(b));M=Ext.Array.filter(M,function(l,a){return a>=c&&a<=A});q.setTimeSpan(d,b)}var F,C,j,H;if(!L.singlePageExport){q.setWidth(G);q.setTimeColumnWidth(x);t.timeAxisViewModel.setTickWidth(x);j=N.calculatePages(L,M,x,G,e);H={ticks:M,printHeight:e,paperWidth:G,headerHeight:D,styles:n,config:L};C=N.getExportJsonHtml(j,H);F=L.format}else{C=N.getExportJsonHtml(null,{styles:n,config:L,timeColumnWidth:x,ticks:M});var g=N.getRealSize(),z=Ext.Number.toFixed(g.width/N.DPI,1),y=Ext.Number.toFixed(g.height/N.DPI,1);F=z+"in*"+y+"in"}N.fireEvent("updateprogressbar",0.4);if(N.printServer){if(!N.debug&&!N.test){Ext.Ajax.request({type:"POST",url:N.printServer,timeout:60000,params:{html:{array:C},format:F,orientation:L.orientation,range:L.range,fileFormat:N.fileFormat},success:function(a){N.onSuccess(a,k,s)},failure:function(a){N.onFailure(a,s)},scope:N})}else{if(N.debug){var p,J=Ext.JSON.decode(C);for(var E=0,B=J.length;E<B;E++){p=window.open();p.document.write(J[E].html);p.document.close()}}}}else{throw"Print server URL is not defined, please specify printServer config"}t.timeAxisViewModel.suppressFit=false;N.restorePanel();if(N.test){return{htmlArray:Ext.JSON.decode(C),calculatedPages:j}}},getRealSize:function(){var c=this.scheduler,b=c.normalGrid.headerCt.getHeight(),a=b+c.lockedGrid.getView().getEl().down(".x-grid-table").getHeight(),d=c.lockedGrid.headerCt.getEl().first().getWidth()+c.normalGrid.body.select(".x-grid-table").first().getWidth();return{width:d,height:a}},calculatePages:function(x,y,m,u,b){var z=this,l=z.scheduler,w=l.lockedGrid,c=l.getSchedulingView().rowHeight,A=w.headerCt,t=A.getEl().first().getWidth(),k=null,n=0;if(t>w.getWidth()){var h=0,d=0,q=0,s=false,e;k=[];w.headerCt.items.each(function(E,C,B){e=E.width;if(!q||q+e<u){q+=e;if(C===B-1){s=true;var D=u-q;n=Math.floor(D/m)}}else{s=true}if(s){d=C;k.push({firstColumnIdx:h,lastColumnIdx:d,totalColumnsWidth:q||e});h=d+1;q=0}})}else{n=Math.floor((u-t)/m)}var p=Math.floor(u/m),a=Math.ceil((y.length-n)/p),j=l.getSchedulingView().store.getCount(),g=Math.floor(b/c),o=Math.ceil(j/g);if(!k||a===0){a+=1}return{columnsAmountLocked:n,columnsAmountNormal:p,lockedColumnPages:k,rowsAmount:g,rowPages:o,columnPages:a,timeColumnWidth:m,lockedGridWidth:t,rowHeight:c,panelHTML:{}}},getExportJsonHtml:function(g,H){var K=this,o=K.scheduler,B=[],y=new RegExp(/x-ie\d?|x-gecko/g),E=Ext.getBody().dom.className.replace(y,""),s=o.el.dom.className,n=H.styles,I=H.config,J=H.ticks,p,d,e,q,t;if(Ext.isIE){E+=" x-ie-export"}o.timeAxis.autoAdjust=false;if(!I.singlePageExport){var u=g.columnsAmountLocked,x=g.columnsAmountNormal,m=g.lockedColumnPages,j=g.rowsAmount,w=g.rowPages,a=g.columnPages,F=H.paperWidth,c=H.printHeight,C=H.headerHeight,l=null,b,h;t=g.timeColumnWidth;p=g.panelHTML;if(m){h=m.length;a+=h}for(var D=0;D<a;D+=1){if(m&&D<h){if(D===h-1&&u!==0){o.normalGrid.show();l=Ext.Number.constrain(u-1,0,J.length-1);o.setTimeSpan(J[0].start,J[l].end)}else{o.normalGrid.hide()}var G=m[D];this.showLockedColumns();this.hideLockedColumns(G.firstColumnIdx,G.lastColumnIdx);o.lockedGrid.setWidth(G.totalColumnsWidth+1)}else{if(D===0){this.showLockedColumns();if(u!==0){o.normalGrid.show()}l=Ext.Number.constrain(u-1,0,J.length-1);o.setTimeSpan(J[0].start,J[l].end)}else{o.lockedGrid.hide();o.normalGrid.show();if(l===null){l=-1}if(J[l+x]){o.setTimeSpan(J[l+1].start,J[l+x].end);l=l+x}else{o.setTimeSpan(J[l+1].start,J[J.length-1].end)}}}o.setTimeColumnWidth(t,true);o.getSchedulingView().timeAxisViewModel.setTickWidth(t);for(var A=0;A<w;A+=1){K.hideRows(j,A);p.dom=o.body.dom.innerHTML;p.k=A;p.i=D;d=K.resizePanelHTML(p);q=K.tpl.apply(Ext.apply({bodyClasses:E,bodyHeight:c+C,componentClasses:s,styles:n,showHeader:I.showHeader,HTML:d.dom.innerHTML,totalWidth:F,headerHeight:C,column:D+1,row:A+1}));e={html:q};B.push(e);K.showRows()}}}else{t=H.timeColumnWidth;p=g?g.panelHTML:{};o.setTimeSpan(J[0].start,J[J.length-1].end);o.lockedGrid.setWidth(o.lockedGrid.headerCt.getEl().first().getWidth());o.setTimeColumnWidth(t);o.getSchedulingView().timeAxisViewModel.setTickWidth(t);var z=K.getRealSize();Ext.apply(p,{dom:o.body.dom.innerHTML,column:1,row:1});d=K.resizePanelHTML(p);q=K.tpl.apply(Ext.apply({bodyClasses:E,bodyHeight:z.height,componentClasses:s,styles:n,showHeader:false,HTML:d.dom.innerHTML,totalWidth:z.width}));e={html:q};B.push(e)}o.timeAxis.autoAdjust=true;return Ext.JSON.encode(B)},resizePanelHTML:function(g){var m=Ext.get(Ext.core.DomHelper.createDom({tag:"div",html:g.dom})),l=this.scheduler,d=l.lockedGrid,k=l.normalGrid,h,e,b;if(Ext.isIE6||Ext.isIE7||Ext.isIEQuirks){var j=document.createDocumentFragment(),a,c;if(j.getElementById){a="getElementById";c=""}else{a="querySelector";c="#"}j.appendChild(m.dom);h=d.body.child(".x-grid-view")?d.body.child(".x-grid-view"):d.body.child(".x-tree-view");e=[j[a](c+l.id+"-targetEl"),j[a](c+l.id+"-innerCt"),j[a](c+d.id),j[a](c+d.body.id),j[a](c+h.id)];b=[j[a](c+k.id),j[a](c+k.headerCt.id),j[a](c+k.body.id),j[a](c+k.getView().id)];Ext.Array.each(e,function(n){if(n!==null){n.style.height="100%";n.style.width="100%"}});Ext.Array.each(b,function(o,n){if(o!==null){if(n===1){o.style.width="100%"}else{o.style.height="100%";o.style.width="100%"}}});m.dom.innerHTML=j.firstChild.innerHTML}else{h=d.body.child(".x-grid-view")||d.body.child(".x-tree-view");e=[m.select("#"+l.id+"-targetEl").first(),m.select("#"+l.id+"-innerCt").first(),m.select("#"+d.id).first(),m.select("#"+d.body.id).first(),m.select("#"+h.id)];b=[m.select("#"+k.id).first(),m.select("#"+k.headerCt.id).first(),m.select("#"+k.body.id).first(),m.select("#"+k.getView().id).first()];Ext.Array.each(e,function(o,n){if(o){o.setHeight("100%");if(n!==3&&n!==2){o.setWidth("100%")}}});Ext.Array.each(b,function(o,n){if(n===1){o.setWidth("100%")}else{o.applyStyles({height:"100%",width:"100%"})}})}return m},getWin:function(){return this.win||null},onSuccess:function(c,j,b){var d=this,h=d.getWin(),a;try{a=Ext.JSON.decode(c.responseText)}catch(g){this.onFailure(c,b);return}d.fireEvent("updateprogressbar",1);if(a.success){setTimeout(function(){d.fireEvent("hidedialogwindow");d.unmask();if(d.openAfterExport){window.open(a.url,"ExportedPanel")}},h?h.hideTime:3000)}else{d.fireEvent("showdialogerror",h,a.msg);d.unmask()}if(j){j.call(this,c)}},onFailure:function(b,a){var c=this.getWin(),d=b.status===200?b.responseText:b.statusText;this.fireEvent("showdialogerror",c,d);this.unmask();if(a){a.call(this,b)}},hideRows:function(d,g){var c=this.scheduler.lockedGrid.getEl().select(".x-grid-row"),a=this.scheduler.normalGrid.getEl().select(".x-grid-row"),h=d*g,b=h+d;for(var e=0;e<a.elements.length;e+=1){if(e<h||e>=b){c.elements[e].className+=" sch-none";a.elements[e].className+=" sch-none"}}},showRows:function(){this.scheduler.getEl().select(".x-grid-row").each(function(a){a.removeCls("sch-none")})},hideLockedColumns:function(c,e){var d=this.scheduler.lockedGrid.headerCt.items.items;for(var b=0,a=d.length;b<a;b+=1){if(b<c||b>e){d[b].hide()}}},showLockedColumns:function(){this.scheduler.lockedGrid.headerCt.items.each(function(a){a.show()})},mask:function(){var a=Ext.getBody().mask();a.addCls("sch-export-mask")},unmask:function(){Ext.getBody().unmask()},restorePanel:function(){var b=this.scheduler,a=this.restoreSettings;b.setWidth(a.width);b.setHeight(a.height);b.setTimeSpan(a.startDate,a.endDate);b.setTimeColumnWidth(a.columnWidth,true);b.getSchedulingView().setRowHeight(a.rowHeight);b.lockedGrid.show();b.normalGrid.setWidth(a.normalWidth);b.normalGrid.getEl().setStyle("left",a.normalLeft);b.lockedGrid.setWidth(a.lockedWidth);if(a.lockedCollapse){b.lockedGrid.collapse()}if(a.normalCollapse){b.normalGrid.collapse()}},destroy:function(){if(this.win){this.win.destroy()}}});Ext.define("Sch.plugin.Lines",{extend:"Sch.feature.AbstractTimeSpan",cls:"sch-timeline",showTip:true,innerTpl:null,prepareTemplateData:null,side:null,init:function(a){this.callParent(arguments);if(Ext.isString(this.innerTpl)){this.innerTpl=new Ext.XTemplate(this.innerTpl)}this.side=a.rtl?"right":"left";var b=this.innerTpl;if(!this.template){this.template=new Ext.XTemplate('<tpl for=".">','<div id="'+this.uniqueCls+'-{id}"'+(this.showTip?'title="{[this.getTipText(values)]}" ':"")+'class="'+this.cls+" "+this.uniqueCls+' {Cls}" style="'+this.side+':{left}px;top:{top}px;height:{height}px;width:{width}px">'+(b?"{[this.renderInner(values)]}":"")+"</div>","</tpl>",{getTipText:function(c){return a.getSchedulingView().getFormattedDate(c.Date)+" "+(c.Text||"")},renderInner:function(c){return b.apply(c)}})}},getElementData:function(k,n,c){var o=this.store,j=this.schedulerView,e=c||o.getRange(),h=[],a,b,m;for(var g=0,d=e.length;g<d;g++){a=e[g];b=a.get("Date");if(b&&Sch.util.Date.betweenLesser(b,k,n)){m=j.getTimeSpanRegion(b,null,this.expandToFitView);h[h.length]=Ext.apply({id:a.internalId,left:m.left,top:m.top,width:1,height:Ext.versions.touch?"100%":m.bottom-m.top},this.prepareTemplateData?this.prepareTemplateData(a):a.data)}}return h}});Ext.define("Sch.plugin.CurrentTimeLine",{extend:"Sch.plugin.Lines",tooltipText:"Current time",updateInterval:60000,autoUpdate:true,expandToFitView:true,timer:null,init:function(c){var b=Ext.create("Ext.data.JsonStore",{fields:["Date","Cls","Text"],data:[{Date:new Date,Cls:"sch-todayLine",Text:this.tooltipText}]});var a=b.first();if(this.autoUpdate){this.timer=setInterval(function(){a.set("Date",new Date)},this.updateInterval)}c.on("destroy",this.onHostDestroy,this);this.store=b;this.callParent(arguments)},onHostDestroy:function(){if(this.timer){clearInterval(this.timer);this.timer=null}if(this.store.autoDestroy){this.store.destroy()}}});Ext.define("Sch.plugin.DragSelector",{extend:"Sch.util.DragTracker",mixins:["Ext.AbstractPlugin"],lockableScope:"top",constructor:function(a){a=a||{};Ext.applyIf(a,{onBeforeStart:this.onBeforeStart,onStart:this.onStart,onDrag:this.onDrag,onEnd:this.onEnd});this.callParent(arguments)},init:function(a){a.on({afterrender:this.onSchedulerRender,destroy:this.onSchedulerDestroy,scope:this});this.scheduler=a},onBeforeStart:function(a){return a.ctrlKey},onStart:function(b){var c=this.schedulerView;if(!this.proxy){this.proxy=c.el.createChild({cls:"sch-drag-selector x-view-selector"})}else{this.proxy.show()}this.bodyRegion=c.getScheduleRegion();var a=[];c.getEventNodes().each(function(d){a[a.length]={region:d.getRegion(),node:d.dom}},this);this.eventData=a;this.sm.deselectAll()},onDrag:function(j){var k=this.sm,g=this.eventData,b=this.getRegion().constrainTo(this.bodyRegion),c,d,a,h;this.proxy.setRegion(b);for(c=0,a=g.length;c<a;c++){d=g[c];h=b.intersect(d.region);if(h&&!d.selected){d.selected=true;k.selectNode(d.node,true)}else{if(!h&&d.selected){d.selected=false;k.deselectNode(d.node)}}}},onEnd:function(a){if(this.proxy){this.proxy.setDisplayed(false)}},onSchedulerRender:function(a){this.sm=a.getEventSelectionModel();this.schedulerView=a.getSchedulingView();this.initEl(a.el)},onSchedulerDestroy:function(){Ext.destroy(this.proxy);this.destroy()}});Ext.define("Sch.plugin.EventEditor",{extend:"Ext.form.Panel",mixins:["Ext.AbstractPlugin"],alias:"widget.eventeditor",lockableScope:"normal",requires:["Sch.util.Date"],saveText:"Save",deleteText:"Delete",cancelText:"Cancel",hideOnBlur:true,startDateField:null,startTimeField:null,durationField:null,timeConfig:null,dateConfig:null,durationConfig:null,durationUnit:null,durationText:null,triggerEvent:"eventdblclick",fieldsPanelConfig:null,dateFormat:"Y-m-d",timeFormat:"H:i",cls:"sch-eventeditor",border:false,shadow:false,dynamicForm:true,eventRecord:null,hidden:true,collapsed:true,currentForm:null,scheduler:null,schedulerView:null,resourceRecord:null,preventHeader:true,floating:true,hideMode:"offsets",ignoreCls:"sch-event-editor-ignore-click",layout:{type:"vbox",align:"stretch"},constrain:false,constructor:function(a){a=a||{};Ext.apply(this,a);this.durationUnit=this.durationUnit||Sch.util.Date.HOUR;this.addEvents("beforeeventdelete","beforeeventsave");this.callParent(arguments)},initComponent:function(){if(!this.fieldsPanelConfig){throw"Must define a fieldsPanelConfig property"}Ext.apply(this,{fbar:this.buttons||this.buildButtons(),items:[{xtype:"container",layout:"hbox",height:35,border:false,cls:"sch-eventeditor-timefields",items:this.buildDurationFields()},Ext.applyIf(this.fieldsPanelConfig,{flex:1,activeItem:0})]});this.callParent(arguments)},init:function(a){this.ownerCt=a;this.schedulerView=a.getView();this.eventStore=this.schedulerView.getEventStore();this.schedulerView.on({afterrender:this.onSchedulerRender,destroy:this.onSchedulerDestroy,dragcreateend:this.onDragCreateEnd,scope:this});if(this.triggerEvent){this.schedulerView.on(this.triggerEvent,this.onActivateEditor,this)}this.schedulerView.registerEventEditor(this)},onSchedulerRender:function(){this.render(Ext.getBody());if(this.hideOnBlur){this.mon(Ext.getDoc(),"mousedown",this.onMouseDown,this)}},show:function(b,g){if(this.deleteButton){this.deleteButton.setVisible(this.eventStore.indexOf(b)>=0)}this.eventRecord=b;this.durationField.setValue(Sch.util.Date.getDurationInUnit(b.getStartDate(),b.getEndDate(),this.durationUnit));var a=b.getStartDate();this.startDateField.setValue(a);this.startTimeField.setValue(a);var d=this.schedulerView.up("[floating=true]");if(d){this.getEl().setZIndex(d.getEl().getZIndex()+1);d.addCls(this.ignoreCls)}this.callParent();g=g||this.schedulerView.getElementFromEventRecord(b);this.alignTo(g,this.schedulerView.getOrientation()=="horizontal"?"bl":"tl-tr",this.getConstrainOffsets(g));this.expand(!this.constrain);if(this.constrain){this.doConstrain(Ext.util.Region.getRegion(Ext.getBody()))}var h,e=b.get("EventType");if(e&&this.dynamicForm){var j=this.items.getAt(1),c=j.query("> component[EventType="+e+"]");if(!c.length){throw"Can't find form for EventType="+e}if(!j.getLayout().setActiveItem){throw"Can't switch active component in the 'fieldsPanel'"}h=c[0];if(!(h instanceof Ext.form.Panel)){throw"Each child component of 'fieldsPanel' should be a 'form'"}j.getLayout().setActiveItem(h)}else{h=this}this.currentForm=h;h.getForm().loadRecord(b)},getConstrainOffsets:function(a){return[0,0]},onSaveClick:function(){var e=this,j=e.eventRecord,a=this.currentForm.getForm();if(a.isValid()&&this.fireEvent("beforeeventsave",this,j)!==false){var c=e.startDateField.getValue(),k,b=e.startTimeField.getValue(),h=e.durationField.getValue();if(c&&h>=0){if(b){Sch.util.Date.copyTimeValues(c,b)}k=Sch.util.Date.add(c,this.durationUnit,h)}else{return}var d=j.getResources();var g=d.length>0&&d[0]||this.resourceRecord;if(!this.schedulerView.allowOverlap&&!this.schedulerView.isDateRangeAvailable(c,k,j,g)){return}j.beginEdit();var l=j.endEdit;j.endEdit=Ext.emptyFn;a.updateRecord(j);j.endEdit=l;j.setStartEndDate(c,k);j.endEdit();if(this.eventStore.indexOf(this.eventRecord)<0){if(this.schedulerView.fireEvent("beforeeventadd",this.schedulerView,j)!==false){this.eventStore.append(j)}}e.collapse(null,true)}},onDeleteClick:function(){if(this.fireEvent("beforeeventdelete",this,this.eventRecord)!==false){this.eventStore.remove(this.eventRecord)}this.collapse(null,true)},onCancelClick:function(){this.collapse(null,true)},buildButtons:function(){this.saveButton=new Ext.Button({text:this.saveText,scope:this,handler:this.onSaveClick});this.deleteButton=new Ext.Button({text:this.deleteText,scope:this,handler:this.onDeleteClick});this.cancelButton=new Ext.Button({text:this.cancelText,scope:this,handler:this.onCancelClick});return[this.saveButton,this.deleteButton,this.cancelButton]},buildDurationFields:function(){this.startDateField=new Ext.form.field.Date(Ext.apply({width:90,allowBlank:false,format:this.dateFormat},this.dateConfig||{}));this.startDateField.getPicker().addCls(this.ignoreCls);this.startTimeField=new Ext.form.field.Time(Ext.apply({width:70,allowBlank:false,format:this.timeFormat},this.timeConfig||{}));this.startTimeField.getPicker().addCls(this.ignoreCls);this.durationField=new Ext.form.field.Number(Ext.apply({width:45,value:0,minValue:0,allowNegative:false},this.durationConfig||{}));this.durationLabel=Ext.create("Ext.form.Label",{text:this.getDurationText()});return[this.startDateField,this.startTimeField,this.durationField,this.durationLabel]},onActivateEditor:function(b,a){this.show(a)},onMouseDown:function(a){if(this.collapsed||a.within(this.getEl())||a.getTarget("."+this.ignoreCls,9)){return}this.collapse()},onSchedulerDestroy:function(){this.destroy()},onDragCreateEnd:function(b,a,c){if(!this.dragProxyEl&&this.schedulerView.dragCreator){this.dragProxyEl=this.schedulerView.dragCreator.getProxy()}this.resourceRecord=c;this.schedulerView.onEventCreated(a);this.show(a,this.dragProxyEl)},hide:function(){this.callParent(arguments);var a=this.dragProxyEl;if(a){a.hide()}},afterCollapse:function(){this.hide();this.callParent(arguments)},getDurationText:function(){if(this.durationText){return this.durationText}return Sch.util.Date.getShortNameOfUnit(Sch.util.Date.getNameOfUnit(this.durationUnit))}});Ext.define("Sch.plugin.EventTools",{extend:"Ext.Container",mixins:["Ext.AbstractPlugin"],lockableScope:"top",hideDelay:500,align:"right",defaults:{xtype:"tool",baseCls:"sch-tool",overCls:"sch-tool-over",width:20,height:20,visibleFn:Ext.emptyFn},hideTimer:null,lastPosition:null,cachedSize:null,offset:{x:0,y:1},autoRender:true,floating:true,hideMode:"offsets",hidden:true,getRecord:function(){return this.record},init:function(a){if(!this.items){throw"Must define an items property for this plugin to function correctly"}this.addCls("sch-event-tools");this.scheduler=a;a.on({eventresizestart:this.onOperationStart,eventresizeend:this.onOperationEnd,eventdragstart:this.onOperationStart,eventdrop:this.onOperationEnd,eventmouseenter:this.onEventMouseEnter,eventmouseleave:this.onContainerMouseLeave,scope:this})},onRender:function(){this.callParent(arguments);this.scheduler.mon(this.el,{mouseenter:this.onContainerMouseEnter,mouseleave:this.onContainerMouseLeave,scope:this})},onEventMouseEnter:function(g,a,e){if(!this.rendered){this.doAutoRender()}var d=e.getTarget(g.eventSelector);var c=Ext.fly(d).getBox();this.record=a;this.items.each(function(h){h.setVisible(h.visibleFn(a)!==false)},this);this.doLayout();var b=this.getSize();this.lastPosition=[e.getXY()[0]-b.width/2,c.y-b.height-this.offset.y];this.onContainerMouseEnter()},onContainerMouseEnter:function(){window.clearTimeout(this.hideTimer);this.setPosition.apply(this,this.lastPosition);this.show()},onContainerMouseLeave:function(){window.clearTimeout(this.hideTimer);this.hideTimer=Ext.defer(this.hide,this.hideDelay,this)},onOperationStart:function(){this.scheduler.un("eventmouseenter",this.onEventMouseEnter,this);window.clearTimeout(this.hideTimer);this.hide()},onOperationEnd:function(){this.scheduler.on("eventmouseenter",this.onEventMouseEnter,this)}});Ext.define("Sch.plugin.Pan",{alias:"plugin.pan",extend:"Ext.AbstractPlugin",lockableScope:"top",enableVerticalPan:true,panel:null,constructor:function(a){Ext.apply(this,a)},init:function(a){this.panel=a.normalGrid||a;this.view=a.getSchedulingView();this.view.on("afterrender",this.onRender,this)},onRender:function(a){this.view.el.on("mousedown",this.onMouseDown,this)},onMouseDown:function(b,a){if(b.getTarget("."+this.view.timeCellCls,10)&&!b.getTarget(this.view.eventSelector)){this.mouseX=b.getPageX();this.mouseY=b.getPageY();Ext.getBody().on("mousemove",this.onMouseMove,this);Ext.getDoc().on("mouseup",this.onMouseUp,this);if(Ext.isIE||Ext.isGecko){Ext.getBody().on("mouseenter",this.onMouseUp,this)}b.stopEvent()}},onMouseMove:function(d){d.stopEvent();var a=d.getPageX(),g=d.getPageY(),c=a-this.mouseX,b=g-this.mouseY;this.panel.scrollByDeltaX(-c);this.mouseX=a;this.mouseY=g;if(this.enableVerticalPan){this.panel.scrollByDeltaY(-b)}},onMouseUp:function(a){Ext.getBody().un("mousemove",this.onMouseMove,this);Ext.getDoc().un("mouseup",this.onMouseUp,this);if(Ext.isIE||Ext.isGecko){Ext.getBody().un("mouseenter",this.onMouseUp,this)}}});Ext.define("Sch.plugin.SimpleEditor",{extend:"Ext.Editor",mixins:["Ext.AbstractPlugin"],lockableScope:"top",cls:"sch-simpleeditor",allowBlur:false,newEventText:"New task...",delegate:".sch-event-inner",dataIndex:null,completeOnEnter:true,cancelOnEsc:true,ignoreNoChange:true,height:19,autoSize:{width:"boundEl"},constructor:function(a){a=a||{};a.field=a.field||Ext.create("Ext.form.TextField",{selectOnFocus:true});this.callParent(arguments)},init:function(a){this.scheduler=a.getSchedulingView();a.on("afterrender",this.onSchedulerRender,this);this.scheduler.registerEventEditor(this);this.dataIndex=this.dataIndex||this.scheduler.getEventStore().model.prototype.nameField},edit:function(a,b){b=b||this.scheduler.getElementFromEventRecord(a);this.startEdit(b.child(this.delegate));this.record=a;this.setValue(this.record.get(this.dataIndex))},onSchedulerRender:function(a){this.on({startedit:this.onBeforeEdit,complete:function(e,g,d){var b=this.record;var c=this.scheduler.eventStore;b.set(this.dataIndex,g);if(c.indexOf(b)<0){if(this.scheduler.fireEvent("beforeeventadd",this.scheduler,b)!==false){c.append(b)}}this.onAfterEdit()},canceledit:this.onAfterEdit,hide:function(){if(this.dragProxyEl){this.dragProxyEl.hide()}},scope:this});a.on({eventdblclick:function(b,c,d){this.edit(c)},dragcreateend:this.onDragCreateEnd,scope:this})},onBeforeEdit:function(){if(!this.allowBlur){Ext.getBody().on("mousedown",this.onMouseDown,this);this.scheduler.on("eventmousedown",function(){this.cancelEdit()},this)}},onAfterEdit:function(){if(!this.allowBlur){Ext.getBody().un("mousedown",this.onMouseDown,this);this.scheduler.un("eventmousedown",function(){this.cancelEdit()},this)}},onMouseDown:function(b,a){if(this.editing&&this.el&&!b.within(this.el)){this.cancelEdit()}},onDragCreateEnd:function(b,a){if(!this.dragProxyEl&&this.scheduler.dragCreator){this.dragProxyEl=this.scheduler.dragCreator.getProxy()}this.scheduler.onEventCreated(a);if(a.get(this.dataIndex)===""){a.set(this.dataIndex,this.newEventText)}this.edit(a,this.dragProxyEl)}});Ext.define("Sch.plugin.SummaryColumn",{extend:"Ext.grid.column.Column",mixins:["Ext.AbstractPlugin"],lockableScope:"top",alias:"widget.summarycolumn",showPercent:false,nbrDecimals:1,sortable:false,fixed:true,menuDisabled:true,width:80,dataIndex:"_sch_not_used",constructor:function(a){this.scope=this;this.callParent(arguments)},init:function(a){if(!("eventStore" in a)){return}this.scheduler=a;this.scheduler.lockedGridDependsOnSchedule=true;this.eventStore=a.eventStore},renderer:function(l,a,h){var j=this.scheduler,m=this.eventStore,e=j.getStart(),k=j.getEnd(),c=0,b=this.calculate(m.getEventsForResource(h),e,k);if(b<=0){return""}if(this.showPercent){var d=Sch.util.Date.getDurationInMinutes(e,k);return Math.round(b*100/d)+" %"}else{if(b>1440){return(b/1440).toFixed(this.nbrDecimals)+" "+Sch.util.Date.getShortNameOfUnit("DAY")}if(b>=30){return(b/60).toFixed(this.nbrDecimals)+" "+Sch.util.Date.getShortNameOfUnit("HOUR")}return b+" "+Sch.util.Date.getShortNameOfUnit("MINUTE")}},calculate:function(c,h,d){var e=0,b,a,g=Sch.util.Date;Ext.each(c,function(j){b=j.getStartDate();a=j.getEndDate();if(g.intersectSpans(h,d,b,a)){e+=g.getDurationInMinutes(g.max(b,h),g.min(a,d))}});return e}});Ext.define("Sch.plugin.Zones",{extend:"Sch.feature.AbstractTimeSpan",innerTpl:null,requires:["Sch.model.Range"],cls:"sch-zone",side:null,init:function(a){if(Ext.isString(this.innerTpl)){this.innerTpl=new Ext.XTemplate(this.innerTpl)}this.side=a.rtl?"right":"left";var b=this.innerTpl;if(!this.template){this.template=new Ext.XTemplate('<tpl for="."><div id="'+this.uniqueCls+'-{id}" class="'+this.cls+" "+this.uniqueCls+' {Cls}" style="'+this.side+':{left}px;top:{top}px;height:{height}px;width:{width}px;{style}">'+(b?"{[this.renderInner(values)]}":"")+"</div></tpl>",{renderInner:function(c){return b.apply(c)}})}this.callParent(arguments)},getElementData:function(k,p,d,q){var n=this.schedulerView,g=[];d=d||this.store.getRange();for(var h=0,e=d.length;h<e;h++){var j=d[h];var o=j.getStartDate();var c=j.getEndDate();if(o&&c&&Sch.util.Date.intersectSpans(o,c,k,p)){var m=n.getTimeSpanRegion(Sch.util.Date.max(o,k),Sch.util.Date.min(c,p),this.expandToFitView);var b=m.right-m.left+1;var a=Ext.apply({id:j.internalId,left:m.left,top:m.top,width:q?0:b,height:Ext.versions.touch?"100%":m.bottom-m.top,style:q?"border-left-width:"+b+"px":"",Cls:j.getCls()},j.data);g[g.length]=a}}return g}});Ext.define("Sch.plugin.TimeGap",{extend:"Sch.plugin.Zones",getZoneCls:Ext.emptyFn,init:function(a){this.store=new Ext.data.JsonStore({model:"Sch.model.Range"});this.scheduler=a;a.mon(a.eventStore,{load:this.populateStore,update:this.populateStore,remove:this.populateStore,add:this.populateStore,datachanged:this.populateStore,scope:this});a.on("viewchange",this.populateStore,this);this.schedulerView=a.getSchedulingView();this.callParent(arguments)},populateStore:function(c){var b=this.schedulerView.getEventsInView(),g=[],e=this.scheduler.getStart(),k=this.scheduler.getEnd(),d=b.getCount(),m=e,j,h=0,a;b.sortBy(function(n,l){return n.getStartDate()-l.getStartDate()});a=b.getAt(0);while(m<k&&h<d){j=a.getStartDate();if(!Sch.util.Date.betweenLesser(m,j,a.getEndDate())&&m<j){g.push(new this.store.model({StartDate:m,EndDate:j,Cls:this.getZoneCls(m,j)||""}))}m=Sch.util.Date.max(a.getEndDate(),m);h++;a=b.getAt(h)}if(m<k){g.push(new this.store.model({StartDate:m,EndDate:k,Cls:this.getZoneCls(m,k)||""}))}this.store.removeAll(g.length>0);this.store.add(g)}});Ext.define("Sch.plugin.TreeCellEditing",{extend:"Ext.grid.plugin.CellEditing",lockableScope:"locked",init:function(a){this._grid=a;this.on("beforeedit",this.checkReadOnly,this);this.on("beforeedit",this.onBeforeCellEdit,this);this.callParent(arguments)},checkReadOnly:function(){var a=this._grid;if(!(a instanceof Sch.panel.TimelineTreePanel)){a=a.up("tablepanel")}return !a.isReadOnly()},startEdit:function(a,d,b){this._grid.suspendLayouts();var c=d.getEditor&&d.getEditor(),e;if(c&&c.setSuppressTaskUpdate){e=c.getSuppressTaskUpdate();c.setSuppressTaskUpdate(true)}this.completeEdit();var g=this.callParent(arguments);if(c&&c.setSuppressTaskUpdate){c.setSuppressTaskUpdate(e)}this._grid.resumeLayouts();return g},onBeforeCellEdit:function(c,a){var b=a.column;if(!b.dataIndex&&b.field&&a.value===undefined){a.value=b.field.getDisplayValue(a.record)}},onEditComplete:function(c,g,b){var e=this,a,d;if(c.field.applyChanges){a=c.field.task||e.context.record;d=true;a.set=function(){delete a.set;d=false;c.field.applyChanges(a)}}this.callParent(arguments);if(d){delete a.set}},showEditor:function(a,b,c){var g=this.grid.getSelectionModel();var e=g.selectByPosition;g.selectByPosition=Ext.emptyFn;var d;if(a.field&&a.field.setSuppressTaskUpdate){d=a.field.getSuppressTaskUpdate();a.field.setSuppressTaskUpdate(true)}this.callParent(arguments);if(a.field&&a.field.setSuppressTaskUpdate){a.field.setSuppressTaskUpdate(d)}g.selectByPosition=e}});Ext.define("Sch.plugin.ResourceZones",{extend:"Sch.plugin.Zones",innerTpl:null,store:null,cls:"sch-resourcezone",init:function(a){this.uniqueCls=this.uniqueCls||"sch-timespangroup-"+Ext.id();this.scheduler=a;a.on("destroy",this.onSchedulerDestroy,this);a.registerRenderer(this.renderer,this);if(Ext.isString(this.innerTpl)){this.innerTpl=new Ext.XTemplate(this.innerTpl)}var b=this.innerTpl;if(!this.template){this.template=new Ext.XTemplate('<tpl for="."><div id="'+this.uniqueCls+'-{id}" class="'+this.cls+" "+this.uniqueCls+' {Cls}" style="'+(a.rtl?"right":"left")+':{start}px;width:{width}px;top:{start}px;height:{width}px;{style}">'+(b?"{[this.renderInner(values)]}":"")+"</div></tpl>",{renderInner:function(c){return b.apply(c)}})}this.storeListeners={load:this.fullRefresh,datachanged:this.fullRefresh,clear:this.fullRefresh,add:this.fullRefresh,remove:this.fullRefresh,update:this.refreshSingle,scope:this};this.store.on(this.storeListeners)},onSchedulerDestroy:function(){this.store.un(this.storeListeners)},fullRefresh:function(){this.scheduler.getSchedulingView().refresh()},renderer:function(c,b,a,d){if(this.scheduler.getOrientation()==="horizontal"||d===0){return this.renderZones(a)}return""},renderZones:function(g){var a=this.store,c=this.scheduler,j=c.timeAxis.getStart(),b=c.timeAxis.getEnd(),e=[],d,h;a.each(function(k){d=k.getStartDate();h=k.getEndDate();if(k.getResource()===g&&d&&h&&Sch.util.Date.intersectSpans(d,h,j,b)){var m=c.getSchedulingView()[c.getOrientation()].getEventRenderData(k);var n,l;if(c.getOrientation()==="horizontal"){n=c.rtl?m.right:m.left;l=m.width}else{n=m.top;l=m.height}e[e.length]=Ext.apply({id:k.internalId,start:n,width:l,Cls:k.getCls()},k.data)}});return this.template.apply(e)},refreshSingle:function(k,h){var c=Ext.get(this.uniqueCls+"-"+h.internalId);if(c){var e=this.scheduler,g=e.timeAxis.getStart(),l=e.timeAxis.getEnd();var b=Sch.util.Date.max(g,h.getStartDate()),d=Sch.util.Date.min(l,h.getEndDate()),m=h.getCls();var j=e.getSchedulingView().getCoordinateFromDate(b);var a=e.getSchedulingView().getCoordinateFromDate(d)-j;c.dom.className=this.cls+" "+this.uniqueCls+" "+(m||"");c.setStyle({left:j+"px",top:j+"px",height:a+"px",width:a+"px"})}}});Ext.define("Sch.widget.ResizePicker",{extend:"Ext.Panel",alias:"widget.dualrangepicker",width:200,height:200,border:true,collapsible:false,bodyStyle:"position:absolute; margin:5px",verticalCfg:{height:120,value:24,increment:2,minValue:20,maxValue:80,reverse:true,disabled:true},horizontalCfg:{width:120,value:100,minValue:25,increment:5,maxValue:200,disable:true},initComponent:function(){var a=this;a.addEvents("change","changecomplete","select");a.horizontalCfg.value=a.dialogConfig.columnWidth;a.verticalCfg.value=a.dialogConfig.rowHeight;a.verticalCfg.disabled=a.dialogConfig.scrollerDisabled||false;a.dockedItems=[a.vertical=new Ext.slider.Single(Ext.apply({dock:"left",style:"margin-top:10px",vertical:true,listeners:{change:a.onSliderChange,changecomplete:a.onSliderChangeComplete,scope:a}},a.verticalCfg)),a.horizontal=new Ext.slider.Single(Ext.apply({dock:"top",style:"margin-left:28px",listeners:{change:a.onSliderChange,changecomplete:a.onSliderChangeComplete,scope:a}},a.horizontalCfg))];a.callParent(arguments)},afterRender:function(){var b=this;b.addCls("sch-ux-range-picker");b.valueHandle=this.body.createChild({cls:"sch-ux-range-value",cn:{tag:"span"}});b.valueSpan=this.valueHandle.down("span");var a=new Ext.dd.DD(this.valueHandle);Ext.apply(a,{startDrag:function(){b.dragging=true;this.constrainTo(b.body)},onDrag:function(){b.onHandleDrag.apply(b,arguments)},endDrag:function(){b.onHandleEndDrag.apply(b,arguments);b.dragging=false},scope:this});this.setValues(this.getValues());this.callParent(arguments);this.body.on("click",this.onBodyClick,this)},onBodyClick:function(c,a){var b=[c.getXY()[0]-8-this.body.getX(),c.getXY()[1]-8-this.body.getY()];this.valueHandle.setLeft(Ext.Number.constrain(b[0],0,this.getAvailableWidth()));this.valueHandle.setTop(Ext.Number.constrain(b[1],0,this.getAvailableHeight()));this.setValues(this.getValuesFromXY([this.valueHandle.getLeft(true),this.valueHandle.getTop(true)]));this.onSliderChangeComplete()},getAvailableWidth:function(){return this.body.getWidth()-18},getAvailableHeight:function(){return this.body.getHeight()-18},onHandleDrag:function(){this.setValues(this.getValuesFromXY([this.valueHandle.getLeft(true),this.valueHandle.getTop(true)]))},onHandleEndDrag:function(){this.setValues(this.getValuesFromXY([this.valueHandle.getLeft(true),this.valueHandle.getTop(true)]))},getValuesFromXY:function(d){var c=d[0]/this.getAvailableWidth();var a=d[1]/this.getAvailableHeight();var e=Math.round((this.horizontalCfg.maxValue-this.horizontalCfg.minValue)*c);var b=Math.round((this.verticalCfg.maxValue-this.verticalCfg.minValue)*a)+this.verticalCfg.minValue;return[e+this.horizontalCfg.minValue,b]},getXYFromValues:function(d){var b=this.horizontalCfg.maxValue-this.horizontalCfg.minValue;var g=this.verticalCfg.maxValue-this.verticalCfg.minValue;var a=Math.round((d[0]-this.horizontalCfg.minValue)*this.getAvailableWidth()/b);var c=d[1]-this.verticalCfg.minValue;var e=Math.round(c*this.getAvailableHeight()/g);return[a,e]},updatePosition:function(){var a=this.getValues();var b=this.getXYFromValues(a);this.valueHandle.setLeft(Ext.Number.constrain(b[0],0,this.getAvailableWidth()));if(this.verticalCfg.disabled){this.valueHandle.setTop(this.dialogConfig.rowHeight)}else{this.valueHandle.setTop(Ext.Number.constrain(b[1],0,this.getAvailableHeight()))}this.positionValueText();this.setValueText(a)},positionValueText:function(){var a=this.valueHandle.getTop(true);var b=this.valueHandle.getLeft(true);this.valueSpan.setLeft(b>30?-30:10);this.valueSpan.setTop(a>10?-20:20)},setValueText:function(a){if(this.verticalCfg.disabled){a[1]=this.dialogConfig.rowHeight}this.valueSpan.update("["+a.toString()+"]")},setValues:function(a){this.horizontal.setValue(a[0]);if(this.verticalCfg.reverse){if(!this.verticalCfg.disabled){this.vertical.setValue(this.verticalCfg.maxValue+this.verticalCfg.minValue-a[1])}}else{if(!this.verticalCfg.disabled){this.vertical.setValue(a[1])}}if(!this.dragging){this.updatePosition()}this.positionValueText();this.setValueText(a)},getValues:function(){var a=this.vertical.getValue();if(this.verticalCfg.reverse){a=this.verticalCfg.maxValue-a+this.verticalCfg.minValue}return[this.horizontal.getValue(),a]},onSliderChange:function(){this.fireEvent("change",this,this.getValues());if(!this.dragging){this.updatePosition()}},onSliderChangeComplete:function(){this.fireEvent("changecomplete",this,this.getValues())},afterLayout:function(){this.callParent(arguments);this.updatePosition()}});Ext.define("Sch.widget.ExportDialogForm",{extend:"Ext.form.Panel",requires:["Ext.ProgressBar","Sch.widget.ResizePicker"],border:false,bodyPadding:"10 10 0 10",autoHeight:true,initComponent:function(){var a=this;a.createFields();Ext.apply(this,{fieldDefaults:{labelAlign:"top",labelWidth:100,anchor:"90%"},items:[a.rangeField,a.resizePicker,a.dateFromField,a.dateToField,a.showHeaderField,a.exportToSingleField,a.formatField,a.orientationField,a.progressBar||a.createProgressBar()]});a.callParent(arguments);a.on({hideprogressbar:a.hideProgressBar,showprogressbar:a.showProgressBar,updateprogressbar:a.updateProgressBar,scope:a})},createFields:function(){var d=this,a=d.dialogConfig;d.rangeField=new Ext.form.field.ComboBox({xtype:"combo",value:a.defaultConfig.range,triggerAction:"all",cls:"sch-export-dialog-range",forceSelection:true,editable:false,fieldLabel:a.rangeFieldLabel,name:"range",queryMode:"local",displayField:"name",valueField:"value",store:Ext.create("Ext.data.Store",{fields:["name","value"],data:[{name:a.completeViewText,value:"complete"},{name:a.dateRangeText,value:"date"},{name:a.currentViewText,value:"current"}]}),listeners:{change:d.onRangeChange,scope:d}});d.resizePicker=new Sch.widget.ResizePicker({dialogConfig:a,hidden:true,padding:"0 0 5 0"});d.dateFromField=new Ext.form.field.Date({fieldLabel:a.dateRangeFromText,labelAlign:"left",labelWidth:80,baseBodyCls:"sch-exportdialogform-date",padding:"10 0 5 0",name:"dateFrom",format:a.dateRangeFormat||Ext.Date.defaultFormat,hidden:true,allowBlank:false,maxValue:a.endDate,minValue:a.startDate,value:a.startDate,validator:function(e){return Ext.Date.parse(e,this.format)>=new Date(a.startDate)}});d.dateToField=new Ext.form.field.Date({fieldLabel:a.dateRangeToText,labelAlign:"left",labelWidth:80,name:"dateTo",format:a.dateRangeFormat||Ext.Date.defaultFormat,baseBodyCls:"sch-exportdialogform-date",hidden:true,allowBlank:false,maxValue:a.endDate,minValue:a.startDate,value:a.endDate,validator:function(e){return Ext.Date.parse(e,this.format)<=new Date(a.endDate)}});d.showHeaderField=new Ext.form.field.Checkbox({xtype:"checkboxfield",fieldLabel:d.dialogConfig.showHeaderLabel,name:"showHeader",checked:a.defaultConfig.showHeaderLabel?true:false});d.exportToSingleField=new Ext.form.field.Checkbox({xtype:"checkboxfield",fieldLabel:d.dialogConfig.exportToSingleLabel,name:"singlePageExport",checked:a.defaultConfig.singlePageExport?true:false});d.formatField=new Ext.form.field.ComboBox({value:a.defaultConfig.format,triggerAction:"all",forceSelection:true,editable:false,fieldLabel:a.formatFieldLabel,name:"format",queryMode:"local",store:["A5","A4","A3","Letter","Legal"]});var c=a.defaultConfig.orientation==="portrait"?'class="sch-none"':"",b=a.defaultConfig.orientation==="landscape"?'class="sch-none"':"";d.orientationField=new Ext.form.field.ComboBox({value:a.defaultConfig.orientation,triggerAction:"all",baseBodyCls:"sch-exportdialogform-orientation",forceSelection:true,editable:false,fieldLabel:d.dialogConfig.orientationFieldLabel,afterSubTpl:new Ext.XTemplate('<span id="sch-exportdialog-imagePortrait" '+b+'></span><span id="sch-exportdialog-imageLandscape" '+c+"></span>"),name:"orientation",displayField:"name",valueField:"value",queryMode:"local",store:Ext.create("Ext.data.Store",{fields:["name","value"],data:[{name:a.orientationPortraitText,value:"portrait"},{name:a.orientationLandscapeText,value:"landscape"}]}),listeners:{change:function(g,e){switch(e){case"landscape":Ext.fly("sch-exportdialog-imagePortrait").toggleCls("sch-none");Ext.fly("sch-exportdialog-imageLandscape").toggleCls("sch-none");break;case"portrait":Ext.fly("sch-exportdialog-imagePortrait").toggleCls("sch-none");Ext.fly("sch-exportdialog-imageLandscape").toggleCls("sch-none");break}}}})},createProgressBar:function(){return this.progressBar=new Ext.ProgressBar({text:this.config.progressBarText,animate:true,hidden:true,margin:"4px 0 10px 0"})},onRangeChange:function(b,a){switch(a){case"complete":this.dateFromField.hide();this.dateToField.hide();this.resizePicker.hide();break;case"date":this.dateFromField.show();this.dateToField.show();this.resizePicker.hide();break;case"current":this.dateFromField.hide();this.dateToField.hide();this.resizePicker.show();this.resizePicker.expand(true);break}},showProgressBar:function(){if(this.progressBar){this.progressBar.show()}},hideProgressBar:function(){if(this.progressBar){this.progressBar.hide()}},updateProgressBar:function(a){if(this.progressBar){this.progressBar.updateProgress(a)}}});Ext.define("Sch.widget.ExportDialog",{alternateClassName:"Sch.widget.PdfExportDialog",extend:"Ext.window.Window",alias:"widget.exportdialog",modal:false,width:240,cls:"sch-exportdialog",frame:false,layout:"fit",draggable:false,padding:0,plugin:null,buttonsPanel:null,buttonsPanelScope:null,progressBar:null,generalError:"An error occured, try again.",title:"Export Settings",formatFieldLabel:"Paper format",orientationFieldLabel:"Orientation",rangeFieldLabel:"Export range",showHeaderLabel:"Add page number",exportToSingleLabel:"Export as single page",orientationPortraitText:"Portrait",orientationLandscapeText:"Landscape",completeViewText:"Complete schedule",currentViewText:"Current view",dateRangeText:"Date range",dateRangeFromText:"Export from",pickerText:"Resize column/rows to desired value",dateRangeToText:"Export to",exportButtonText:"Export",cancelButtonText:"Cancel",progressBarText:"Exporting...",dateRangeFormat:"",requires:["Sch.widget.ExportDialogForm"],constructor:function(a){Ext.apply(this,a.exportDialogConfig);this.config=Ext.apply({progressBarText:this.progressBarText,cancelButtonText:this.cancelButtonText,exportButtonText:this.exportButtonText,dateRangeToText:this.dateRangeToText,pickerText:this.pickerText,dateRangeFromText:this.dateRangeFromText,dateRangeText:this.dateRangeText,currentViewText:this.currentViewText,formatFieldLabel:this.formatFieldLabel,orientationFieldLabel:this.orientationFieldLabel,rangeFieldLabel:this.rangeFieldLabel,showHeaderLabel:this.showHeaderLabel,exportToSingleLabel:this.exportToSingleLabel,orientationPortraitText:this.orientationPortraitText,orientationLandscapeText:this.orientationLandscapeText,completeViewText:this.completeViewText,dateRangeFormat:this.dateRangeFormat,defaultConfig:this.defaultConfig},a.exportDialogConfig);this.callParent(arguments)},initComponent:function(){var b=this,a={hidedialogwindow:b.destroy,showdialogerror:b.showError,updateprogressbar:function(c){b.fireEvent("updateprogressbar",c)},scope:this};Ext.apply(this,{items:[b.form=b.buildForm(b.config)],fbar:b.buildButtons(b.buttonsPanelScope||b)});b.callParent(arguments);b.plugin.on(a)},afterRender:function(){var a=this;a.on("changecomplete",function(c,b){a.plugin.scheduler.setTimeColumnWidth(b[0],true);if(!a.config.scrollerDisabled){if(a.form.resizePicker.verticalCfg.reverse){var d=b[1];a.plugin.scheduler.getSchedulingView().setRowHeight(d)}else{a.plugin.scheduler.getSchedulingView().setRowHeight(b[1])}}});a.relayEvents(a.form.resizePicker,["change","changecomplete","select"]);a.form.relayEvents(a,["updateprogressbar","hideprogressbar","showprogressbar"]);a.callParent(arguments)},buildButtons:function(a){return[{xtype:"button",scale:"medium",text:this.exportButtonText,handler:function(){var c=this.form.getForm();if(c.isValid()){var b=c.getValues();this.fireEvent("showprogressbar");this.plugin.doExport(b)}},scope:a},{xtype:"button",scale:"medium",text:this.cancelButtonText,handler:function(){this.destroy()},scope:a}]},buildForm:function(a){return new Sch.widget.ExportDialogForm({progressBar:this.progressBar,dialogConfig:a})},showError:function(b,a){var c=b,d=a||c.generalError;c.fireEvent("hideprogressbar");Ext.Msg.alert("",d)}});Ext.define("Sch.feature.ColumnLines",{extend:"Sch.plugin.Lines",cls:"sch-column-line",showTip:false,requires:["Ext.data.JsonStore"],init:function(a){this.timeAxis=a.getTimeAxis();this.store=Ext.create("Ext.data.JsonStore",{fields:["Date"],data:a.getOrientation()==="horizontal"?this.getData():[]});this.callParent(arguments);this.panel=a;this.panel.on("destroy",this.onHostDestroy,this);this.timeAxis.on("reconfigure",this.populate,this)},onHostDestroy:function(){this.timeAxis.un("reconfigure",this.populate,this)},populate:function(){var a=this.panel;var b=a.getOrientation()==="horizontal"&&a.getStore().getCount()>0;this.store.removeAll(b);this.store.add(this.getData())},getElementData:function(){var a=this.schedulerView;if(a.getOrientation()==="horizontal"&&a.store.getCount()>0){return this.callParent(arguments)}return[]},getData:function(){var a=[];this.timeAxis.forEachMainInterval(function(d,b,c){if(c>0){a.push({Date:d})}});return a}});Ext.define("Sch.mixin.AbstractTimelineView",{requires:["Sch.data.TimeAxis","Sch.view.Horizontal"],selectedEventCls:"sch-event-selected",readOnly:false,horizontalViewClass:"Sch.view.Horizontal",timeCellCls:"sch-timetd",timeCellSelector:".sch-timetd",eventBorderWidth:1,timeAxis:null,timeAxisViewModel:null,eventPrefix:null,rowHeight:null,orientation:"horizontal",horizontal:null,vertical:null,secondaryCanvasEl:null,panel:null,displayDateFormat:null,snapToIncrement:null,el:null,_initializeTimelineView:function(){if(this.horizontalViewClass){this.horizontal=Ext.create(this.horizontalViewClass,{view:this})}if(this.verticalViewClass){this.vertical=Ext.create(this.verticalViewClass,{view:this})}var a=this.eventPrefix||this.getId();if(!a){throw"No event prefix specifiec for the scheduler"}Ext.apply(this,{eventPrefix:a+"-"})},getTimeAxisViewModel:function(){return this.timeAxisViewModel},getFormattedDate:function(a){return Ext.Date.format(a,this.getDisplayDateFormat())},getFormattedEndDate:function(b,a){if(b.getHours()===0&&b.getMinutes()===0&&!(b.getYear()===a.getYear()&&b.getMonth()===a.getMonth()&&b.getDate()===a.getDate())){b=Sch.util.Date.add(b,Sch.util.Date.DAY,-1)}return Ext.Date.format(b,this.getDisplayDateFormat())},getDisplayDateFormat:function(){return this.displayDateFormat},setDisplayDateFormat:function(a){this.displayDateFormat=a},fitColumns:function(b){if(this.orientation==="horizontal"){this.getTimeAxisViewModel().fitToAvailableWidth(b)}else{var a=Math.floor((this.panel.getWidth()-Ext.getScrollbarSize().width-1)/this.headerCt.getColumnCount());this.setColumnWidth(a,b)}},getElementFromEventRecord:function(a){return Ext.get(this.eventPrefix+a.internalId)},getEventNodeByRecord:function(a){return document.getElementById(this.eventPrefix+a.internalId)},getEventNodesByRecord:function(a){return this.el.select("[id="+this.eventPrefix+a.internalId+"]")},getStartEndDatesFromRegion:function(b,a){return this[this.orientation].getStartEndDatesFromRegion(b,a)},getTimeResolution:function(){return this.timeAxis.getResolution()},setTimeResolution:function(b,a){this.timeAxis.setResolution(b,a);if(this.snapToIncrement){this.refreshKeepingScroll()}},getEventIdFromDomNodeId:function(a){return a.substring(this.eventPrefix.length)},getDateFromDomEvent:function(b,a){return this.getDateFromXY(b.getXY(),a)},getSnapPixelAmount:function(){return this.getTimeAxisViewModel().getSnapPixelAmount()},getTimeColumnWidth:function(){return this.getTimeAxisViewModel().getTickWidth()},setSnapEnabled:function(a){this.snapToIncrement=a;if(a){this.refreshKeepingScroll()}},setReadOnly:function(a){this.readOnly=a;this[a?"addCls":"removeCls"](this._cmpCls+"-readonly")},isReadOnly:function(){return this.readOnly},setOrientation:function(a){this.orientation=a},getOrientation:function(){return this.orientation},getDateFromXY:function(c,b,a){return this.getDateFromCoordinate(this.orientation==="horizontal"?c[0]:c[1],b,a)},getDateFromCoordinate:function(c,b,a){if(!a){c=this[this.orientation].translateToScheduleCoordinate(c)}return this.timeAxisViewModel.getDateFromPosition(c,b)},getDateFromX:function(a,b){return this.getDateFromCoordinate(a,b)},getDateFromY:function(b,a){return this.getDateFromCoordinate(b,a)},getCoordinateFromDate:function(a,b){var c=this.timeAxisViewModel.getPositionFromDate(a);if(b===false){c=this[this.orientation].translateToPageCoordinate(c)}return Math.round(c)},getXFromDate:function(a,b){return this.getCoordinateFromDate(a,b)},getYFromDate:function(a,b){return this.getCoordinateFromDate(a,b)},getTimeSpanDistance:function(a,b){return this.timeAxisViewModel.getDistanceBetweenDates(a,b)},getTimeSpanRegion:function(a,b){return this[this.orientation].getTimeSpanRegion(a,b)},getScheduleRegion:function(b,a){return this[this.orientation].getScheduleRegion(b,a)},getTableRegion:function(){throw"Abstract method call"},getRowNode:function(a){throw"Abstract method call"},getRecordForRowNode:function(a){throw"Abstract method call"},getVisibleDateRange:function(){return this[this.orientation].getVisibleDateRange()},setColumnWidth:function(b,a){this[this.orientation].setColumnWidth(b,a)},findRowByChild:function(a){throw"Abstract method call"},setBarMargin:function(b,a){this.barMargin=b;if(!a){this.refreshKeepingScroll()}},getRowHeight:function(){return this.rowHeight},setRowHeight:function(a,b){this.rowHeight=a||24;if(this.orientation==="vertical"){this.timeAxisViewModel.setTickWidth(this.rowHeight,b)}else{if(this.getEl()&&!b){this.refreshKeepingScroll(true)}}},refreshKeepingScroll:function(){throw"Abstract method call"},scrollVerticallyTo:function(b,a){throw"Abstract method call"},scrollHorizontallyTo:function(a,b){throw"Abstract method call"},getVerticalScroll:function(){throw"Abstract method call"},getHorizontalScroll:function(){throw"Abstract method call"},getEl:Ext.emptyFn,getSecondaryCanvasEl:function(){if(!this.secondaryCanvasEl){this.secondaryCanvasEl=this.getEl().createChild({cls:"sch-secondary-canvas"})}return this.secondaryCanvasEl},getScroll:function(){throw"Abstract method call"},getOuterEl:function(){return this.getEl()},getRowContainerEl:function(){return this.getEl()},getScrollEventSource:function(){return this.getEl()},getViewportHeight:function(){return this.getEl().getHeight()},getViewportWidth:function(){return this.getEl().getWidth()},getDateConstraints:Ext.emptyFn});Ext.apply(Sch,{VERSION:"2.2.5"});Ext.define("Sch.mixin.TimelineView",{extend:"Sch.mixin.AbstractTimelineView",overScheduledEventClass:"sch-event-hover",altColCls:"sch-col-alt",timeCellCls:"sch-timetd",timeCellSelector:".sch-timetd",ScheduleEventMap:{click:"Click",mousedown:"MouseDown",mouseup:"MouseUp",dblclick:"DblClick",contextmenu:"ContextMenu",keydown:"KeyDown",keyup:"KeyUp"},_initializeTimelineView:function(){this.callParent(arguments);this.timeCellSelector="."+this.timeCellCls;this.on("destroy",this._onDestroy,this);this.on("afterrender",this._onAfterRender,this);this.setOrientation(this.orientation);this.addEvents("beforetooltipshow","columnwidthchange");this.enableBubble("columnwidthchange");this.addCls("sch-timelineview");if(this.readOnly){this.addCls(this._cmpCls+"-readonly")}this.addCls(this._cmpCls);if(this.eventAnimations){this.addCls("sch-animations-enabled")}},inheritables:function(){return{processUIEvent:function(d){var a=d.getTarget(this.eventSelector),c=this.ScheduleEventMap,b=d.type,g=false;if(a&&b in c){this.fireEvent(this.scheduledEventName+b,this,this.resolveEventRecord(a),d);g=!(this.getSelectionModel() instanceof Ext.selection.RowModel)}if(!g){return this.callParent(arguments)}}}},_onDestroy:function(){if(this.tip){this.tip.destroy()}},_onAfterRender:function(){if(this.overScheduledEventClass){this.setMouseOverEnabled(true)}if(this.tooltipTpl){this.el.on("mousemove",this.setupTooltip,this,{single:true})}var a=this.bufferedRenderer;if(a){this.patchBufferedRenderingPlugin(a);this.patchBufferedRenderingPlugin(this.lockingPartner.bufferedRenderer)}this.on("bufferedrefresh",this.onBufferedRefresh,this,{buffer:10});this.setupTimeCellEvents()},patchBufferedRenderingPlugin:function(c){var b=this;var a=c.setBodyTop;c.setBodyTop=function(d,e){if(d<0){d=0}var g=a.apply(this,arguments);b.fireEvent("bufferedrefresh",this);return g}},onBufferedRefresh:function(){this.getSecondaryCanvasEl().dom.style.top=this.body.dom.style.top},setMouseOverEnabled:function(a){this[a?"mon":"mun"](this.el,{mouseover:this.onMouseOver,mouseout:this.onMouseOut,delegate:this.eventSelector,scope:this})},onMouseOver:function(c,a){if(a!==this.lastItem){this.lastItem=a;Ext.fly(a).addCls(this.overScheduledEventClass);var b=this.resolveEventRecord(a);if(b){this.fireEvent("eventmouseenter",this,b,c)}}},onMouseOut:function(b,a){if(this.lastItem){if(!b.within(this.lastItem,true,true)){Ext.fly(this.lastItem).removeCls(this.overScheduledEventClass);this.fireEvent("eventmouseleave",this,this.resolveEventRecord(this.lastItem),b);delete this.lastItem}}},highlightItem:function(b){if(b){var a=this;a.clearHighlight();a.highlightedItem=b;Ext.fly(b).addCls(a.overItemCls)}},setupTooltip:function(){var b=this,a=Ext.apply({renderTo:Ext.getBody(),delegate:b.eventSelector,target:b.el,anchor:"b",rtl:b.rtl,show:function(){Ext.ToolTip.prototype.show.apply(this,arguments);if(this.triggerElement&&b.getOrientation()==="horizontal"){this.setX(this.targetXY[0]-10);this.setY(Ext.fly(this.triggerElement).getY()-this.getHeight()-10)}}},b.tipCfg);b.tip=Ext.create("Ext.ToolTip",a);b.tip.on({beforeshow:function(d){if(!d.triggerElement||!d.triggerElement.id){return false}var c=this.resolveEventRecord(d.triggerElement);if(!c||this.fireEvent("beforetooltipshow",this,c)===false){return false}d.update(this.tooltipTpl.apply(this.getDataForTooltipTpl(c)))},scope:this})},getTimeAxisColumn:function(){if(!this.timeAxisColumn){this.timeAxisColumn=this.headerCt.down("timeaxiscolumn")}return this.timeAxisColumn},getDataForTooltipTpl:function(a){return Ext.apply({_record:a},a.data)},refreshKeepingScroll:function(){this.suspendLayouts();this.saveScrollState();this.refresh();if(this.up("tablepanel[lockable=true]").lockedGridDependsOnSchedule){this.lockingPartner.refresh()}this.resumeLayouts(true);this.restoreScrollState()},setupTimeCellEvents:function(){this.mon(this.el,{click:this.handleScheduleEvent,dblclick:this.handleScheduleEvent,contextmenu:this.handleScheduleEvent,scope:this})},getTableRegion:function(){return this.el.down(".x-grid-table").getRegion()},getRowNode:function(a){return this.getNodeByRecord(a)},findRowByChild:function(a){return this.findItemByChild(a)},getRecordForRowNode:function(a){return this.getRecord(a)},refreshKeepingResourceScroll:function(){var a=this.getScroll();this.refresh();if(this.getOrientation()==="horizontal"){this.scrollVerticallyTo(a.top)}else{this.scrollHorizontallyTo(a.left)}},scrollHorizontallyTo:function(a,b){var c=this.getEl();if(c){c.scrollTo("left",Math.max(0,a),b)}},scrollVerticallyTo:function(c,a){var b=this.getEl();if(b){b.scrollTo("top",Math.max(0,c),a)}},getVerticalScroll:function(){var a=this.getEl();return a.getScroll().top},getHorizontalScroll:function(){var a=this.getEl();return a.getScroll().left},getScroll:function(){var a=this.getEl().getScroll();return{top:a.top,left:a.left}},getXYFromDate:function(){var a=this.getCoordinateFromDate.apply(this,arguments);return this.orientation==="horizontal"?[a,0]:[0,a]},handleScheduleEvent:function(a){}});Ext.define("Sch.view.TimelineGridView",{extend:"Ext.grid.View",mixins:["Sch.mixin.TimelineView"]},function(){this.override(Sch.mixin.TimelineView.prototype.inheritables()||{})});Ext.define("Sch.mixin.AbstractSchedulerView",{requires:["Sch.eventlayout.Horizontal"],_cmpCls:"sch-schedulerview",scheduledEventName:"event",barMargin:1,constrainDragToResource:false,allowOverlap:null,readOnly:null,dynamicRowHeight:true,managedEventSizing:true,eventAnimations:true,eventCls:"sch-event",verticalViewClass:null,eventTpl:['<tpl for=".">','<div unselectable="on" id="{{evt-prefix}}{id}" style="right:{right}px;left:{left}px;top:{top}px;height:{height}px;width:{width}px;{style}" class="sch-event x-unselectable {internalCls} {cls}">','<div unselectable="on" class="sch-event-inner {iconCls}">',"{body}","</div>","</div>","</tpl>"],eventStore:null,resourceStore:null,_initializeSchedulerView:function(){this.eventSelector="."+this.eventCls;this.eventLayout={};if(Sch.eventlayout.Horizontal){this.eventLayout.horizontal=new Sch.eventlayout.Horizontal({view:this})}if(Sch.eventlayout.Vertical){this.eventLayout.vertical=new Sch.eventlayout.Vertical({view:this})}this.store=this.store||this.resourceStore;this.resourceStore=this.resourceStore||this.store},generateTplData:function(d,c,h){var g=this[this.orientation].getEventRenderData(d),j=d.getStartDate(),b=d.getEndDate(),a=d.getCls()||"";a+=" sch-event-resizable-"+d.getResizable();if(d.dirty){a+=" sch-dirty "}if(g.endsOutsideView){a+=" sch-event-endsoutside "}if(g.startsOutsideView){a+=" sch-event-startsoutside "}if(this.eventBarIconClsField){a+=" sch-event-withicon "}if(d.isDraggable()===false){a+=" sch-event-fixed "}if(b-j===0){a+=" sch-event-milestone "}g.id=d.internalId;g.internalCls=a;g.start=j;g.end=b;g.iconCls=d.data[this.eventBarIconClsField]||"";if(this.eventRenderer){var e=this.eventRenderer.call(this.eventRendererScope||this,d,c,g,h);if(Ext.isObject(e)&&this.eventBodyTemplate){g.body=this.eventBodyTemplate.apply(e)}else{g.body=e}}else{if(this.eventBodyTemplate){g.body=this.eventBodyTemplate.apply(d.data)}else{if(this.eventBarTextField){g.body=d.data[this.eventBarTextField]||""}}}return g},resolveResource:function(a){return this[this.orientation].resolveResource(a)},getResourceRegion:function(b,a,c){return this[this.orientation].getResourceRegion(b,a,c)},resolveEventRecord:function(a){a=a.dom?a.dom:a;if(!Ext.fly(a).hasCls(this.eventCls)){a=Ext.fly(a).up(this.eventSelector)}return this.getEventRecordFromDomId(a.id)},getResourceByEventRecord:function(a){return a.getResource()},getEventRecordFromDomId:function(b){var a=this.getEventIdFromDomNodeId(b);return this.eventStore.getByInternalId(a)},isDateRangeAvailable:function(d,a,b,c){return this.eventStore.isDateRangeAvailable(d,a,b,c)},getEventsInView:function(){var b=this.timeAxis.getStart(),a=this.timeAxis.getEnd();return this.eventStore.getEventsInTimeSpan(b,a)},getEventNodes:function(){return this.getEl().select(this.eventSelector)},onEventCreated:function(a){},getEventStore:function(){return this.eventStore},registerEventEditor:function(a){this.eventEditor=a},getEventEditor:function(){return this.eventEditor},onEventUpdate:function(b,c,a){this[this.orientation].onEventUpdate(b,c,a)},onEventAdd:function(a,b){this[this.orientation].onEventAdd(a,b)},onEventRemove:function(a,b){this[this.orientation].onEventRemove(a,b)},bindEventStore:function(c,b){var d=this;var a={scope:d,refresh:d.onEventDataRefresh,clear:d.refresh,addrecords:d.onEventAdd,updaterecord:d.onEventUpdate,removerecords:d.onEventRemove,add:d.onEventAdd,update:d.onEventUpdate,remove:d.onEventRemove};if(!b&&d.eventStore){d.eventStore.setResourceStore(null);if(c!==d.eventStore&&d.eventStore.autoDestroy){d.eventStore.destroy()}else{if(d.mun){d.mun(d.eventStore,a)}else{d.eventStore.un(a)}}if(!c){if(d.loadMask&&d.loadMask.bindStore){d.loadMask.bindStore(null)}d.eventStore=null}}if(c){c=Ext.data.StoreManager.lookup(c);if(d.mon){d.mon(c,a)}else{c.on(a)}if(d.loadMask&&d.loadMask.bindStore){d.loadMask.bindStore(c)}d.eventStore=c;c.setResourceStore(d.resourceStore)}if(c&&!b){d.refresh()}},onEventDataRefresh:function(){this.refreshKeepingScroll()},onEventSelect:function(a){var b=this.getEventNodesByRecord(a);if(b){b.addCls(this.selectedEventCls)}},onEventDeselect:function(a){var b=this.getEventNodesByRecord(a);if(b){b.removeCls(this.selectedEventCls)}},refresh:function(){throw"Abstract method call"},repaintEventsForResource:function(a){throw"Abstract method call"},scrollEventIntoView:function(l,e,a,p,q){q=q||this;var n=this;var g=this.eventStore;var o=function(s){if(Ext.versions.extjs){n.up("panel").scrollTask.cancel()}s.scrollIntoView(n.el,true,a);if(e){if(typeof e==="boolean"){s.highlight()}else{s.highlight(null,e)}}p&&p.call(q)};if(Ext.data.TreeStore&&this.resourceStore instanceof Ext.data.TreeStore){var d=l.getResources();if(d.length>0&&!d[0].isVisible()){d[0].bubble(function(s){s.expand()})}}var k=this.timeAxis;var c=l.getStartDate();var j=l.getEndDate();if(!k.dateInAxis(c)||!k.dateInAxis(j)){var h=k.getEnd()-k.getStart();k.setTimeSpan(new Date(c.getTime()-h/2),new Date(j.getTime()+h/2))}var b=this.getElementFromEventRecord(l);if(b){o(b)}else{var m=this.panel.verticalScroller}}});Ext.define("Sch.mixin.SchedulerView",{extend:"Sch.mixin.AbstractSchedulerView",requires:["Sch.tooltip.Tooltip","Sch.feature.DragCreator","Sch.feature.DragDrop","Sch.feature.ResizeZone","Sch.column.Resource","Sch.view.Vertical","Sch.eventlayout.Vertical"],verticalViewClass:"Sch.view.Vertical",barMargin:1,eventResizeHandles:"end",dndValidatorFn:function(b,a,c,g,d){return true},resizeValidatorFn:function(c,b,a,g,d){return true},createValidatorFn:function(b,a,d,c){return true},_initializeSchedulerView:function(){this.callParent(arguments);this.on("destroy",this._destroy,this);this.on("afterrender",this._afterRender,this);this.trackOver=false;this.addEvents("eventclick","eventmousedown","eventmouseup","eventdblclick","eventcontextmenu","eventmouseenter","eventmouseout","beforeeventresize","eventresizestart","eventpartialresize","beforeeventresizefinalize","eventresizeend","beforeeventdrag","eventdragstart","beforeeventdropfinalize","eventdrop","aftereventdrop","beforedragcreate","dragcreatestart","beforedragcreatefinalize","dragcreateend","afterdragcreate","beforeeventadd","scheduleclick","scheduledblclick","schedulecontextmenu");var b=this;if(!this.eventPrefix){throw"eventPrefix missing"}if(Ext.isArray(b.eventTpl)){var d=Ext.Array.clone(b.eventTpl),a='<div class="sch-resizable-handle sch-resizable-handle-{0}"></div>';if(this.eventResizeHandles==="start"||this.eventResizeHandles==="both"){d.splice(2,0,Ext.String.format(a,"start"))}if(this.eventResizeHandles==="end"||this.eventResizeHandles==="both"){d.splice(2,0,Ext.String.format(a,"end"))}var c=d.join("").replace("{{evt-prefix}}",this.eventPrefix);b.eventTpl=Ext.create("Ext.XTemplate",c)}},inheritables:function(){return{loadingText:"Loading events...",overItemCls:"",setReadOnly:function(a){if(this.dragCreator){this.dragCreator.setDisabled(a)}this.callParent(arguments)},repaintEventsForResource:function(b){var a=this.store.indexOf(b);if(this.orientation==="horizontal"){this.eventLayout.horizontal.clearCache(b)}if(a>=0){this.refreshNode(a);this.lockingPartner.refreshNode(a)}},handleScheduleEvent:function(g){var k=g.getTarget("."+this.timeCellCls,3);if(k){var l=this.getDateFromDomEvent(g,"floor");var h=this.findRowByChild(k);var d=this.indexOf(h);var a;if(this.orientation=="horizontal"){a=this.getRecordForRowNode(h)}else{var b=g.getTarget(this.cellSelector,5);if(b){var j=typeof b.cellIndex=="number"?b.cellIndex:b.getAttribute("data-cellIndex");var c=this.headerCt.getGridColumns()[j];a=c&&c.model}}this.fireEvent("schedule"+g.type,this,l,d,a,g)}}}},_afterRender:function(){this.bindEventStore(this.eventStore,true);this.setupEventListeners();this.configureFunctionality();var a=this.headerCt.resizer;if(a){a.doResize=Ext.Function.createSequence(a.doResize,this.afterHeaderResized,this)}},_destroy:function(){this.bindEventStore(null)},configureFunctionality:function(){var a=this.validatorFnScope||this;if(this.eventResizeHandles!=="none"&&Sch.feature.ResizeZone){this.resizePlug=new Sch.feature.ResizeZone(Ext.applyIf({schedulerView:this,validatorFn:function(d,c,b,e){return(this.allowOverlap||this.isDateRangeAvailable(b,e,c,d))&&this.resizeValidatorFn.apply(a,arguments)!==false},validatorFnScope:this},this.resizeConfig||{}))}if(this.enableEventDragDrop!==false&&Sch.feature.DragDrop){this.dragdropPlug=new Sch.feature.DragDrop(this,{validatorFn:function(c,b,d,h,g){return(this.allowOverlap||this.isDateRangeAvailable(d,Sch.util.Date.add(d,Sch.util.Date.MILLI,h),c[0],b))&&this.dndValidatorFn.apply(a,arguments)!==false},validatorFnScope:this,dragConfig:this.dragConfig||{},dropConfig:this.dropConfig||{}})}if(this.enableDragCreation!==false&&Sch.feature.DragCreator){this.dragCreator=new Sch.feature.DragCreator(Ext.applyIf({schedulerView:this,disabled:this.readOnly,validatorFn:function(c,b,d){return(this.allowOverlap||this.isDateRangeAvailable(b,d,null,c))&&this.createValidatorFn.apply(a,arguments)!==false},validatorFnScope:this},this.createConfig||{}))}},onBeforeDragDrop:function(a,c,b){return !this.readOnly&&!b.getTarget().className.match("sch-resizable-handle")},onDragDropStart:function(){if(this.dragCreator){this.dragCreator.setDisabled(true)}if(this.tip){this.tip.hide();this.tip.disable()}if(this.overScheduledEventClass){this.setMouseOverEnabled(false)}},onDragDropEnd:function(){if(this.dragCreator){this.dragCreator.setDisabled(false)}if(this.tip){this.tip.enable()}if(this.overScheduledEventClass){this.setMouseOverEnabled(true)}},onBeforeDragCreate:function(b,c,a,d){return !this.readOnly&&!d.ctrlKey},onDragCreateStart:function(){if(this.overScheduledEventClass){this.setMouseOverEnabled(false)}if(this.tip){this.tip.hide();this.tip.disable()}},onDragCreateEnd:function(b,a,c){if(!this.getEventEditor()){if(this.fireEvent("beforeeventadd",this,a)!==false){this.onEventCreated(a);this.eventStore.append(a)}this.dragCreator.getProxy().hide()}if(this.overScheduledEventClass){this.setMouseOverEnabled(true)}},onEventCreated:function(a){},onAfterDragCreate:function(){if(this.overScheduledEventClass){this.setMouseOverEnabled(true)}if(this.tip){this.tip.enable()}},onBeforeResize:function(a,c,b){return !this.readOnly},onResizeStart:function(){if(this.tip){this.tip.hide();this.tip.disable()}if(this.dragCreator){this.dragCreator.setDisabled(true)}},onResizeEnd:function(){if(this.tip){this.tip.enable()}if(this.dragCreator){this.dragCreator.setDisabled(false)}},setupEventListeners:function(){this.on({beforeeventdrag:this.onBeforeDragDrop,eventdragstart:this.onDragDropStart,aftereventdrop:this.onDragDropEnd,beforedragcreate:this.onBeforeDragCreate,dragcreatestart:this.onDragCreateStart,dragcreateend:this.onDragCreateEnd,afterdragcreate:this.onAfterDragCreate,beforeeventresize:this.onBeforeResize,eventresizestart:this.onResizeStart,eventresizeend:this.onResizeEnd,scope:this})},afterHeaderResized:function(){var b=this.headerCt.resizer;if(b&&b.dragHd instanceof Sch.column.Resource){var a=b.dragHd.getWidth();this.setColumnWidth(a)}},columnRenderer:function(e,c,a,d,b){return this[this.orientation].columnRenderer(e,c,a,d,b)}});Ext.define("Sch.view.SchedulerGridView",{extend:"Sch.view.TimelineGridView",mixins:["Sch.mixin.SchedulerView"],alias:"widget.schedulergridview"},function(){this.override(Sch.mixin.SchedulerView.prototype.inheritables()||{})});Ext.define("Sch.mixin.Zoomable",{zoomLevels:[{width:30,increment:1,resolution:1,preset:"year",resolutionUnit:"MONTH"},{width:50,increment:1,resolution:1,preset:"year",resolutionUnit:"MONTH"},{width:100,increment:1,resolution:1,preset:"year",resolutionUnit:"MONTH"},{width:200,increment:1,resolution:1,preset:"year",resolutionUnit:"MONTH"},{width:100,increment:1,resolution:7,preset:"monthAndYear",resolutionUnit:"DAY"},{width:30,increment:1,resolution:1,preset:"weekDateAndMonth",resolutionUnit:"DAY"},{width:35,increment:1,resolution:1,preset:"weekAndMonth",resolutionUnit:"DAY"},{width:50,increment:1,resolution:1,preset:"weekAndMonth",resolutionUnit:"DAY"},{width:20,increment:1,resolution:1,preset:"weekAndDayLetter"},{width:50,increment:1,resolution:1,preset:"weekAndDay",resolutionUnit:"HOUR"},{width:100,increment:1,resolution:1,preset:"weekAndDay",resolutionUnit:"HOUR"},{width:50,increment:6,resolution:30,preset:"hourAndDay",resolutionUnit:"MINUTE"},{width:100,increment:6,resolution:30,preset:"hourAndDay",resolutionUnit:"MINUTE"},{width:60,increment:2,resolution:30,preset:"hourAndDay",resolutionUnit:"MINUTE"},{width:60,increment:1,resolution:30,preset:"hourAndDay",resolutionUnit:"MINUTE"},{width:30,increment:15,resolution:5,preset:"minuteAndHour"},{width:60,increment:15,resolution:5,preset:"minuteAndHour"},{width:130,increment:15,resolution:5,preset:"minuteAndHour"},{width:60,increment:5,resolution:5,preset:"minuteAndHour"},{width:100,increment:5,resolution:5,preset:"minuteAndHour"}],minZoomLevel:null,maxZoomLevel:null,visibleZoomFactor:5,cachedCenterDate:null,isFirstZoom:true,isZooming:false,initializeZooming:function(){this.zoomLevels=this.zoomLevels.slice();this.setMinZoomLevel(this.minZoomLevel||0);this.setMaxZoomLevel(this.maxZoomLevel!==null?this.maxZoomLevel:this.zoomLevels.length-1);this.on("viewchange",this.clearCenterDateCache,this)},getZoomLevelUnit:function(b){var a=Sch.preset.Manager.getPreset(b.preset).headerConfig;return a.bottom?a.bottom.unit:a.middle.unit},getMilliSecondsPerPixelForZoomLevel:function(b){var a=Sch.util.Date;return Math.round((a.add(new Date(1,0,1),this.getZoomLevelUnit(b),b.increment)-new Date(1,0,1))/b.width)},presetToZoomLevel:function(e){var d=Sch.preset.Manager.getPreset(e);var c=d.headerConfig;var a=c.bottom;var b=c.middle;return{preset:e,increment:(a?a.increment:b.increment)||1,resolution:d.timeResolution.increment,resolutionUnit:d.timeResolution.unit,width:d.timeColumnWidth}},calculateCurrentZoomLevel:function(){var d=this.presetToZoomLevel(this.viewPreset);var c=this.timeAxis.headerConfig;var a=c.bottom;var b=c.middle;d.width=this.timeAxis.preset.timeColumnWidth;d.increment=(a?a.increment:b.increment)||1;return d},getCurrentZoomLevelIndex:function(){var g=this.calculateCurrentZoomLevel();var b=this.getMilliSecondsPerPixelForZoomLevel(g);var e=this.zoomLevels;for(var c=0;c<e.length;c++){var d=this.getMilliSecondsPerPixelForZoomLevel(e[c]);if(d==b){return c}if(c===0&&b>d){return -0.5}if(c==e.length-1&&b<d){return e.length-1+0.5}var a=this.getMilliSecondsPerPixelForZoomLevel(e[c+1]);if(d>b&&b>a){return c+0.5}}throw"Can't find current zoom level index"},setMaxZoomLevel:function(a){if(a<0||a>=this.zoomLevels.length){throw new Error("Invalid range for `setMinZoomLevel`")}this.maxZoomLevel=a},setMinZoomLevel:function(a){if(a<0||a>=this.zoomLevels.length){throw new Error("Invalid range for `setMinZoomLevel`")}this.minZoomLevel=a},getViewportCenterDateCached:function(){if(this.cachedCenterDate){return this.cachedCenterDate}return this.cachedCenterDate=this.getViewportCenterDate()},clearCenterDateCache:function(){this.cachedCenterDate=null},zoomToLevel:function(b,s){b=Ext.Number.constrain(b,this.minZoomLevel,this.maxZoomLevel);var t=this.calculateCurrentZoomLevel();var d=this.getMilliSecondsPerPixelForZoomLevel(t);var m=this.zoomLevels[b];var a=this.getMilliSecondsPerPixelForZoomLevel(m);if(d==a){return null}var z=this;var n=this.getSchedulingView();var g=n.getOuterEl();var u=n.getScrollEventSource();if(this.isFirstZoom){this.isFirstZoom=false;u.on("scroll",this.clearCenterDateCache,this)}var j=this.orientation=="vertical";var e=this.getViewportCenterDateCached();var o=j?g.getHeight():g.getWidth();var p=Ext.clone(Sch.preset.Manager.getPreset(m.preset));var w=s?{}:this.calculateOptimalDateRange(e,o,m);var c=p.headerConfig;var h=c.bottom;var A=c.middle;p[j?"rowHeight":"timeColumnWidth"]=m.width;if(h){h.increment=m.increment}else{A.increment=m.increment}this.isZooming=true;this.viewPreset=m.preset;var q=h?h.unit:A.unit;this.timeAxis.reconfigure({preset:p,headerConfig:c,unit:q,increment:m.increment,resolutionUnit:Sch.util.Date.getUnitByName(m.resolutionUnit||q),resolutionIncrement:m.resolution,weekStartDay:this.weekStartDay,mainUnit:A.unit,shiftUnit:p.shiftUnit,shiftIncrement:p.shiftIncrement||1,defaultSpan:p.defaultSpan||1,start:w.startDate||this.getStart(),end:w.endDate||this.getEnd()});u.on("scroll",function(){z.cachedCenterDate=e},this,{single:true});if(j){var k=n.getYFromDate(e,true);n.scrollVerticallyTo(k-o/2)}else{var l=n.getXFromDate(e,true);n.scrollHorizontallyTo(l-o/2)}z.isZooming=false;this.fireEvent("zoomchange",this,b);return b},zoomToSpan:function(o,c){if(o.start&&o.end&&o.start<o.end){var n=this.timeAxis.generateTicks(c?Sch.util.Date.add(o.start,this.timeAxis.mainUnit,-1):o.start,o.end,this.timeAxis.unit,this.timeAxis.increment);var d=this.getSchedulingView().getTimeAxisViewModel().getAvailableWidth();var k=Math.floor(this.getCurrentZoomLevelIndex()),e=d/n.length<this.zoomLevels[k].width?-1:1,b=k+e,h=this.orientation=="vertical"?"rowHeight":"timeColumnWidth",j=Ext.create("Sch.data.TimeAxis");var g,p,l,a,s,m,q=null;while(b>=0&&b<=this.zoomLevels.length-1){g=this.zoomLevels[b];p=Ext.clone(Sch.preset.Manager.getPreset(g.preset));a=p.headerConfig.bottom;s=p.headerConfig.middle;p[h]=g.width;if(a){a.increment=g.increment;m=a.unit}else{s.increment=g.increment;m=s.unit}Ext.apply(j,{preset:p,headerConfig:p.headerConfig,unit:m,increment:g.increment,resolutionUnit:Sch.util.Date.getUnitByName(g.resolutionUnit||m),resolutionIncrement:g.resolution,mainUnit:s.unit,shiftUnit:p.shiftUnit,shiftIncrement:p.shiftIncrement||1,defaultSpan:p.defaultSpan||1});n=j.generateTicks(c?Sch.util.Date.add(o.start,j.mainUnit,-1):o.start,o.end,j.unit,j.increment);if(e<0){if(d/n.length>=g.width){q=this.zoomToLevel(b,true);break}}else{if(d/n.length<g.width){if(k!==b-e){q=this.zoomToLevel(b-e,true);break}break}}b+=e}this.setTimeSpan(c?Sch.util.Date.add(o.start,this.timeAxis.mainUnit,-1):o.start,o.end);return q}return null},zoomIn:function(a){a=a||1;var b=this.getCurrentZoomLevelIndex();if(b>=this.zoomLevels.length-1){return null}return this.zoomToLevel(Math.floor(b)+a)},zoomOut:function(a){a=a||1;var b=this.getCurrentZoomLevelIndex();if(b<=0){return null}return this.zoomToLevel(Math.ceil(b)-a)},zoomInFull:function(){return this.zoomToLevel(this.maxZoomLevel)},zoomOutFull:function(){return this.zoomToLevel(this.minZoomLevel)},calculateOptimalDateRange:function(c,j,e){var b=Sch.util.Date;var k=Sch.preset.Manager.getPreset(e.preset).headerConfig;var g=k.top?k.top.unit:k.middle.unit;var l=this.getZoomLevelUnit(e);var d=Math.ceil(j/e.width*e.increment*this.visibleZoomFactor/2);var a=b.add(c,l,-d);var h=b.add(c,l,d);return{startDate:this.timeAxis.floorDate(a,false,g),endDate:this.timeAxis.ceilDate(h,false,g)}}});Ext.define("Sch.mixin.AbstractTimelinePanel",{requires:["Sch.data.TimeAxis","Sch.view.model.TimeAxis","Sch.feature.ColumnLines","Sch.preset.Manager"],mixins:["Sch.mixin.Zoomable"],orientation:"horizontal",weekStartDay:1,snapToIncrement:false,readOnly:false,eventResizeHandles:"both",timeAxis:null,timeAxisViewModel:null,viewPreset:"weekAndDay",trackHeaderOver:true,startDate:null,endDate:null,columnLines:true,trackMouseOver:false,eventBorderWidth:1,getOrientation:function(){return this.orientation},cellBorderWidth:1,cellTopBorderWidth:1,cellBottomBorderWidth:1,_initializeTimelinePanel:function(){this.initializeZooming();this.renderers=[];if(!this.timeAxis){this.timeAxis=Ext.create("Sch.data.TimeAxis")}if(!this.timeAxisViewModel||!(this.timeAxisViewModel instanceof Sch.view.model.TimeAxis)){var a=Ext.apply({snapToIncrement:this.snapToIncrement,forceFit:this.forceFit,timeAxis:this.timeAxis},this.timeAxisViewModel||{});this.timeAxisViewModel=new Sch.view.model.TimeAxis(a)}this.timeAxisViewModel.on("update",this.onTimeAxisViewModelUpdate,this);if(!this.viewPreset){throw"You must define a valid view preset object. See Sch.preset.Manager class for reference"}this.on("destroy",this.onPanelDestroyed,this);this.timeAxis.on("reconfigure",this.onTimeAxisReconfigure,this);this.addCls("sch-"+this.orientation)},onTimeAxisViewModelUpdate:function(){var a=this.getSchedulingView();if(a&&a.viewReady){a.refreshKeepingScroll()}},onPanelDestroyed:function(){this.timeAxisViewModel.destroy();this.timeAxis.un("reconfigure",this.onTimeAxisReconfigure,this)},getSchedulingView:function(){throw"Abstract method call"},setReadOnly:function(a){this.getSchedulingView().setReadOnly(a)},isReadOnly:function(){return this.getSchedulingView().isReadOnly()},switchViewPreset:function(d,a,g,b){if(b&&this.timeAxis.preset){this.applyViewSettings(this.timeAxis.preset);return}if(this.fireEvent("beforeviewchange",this,d,a,g)!==false){if(Ext.isString(d)){this.viewPreset=d;d=Sch.preset.Manager.getPreset(d)}if(!d){throw"View preset not found"}var e=d.headerConfig;var c={unit:e.bottom?e.bottom.unit:e.middle.unit,increment:(e.bottom?e.bottom.increment:e.middle.increment)||1,resolutionUnit:d.timeResolution.unit,resolutionIncrement:d.timeResolution.increment,weekStartDay:this.weekStartDay,mainUnit:e.middle.unit,shiftUnit:d.shiftUnit,headerConfig:d.headerConfig,shiftIncrement:d.shiftIncrement||1,preset:d,defaultSpan:d.defaultSpan||1};if(b){if(this.timeAxis.getCount()===0||a){c.start=a||new Date}}else{c.start=a||this.timeAxis.getStart()}c.end=g;this.timeAxis.reconfigure(c);this.applyViewSettings(d);if(this.getOrientation()==="horizontal"){this.getSchedulingView().scrollHorizontallyTo(0)}else{this.getSchedulingView().scrollVerticallyTo(0)}}},applyViewSettings:function(b){var a=this.getSchedulingView();a.setDisplayDateFormat(b.displayDateFormat);if(this.orientation==="horizontal"){a.setRowHeight(this.rowHeight||b.rowHeight,true)}},getStart:function(){return this.getStartDate()},getStartDate:function(){return this.timeAxis.getStart()},getEnd:function(){return this.getEndDate()},getEndDate:function(){return this.timeAxis.getEnd()},setTimeColumnWidth:function(b,a){this.timeAxisViewModel.setTickWidth(b,a)},getTimeColumnWidth:function(){return this.timeAxisViewModel.getTickWidth()},onTimeAxisReconfigure:function(){this.fireEvent("viewchange",this)},shiftNext:function(a){this.suspendLayouts&&this.suspendLayouts();this.timeAxis.shiftNext(a);this.suspendLayouts&&this.resumeLayouts(true)},shiftPrevious:function(a){this.suspendLayouts&&this.suspendLayouts();this.timeAxis.shiftPrevious(a);this.suspendLayouts&&this.resumeLayouts(true)},goToNow:function(){this.setTimeSpan(new Date)},setTimeSpan:function(b,a){if(this.timeAxis){this.timeAxis.setTimeSpan(b,a)}},setStart:function(a){this.setTimeSpan(a)},setEnd:function(a){this.setTimeSpan(null,a)},getTimeAxis:function(){return this.timeAxis},scrollToDate:function(c,b){var a=this.getSchedulingView();var d=a.getCoordinateFromDate(c,true);if(this.orientation=="horizontal"){a.scrollHorizontallyTo(d,b)}else{a.scrollVerticallyTo(d,b)}},getViewportCenterDate:function(){var b=this.getSchedulingView(),a=b.getScroll(),c;if(this.getOrientation()==="vertical"){c=[0,a.top+b.getViewportHeight()/2]}else{c=[a.left+b.getViewportWidth()/2,0]}return b.getDateFromXY(c,null,true)},addCls:function(){throw"Abstract method call"},removeCls:function(){throw"Abstract method call"},registerRenderer:function(b,a){this.renderers.push({fn:b,scope:a})},deregisterRenderer:function(b,a){Ext.each(this.renderers,function(c,d){if(b===c){Ext.Array.removeAt(this.renderers,d);return false}})}});Ext.define("Sch.mixin.TimelinePanel",{extend:"Sch.mixin.AbstractTimelinePanel",requires:["Sch.util.Patch","Sch.column.timeAxis.Horizontal","Sch.preset.Manager"],mixins:["Sch.mixin.Zoomable","Sch.mixin.Lockable"],tipCfg:{cls:"sch-tip",showDelay:1000,hideDelay:0,autoHide:true,anchor:"b"},inheritables:function(){return{columnLines:true,enableLocking:true,lockable:true,initComponent:function(){if(this.partnerTimelinePanel){this.timeAxis=this.partnerTimelinePanel.getTimeAxis();this.startDate=this.timeAxis.getStart();this.endDate=this.timeAxis.getEnd()}if(this.viewConfig&&this.viewConfig.forceFit){this.forceFit=true}if(Ext.versions.extjs.isGreaterThanOrEqual("4.2.1")){this.cellTopBorderWidth=0}this._initializeTimelinePanel();this.configureColumns();var b=this.normalViewConfig=this.normalViewConfig||{};Ext.apply(this.normalViewConfig,{timeAxisViewModel:this.timeAxisViewModel,eventBorderWidth:this.eventBorderWidth,timeAxis:this.timeAxis,readOnly:this.readOnly,orientation:this.orientation,rtl:this.rtl,cellBorderWidth:this.cellBorderWidth,cellTopBorderWidth:this.cellTopBorderWidth,cellBottomBorderWidth:this.cellBottomBorderWidth});Ext.Array.forEach(["eventRendererScope","eventRenderer","dndValidatorFn","resizeValidatorFn","createValidatorFn","tooltipTpl","validatorFnScope","snapToIncrement","eventResizeHandles","enableEventDragDrop","enableDragCreation","resizeConfig","createConfig","tipCfg","getDateConstraints"],function(c){if(c in this){b[c]=this[c]}},this);this.mon(this.timeAxis,"reconfigure",this.onMyTimeAxisReconfigure,this);this.addEvents("timeheaderclick","timeheaderdblclick","beforeviewchange","viewchange");this.callParent(arguments);this.switchViewPreset(this.viewPreset,this.startDate||this.timeAxis.getStart(),this.endDate||this.timeAxis.getEnd(),true);var a=this.columnLines;if(a){this.columnLinesFeature=new Sch.feature.ColumnLines(Ext.isObject(a)?a:undefined);this.columnLinesFeature.init(this);this.columnLines=true}this.relayEvents(this.getSchedulingView(),["beforetooltipshow"]);this.on("afterrender",this.__onAfterRender,this);this.on("zoomchange",function(){this.normalGrid.scrollTask.cancel()})},getState:function(){var a=this,b=a.callParent(arguments);Ext.apply(b,{viewPreset:a.viewPreset,startDate:a.getStart(),endDate:a.getEnd(),zoomMinLevel:a.zoomMinLevel,zoomMaxLevel:a.zoomMaxLevel,currentZoomLevel:a.currentZoomLevel});return b},applyState:function(b){var a=this;a.callParent(arguments);if(b&&b.viewPreset){a.switchViewPreset(b.viewPreset,b.startDate,b.endDate)}if(b&&b.currentZoomLevel){a.zoomToLevel(b.currentZoomLevel)}}}},onMyTimeAxisReconfigure:function(a){if(this.stateful&&this.rendered){this.saveState()}},onLockedGridItemDblClick:function(b,a,c,e,d){if(this.orientation==="vertical"&&a){this.fireEvent("timeheaderdblclick",this,a.get("start"),a.get("end"),e,d)}},getSchedulingView:function(){return this.normalGrid.getView()},getTimeAxisColumn:function(){if(!this.timeAxisColumn){this.timeAxisColumn=this.down("timeaxiscolumn")}return this.timeAxisColumn},configureColumns:function(){var a=this.columns=this.columns||[];var c=[];var b=[];Ext.Array.each(a,function(d){if(d.position==="right"){if(!Ext.isNumber(d.width)){Ext.Error.raise('"Right" columns must have a fixed width')}d.locked=false;b.push(d)}else{d.locked=true;c.push(d)}d.lockable=false});Ext.Array.erase(a,0,a.length);Ext.Array.insert(a,0,c.concat({xtype:"timeaxiscolumn",timeAxisViewModel:this.timeAxisViewModel,trackHeaderOver:this.trackHeaderOver,renderer:this.mainRenderer,scope:this}).concat(b));this.horizontalColumns=Ext.Array.clone(a);this.verticalColumns=[Ext.apply({xtype:"verticaltimeaxis",width:100,locked:true,timeAxis:this.timeAxis,timeAxisViewModel:this.timeAxisViewModel,cellTopBorderWidth:this.cellTopBorderWidth,cellBottomBorderWidth:this.cellBottomBorderWidth},this.timeAxisColumnCfg||{})];if(this.orientation==="vertical"){this.columns=this.verticalColumns;this.store=this.timeAxis;this.on("beforerender",function(){this.normalGrid.headerCt.add(this.createResourceColumns())},this)}},mainRenderer:function(b,n,g,k,m){var h=this.renderers,l=this.orientation==="horizontal",c=l?g:this.resourceStore.getAt(m),a="&nbsp;";n.rowHeight=null;for(var d=0;d<h.length;d++){a+=h[d].fn.call(h[d].scope||this,b,n,c,k,m)||""}if(this.variableRowHeight){var j=this.getSchedulingView();var e=l?j.getRowHeight():this.timeAxisViewModel.getTickWidth();n.style="height:"+((n.rowHeight||e)-j.cellTopBorderWidth-j.cellBottomBorderWidth)+"px"}return a},__onAfterRender:function(){var a=this;a.normalGrid.on({collapse:a.onNormalGridCollapse,expand:a.onNormalGridExpand,scope:a});a.lockedGrid.on({collapse:a.onLockedGridCollapse,itemdblclick:a.onLockedGridItemDblClick,scope:a});if(a.lockedGridDependsOnSchedule){a.normalGrid.getView().on("itemupdate",a.onNormalViewItemUpdate,a)}if(this.partnerTimelinePanel){if(this.partnerTimelinePanel.rendered){this.setupPartnerTimelinePanel()}else{this.partnerTimelinePanel.on("afterrender",this.setupPartnerTimelinePanel,this)}}},onLockedGridCollapse:function(){if(this.normalGrid.collapsed){this.normalGrid.expand()}},onNormalGridCollapse:function(){var b=this;if(!b.normalGrid.reExpander){b.normalGrid.reExpander=b.normalGrid.placeholder}if(!b.lockedGrid.rendered){b.lockedGrid.on("render",b.onNormalGridCollapse,b,{delay:1})}else{var a=b.lockedGrid.headerCt&&b.lockedGrid.headerCt.getHeight();b.lastLockedWidth=b.lockedGrid.getWidth();b.lockedGrid.flex=1;b.lockedGrid.doLayout();if(b.lockedGrid.collapsed){b.lockedGrid.expand()}b.addCls("sch-normalgrid-collapsed")}},onNormalGridExpand:function(){this.removeCls("sch-normalgrid-collapsed");delete this.lockedGrid.flex;this.lockedGrid.setWidth(this.lastLockedWidth)},onNormalViewItemUpdate:function(a,b,d){if(this.lockedGridDependsOnSchedule){var c=this.lockedGrid.getView();c.suspendEvents();c.refreshNode(b);c.resumeEvents()}},setupPartnerTimelinePanel:function(){var g=this.partnerTimelinePanel;var d=g.down("splitter");var c=this.down("splitter");if(d){d.on("dragend",function(){this.lockedGrid.setWidth(g.lockedGrid.getWidth())},this)}if(c){c.on("dragend",function(){g.lockedGrid.setWidth(this.lockedGrid.getWidth())},this)}var b=this.partnerTimelinePanel.lockedGrid.getWidth();this.lockedGrid.setWidth(b);var a=this.partnerTimelinePanel.getSchedulingView().getEl(),e=this.getSchedulingView().getEl();this.partnerTimelinePanel.mon(e,"scroll",function(j,h){a.scrollTo("left",h.scrollLeft)});this.mon(a,"scroll",function(j,h){e.scrollTo("left",h.scrollLeft)})}},function(){var a="4.2.0";Ext.apply(Sch,{VERSION:"2.2.5"});if(Ext.versions.extjs.isLessThan(a)){alert("The Ext JS version you are using needs to be updated to at least "+a)}});Ext.define("Sch.mixin.AbstractSchedulerPanel",{requires:["Sch.model.Event","Sch.model.Resource","Sch.data.EventStore","Sch.data.ResourceStore","Sch.util.Date"],eventBarIconClsField:"",enableEventDragDrop:true,allowOverlap:true,startParamName:"startDate",endParamName:"endDate",passStartEndParameters:false,eventRenderer:null,eventRendererScope:null,eventStore:null,resourceStore:null,onEventCreated:function(a){},initStores:function(){var a=this.resourceStore||this.store;if(!a){Ext.Error.raise("You must specify a resourceStore config")}if(!this.eventStore){Ext.Error.raise("You must specify an eventStore config")}this.store=Ext.StoreManager.lookup(a);this.resourceStore=Ext.StoreManager.lookup(this.store);this.eventStore=Ext.StoreManager.lookup(this.eventStore);if(!this.eventStore.isEventStore){Ext.Error.raise("Your eventStore should be a subclass of Sch.data.EventStore (or consume the EventStore mixin)")}this.resourceStore.eventStore=this.eventStore;if(this.passStartEndParameters){this.eventStore.on("beforeload",this.applyStartEndParameters,this)}},_initializeSchedulerPanel:function(){this.initStores();if(this.eventBodyTemplate&&Ext.isString(this.eventBodyTemplate)){this.eventBodyTemplate=new Ext.XTemplate(this.eventBodyTemplate)}},getResourceStore:function(){return this.resourceStore},getEventStore:function(){return this.eventStore},applyStartEndParameters:function(b,a){a.params=a.params||{};a.params[this.startParamName]=this.getStart();a.params[this.endParamName]=this.getEnd()}});Ext.define("Sch.mixin.SchedulerPanel",{extend:"Sch.mixin.AbstractSchedulerPanel",requires:["Sch.view.SchedulerGridView","Sch.selection.EventModel","Sch.plugin.ResourceZones","Sch.column.timeAxis.Vertical"],resourceColumnWidth:null,eventSelModelType:"eventmodel",eventSelModel:null,enableEventDragDrop:true,enableDragCreation:true,dragConfig:null,dropConfig:null,resourceZones:null,componentCls:"sch-schedulerpanel",lockedGridDependsOnSchedule:true,resourceColumnClass:"Sch.column.Resource",variableRowHeight:true,inheritables:function(){return{initComponent:function(){var c=this.normalViewConfig=this.normalViewConfig||{};this._initializeSchedulerPanel();Ext.apply(c,{eventStore:this.eventStore,resourceStore:this.resourceStore,eventBarTextField:this.eventBarTextField||this.eventStore.model.prototype.nameField});Ext.Array.forEach(["barMargin","eventBodyTemplate","eventTpl","allowOverlap","dragConfig","dropConfig","eventBarIconClsField","onEventCreated","constrainDragToResource"],function(d){if(d in this){c[d]=this[d]}},this);if(this.orientation==="vertical"){this.mon(this.resourceStore,{clear:this.refreshResourceColumns,datachanged:this.refreshResourceColumns,update:this.refreshResourceColumns,load:this.refreshResourceColumns,scope:this})}this.callParent(arguments);var a=this.getSchedulingView();this.registerRenderer(a.columnRenderer,a);if(this.resourceZones){var b=Ext.StoreManager.lookup(this.resourceZones);b.setResourceStore(this.resourceStore);this.resourceZonesPlug=Ext.create("Sch.plugin.ResourceZones",{store:b});this.resourceZonesPlug.init(this)}this.relayEvents(this.getSchedulingView(),["eventclick","eventmousedown","eventmouseup","eventdblclick","eventcontextmenu","eventmouseenter","eventmouseleave","beforeeventresize","eventresizestart","eventpartialresize","beforeeventresizefinalize","eventresizeend","beforeeventdrag","eventdragstart","eventdrag","beforeeventdropfinalize","eventdrop","aftereventdrop","beforedragcreate","dragcreatestart","beforedragcreatefinalize","dragcreateend","afterdragcreate","beforeeventadd","scheduleclick","scheduledblclick","schedulecontextmenu"]);this.addEvents("orientationchange");if(!this.syncRowHeight){this.enableRowHeightInjection(this.lockedGrid.getView(),this.normalGrid.getView())}},applyViewSettings:function(c){this.callParent(arguments);var b=this.getSchedulingView(),a;if(this.orientation==="horizontal"){a=this.rowHeight=this.rowHeight||c.rowHeight}else{a=this.timeColumnWidth=this.timeColumnWidth||c.timeColumnWidth||60;b.setColumnWidth(c.resourceColumnWidth||100,true)}b.setRowHeight(a,true)}}},enableRowHeightInjection:function(a,c){var b=new Ext.XTemplate("{%","this.processCellValues(values);","this.nextTpl.applyOut(values, out, parent);","%}",{priority:1,processCellValues:function(e){if(c.orientation==="horizontal"){var g=c.eventLayout.horizontal;var h=e.record;var d=g.getRowHeight(h)-c.cellTopBorderWidth-c.cellBottomBorderWidth;e.style=(e.style||"")+";height:"+d+"px;"}}});a.addCellTpl(b)},getEventSelectionModel:function(){if(this.eventSelModel&&this.eventSelModel.events){return this.eventSelModel}if(!this.eventSelModel){this.eventSelModel={}}var a=this.eventSelModel;var b="SINGLE";if(this.simpleSelect){b="SIMPLE"}else{if(this.multiSelect){b="MULTI"}}Ext.applyIf(a,{allowDeselect:this.allowDeselect,mode:b});if(!a.events){a=this.eventSelModel=Ext.create("selection."+this.eventSelModelType,a)}if(!a.hasRelaySetup){this.relayEvents(a,["selectionchange","deselect","select"]);a.hasRelaySetup=true}if(this.disableSelection){a.locked=true}return a},refreshResourceColumns:function(){var a=this.normalGrid.headerCt;a.removeAll();a.add(this.createResourceColumns());this.getView().refresh()},createResourceColumns:function(){var a=[];var b=this;this.resourceStore.each(function(c){a.push(Ext.create(this.resourceColumnClass,{tdCls:"sch-timetd",renderer:b.mainRenderer,scope:b,width:b.resourceColumnWidth||b.timeAxis.preset.resourceColumnWidth||100,text:c.getName(),model:c}))},this);return a},setOrientation:function(a,d){if(a===this.orientation&&!d){return}this.removeCls("sch-"+this.orientation);this.addCls("sch-"+a);this.orientation=a;var c=this,e=c.normalGrid,g=c.getSchedulingView(),b=e.headerCt;g.setOrientation(a);b.items.each(function(h){b.remove(h);h.destroy()});if(a==="horizontal"){c.mun(c.resourceStore,{clear:c.refreshResourceColumns,datachanged:c.refreshResourceColumns,load:c.refreshResourceColumns,scope:c});g.setRowHeight(c.rowHeight||c.timeAxis.preset.rowHeight,true);c.reconfigureLockable(c.resourceStore,c.horizontalColumns)}else{c.mon(c.resourceStore,{clear:c.refreshResourceColumns,datachanged:c.refreshResourceColumns,load:c.refreshResourceColumns,scope:c});c.reconfigureLockable(c.timeAxis,c.verticalColumns.concat(c.createResourceColumns()));g.setColumnWidth(c.timeAxis.preset.resourceColumnWidth||100,true)}this.fireEvent("orientationchange",this,a)}});Ext.define("Sch.mixin.FilterableTreeView",{prevBlockRefresh:null,initTreeFiltering:function(){var a=function(){var b=this.up("tablepanel").store;if(b instanceof Ext.data.NodeStore){b=this.up("tablepanel[lockable=true]").store}this.mon(b,"nodestore-datachange-start",this.onFilterChangeStart,this);this.mon(b,"nodestore-datachange-end",this.onFilterChangeEnd,this);this.mon(b,"filter-clear",this.onFilterCleared,this);this.mon(b,"filter-set",this.onFilterSet,this)};if(this.rendered){a.call(this)}else{this.on("beforerender",a,this,{single:true})}},onFilterChangeStart:function(){this.prevBlockRefresh=this.blockRefresh;this.blockRefresh=true;Ext.suspendLayouts()},onFilterChangeEnd:function(){Ext.resumeLayouts(true);this.blockRefresh=this.prevBlockRefresh},onFilterCleared:function(){delete this.toggle;var a=this.getEl();if(a){a.removeCls("sch-tree-filtered")}},onFilterSet:function(){this.toggle=function(){};var a=this.getEl();if(a){a.addCls("sch-tree-filtered")}}});Ext.define("Sch.panel.TimelineGridPanel",{extend:"Ext.grid.Panel",mixins:["Sch.mixin.TimelinePanel"],subGridXType:"gridpanel",initComponent:function(){this.callParent(arguments);this.getSchedulingView()._initializeTimelineView()}},function(){this.override(Sch.mixin.TimelinePanel.prototype.inheritables()||{})});Ext.define("Sch.panel.TimelineTreePanel",{extend:"Ext.tree.Panel",requires:["Ext.data.TreeStore","Sch.mixin.FilterableTreeView"],mixins:["Sch.mixin.TimelinePanel"],useArrows:true,rootVisible:false,lockedXType:"treepanel",initComponent:function(){this.callParent(arguments);this.getSchedulingView()._initializeTimelineView()}},function(){this.override(Sch.mixin.TimelinePanel.prototype.inheritables()||{})});Ext.define("Sch.panel.SchedulerGrid",{extend:"Sch.panel.TimelineGridPanel",mixins:["Sch.mixin.SchedulerPanel"],alias:["widget.schedulergrid","widget.schedulerpanel"],alternateClassName:"Sch.SchedulerPanel",viewType:"schedulergridview",initComponent:function(){this.callParent(arguments);this.getSchedulingView()._initializeSchedulerView()}},function(){this.override(Sch.mixin.SchedulerPanel.prototype.inheritables()||{})});Ext.define("Sch.panel.SchedulerTree",{extend:"Sch.panel.TimelineTreePanel",mixins:["Sch.mixin.SchedulerPanel"],alias:["widget.schedulertree"],viewType:"schedulergridview",setOrientation:function(a){if(a=="vertical"){Ext.Error.raise("Sch.panel.SchedulerTree does not support vertical orientation")}},initComponent:function(){this.callParent(arguments);this.getSchedulingView()._initializeSchedulerView()}},function(){this.override(Sch.mixin.SchedulerPanel.prototype.inheritables()||{})});Ext.define("Sch.util.Patch",{target:null,minVersion:null,maxVersion:null,reportUrl:null,description:null,applyFn:null,ieOnly:false,overrides:null,onClassExtended:function(a,b){if(Sch.disableOverrides){return}if(b.ieOnly&&!Ext.isIE){return}if((!b.minVersion||Ext.versions.extjs.equals(b.minVersion)||Ext.versions.extjs.isGreaterThan(b.minVersion))&&(!b.maxVersion||Ext.versions.extjs.equals(b.maxVersion)||Ext.versions.extjs.isLessThan(b.maxVersion))){if(b.applyFn){b.applyFn()}else{Ext.ClassManager.get(b.target).override(b.overrides)}}}});Ext.define("Sch.util.Date",{requires:"Ext.Date",singleton:true,unitHash:null,unitsByName:{},unitNames:{YEAR:{single:"year",plural:"years",abbrev:"yr"},QUARTER:{single:"quarter",plural:"quarters",abbrev:"q"},MONTH:{single:"month",plural:"months",abbrev:"mon"},WEEK:{single:"week",plural:"weeks",abbrev:"w"},DAY:{single:"day",plural:"days",abbrev:"d"},HOUR:{single:"hour",plural:"hours",abbrev:"h"},MINUTE:{single:"minute",plural:"minutes",abbrev:"min"},SECOND:{single:"second",plural:"seconds",abbrev:"s"},MILLI:{single:"ms",plural:"ms",abbrev:"ms"}},constructor:function(){var a=Ext.Date;var c=this.unitHash={MILLI:a.MILLI,SECOND:a.SECOND,MINUTE:a.MINUTE,HOUR:a.HOUR,DAY:a.DAY,WEEK:"w",MONTH:a.MONTH,QUARTER:"q",YEAR:a.YEAR};Ext.apply(this,c);var b=this;this.units=[b.MILLI,b.SECOND,b.MINUTE,b.HOUR,b.DAY,b.WEEK,b.MONTH,b.QUARTER,b.YEAR];this.setUnitNames(this.unitNames)},setUnitNames:function(e){var d=this.unitsByName={};this.unitNames=e;var b=this.unitHash;for(var a in b){if(b.hasOwnProperty(a)){var c=b[a];e[c]=e[a];d[a]=c;d[c]=c}}},betweenLesser:function(b,d,a){var c=b.getTime();return d.getTime()<=c&&c<a.getTime()},constrain:function(b,c,a){return this.min(this.max(b,c),a)},compareUnits:function(c,b){var a=Ext.Array.indexOf(this.units,c),d=Ext.Array.indexOf(this.units,b);return a>d?1:a<d?-1:0},isUnitGreater:function(b,a){return this.compareUnits(b,a)>0},copyTimeValues:function(b,a){b.setHours(a.getHours());b.setMinutes(a.getMinutes());b.setSeconds(a.getSeconds());b.setMilliseconds(a.getMilliseconds())},add:function(b,c,e){var g=Ext.Date.clone(b);if(!c||e===0){return g}switch(c.toLowerCase()){case this.MILLI:g=new Date(b.getTime()+e);break;case this.SECOND:g=new Date(b.getTime()+e*1000);break;case this.MINUTE:g=new Date(b.getTime()+e*60000);break;case this.HOUR:g=new Date(b.getTime()+e*3600000);break;case this.DAY:g.setDate(b.getDate()+e);break;case this.WEEK:g.setDate(b.getDate()+e*7);break;case this.MONTH:var a=b.getDate();if(a>28){a=Math.min(a,Ext.Date.getLastDateOfMonth(this.add(Ext.Date.getFirstDateOfMonth(b),this.MONTH,e)).getDate())}g.setDate(a);g.setMonth(g.getMonth()+e);break;case this.QUARTER:g=this.add(b,this.MONTH,e*3);break;case this.YEAR:g.setFullYear(b.getFullYear()+e);break}return g},getMeasuringUnit:function(a){if(a===this.WEEK){return this.DAY}return a},getDurationInUnit:function(d,a,c){var b;switch(c){case this.YEAR:b=Math.round(this.getDurationInYears(d,a));break;case this.QUARTER:b=Math.round(this.getDurationInMonths(d,a)/3);break;case this.MONTH:b=Math.round(this.getDurationInMonths(d,a));break;case this.WEEK:b=Math.round(this.getDurationInDays(d,a))/7;break;case this.DAY:b=Math.round(this.getDurationInDays(d,a));break;case this.HOUR:b=Math.round(this.getDurationInHours(d,a));break;case this.MINUTE:b=Math.round(this.getDurationInMinutes(d,a));break;case this.SECOND:b=Math.round(this.getDurationInSeconds(d,a));break;case this.MILLI:b=Math.round(this.getDurationInMilliseconds(d,a));break}return b},getUnitToBaseUnitRatio:function(b,a){if(b===a){return 1}switch(b){case this.YEAR:switch(a){case this.QUARTER:return 1/4;case this.MONTH:return 1/12}break;case this.QUARTER:switch(a){case this.YEAR:return 4;case this.MONTH:return 1/3}break;case this.MONTH:switch(a){case this.YEAR:return 12;case this.QUARTER:return 3}break;case this.WEEK:switch(a){case this.DAY:return 1/7;case this.HOUR:return 1/168}break;case this.DAY:switch(a){case this.WEEK:return 7;case this.HOUR:return 1/24;case this.MINUTE:return 1/1440}break;case this.HOUR:switch(a){case this.DAY:return 24;case this.MINUTE:return 1/60}break;case this.MINUTE:switch(a){case this.HOUR:return 60;case this.SECOND:return 1/60;case this.MILLI:return 1/60000}break;case this.SECOND:switch(a){case this.MILLI:return 1/1000}break;case this.MILLI:switch(a){case this.SECOND:return 1000}break}return -1},getDurationInMilliseconds:function(b,a){return a-b},getDurationInSeconds:function(b,a){return(a-b)/1000},getDurationInMinutes:function(b,a){return(a-b)/60000},getDurationInHours:function(b,a){return(a-b)/3600000},getDurationInDays:function(b,a){return(a-b)/86400000},getDurationInBusinessDays:function(h,b){var c=Math.round((b-h)/86400000),a=0,g;for(var e=0;e<c;e++){g=this.add(h,this.DAY,e).getDay();if(g!==6&&g!==0){a++}}return a},getDurationInMonths:function(b,a){return(a.getFullYear()-b.getFullYear())*12+(a.getMonth()-b.getMonth())},getDurationInYears:function(b,a){return this.getDurationInMonths(b,a)/12},min:function(b,a){return b<a?b:a},max:function(b,a){return b>a?b:a},intersectSpans:function(c,d,b,a){return this.betweenLesser(c,b,a)||this.betweenLesser(b,c,d)},getNameOfUnit:function(a){a=this.getUnitByName(a);switch(a.toLowerCase()){case this.YEAR:return"YEAR";case this.QUARTER:return"QUARTER";case this.MONTH:return"MONTH";case this.WEEK:return"WEEK";case this.DAY:return"DAY";case this.HOUR:return"HOUR";case this.MINUTE:return"MINUTE";case this.SECOND:return"SECOND";case this.MILLI:return"MILLI"}throw"Incorrect UnitName"},getReadableNameOfUnit:function(b,a){return this.unitNames[b][a?"plural":"single"]},getShortNameOfUnit:function(a){return this.unitNames[a].abbrev},getUnitByName:function(a){if(!this.unitsByName[a]){Ext.Error.raise("Unknown unit name: "+a)}return this.unitsByName[a]},getNext:function(c,h,a,g){var e=Ext.Date.clone(c);g=arguments.length<4?1:g;a=a||1;switch(h){case this.MILLI:e=this.add(c,h,a);break;case this.SECOND:e=this.add(c,h,a);e.setMilliseconds(0);break;case this.MINUTE:e=this.add(c,h,a);e.setSeconds(0);e.setMilliseconds(0);break;case this.HOUR:e=this.add(c,h,a);e.setMinutes(0);e.setSeconds(0);e.setMilliseconds(0);break;case this.DAY:var d=c.getHours()===23&&this.add(e,this.HOUR,1).getHours()===1;if(d){e=this.add(e,this.DAY,2);Ext.Date.clearTime(e);return e}Ext.Date.clearTime(e);e=this.add(e,this.DAY,a);break;case this.WEEK:Ext.Date.clearTime(e);var b=e.getDay();e=this.add(e,this.DAY,g-b+7*(a-(g<=b?0:1)));if(e.getDay()!==g){e=this.add(e,this.HOUR,1)}else{Ext.Date.clearTime(e)}break;case this.MONTH:e=this.add(e,this.MONTH,a);e.setDate(1);Ext.Date.clearTime(e);break;case this.QUARTER:e=this.add(e,this.MONTH,(a-1)*3+(3-e.getMonth()%3));Ext.Date.clearTime(e);e.setDate(1);break;case this.YEAR:e=new Date(e.getFullYear()+a,0,1);break;default:throw"Invalid date unit"}return e},getNumberOfMsFromTheStartOfDay:function(a){return a-Ext.Date.clearTime(a,true)||86400000},getNumberOfMsTillTheEndOfDay:function(a){return this.getStartOfNextDay(a,true)-a},getStartOfNextDay:function(b,e){var d=this.add(Ext.Date.clearTime(b,e),this.DAY,1);if(d.getDate()==b.getDate()){var c=this.add(Ext.Date.clearTime(b,e),this.DAY,2).getTimezoneOffset();var a=b.getTimezoneOffset();d=this.add(d,this.MINUTE,a-c)}return d},getEndOfPreviousDay:function(b){var a=Ext.Date.clearTime(b,true);if(a-b){return a}else{return this.add(a,this.DAY,-1)}},timeSpanContains:function(c,b,d,a){return d-c>=0&&b-a>=0}});Ext.define("Sch.util.DragTracker",{extend:"Ext.dd.DragTracker",xStep:1,yStep:1,setXStep:function(a){this.xStep=a},setYStep:function(a){this.yStep=a},getRegion:function(){var e=this.startXY,d=this.getXY(),b=Math.min(e[0],d[0]),g=Math.min(e[1],d[1]),c=Math.abs(e[0]-d[0]),a=Math.abs(e[1]-d[1]);return new Ext.util.Region(g,b+c,g+a,b)},onMouseDown:function(g,d){if(this.disabled||g.dragTracked){return}var c=g.getXY(),h,b,a=c[0],j=c[1];if(this.xStep>1){h=this.el.getX();a-=h;a=Math.round(a/this.xStep)*this.xStep;a+=h}if(this.yStep>1){b=this.el.getY();j-=b;j=Math.round(j/this.yStep)*this.yStep;j+=b}this.dragTarget=this.delegate?d:this.handle.dom;this.startXY=this.lastXY=[a,j];this.startRegion=Ext.fly(this.dragTarget).getRegion();if(this.fireEvent("mousedown",this,g)===false||this.fireEvent("beforedragstart",this,g)===false||this.onBeforeStart(g)===false){return}this.mouseIsDown=true;g.dragTracked=true;if(this.preventDefault!==false){g.preventDefault()}Ext.getDoc().on({scope:this,mouseup:this.onMouseUp,mousemove:this.onMouseMove,selectstart:this.stopSelect});if(this.autoStart){this.timer=Ext.defer(this.triggerStart,this.autoStart===true?1000:this.autoStart,this,[g])}},onMouseMove:function(h,g){if(this.active&&Ext.isIE&&!h.browserEvent.button){h.preventDefault();this.onMouseUp(h);return}h.preventDefault();var d=h.getXY(),b=this.startXY;if(!this.active){if(Math.max(Math.abs(b[0]-d[0]),Math.abs(b[1]-d[1]))>this.tolerance){this.triggerStart(h)}else{return}}var a=d[0],j=d[1];if(this.xStep>1){a-=this.startXY[0];a=Math.round(a/this.xStep)*this.xStep;a+=this.startXY[0]}if(this.yStep>1){j-=this.startXY[1];j=Math.round(j/this.yStep)*this.yStep;j+=this.startXY[1]}var c=this.xStep>1||this.yStep>1;if(!c||a!==d[0]||j!==d[1]){this.lastXY=[a,j];if(this.fireEvent("mousemove",this,h)===false){this.onMouseUp(h)}else{this.onDrag(h);this.fireEvent("drag",this,h)}}}});Ext.define("Sch.model.Customizable",{extend:"Ext.data.Model",idProperty:null,customizableFields:null,previous:null,onClassExtended:function(b,d,a){var c=a.onBeforeCreated;a.onBeforeCreated=function(g,m){c.call(this,g,m);var l=g.prototype;if(!l.customizableFields){return}l.customizableFields=(g.superclass.customizableFields||[]).concat(l.customizableFields);var h=l.customizableFields;var k={};Ext.Array.each(h,function(n){if(typeof n=="string"){n={name:n}}k[n.name]=n});var e=l.fields;var j=[];e.each(function(n){if(n.isCustomizableField){j.push(n)}});e.removeAll(j);Ext.Object.each(k,function(n,q){q.isCustomizableField=true;var s=q.name||q.getName();var x=s==="Id"?"idProperty":s.charAt(0).toLowerCase()+s.substr(1)+"Field";var t=l[x];var w=t||s;if(e.containsKey(w)){e.getByKey(w).isCustomizableField=true;h.push(new Ext.data.Field(Ext.applyIf({name:s,isCustomizableField:true},e.getByKey(w))))}else{e.add(new Ext.data.Field(Ext.applyIf({name:w,isCustomizableField:true},q)))}var p=Ext.String.capitalize(s);if(p!="Id"){var u="get"+p;var o="set"+p;if(!l[u]||l[u].__getterFor__&&l[u].__getterFor__!=w){l[u]=function(){return this.data[w]};l[u].__getterFor__=w}if(!l[o]||l[o].__setterFor__&&l[o].__setterFor__!=w){l[o]=function(y){return this.set(w,y)};l[o].__setterFor__=w}}})}},set:function(d,b){var a;this.previous=this.previous||{};if(arguments.length>1){a=this.get(d);if(a!==b){this.previous[d]=a}}else{for(var c in d){a=this.get(c);if(a!==d[c]){this.previous[c]=a}}}this.callParent(arguments)},afterEdit:function(){this.callParent(arguments);delete this.previous},reject:function(){var b=this,a=b.modified,c;b.previous=b.previous||{};for(c in a){if(a.hasOwnProperty(c)){if(typeof a[c]!="function"){b.previous[c]=b.get(c)}}}b.callParent(arguments);delete b.previous}});Ext.define("Sch.data.mixin.EventStore",{model:"Sch.model.Event",config:{model:"Sch.model.Event"},requires:["Sch.util.Date"],isEventStore:true,setResourceStore:function(a){if(this.resourceStore){this.resourceStore.un({beforesync:this.onResourceStoreBeforeSync,write:this.onResourceStoreWrite,scope:this})}this.resourceStore=a;if(a){a.on({beforesync:this.onResourceStoreBeforeSync,write:this.onResourceStoreWrite,scope:this})}},onResourceStoreBeforeSync:function(b,c){var a=b.create;if(a){for(var e,d=a.length-1;d>=0;d--){e=a[d];e._phantomId=e.internalId}}},onResourceStoreWrite:function(c,b){if(b.wasSuccessful()){var d=this,a=b.getRecords();Ext.each(a,function(e){if(e._phantomId&&!e.phantom){d.each(function(g){if(g.getResourceId()===e._phantomId){g.assign(e)}})}})}},isDateRangeAvailable:function(g,a,b,d){var c=true,e=Sch.util.Date;this.each(function(h){if(e.intersectSpans(g,a,h.getStartDate(),h.getEndDate())&&d===h.getResource()&&(!b||b!==h)){c=false;return false}});return c},getEventsInTimeSpan:function(d,b,a){if(a!==false){var c=Sch.util.Date;return this.queryBy(function(h){var g=h.getStartDate(),e=h.getEndDate();return g&&e&&c.intersectSpans(g,e,d,b)})}else{return this.queryBy(function(h){var g=h.getStartDate(),e=h.getEndDate();return g&&e&&g-d>=0&&b-e>=0})}},getTotalTimeSpan:function(){var a=new Date(9999,0,1),b=new Date(0),c=Sch.util.Date;this.each(function(d){if(d.getStartDate()){a=c.min(d.getStartDate(),a)}if(d.getEndDate()){b=c.max(d.getEndDate(),b)}});a=a<new Date(9999,0,1)?a:null;b=b>new Date(0)?b:null;return{start:a||null,end:b||a||null}},getEventsForResource:function(e){var c=[],d,g=e.getId()||e.internalId;for(var b=0,a=this.getCount();b<a;b++){d=this.getAt(b);if(d.data[d.resourceIdField]==g){c.push(d)}}return c},getClosestSuccessor:function(h,e){var c=Infinity,a=h.getEnd(),g,j;e=e||this.getRange();for(var d=0,b=e.length;d<b;d++){j=e[d].getStart()-a;if(j>=0&&j<c){g=e[d];c=j}}return g},append:function(a){throw"Must be implemented by consuming class"}});Ext.define("Sch.model.Range",{extend:"Sch.model.Customizable",requires:["Sch.util.Date"],idProperty:"Id",startDateField:"StartDate",endDateField:"EndDate",nameField:"Name",clsField:"Cls",customizableFields:[{name:"StartDate",type:"date",dateFormat:"c"},{name:"EndDate",type:"date",dateFormat:"c"},{name:"Cls",type:"string"},{name:"Name",type:"string"}],setStartDate:function(a,d){var c=this.getEndDate();var b=this.getStartDate();this.set(this.startDateField,a);if(d===true&&c&&b){this.setEndDate(Sch.util.Date.add(a,Sch.util.Date.MILLI,c-b))}},setEndDate:function(b,d){var a=this.getStartDate();var c=this.getEndDate();this.set(this.endDateField,b);if(d===true&&a&&c){this.setStartDate(Sch.util.Date.add(b,Sch.util.Date.MILLI,-(c-a)))}},setStartEndDate:function(b,a){this.beginEdit();this.set(this.startDateField,b);this.set(this.endDateField,a);this.endEdit()},getDates:function(){var c=[],b=this.getEndDate();for(var a=Ext.Date.clearTime(this.getStartDate(),true);a<b;a=Sch.util.Date.add(a,Sch.util.Date.DAY,1)){c.push(a)}return c},forEachDate:function(b,a){return Ext.each(this.getDates(),b,a)},isValid:function(){var b=this.callParent(arguments);if(b){var c=this.getStartDate(),a=this.getEndDate();b=!c||!a||a-c>=0}return b},shift:function(b,a){this.setStartEndDate(Sch.util.Date.add(this.getStartDate(),b,a),Sch.util.Date.add(this.getEndDate(),b,a))}});Ext.define("Sch.model.TimeAxisTick",{extend:"Sch.model.Range",startDateField:"start",endDateField:"end"});Ext.define("Sch.model.Resource",{extend:"Sch.model.Customizable",idProperty:"Id",config:{idProperty:"Id"},nameField:"Name",customizableFields:["Id",{name:"Name",type:"string"}],getEventStore:function(){return this.stores[0]&&this.stores[0].eventStore||this.parentNode&&this.parentNode.getEventStore()},getEvents:function(d){var c=[],e,g=this.getId()||this.internalId;d=d||this.getEventStore();for(var b=0,a=d.getCount();b<a;b++){e=d.getAt(b);if(e.data[e.resourceIdField]===g){c.push(e)}}return c}});Ext.define("Sch.data.mixin.ResourceStore",{});Ext.define("Sch.data.FilterableNodeStore",{extend:"Ext.data.NodeStore",onNodeExpand:function(g,d,c){var b=[];for(var e=0;e<d.length;e++){var a=d[e];if(!(a.isHidden&&a.isHidden()||a.hidden||a.data.hidden)){b[b.length]=a}}return this.callParent([g,b,c])}});Ext.define("Sch.data.mixin.FilterableTreeStore",{requires:["Sch.data.FilterableNodeStore"],nodeStoreClassName:"Sch.data.FilterableNodeStore",nodeStore:null,isFilteredFlag:false,lastTreeFilter:null,initTreeFiltering:function(){if(!this.nodeStore){this.nodeStore=this.createNodeStore(this)}this.addEvents("filter-set","filter-clear","nodestore-datachange-start","nodestore-datachange-end")},createNodeStore:function(a){return Ext.create(this.nodeStoreClassName,{treeStore:a,recursive:true,rootVisible:this.rootVisible})},clearTreeFilter:function(){if(!this.isTreeFiltered()){return}this.refreshNodeStoreContent();this.isFilteredFlag=false;this.lastTreeFilter=null;this.fireEvent("filter-clear",this)},refreshNodeStoreContent:function(g){var a=this.getRootNode(),d=[];var c=this.rootVisible;var b=function(l){if(l.isHidden&&l.isHidden()||l.hidden||l.data.hidden){return}if(c||l!=a){d[d.length]=l}if(!l.data.leaf&&l.isExpanded()){var m=l.childNodes,j=m.length;for(var h=0;h<j;h++){b(m[h])}}};b(a);this.fireEvent("nodestore-datachange-start",this);var e=this.nodeStore;if(!this.loadDataInNodeStore||!this.loadDataInNodeStore(d)){e.loadRecords(d)}if(!g){e.fireEvent("clear",e)}this.fireEvent("nodestore-datachange-end",this)},getIndexInTotalDataset:function(b){var a=this.getRootNode(),d=-1;var e=this.rootVisible;if(!e&&b==a){return -1}var c=function(j){if(j.isHidden&&j.isHidden()||j.hidden||j.data.hidden){if(j==b){return false}}if(e||j!=a){d++}if(j==b){return false}if(!j.data.leaf&&j.isExpanded()){var l=j.childNodes,h=l.length;for(var g=0;g<h;g++){if(c(l[g])===false){return false}}}};c(a);return d},isTreeFiltered:function(){return this.isFilteredFlag},filterTreeBy:function(u,b){var h;if(arguments.length==1&&Ext.isObject(arguments[0])){b=u.scope;h=u.filter}else{h=u;u={filter:h}}this.fireEvent("nodestore-datachange-start",this);u=u||{};var k=u.shallow;var t=u.checkParents||k;var j=u.fullMathchingParents;var c=u.onlyParents||j;var e=this.rootVisible;if(c&&t){throw new Error("Can't combine `onlyParents` and `checkParents` options")}var p={};var n=this.getRootNode(),d=[];var a=function(x){var w=x.parentNode;while(w&&!p[w.internalId]){p[w.internalId]=true;w=w.parentNode}};var l=function(z){if(z.isHidden&&z.isHidden()||z.hidden||z.data.hidden){return}var x,A,y,w;if(z.data.leaf){if(h.call(b,z,p)){d[d.length]=z;a(z)}}else{if(e||z!=n){d[d.length]=z}if(c){x=h.call(b,z);A=z.childNodes;y=A.length;if(x){p[z.internalId]=true;a(z);if(j){z.cascadeBy(function(B){if(B!=z){d[d.length]=B;if(!B.data.leaf){p[B.internalId]=true}}});return}}for(w=0;w<y;w++){if(x&&A[w].data.leaf){d[d.length]=A[w]}else{if(!A[w].data.leaf){l(A[w])}}}}else{if(t){x=h.call(b,z,p);if(x){p[z.internalId]=true;a(z)}}if(!t||!k||k&&(x||z==n&&!e)){A=z.childNodes;y=A.length;for(w=0;w<y;w++){l(A[w])}}}}};l(n);var g=[];for(var q=0,s=d.length;q<s;q++){var m=d[q];if(m.data.leaf||p[m.internalId]){g[g.length]=m}}var o=this.nodeStore;if(!this.loadDataInNodeStore||!this.loadDataInNodeStore(g)){o.loadRecords(g,false);o.fireEvent("clear",o)}this.isFilteredFlag=true;this.lastTreeFilter=u;this.fireEvent("nodestore-datachange-end",this);this.fireEvent("filter-set",this)},hideNodesBy:function(b,a){if(this.isFiltered()){throw new Error("Can't hide nodes of the filtered tree store")}var c=this;a=a||this;this.getRootNode().cascadeBy(function(d){d.hidden=b.call(a,d,c)});this.refreshNodeStoreContent()},showAllNodes:function(){this.getRootNode().cascadeBy(function(a){a.hidden=a.data.hidden=false});this.refreshNodeStoreContent()}});Ext.define("Sch.data.ResourceStore",{extend:"Ext.data.Store",model:"Sch.model.Resource",config:{model:"Sch.model.Resource"},mixins:["Sch.data.mixin.ResourceStore"]});Ext.define("Sch.data.TimeAxis",{extend:"Ext.data.JsonStore",requires:["Sch.util.Date"],model:"Sch.model.TimeAxisTick",continuous:true,autoAdjust:true,preset:null,unit:null,increment:null,resolutionUnit:null,resolutionIncrement:null,weekStartDay:null,mainUnit:null,shiftUnit:null,headerConfig:null,shiftIncrement:1,defaultSpan:1,constructor:function(a){var b=this;if(b.setModel){b.setModel(b.model)}b.originalContinuous=b.continuous;b.callParent(arguments);b.addEvents("beforereconfigure","reconfigure");b.on("datachanged",function(){b.fireEvent("reconfigure",b)});if(a&&b.start){b.reconfigure(a)}},reconfigure:function(a){Ext.apply(this,a);var b=this.generateTicks(this.start,this.end,this.unit,this.increment||1,this.mainUnit);if(this.fireEvent("beforereconfigure",this,this.start,this.end)!==false){this.removeAll(true);this.suspendEvents();this.add(b);if(this.getCount()===0){Ext.Error.raise("Invalid time axis configuration or filter, please check your input data.")}this.resumeEvents();this.fireEvent("datachanged",this);this.fireEvent("refresh",this)}},setTimeSpan:function(b,a){this.reconfigure({start:b,end:a})},filterBy:function(b,a){this.continuous=false;a=a||this;this.clearFilter(true);this.suspendEvents(true);this.filter([{filterFn:function(d,c){return b.call(a,d.data,c)}}]);if(this.getCount()===0){Ext.Error.raise("Invalid time axis filter - no columns passed through the filter. Please check your filter method.");this.clearFilter();this.resumeEvents();Ext.Error.raise("Invalid time axis filter - no ticks passed through the filter. Please check your filter method.");return}this.resumeEvents()},isContinuous:function(){return this.continuous&&!this.isFiltered()},clearFilter:function(){this.continuous=this.originalContinuous;this.callParent(arguments)},generateTicks:function(a,d,h,k){var j=[],g,b=Sch.util.Date,e=0;h=h||this.unit;k=k||this.increment;if(this.autoAdjust){a=this.floorDate(a||this.getStart(),false);d=this.ceilDate(d||b.add(a,this.mainUnit,this.defaultSpan),false)}while(a<d){g=this.getNext(a,h,k);if(h===b.HOUR&&k>1&&j.length>0&&e===0){var c=j[j.length-1];e=(c.start.getHours()+k)%24-c.end.getHours();if(e!==0){g=b.add(g,b.HOUR,e)}}j.push({start:a,end:g});a=g}return j},getTickFromDate:function(c){if(this.getStart()>c||this.getEnd()<c){return -1}var g=this.getRange(),e,a,d,b;for(d=0,b=g.length;d<b;d++){a=g[d].data.end;if(c<=a){e=g[d].data.start;return d+(c>e?(c-e)/(a-e):0)}}return -1},getDateFromTick:function(d,g){var h=this.getCount();if(d===h){return this.getEnd()}var a=Math.floor(d),e=d-a,c=this.getAt(a).data;var b=Sch.util.Date.add(c.start,Sch.util.Date.MILLI,e*(c.end-c.start));if(g){b=this[g+"Date"](b)}return b},getTicks:function(){var a=[];this.each(function(b){a.push(b.data)});return a},getStart:function(){var a=this.first();if(a){return Ext.Date.clone(a.data.start)}return null},getEnd:function(){var a=this.last();if(a){return Ext.Date.clone(a.data.end)}return null},floorDate:function(x,d,z){d=d!==false;var p=Ext.Date.clone(x),b=d?this.getStart():null,y=this.resolutionIncrement,m;if(z){m=z}else{m=d?this.resolutionUnit:this.mainUnit}switch(m){case Sch.util.Date.MILLI:if(d){var g=Sch.util.Date.getDurationInMilliseconds(b,p),e=Math.floor(g/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.MILLI,e)}break;case Sch.util.Date.SECOND:if(d){var l=Sch.util.Date.getDurationInSeconds(b,p),w=Math.floor(l/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.MILLI,w*1000)}else{p.setMilliseconds(0)}break;case Sch.util.Date.MINUTE:if(d){var s=Sch.util.Date.getDurationInMinutes(b,p),a=Math.floor(s/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.SECOND,a*60)}else{p.setSeconds(0);p.setMilliseconds(0)}break;case Sch.util.Date.HOUR:if(d){var q=Sch.util.Date.getDurationInHours(this.getStart(),p),n=Math.floor(q/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.MINUTE,n*60)}else{p.setMinutes(0);p.setSeconds(0);p.setMilliseconds(0)}break;case Sch.util.Date.DAY:if(d){var c=Sch.util.Date.getDurationInDays(b,p),h=Math.floor(c/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.DAY,h)}else{Ext.Date.clearTime(p)}break;case Sch.util.Date.WEEK:var u=p.getDay();Ext.Date.clearTime(p);if(u!==this.weekStartDay){p=Sch.util.Date.add(p,Sch.util.Date.DAY,-(u>this.weekStartDay?u-this.weekStartDay:7-u-this.weekStartDay))}break;case Sch.util.Date.MONTH:if(d){var t=Sch.util.Date.getDurationInMonths(b,p),k=Math.floor(t/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.MONTH,k)}else{Ext.Date.clearTime(p);p.setDate(1)}break;case Sch.util.Date.QUARTER:Ext.Date.clearTime(p);p.setDate(1);p=Sch.util.Date.add(p,Sch.util.Date.MONTH,-(p.getMonth()%3));break;case Sch.util.Date.YEAR:if(d){var o=Sch.util.Date.getDurationInYears(b,p),j=Math.floor(o/y)*y;p=Sch.util.Date.add(b,Sch.util.Date.YEAR,j)}else{p=new Date(x.getFullYear(),0,1)}break}return p},roundDate:function(u){var n=Ext.Date.clone(u),b=this.getStart(),w=this.resolutionIncrement;switch(this.resolutionUnit){case Sch.util.Date.MILLI:var e=Sch.util.Date.getDurationInMilliseconds(b,n),d=Math.round(e/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.MILLI,d);break;case Sch.util.Date.SECOND:var k=Sch.util.Date.getDurationInSeconds(b,n),t=Math.round(k/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.MILLI,t*1000);break;case Sch.util.Date.MINUTE:var p=Sch.util.Date.getDurationInMinutes(b,n),a=Math.round(p/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.SECOND,a*60);break;case Sch.util.Date.HOUR:var o=Sch.util.Date.getDurationInHours(this.getStart(),n),l=Math.round(o/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.MINUTE,l*60);break;case Sch.util.Date.DAY:var c=Sch.util.Date.getDurationInDays(b,n),g=Math.round(c/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.DAY,g);break;case Sch.util.Date.WEEK:Ext.Date.clearTime(n);var q=n.getDay()-this.weekStartDay,x;if(q<0){q=7+q}if(Math.round(q/7)===1){x=7-q}else{x=-q}n=Sch.util.Date.add(n,Sch.util.Date.DAY,x);break;case Sch.util.Date.MONTH:var s=Sch.util.Date.getDurationInMonths(b,n)+n.getDate()/Ext.Date.getDaysInMonth(n),j=Math.round(s/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.MONTH,j);break;case Sch.util.Date.QUARTER:Ext.Date.clearTime(n);n.setDate(1);n=Sch.util.Date.add(n,Sch.util.Date.MONTH,3-n.getMonth()%3);break;case Sch.util.Date.YEAR:var m=Sch.util.Date.getDurationInYears(b,n),h=Math.round(m/w)*w;n=Sch.util.Date.add(b,Sch.util.Date.YEAR,h);break}return n},ceilDate:function(c,b,g){var e=Ext.Date.clone(c);b=b!==false;var a=b?this.resolutionIncrement:1,h=false,d;if(g){d=g}else{d=b?this.resolutionUnit:this.mainUnit}switch(d){case Sch.util.Date.DAY:if(e.getMinutes()>0||e.getSeconds()>0||e.getMilliseconds()>0){h=true}break;case Sch.util.Date.WEEK:Ext.Date.clearTime(e);if(e.getDay()!==this.weekStartDay){h=true}break;case Sch.util.Date.MONTH:Ext.Date.clearTime(e);if(e.getDate()!==1){h=true}break;case Sch.util.Date.QUARTER:Ext.Date.clearTime(e);if(e.getMonth()%3!==0){h=true}break;case Sch.util.Date.YEAR:Ext.Date.clearTime(e);if(e.getMonth()!==0&&e.getDate()!==1){h=true}break;default:break}if(h){return this.getNext(e,d,a)}else{return e}},getNext:function(b,c,a){return Sch.util.Date.getNext(b,c,a,this.weekStartDay)},getResolution:function(){return{unit:this.resolutionUnit,increment:this.resolutionIncrement}},setResolution:function(b,a){this.resolutionUnit=b;this.resolutionIncrement=a||1},shift:function(a,b){this.setTimeSpan(Sch.util.Date.add(this.getStart(),b,a),Sch.util.Date.add(this.getEnd(),b,a))},shiftNext:function(a){a=a||this.getShiftIncrement();var b=this.getShiftUnit();this.setTimeSpan(Sch.util.Date.add(this.getStart(),b,a),Sch.util.Date.add(this.getEnd(),b,a))},shiftPrevious:function(a){a=-(a||this.getShiftIncrement());var b=this.getShiftUnit();this.setTimeSpan(Sch.util.Date.add(this.getStart(),b,a),Sch.util.Date.add(this.getEnd(),b,a))},getShiftUnit:function(){return this.shiftUnit||this.getMainUnit()},getShiftIncrement:function(){return this.shiftIncrement||1},getUnit:function(){return this.unit},getIncrement:function(){return this.increment},dateInAxis:function(a){return Sch.util.Date.betweenLesser(a,this.getStart(),this.getEnd())},timeSpanInAxis:function(b,a){if(this.isContinuous()){return Sch.util.Date.intersectSpans(b,a,this.getStart(),this.getEnd())}else{return b<this.getStart()&&a>this.getEnd()||this.getTickFromDate(b)!==this.getTickFromDate(a)}},forEachInterval:function(b,a,c){c=c||this;if(!this.headerConfig){return}if(b==="top"||b==="middle"&&this.headerConfig.bottom){this.forEachAuxInterval(b,a,c)}else{this.each(function(e,d){return a.call(c,e.data.start,e.data.end,d)})}},forEachMainInterval:function(a,b){this.forEachInterval("middle",a,b)},forEachAuxInterval:function(b,a,g){g=g||this;var c=this.getEnd(),h=this.getStart(),e=0,d;if(h>c){throw"Invalid time axis configuration"}while(h<c){d=Sch.util.Date.min(this.getNext(h,this.headerConfig[b].unit,this.headerConfig[b].increment||1),c);a.call(g,h,d,e);h=d;e++}}});Ext.define("Sch.preset.ViewPreset",{columnWidth:null,rowHeight:null,timeAxisColumnWidth:null,dateFormat:"G:i",shiftUnit:"HOUR",shiftIncrement:1,defaultSpan:12,timeResolution:null,headerConfig:null,headers:null,mainHeader:0,constructor:function(a){Ext.apply(this,a)},getHeaders:function(){if(this.headers){return this.headers}var a=this.headerConfig;this.mainHeader=a.top?1:0;return this.headers=[].concat(a.top||[],a.middle||[],a.bottom||[])},getMainHeader:function(){return this.getHeaders()[this.mainHeader]},getBottomHeader:function(){var a=this.getHeaders();return a[a.length-1]},getTimeAxisConfig:function(){return{mainUnit:this.getMainHeader().unit,unit:this.getBottomHeader().unit,increment:this.getBottomHeader().increment,shiftUnit:this.shiftUnit,shiftIncrement:this.shiftIncrement,defaultSpan:this.defaultSpan,resolutionUnit:this.timeResolution.unit,resolutionIncrement:this.timeResolution.increment}},clone:function(){var a={};var b=this;Ext.each(["columnWidth","rowHeight","timeAxisColumnWidth","dateFormat","shiftUnit","shiftIncrement","defaultSpan","timeResolution","headerConfig"],function(c){a[c]=b[c]});return new this.self(Ext.clone(a))}});Ext.define("Sch.preset.Manager",{extend:"Ext.util.MixedCollection",requires:["Sch.util.Date","Sch.preset.ViewPreset"],singleton:true,constructor:function(){this.callParent(arguments);this.registerDefaults()},registerPreset:function(b,a){if(a){var c=a.headerConfig;var d=Sch.util.Date;for(var e in c){if(c.hasOwnProperty(e)){if(d[c[e].unit]){c[e].unit=d[c[e].unit.toUpperCase()]}}}if(!a.timeColumnWidth){a.timeColumnWidth=50}if(a.timeResolution&&d[a.timeResolution.unit]){a.timeResolution.unit=d[a.timeResolution.unit.toUpperCase()]}if(a.shiftUnit&&d[a.shiftUnit]){a.shiftUnit=d[a.shiftUnit.toUpperCase()]}}if(this.isValidPreset(a)){if(this.containsKey(b)){this.removeAtKey(b)}this.add(b,new Sch.preset.ViewPreset(a))}else{throw"Invalid preset, please check your configuration"}},isValidPreset:function(a){var d=Sch.util.Date,b=true,c=Sch.util.Date.units;for(var e in a.headerConfig){if(a.headerConfig.hasOwnProperty(e)){b=b&&Ext.Array.indexOf(c,a.headerConfig[e].unit)>=0}}if(a.timeResolution){b=b&&Ext.Array.indexOf(c,a.timeResolution.unit)>=0}if(a.shiftUnit){b=b&&Ext.Array.indexOf(c,a.shiftUnit)>=0}return b},getPreset:function(a){return this.get(a)},deletePreset:function(a){this.removeAtKey(a)},registerDefaults:function(){var b=this,a=this.defaultPresets;for(var c in a){b.registerPreset(c,a[c])}},defaultPresets:{minuteAndHour:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"G:i",shiftIncrement:1,shiftUnit:"HOUR",defaultSpan:24,timeResolution:{unit:"MINUTE",increment:30},headerConfig:{middle:{unit:"MINUTE",increment:"30",align:"center",dateFormat:"i"},top:{unit:"HOUR",align:"center",dateFormat:"D, GA/m"}}},hourAndDay:{timeColumnWidth:60,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"G:i",shiftIncrement:1,shiftUnit:"DAY",defaultSpan:24,timeResolution:{unit:"MINUTE",increment:30},headerConfig:{middle:{unit:"HOUR",align:"center",dateFormat:"G:i"},top:{unit:"DAY",align:"center",dateFormat:"D d/m"}}},dayAndWeek:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d G:i",shiftUnit:"DAY",shiftIncrement:1,defaultSpan:5,timeResolution:{unit:"HOUR",increment:1},headerConfig:{middle:{unit:"DAY",align:"center",dateFormat:"D d M"},top:{unit:"WEEK",align:"center",renderer:function(c,b,a){return Sch.util.Date.getShortNameOfUnit("WEEK")+"."+Ext.Date.format(c,"W M Y")}}}},weekAndDay:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:1,timeResolution:{unit:"DAY",increment:1},headerConfig:{bottom:{unit:"DAY",align:"center",increment:1,dateFormat:"d/m"},middle:{unit:"WEEK",dateFormat:"D d M"}}},weekAndMonth:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:5,defaultSpan:6,timeResolution:{unit:"DAY",increment:1},headerConfig:{middle:{unit:"WEEK",renderer:function(c,b,a){return Ext.Date.format(c,"d M")}},top:{unit:"MONTH",align:"center",dateFormat:"M Y"}}},monthAndYear:{timeColumnWidth:110,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftIncrement:3,shiftUnit:"MONTH",defaultSpan:12,timeResolution:{unit:"DAY",increment:1},headerConfig:{middle:{unit:"MONTH",align:"center",dateFormat:"M Y"},top:{unit:"YEAR",align:"center",dateFormat:"Y"}}},year:{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"YEAR",shiftIncrement:1,defaultSpan:1,timeResolution:{unit:"MONTH",increment:1},headerConfig:{middle:{unit:"QUARTER",align:"center",renderer:function(c,b,a){return Ext.String.format(Sch.util.Date.getShortNameOfUnit("QUARTER").toUpperCase()+"{0}",Math.floor(c.getMonth()/3)+1)}},top:{unit:"YEAR",align:"center",dateFormat:"Y"}}},weekAndDayLetter:{timeColumnWidth:20,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"DAY",increment:1},headerConfig:{bottom:{unit:"DAY",align:"center",renderer:function(a){return Ext.Date.dayNames[a.getDay()].substring(0,1)}},middle:{unit:"WEEK",dateFormat:"D d M Y"}}},weekDateAndMonth:{timeColumnWidth:30,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"DAY",increment:1},headerConfig:{middle:{unit:"WEEK",align:"center",dateFormat:"d"},top:{unit:"MONTH",dateFormat:"Y F"}}}}});Ext.define("Sch.feature.AbstractTimeSpan",{extend:"Ext.AbstractPlugin",lockableScope:"top",schedulerView:null,timeAxis:null,containerEl:null,expandToFitView:false,disabled:false,cls:null,template:null,store:null,renderElementsBuffered:false,renderDelay:15,refreshSizeOnItemUpdate:true,_resizeTimer:null,_renderTimer:null,constructor:function(a){this.uniqueCls=this.uniqueCls||"sch-timespangroup-"+Ext.id();Ext.apply(this,a);this.callParent(arguments)},setDisabled:function(a){if(a){this.removeElements()}this.disabled=a},getElements:function(){if(this.containerEl){return this.containerEl.select("."+this.uniqueCls)}return null},removeElements:function(){var a=this.getElements();if(a){a.each(function(b){b.destroy()})}},init:function(a){if(Ext.versions.touch&&!a.isReady()){a.on("viewready",function(){this.init(a)},this);return}this.schedulerView=a.getSchedulingView();this.panel=a;this.timeAxis=a.getTimeAxis();if(!this.store){Ext.Error.raise("Error: You must define a store for this plugin")}if(!this.schedulerView.getEl()){this.schedulerView.on({afterrender:this.onAfterRender,scope:this})}else{this.onAfterRender()}this.schedulerView.on({destroy:this.onDestroy,scope:this})},onAfterRender:function(c){var a=this.schedulerView;this.containerEl=a.getSecondaryCanvasEl();this.storeListeners={load:this.renderElements,datachanged:this.renderElements,clear:this.renderElements,add:this.renderElements,remove:this.renderElements,update:this.refreshSingle,addrecords:this.renderElements,removerecords:this.renderElements,updaterecord:this.refreshSingle,scope:this};this.store.on(this.storeListeners);if(Ext.data.NodeStore&&a.store instanceof Ext.data.NodeStore){if(a.animate){}else{a.mon(a.store,{expand:this.renderElements,collapse:this.renderElements,scope:this})}}a.on({bufferedrefresh:this.renderElements,refresh:this.renderElements,itemadd:this.refreshSizeOnItemUpdate?this.refreshSizes:this.renderElements,itemremove:this.refreshSizeOnItemUpdate?this.refreshSizes:this.renderElements,itemupdate:this.refreshSizeOnItemUpdate?this.refreshSizes:this.renderElements,groupexpand:this.renderElements,groupcollapse:this.renderElements,columnwidthchange:this.renderElements,resize:this.renderElements,scope:this});if(a.headerCt){a.headerCt.on({add:this.renderElements,remove:this.renderElements,scope:this})}this.panel.on({viewchange:this.renderElements,show:this.refreshSizes,orientationchange:function(){this.renderElementsBuffered=false;clearTimeout(this._renderTimer);clearTimeout(this._resizeTimer)},scope:this});var b=a.getRowContainerEl();if(b&&b.down(".sch-timetd")){this.renderElements()}},refreshSizes:function(){clearTimeout(this._resizeTimer);this._resizeTimer=Ext.Function.defer(function(){if(!this.schedulerView.isDestroyed&&this.schedulerView.getOrientation()==="horizontal"){var a=this.schedulerView.getTimeSpanRegion(new Date,null,this.expandToFitView);this.getElements().setHeight(a.bottom-a.top)}},this.renderDelay,this)},renderElements:function(){if(this.renderElementsBuffered||this.disabled){return}this.renderElementsBuffered=true;clearTimeout(this._renderTimer);this._renderTimer=Ext.Function.defer(this.renderElementsInternal,this.renderDelay,this)},renderElementsInternal:function(){this.renderElementsBuffered=false;if(this.disabled||this.schedulerView.isDestroyed){return}if(Ext.versions.extjs&&!this.schedulerView.el.down("table")){return}this.removeElements();Ext.DomHelper.append(this.containerEl,this.generateMarkup())},generateMarkup:function(b){var d=this.timeAxis.getStart(),a=this.timeAxis.getEnd(),c=this.getElementData(d,a,null,b);return this.template.apply(c)},getElementData:function(b,a){throw"Abstract method call"},onDestroy:function(){clearTimeout(this._renderTimer);clearTimeout(this._resizeTimer);if(this.store.autoDestroy){this.store.destroy()}this.store.un(this.storeListeners)},refreshSingle:function(c,b){var e=Ext.get(this.uniqueCls+"-"+b.internalId);if(e){var h=this.timeAxis.getStart(),a=this.timeAxis.getEnd(),g=this.getElementData(h,a,[b])[0],d=b.clsField||"Cls";if(g){e.dom.className=this.cls+" "+this.uniqueCls+" "+(g[d]||"");e.setTop(g.top);e.setLeft(g.left);e.setSize(g.width,g.height)}else{Ext.destroy(e)}}else{this.renderElements()}}});Ext.define("Sch.plugin.Lines",{extend:"Sch.feature.AbstractTimeSpan",cls:"sch-timeline",showTip:true,innerTpl:null,prepareTemplateData:null,side:null,init:function(a){this.callParent(arguments);if(Ext.isString(this.innerTpl)){this.innerTpl=new Ext.XTemplate(this.innerTpl)}this.side=a.rtl?"right":"left";var b=this.innerTpl;if(!this.template){this.template=new Ext.XTemplate('<tpl for=".">','<div id="'+this.uniqueCls+'-{id}"'+(this.showTip?'title="{[this.getTipText(values)]}" ':"")+'class="'+this.cls+" "+this.uniqueCls+' {Cls}" style="'+this.side+':{left}px;top:{top}px;height:{height}px;width:{width}px">'+(b?"{[this.renderInner(values)]}":"")+"</div>","</tpl>",{getTipText:function(c){return a.getSchedulingView().getFormattedDate(c.Date)+" "+(c.Text||"")},renderInner:function(c){return b.apply(c)}})}},getElementData:function(k,n,c){var o=this.store,j=this.schedulerView,e=c||o.getRange(),h=[],a,b,m;for(var g=0,d=e.length;g<d;g++){a=e[g];b=a.get("Date");if(b&&Sch.util.Date.betweenLesser(b,k,n)){m=j.getTimeSpanRegion(b,null,this.expandToFitView);h[h.length]=Ext.apply({id:a.internalId,left:m.left,top:m.top,width:1,height:Ext.versions.touch?"100%":m.bottom-m.top},this.prepareTemplateData?this.prepareTemplateData(a):a.data)}}return h}});Ext.define("Sch.plugin.Zones",{extend:"Sch.feature.AbstractTimeSpan",innerTpl:null,requires:["Sch.model.Range"],cls:"sch-zone",side:null,init:function(a){if(Ext.isString(this.innerTpl)){this.innerTpl=new Ext.XTemplate(this.innerTpl)}this.side=a.rtl?"right":"left";var b=this.innerTpl;if(!this.template){this.template=new Ext.XTemplate('<tpl for="."><div id="'+this.uniqueCls+'-{id}" class="'+this.cls+" "+this.uniqueCls+' {Cls}" style="'+this.side+':{left}px;top:{top}px;height:{height}px;width:{width}px;{style}">'+(b?"{[this.renderInner(values)]}":"")+"</div></tpl>",{renderInner:function(c){return b.apply(c)}})}this.callParent(arguments)},getElementData:function(k,p,d,q){var n=this.schedulerView,g=[];d=d||this.store.getRange();for(var h=0,e=d.length;h<e;h++){var j=d[h];var o=j.getStartDate();var c=j.getEndDate();if(o&&c&&Sch.util.Date.intersectSpans(o,c,k,p)){var m=n.getTimeSpanRegion(Sch.util.Date.max(o,k),Sch.util.Date.min(c,p),this.expandToFitView);var b=m.right-m.left+1;var a=Ext.apply({id:j.internalId,left:m.left,top:m.top,width:q?0:b,height:Ext.versions.touch?"100%":m.bottom-m.top,style:q?"border-left-width:"+b+"px":"",Cls:j.getCls()},j.data);g[g.length]=a}}return g}});Ext.define("Sch.plugin.Pan",{alias:"plugin.pan",extend:"Ext.AbstractPlugin",lockableScope:"top",enableVerticalPan:true,panel:null,constructor:function(a){Ext.apply(this,a)},init:function(a){this.panel=a.normalGrid||a;this.view=a.getSchedulingView();this.view.on("afterrender",this.onRender,this)},onRender:function(a){this.view.el.on("mousedown",this.onMouseDown,this)},onMouseDown:function(b,a){if(b.getTarget("."+this.view.timeCellCls,10)&&!b.getTarget(this.view.eventSelector)){this.mouseX=b.getPageX();this.mouseY=b.getPageY();Ext.getBody().on("mousemove",this.onMouseMove,this);Ext.getDoc().on("mouseup",this.onMouseUp,this);if(Ext.isIE||Ext.isGecko){Ext.getBody().on("mouseenter",this.onMouseUp,this)}b.stopEvent()}},onMouseMove:function(d){d.stopEvent();var a=d.getPageX(),g=d.getPageY(),c=a-this.mouseX,b=g-this.mouseY;this.panel.scrollByDeltaX(-c);this.mouseX=a;this.mouseY=g;if(this.enableVerticalPan){this.panel.scrollByDeltaY(-b)}},onMouseUp:function(a){Ext.getBody().un("mousemove",this.onMouseMove,this);Ext.getDoc().un("mouseup",this.onMouseUp,this);if(Ext.isIE||Ext.isGecko){Ext.getBody().un("mouseenter",this.onMouseUp,this)}}});Ext.define("Sch.tooltip.ClockTemplate",{constructor:function(){var k=Math.PI/180,n=Math.cos,l=Math.sin,o=7,c=2,d=10,m=6,g=3,a=10,e=Ext.isIE&&(Ext.ieVersion<9||Ext.isIEQuirks);function b(p){var t=p*k,q=n(t),z=l(t),u=m*l((90-p)*k),w=m*n((90-p)*k),A=Math.min(m,m-u),s=p>180?w:0,B="progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11 = "+q+", M12 = "+-z+", M21 = "+z+", M22 = "+q+")";return Ext.String.format("filter:{0};-ms-filter:{0};top:{1}px;left:{2}px;",B,A+g,s+a)}function j(p){var t=p*k,q=n(t),z=l(t),u=o*l((90-p)*k),w=o*n((90-p)*k),A=Math.min(o,o-u),s=p>180?w:0,B="progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11 = "+q+", M12 = "+-z+", M21 = "+z+", M22 = "+q+")";return Ext.String.format("filter:{0};-ms-filter:{0};top:{1}px;left:{2}px;",B,A+c,s+d)}function h(p){return Ext.String.format("transform:rotate({0}deg);-ms-transform:rotate({0}deg);-moz-transform: rotate({0}deg);-webkit-transform: rotate({0}deg);-o-transform:rotate({0}deg);",p)}return new Ext.XTemplate('<div class="sch-clockwrap {cls}"><div class="sch-clock"><div class="sch-hourIndicator" style="{[this.getHourStyle((values.date.getHours()%12) * 30)]}">{[Ext.Date.monthNames[values.date.getMonth()].substr(0,3)]}</div><div class="sch-minuteIndicator" style="{[this.getMinuteStyle(values.date.getMinutes() * 6)]}">{[values.date.getDate()]}</div></div><span class="sch-clock-text">{text}</span></div>',{compiled:true,disableFormats:true,getMinuteStyle:e?j:h,getHourStyle:e?b:h})}});Ext.define("Sch.tooltip.Tooltip",{extend:"Ext.tip.ToolTip",requires:["Sch.tooltip.ClockTemplate"],autoHide:false,anchor:"b",padding:"0 3 0 0",showDelay:0,hideDelay:0,quickShowInterval:0,dismissDelay:0,trackMouse:false,valid:true,anchorOffset:5,shadow:false,frame:false,constructor:function(b){var a=Ext.create("Sch.tooltip.ClockTemplate");this.renderTo=document.body;this.startDate=this.endDate=new Date;if(!this.template){this.template=Ext.create("Ext.XTemplate",'<div class="{[values.valid ? "sch-tip-ok" : "sch-tip-notok"]}">','{[this.renderClock(values.startDate, values.startText, "sch-tooltip-startdate")]}','{[this.renderClock(values.endDate, values.endText, "sch-tooltip-enddate")]}',"</div>",{compiled:true,disableFormats:true,renderClock:function(d,e,c){return a.apply({date:d,text:e,cls:c})}})}this.callParent(arguments)},update:function(a,e,d){if(this.startDate-a!==0||this.endDate-e!==0||this.valid!==d){this.startDate=a;this.endDate=e;this.valid=d;var c=this.schedulerView.getFormattedDate(a),b=this.schedulerView.getFormattedEndDate(e,a);if(this.mode==="calendar"&&e.getHours()===0&&e.getMinutes()===0&&!(e.getYear()===a.getYear()&&e.getMonth()===a.getMonth()&&e.getDate()===a.getDate())){e=Sch.util.Date.add(e,Sch.util.Date.DAY,-1)}this.callParent([this.template.apply({valid:d,startDate:a,endDate:e,startText:c,endText:b})])}},show:function(b,a){if(!b){return}if(Sch.util.Date.compareUnits(this.schedulerView.getTimeResolution().unit,Sch.util.Date.DAY)>=0){this.mode="calendar";this.addCls("sch-day-resolution")}else{this.mode="clock";this.removeCls("sch-day-resolution")}this.mouseOffsets=[a-18,-7];this.setTarget(b);this.callParent();this.alignTo(b,"bl-tl",this.mouseOffsets);this.mon(Ext.getBody(),"mousemove",this.onMyMouseMove,this);this.mon(Ext.getBody(),"mouseup",this.onMyMouseUp,this,{single:true})},onMyMouseMove:function(){this.el.alignTo(this.target,"bl-tl",this.mouseOffsets)},onMyMouseUp:function(){this.mun(Ext.getBody(),"mousemove",this.onMyMouseMove,this)},afterRender:function(){this.callParent(arguments);this.el.on("mouseenter",this.onElMouseEnter,this)},onElMouseEnter:function(){this.alignTo(this.target,"bl-tl",this.mouseOffsets)}});Ext.define("Sch.view.model.TimeAxis",{extend:"Ext.util.Observable",requires:["Ext.Date","Sch.util.Date"],timeAxis:null,availableWidth:0,tickWidth:100,snapToIncrement:false,forceFit:false,suppressFit:false,columnConfig:{},constructor:function(a){var b=this;Ext.apply(this,a);b.addEvents("update");if(b.timeAxis.preset){b.tickWidth=b.timeAxis.preset.timeColumnWidth}b.timeAxis.on("reconfigure",b.onTimeAxisReconfigure,b);this.callParent(arguments)},destroy:function(){this.timeAxis.un("reconfigure",this.onTimeAxisReconfigure,this)},onTimeAxisReconfigure:function(){this.tickWidth=this.timeAxis.preset.timeColumnWidth;this.update()},getColumnConfig:function(){return this.columnConfig},update:function(d,b){var e=this.timeAxis,c=e.headerConfig;this.availableWidth=Math.max(d||this.availableWidth,0);if(this.forceFit&&this.availableWidth<=0){return}this.columnConfig={};for(var g in c){if(c[g].cellGenerator){this.columnConfig[g]=c[g].cellGenerator.call(this,this.timeAxis.getStart(),this.timeAxis.getEnd())}else{this.columnConfig[g]=this.createHeaderRow(g,c[g])}}var a=this.columnConfig.bottom||this.columnConfig.middle;this.tickWidth=this.calculateTickWidth(this.getTickWidth());if(!Ext.isNumber(this.availableWidth)||this.availableWidth<0){throw"Invalid available width provided to Sch.view.model.TimeAxis"}if(!Ext.isNumber(this.tickWidth)||this.tickWidth<=0){throw"Invalid column width calculated in Sch.view.model.TimeAxis"}if(!b){this.fireEvent("update",this)}},createHeaderRow:function(a,d){var c=[],e=this,h,g=d.align,b=Ext.Date.clearTime(new Date);e.timeAxis.forEachInterval(a,function(l,j,k){h={align:g,start:l,end:j,headerCls:""};if(d.renderer){h.header=d.renderer.call(d.scope||e,l,j,h,k)}else{h.header=Ext.Date.format(l,d.dateFormat)}if(d.unit===Sch.util.Date.DAY&&(!d.increment||d.increment===1)){h.headerCls+=" sch-dayheadercell-"+l.getDay();if(Ext.Date.clearTime(l,true)-b===0){h.headerCls+=" sch-dayheadercell-today"}}c.push(h)});return c},getDistanceBetweenDates:function(g,b){var d=this.timeAxis.unit,c,e=Sch.util.Date.getMeasuringUnit(d),a=Sch.util.Date.getDurationInUnit(g,b,e);if(this.timeAxis.isContinuous()){c=a*this.getSingleUnitInPixels(e)}else{c=this.getPositionFromDate(b)-this.getPositionFromDate(g)}return c},getPositionFromDate:function(a){var c=null,b=this.timeAxis.getTickFromDate(a);if(b>=0){c=this.tickWidth*b}return c},getDateFromPosition:function(a,d){var c=a/this.getTickWidth(),b=this.timeAxis.getCount();if(c<0||c>b){return null}return this.timeAxis.getDateFromTick(c,d)},getSingleUnitInPixels:function(a){return Sch.util.Date.getUnitToBaseUnitRatio(this.timeAxis.getUnit(),a)*this.tickWidth/this.timeAxis.increment},getSnapPixelAmount:function(){if(this.snapToIncrement){var a=this.timeAxis.getResolution();return(a.increment||1)*this.getSingleUnitInPixels(a.unit)}else{return 1}},getTickWidth:function(){return this.tickWidth},setTickWidth:function(b,a){this.tickWidth=b;this.update(null,a)},getTotalWidth:function(){return this.tickWidth*this.timeAxis.getCount()},calculateTickWidth:function(c){var k=this.forceFit;var b=0,e=this.timeAxis.getUnit(),m=this.timeAxis.getCount(),j=Number.MAX_VALUE,g,a;if(this.snapToIncrement){var h=this.timeAxis.getResolution(),l=h.unit,d=h.increment;j=Sch.util.Date.getUnitToBaseUnitRatio(e,l)*d}g=Sch.util.Date.getMeasuringUnit(e);j=Math.min(j,Sch.util.Date.getUnitToBaseUnitRatio(e,g));a=Math[k?"floor":"round"](this.getAvailableWidth()/this.timeAxis.getCount());if(!this.suppressFit){b=k||c<a?a:c;if(j>0&&(!k||j<1)){b=Math.round(Math.max(1,Math[k?"floor":"round"](j*b))/j)}}else{b=c}return b},getAvailableWidth:function(){return this.availableWidth},setAvailableWidth:function(a){this.availableWidth=Math.max(0,a);var b=this.calculateTickWidth(this.tickWidth);if(b!==this.tickWidth){this.tickWidth=b;this.update()}},fitToAvailableWidth:function(a){var b=Math.floor(this.availableWidth/this.timeAxis.getCount());this.setTickWidth(b,a)},setForceFit:function(a){if(a!==this.forceFit){this.forceFit=a;this.update()}},setSnapToIncrement:function(a){if(a!==this.snapToIncrement){this.snapToIncrement=a;this.update()}}});Ext.define("Sch.view.HorizontalTimeAxis",{extend:"Ext.util.Observable",requires:["Ext.XTemplate"],trackHeaderOver:true,compactCellWidthThreshold:15,baseCls:"sch-column-header",tableCls:"sch-header-row",headerHtmlRowTpl:'<table border="0" cellspacing="0" cellpadding="0" style="width: {totalWidth}px; {tstyle}" class="{{tableCls}} sch-header-row-{position} {cls}"><thead><tr><tpl for="cells"><td class="{{baseCls}} {headerCls}" style="position : static; text-align: {align}; width: {width}px; {style}" tabIndex="0"headerPosition="{parent.position}" headerIndex="{[xindex-1]}"><div class="sch-simple-timeheader">{header}</div></td></tpl></tr></thead></table>',model:null,hoverCls:"",containerEl:null,constructor:function(d){var e=this;var b=!!Ext.versions.touch;var a=b?"tap":"click";Ext.apply(this,d);e.callParent(arguments);e.model.on({update:e.onModelUpdate,scope:e});this.addEvents("refresh");e.containerEl=Ext.get(e.containerEl);if(!(e.headerHtmlRowTpl instanceof Ext.Template)){e.headerHtmlRowTpl=e.headerHtmlRowTpl.replace("{{baseCls}}",this.baseCls).replace("{{tableCls}}",this.tableCls);e.headerHtmlRowTpl=new Ext.XTemplate(e.headerHtmlRowTpl)}if(e.trackHeaderOver&&e.hoverCls){e.containerEl.on({mousemove:e.highlightCell,delegate:".sch-column-header",scope:e});e.containerEl.on({mouseleave:e.clearHighlight,scope:e})}var c={scope:this,delegate:".sch-column-header"};if(b){c.tap=this.onElClick("tap");c.doubletap=this.onElClick("doubletap");this.addEvents("timeheadertap","timeheaderdoubletap")}else{c.click=this.onElClick("click");c.dblclick=this.onElClick("dblclick");this.addEvents("timeheaderclick","timeheaderdblclick")}e._listenerCfg=c;if(e.containerEl){e.containerEl.on(c)}},destroy:function(){var a=this;if(a.containerEl){a.containerEl.un(a._listenerCfg);a.containerEl.un({mousemove:a.highlightCell,delegate:".sch-simple-timeheader",scope:a});a.containerEl.un({mouseleave:a.clearHighlight,scope:a})}a.model.un({update:a.onModelUpdate,scope:a})},onModelUpdate:function(){this.render()},getHTML:function(h,g,d){var b=this.model.getColumnConfig();var a=this.model.getTotalWidth();var c="";var e;if(b.top){this.embedCellWidths(b.top);c+=this.headerHtmlRowTpl.apply({totalWidth:a,cells:b.top,position:"top",tstyle:"border-top : 0;"})}if(b.middle){this.embedCellWidths(b.middle);c+=this.headerHtmlRowTpl.apply({totalWidth:a,cells:b.middle,position:"middle",tstyle:b.top?"":"border-top : 0;",cls:!b.bottom&&this.model.getTickWidth()<=this.compactCellWidthThreshold?"sch-header-row-compact":""})}if(b.bottom){this.embedCellWidths(b.bottom);c+=this.headerHtmlRowTpl.apply({totalWidth:a,cells:b.bottom,position:"bottom",tstyle:"",cls:this.model.getTickWidth()<=this.compactCellWidthThreshold?"sch-header-row-compact":""})}return c+'<div class="sch-header-secondary-canvas"></div>'},render:function(){if(!this.containerEl){return}var e=this.containerEl,g=e.dom,d=g.style.display,a=this.model.getColumnConfig(),b=g.parentNode;g.style.display="none";b.removeChild(g);var c=this.getHTML();g.innerHTML=c;if(!a.top&&!a.middle){this.containerEl.addCls("sch-header-single-row")}else{this.containerEl.removeCls("sch-header-single-row")}b&&b.appendChild(g);g.style.display=d;this.fireEvent("refresh",this)},embedCellWidths:function(b){var e=Ext.isIE7||Ext.isSafari?1:0;for(var c=0;c<b.length;c++){var a=b[c];var d=this.model.getDistanceBetweenDates(a.start,a.end);if(d){a.width=d-(c?e:0)}else{a.width=0;a.style="display: none"}}},onElClick:function(a){return function(e,g){g=e.delegatedTarget||g;var b=Ext.fly(g).getAttribute("headerPosition"),c=Ext.fly(g).getAttribute("headerIndex"),d=this.model.getColumnConfig()[b][c];this.fireEvent("timeheader"+a,this,d.start,d.end,e)}},highlightCell:function(c,a){var b=this;if(a!==b.highlightedCell){b.clearHighlight();b.highlightedCell=a;Ext.fly(a).addCls(b.hoverCls)}},clearHighlight:function(){var b=this,a=b.highlightedCell;if(a){Ext.fly(a).removeCls(b.hoverCls);delete b.highlightedCell}}});Ext.define("Sch.column.timeAxis.Horizontal",{extend:"Ext.grid.column.Column",alias:"widget.timeaxiscolumn",draggable:false,groupable:false,hideable:false,sortable:false,fixed:true,menuDisabled:true,cls:"sch-simple-timeaxis",tdCls:"sch-timetd",requires:["Sch.view.HorizontalTimeAxis"],timeAxisViewModel:null,headerView:null,hoverCls:"sch-column-header-over",trackHeaderOver:true,compactCellWidthThreshold:20,initComponent:function(){this.ownHoverCls=this.hoverCls;this.hoverCls="";this.callParent(arguments)},afterRender:function(){var a=this;a.headerView=new Sch.view.HorizontalTimeAxis({model:a.timeAxisViewModel,containerEl:a.titleEl,hoverCls:a.ownHoverCls,trackHeaderOver:a.trackHeaderOver,compactCellWidthThreshold:a.compactCellWidthThreshold});a.headerView.on("refresh",a.onTimeAxisViewRefresh,a);a.ownerCt.on("afterlayout",function(){a.mon(a.ownerCt,"resize",a.onHeaderContainerResize,a);if(this.getWidth()>0){a.timeAxisViewModel.update(a.getAvailableWidthForSchedule());a.setWidth(a.timeAxisViewModel.getTotalWidth())}},null,{single:true});this.enableBubble("timeheaderclick","timeheaderdblclick");a.relayEvents(a.headerView,["timeheaderclick","timeheaderdblclick"]);a.callParent(arguments)},initRenderData:function(){var a=this;a.renderData.headerCls=a.renderData.headerCls||a.headerCls;return a.callParent(arguments)},destroy:function(){if(this.headerView){this.headerView.destroy()}this.callParent(arguments)},onTimeAxisViewRefresh:function(){this.headerView.un("refresh",this.onTimeAxisViewRefresh,this);this.setWidth(this.timeAxisViewModel.getTotalWidth());this.headerView.on("refresh",this.onTimeAxisViewRefresh,this)},getAvailableWidthForSchedule:function(){var c=this.ownerCt.getWidth();var a=this.ownerCt.items;for(var b=1;b<a.length;b++){c-=a.get(b).getWidth()}return c-Ext.getScrollbarSize().width-1},onResize:function(){this.callParent(arguments);this.timeAxisViewModel.setAvailableWidth(this.getAvailableWidthForSchedule())},onHeaderContainerResize:function(){this.timeAxisViewModel.setAvailableWidth(this.getAvailableWidthForSchedule());this.headerView.render()}});Ext.define("Sch.mixin.Lockable",{extend:"Ext.grid.Lockable",useSpacer:true,syncRowHeight:false,injectLockable:function(){var l=this;var j=Ext.data.TreeStore&&l.store instanceof Ext.data.TreeStore;var c=l.getEventSelectionModel?l.getEventSelectionModel():l.getSelectionModel();l.lockedGridConfig=Ext.apply({},l.lockedGridConfig||{});l.normalGridConfig=Ext.apply({},l.schedulerConfig||l.normalGridConfig||{});if(l.lockedXType){l.lockedGridConfig.xtype=l.lockedXType}if(l.normalXType){l.normalGridConfig.xtype=l.normalXType}var a=l.lockedGridConfig,k=l.normalGridConfig;Ext.applyIf(l.lockedGridConfig,{useArrows:true,trackMouseOver:false,split:true,animCollapse:false,collapseDirection:"left",region:"west"});Ext.applyIf(l.normalGridConfig,{viewType:l.viewType,layout:"fit",sortableColumns:false,enableColumnMove:false,enableColumnResize:false,enableColumnHide:false,getSchedulingView:function(){var o=typeof console!=="undefined"?console:false;if(o&&o.log){o.log('getSchedulingView is deprecated on the inner grid panel. Instead use getView on the "normal" subgrid.')}return this.getView()},selModel:c,collapseDirection:"right",animCollapse:false,region:"center"});if(l.orientation==="vertical"){a.store=k.store=l.timeAxis}if(a.width){l.syncLockedWidth=Ext.emptyFn;a.scroll="horizontal";a.scrollerOwner=true}var e=l.lockedViewConfig=l.lockedViewConfig||{};var m=l.normalViewConfig=l.normalViewConfig||{};if(j){var h=Ext.tree.View.prototype.onUpdate;e.onUpdate=function(){this.refreshSize=Ext.emptyFn;Ext.suspendLayouts();h.apply(this,arguments);Ext.resumeLayouts();this.refreshSize=Ext.tree.View.prototype.refreshSize};e.store=m.store=l.store.nodeStore}var g=l.layout;var d=a.width;this.callParent(arguments);var n=l.lockedGrid.getView();var b=l.normalGrid.getView();if(d||g==="border"){if(d){l.lockedGrid.setWidth(d)}b.addCls("sch-timeline-horizontal-scroll");n.addCls("sch-locked-horizontal-scroll")}if(l.normalGrid.collapsed){l.normalGrid.collapsed=false;b.on("boxready",function(){l.normalGrid.collapse()},l,{delay:10})}if(Ext.getScrollbarSize().width===0){n.addCls("sch-ganttpanel-force-locked-scroll")}if(j){this.setupLockableTree()}if(l.useSpacer){b.on("refresh",l.updateSpacer,l);n.on("refresh",l.updateSpacer,l)}if(g!=="fit"){l.layout=g}if(n.store!==b.store){Ext.Error.raise("Sch.mixin.Lockable setup failed, not sharing store between the two views")}if(b.bufferedRenderer){this.lockedGrid.on("expand",function(){n.el.dom.scrollTop=b.el.dom.scrollTop});this.patchBufferedRenderingPlugin(b.bufferedRenderer);this.patchBufferedRenderingPlugin(n.bufferedRenderer)}},setupLockableTree:function(){var c=this;var b=c.lockedGrid.getView();var a=Sch.mixin.FilterableTreeView.prototype;b.initTreeFiltering=a.initTreeFiltering;b.onFilterChangeStart=a.onFilterChangeStart;b.onFilterChangeEnd=a.onFilterChangeEnd;b.onFilterCleared=a.onFilterCleared;b.onFilterSet=a.onFilterSet;b.initTreeFiltering()},updateSpacer:function(){var h=this.lockedGrid.getView();var e=this.normalGrid.getView();if(h.rendered&&e.rendered&&h.el.child("table")){var g=this,c=h.el,d=e.el.dom,b=c.dom.id+"-spacer",j=d.offsetHeight-d.clientHeight+"px";g.spacerEl=Ext.getDom(b);if(Ext.isIE6||Ext.isIE7||Ext.isIEQuirks&&Ext.isIE8&&g.spacerEl){Ext.removeNode(g.spacerEl);g.spacerEl=null}if(g.spacerEl){g.spacerEl.style.height=j}else{var a=c;Ext.core.DomHelper.append(a,{id:b,style:"height: "+j})}}},onLockedViewScroll:function(){this.callParent(arguments);var a=this.lockedGrid.getView().bufferedRenderer;if(a){a.onViewScroll()}},onNormalViewScroll:function(){this.callParent(arguments);var a=this.normalGrid.getView().bufferedRenderer;if(a){a.onViewScroll()}},patchBufferedRenderingPlugin:function(b){b.variableRowHeight=true;b.view.on("afterrender",function(){b.view.el.un("scroll",b.onViewScroll,b)},this,{single:true,delay:1});var a=b.stretchView;b.stretchView=function(d,c){var g=this,e=g.store.buffered?g.store.getTotalCount():g.store.getCount();if(e&&g.view.all.endIndex===e-1){c=g.bodyTop+d.body.dom.offsetHeight}a.apply(this,[d,c])}}});Ext.define("Sch.plugin.TreeCellEditing",{extend:"Ext.grid.plugin.CellEditing",lockableScope:"locked",init:function(a){this._grid=a;this.on("beforeedit",this.checkReadOnly,this);this.on("beforeedit",this.onBeforeCellEdit,this);this.callParent(arguments)},checkReadOnly:function(){var a=this._grid;if(!(a instanceof Sch.panel.TimelineTreePanel)){a=a.up("tablepanel")}return !a.isReadOnly()},startEdit:function(a,d,b){this._grid.suspendLayouts();var c=d.getEditor&&d.getEditor(),e;if(c&&c.setSuppressTaskUpdate){e=c.getSuppressTaskUpdate();c.setSuppressTaskUpdate(true)}this.completeEdit();var g=this.callParent(arguments);if(c&&c.setSuppressTaskUpdate){c.setSuppressTaskUpdate(e)}this._grid.resumeLayouts();return g},onBeforeCellEdit:function(c,a){var b=a.column;if(!b.dataIndex&&b.field&&a.value===undefined){a.value=b.field.getDisplayValue(a.record)}},onEditComplete:function(c,g,b){var e=this,a,d;if(c.field.applyChanges){a=c.field.task||e.context.record;d=true;a.set=function(){delete a.set;d=false;c.field.applyChanges(a)}}this.callParent(arguments);if(d){delete a.set}},showEditor:function(a,b,c){var g=this.grid.getSelectionModel();var e=g.selectByPosition;g.selectByPosition=Ext.emptyFn;var d;if(a.field&&a.field.setSuppressTaskUpdate){d=a.field.getSuppressTaskUpdate();a.field.setSuppressTaskUpdate(true)}this.callParent(arguments);if(a.field&&a.field.setSuppressTaskUpdate){a.field.setSuppressTaskUpdate(d)}g.selectByPosition=e}});Ext.define("Sch.feature.ResizeZone",{extend:"Ext.util.Observable",requires:["Ext.resizer.Resizer","Sch.tooltip.Tooltip"],showTooltip:true,validatorFn:Ext.emptyFn,validatorFnScope:null,origEl:null,constructor:function(a){Ext.apply(this,a);var b=this.schedulerView;b.on({destroy:this.cleanUp,scope:this});b.mon(b.el,{mousedown:this.onMouseDown,mouseup:this.onMouseUp,scope:this,delegate:".sch-resizable-handle"});this.callParent(arguments)},onMouseDown:function(h,a){var b=this.schedulerView;var g=this.eventRec=b.resolveEventRecord(a);var c=this.getHandlePosition(a);var d=g.isResizable();if(d===false||typeof d==="string"&&!a.className.match(d)){return}this.eventRec=g;this.handlePos=c;this.origEl=Ext.get(h.getTarget(".sch-event"));b.el.on({mousemove:this.onMouseMove,scope:this,single:true})},onMouseUp:function(c,a){var b=this.schedulerView;b.el.un({mousemove:this.onMouseMove,scope:this,single:true})},onMouseMove:function(g,a){var b=this.schedulerView;var d=this.eventRec;if(!d||b.fireEvent("beforeeventresize",b,d,g)===false){return}delete this.eventRec;g.stopEvent();var c=this.handlePos;this.resizer=this.createResizer(this.origEl,d,c,g,a);this.resizer.resizeTracker.onMouseDown(g,this.resizer[c].dom);if(this.showTooltip){if(!this.tip){this.tip=Ext.create("Sch.tooltip.Tooltip",{schedulerView:b,cls:"sch-resize-tip"})}this.tip.update(d.getStartDate(),d.getEndDate(),true);this.tip.show(this.origEl)}b.fireEvent("eventresizestart",b,d)},getHandlePosition:function(a){if(this.schedulerView.getOrientation()==="horizontal"){if(this.schedulerView.rtl){return a.className.match("start")?"east":"west"}return a.className.match("start")?"west":"east"}else{return a.className.match("start")?"north":"south"}},createResizer:function(c,g,b){var l=this.schedulerView,e=l.resolveResource(c),h=l.getSnapPixelAmount(),k=l.getScheduleRegion(e,g),a=l.getDateConstraints(e,g),d={target:c,dateConstraints:a,resourceRecord:e,eventRecord:g,handles:b.substring(0,1),minHeight:c.getHeight(),constrainTo:k,listeners:{resizedrag:this.partialResize,resize:this.afterResize,scope:this}};if(l.getOrientation()==="vertical"){if(h>0){Ext.apply(d,{minHeight:h,heightIncrement:h})}}else{if(h>0){Ext.apply(d,{minWidth:h,widthIncrement:h})}}var j=Ext.create("Ext.resizer.Resizer",d);c.setStyle("z-index",parseInt(c.getStyle("z-index"),10)+1);return j},getStartEndDates:function(g){var e=this.resizer,c=e.el,d=this.schedulerView,b=d.rtl&&e.handles[0]==="e"||!d.rtl&&e.handles[0]==="w"||e.handles[0]==="n",h,a;if(b){a=e.eventRecord.getEndDate();h=d.getDateFromXY([d.rtl?c.getRight():c.getLeft(),c.getTop()],"round")}else{h=e.eventRecord.getStartDate();a=d.getDateFromXY([d.rtl?c.getLeft():c.getRight(),c.getBottom()],"round")}if(e.dateConstraints){h=Sch.util.Date.constrain(h,e.dateConstraints.start,e.dateConstraints.end);a=Sch.util.Date.constrain(a,e.dateConstraints.start,e.dateConstraints.end)}return{start:h,end:a}},partialResize:function(b,d,j,h){var l=this.schedulerView,k=this.getStartEndDates(h.getXY()),c=k.start,g=k.end;if(!c||!g||b.start-c===0&&b.end-g===0){return}var a=this.validatorFn.call(this.validatorFnScope||this,b.resourceRecord,b.eventRecord,c,g)!==false;b.end=g;b.start=c;l.fireEvent("eventpartialresize",l,b.eventRecord,c,g,b.el);if(this.showTooltip){this.tip.update(c,g,a)}},afterResize:function(a,o,g,j){if(this.showTooltip){this.tip.hide()}var l=this,k=a.resourceRecord,m=a.eventRecord,d=m.getStartDate(),s=m.getEndDate(),b=a.start||d,c=a.end||s,q=l.schedulerView,p=false,n=true;l.resizeContext={eventRecord:m,start:b,end:c,finalize:function(){l.finalize.apply(l,arguments)}};if(b&&c&&c-b>0&&(b-d!==0||c-s!==0)&&l.validatorFn.call(l.validatorFnScope||l,k,m,b,c,j)!==false){n=q.fireEvent("beforeeventresizefinalize",l,l.resizeContext,j)!==false;p=true}else{q.refreshKeepingScroll()}if(n){l.finalize(p)}},finalize:function(a){var b=this.schedulerView;var c=this.resizeContext;if(a){c.eventRecord.setStartEndDate(c.start,c.end,b.eventStore.skipWeekendsDuringDragDrop)}else{b.refreshKeepingScroll()}this.resizer.destroy();b.fireEvent("eventresizeend",b,c.eventRecord);this.resizeContext=null},cleanUp:function(){if(this.tip){this.tip.destroy()}}});Ext.define("Sch.feature.PointDragZone",{extend:"Ext.dd.DragZone",requires:["Sch.tooltip.Tooltip"],repairHighlight:false,repairHighlightColor:"transparent",containerScroll:true,dropAllowed:"sch-dragproxy",dropNotAllowed:"sch-dragproxy",constructor:function(b,a){this.proxy=this.proxy||Ext.create("Ext.dd.StatusProxy",{shadow:false,dropAllowed:this.dropAllowed,dropNotAllowed:this.dropNotAllowed});this.callParent(arguments);this.isTarget=true;this.scroll=false;this.ignoreSelf=false;Ext.dd.ScrollManager.register(this.schedulerView.el);if(this.schedulerView.rtl){this.proxy.addCls("sch-rtl")}},destroy:function(){this.callParent(arguments);if(this.tip){this.tip.destroy()}Ext.dd.ScrollManager.unregister(this.schedulerView.el)},autoOffset:function(a,b){this.setDelta(this.dragData.offsets[0],this.dragData.offsets[1])},constrainTo:function(a,b){this.resetConstraints();this.initPageX=a.left;this.initPageY=a.top;this.setXConstraint(a.left,a.right-(b.right-b.left),this.xTickSize);this.setYConstraint(a.top,a.bottom-(b.bottom-b.top),this.yTickSize)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=c;this.maxX=b;if(a){this.setXTicks(this.initPageX,a)}this.constrainX=true},setYConstraint:function(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=a;this.maxY=c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,resolveStartEndDates:function(e){var a=this.dragData,c,d=a.origStart,b=a.origEnd;if(!a.startsOutsideView){c=this.schedulerView.getStartEndDatesFromRegion(e,"round");if(c){d=c.start||a.startDate;b=Sch.util.Date.add(d,Sch.util.Date.MILLI,a.duration)}}else{if(!a.endsOutsideView){c=this.schedulerView.getStartEndDatesFromRegion(e,"round");if(c){b=c.end||a.endDate;d=Sch.util.Date.add(b,Sch.util.Date.MILLI,-a.duration)}}}return{startDate:d,endDate:b}},onDragOver:function(c,g){var a=this.dragData;if(!a.originalHidden){Ext.each(a.eventEls,function(e){e.addCls("x-hidden")});a.originalHidden=true}var d=a.startDate;var b=a.newResource;this.updateDragContext(c);if(a.startDate-d!==0||b!==a.newResource){this.schedulerView.fireEvent("eventdrag",this.schedulerView,a.eventRecords,a.startDate,a.newResource,a)}if(this.showTooltip){this.tip.update(a.startDate,a.endDate,a.valid)}},onStartDrag:function(b,d){var c=this.schedulerView,a=this.dragData;c.fireEvent("eventdragstart",c,a.eventRecords)},startDrag:function(){var b=this.callParent(arguments);this.dragData.refElement=this.proxy.el.down("#sch-id-dd-ref");if(this.showTooltip){var a=this.schedulerView;if(!this.tip){this.tip=Ext.create("Sch.tooltip.Tooltip",{schedulerView:a,cls:"sch-dragdrop-tip",renderTo:document.body})}this.tip.update(this.dragData.origStart,this.dragData.origEnd,true);this.tip.el.setStyle("visibility");this.tip.show(this.dragData.refElement,this.dragData.offsets[0])}return b},getDragData:function(B){var w=this.schedulerView,u=B.getTarget(w.eventSelector);if(!u){return}var n=w.resolveEventRecord(u);if(!n||n.isDraggable()===false||w.fireEvent("beforeeventdrag",w,n,B)===false){return null}var k=B.getXY(),a=Ext.get(u),C=a.getXY(),m=[k[0]-C[0],k[1]-C[1]],o=a.getRegion(),y=w.getSnapPixelAmount();var b=w.resolveResource(u);this.clearTicks();if(w.constrainDragToResource){if(!b){throw"Resource could not be resolved for event: "+n.getId()}this.constrainToResource(w.getScheduleRegion(b,n),o,w.getOrientation())}else{this.constrainTo(w.getScheduleRegion(null,n),o)}if(y>1){if(w.getOrientation()==="horizontal"){this.setXConstraint(this.leftConstraint,this.rightConstraint,y)}else{this.setYConstraint(this.topConstraint,this.bottomConstraint,y)}}var d=n.getStartDate(),q=n.getEndDate(),p=w.timeAxis,l=p.getStart(),j=p.getEnd(),z=d<l,x=q>j,c=Ext.getBody().getScroll(),h=this.getRelatedRecords(n),A=[a];Ext.Array.each(h,function(s){var e=w.getElementFromEventRecord(s);if(e){A.push(e)}});var g={offsets:m,eventEls:A,repairXY:C,eventRecords:[n].concat(h),relatedEventRecords:h,resourceRecord:b,origStart:d,origEnd:q,startDate:d,endDate:q,duration:q-d,startsOutsideView:z,endsOutsideView:x,bodyScroll:c,eventObj:B};g.ddel=this.getDragElement(a,g);return g},constrainToResource:function(b,c,a){this.resetConstraints();this.initPageX=b.left;this.initPageY=b.top;if(a==="horizontal"){this.setXConstraint(b.left,b.right-(c.right-c.left),this.xTickSize);this.setYConstraint(c.top,c.top,this.yTickSize)}else{this.setXConstraint(c.left,c.left,this.xTickSize);this.setYConstraint(b.top,b.bottom-(c.bottom-c.top),this.yTickSize)}},getRelatedRecords:function(c){var b=this.schedulerView;var d=b.selModel;var a=[];if(d.selected.getCount()>1){d.selected.each(function(e){if(e!==c&&e.isDraggable()!==false){a.push(e)}})}return a},getDragElement:function(a,e){var c=this.schedulerView;var d=e.eventEls;var g;if(d.length>1){var b=Ext.get(Ext.core.DomHelper.createDom({tag:"div",cls:"sch-dd-wrap",style:{overflow:"visible"}}));Ext.Array.each(d,function(j){g=j.dom.cloneNode(true);if(j.dom===a.dom){g.id="sch-id-dd-ref"}else{g.id=Ext.id()}b.appendChild(g);var h=j.getOffsetsTo(a);Ext.fly(g).setStyle({left:h[0]+"px",top:h[1]+"px"})});return b.dom}else{g=a.dom.cloneNode(true);g.id="sch-id-dd-ref";g.style.left=0;g.style.top=0;return g}},onDragDrop:function(j,k){this.updateDragContext(j);var d=this,b=d.schedulerView,h=d.cachedTarget||Ext.dd.DragDropMgr.getDDById(k),g=d.dragData,a=false,c=true;g.ddCallbackArgs=[h,j,k];if(g.valid&&g.startDate&&g.endDate){g.finalize=function(){d.finalize.apply(d,arguments)};c=b.fireEvent("beforeeventdropfinalize",d,g,j)!==false;if(c&&d.isValidDrop(g.resourceRecord,g.newResource,g.relatedEventRecords)){a=g.startDate-g.origStart!==0||g.newResource!==g.resourceRecord}}if(c){d.finalize(g.valid&&a)}},finalize:function(a){var c=this,b=c.schedulerView,d=c.dragData;if(c.tip){c.tip.hide()}if(a){c.updateRecords(d);if(Ext.isIE9){c.proxy.el.setStyle("visibility","hidden");Ext.Function.defer(c.onValidDrop,10,c,d.ddCallbackArgs)}else{c.onValidDrop.apply(c,d.ddCallbackArgs)}b.fireEvent("aftereventdrop",b,d.eventRecords)}else{c.onInvalidDrop.apply(c,d.ddCallbackArgs)}},updateRecords:function(a){throw"Must be implemented by subclass"},isValidDrop:function(a,b,c){return true},onInvalidDrop:function(d,c,g){if(Ext.isIE&&!c){c=d;d=d.getTarget()||document.body}var a=this.schedulerView,b;if(this.tip){this.tip.hide()}Ext.each(this.dragData.eventEls,function(e){e.removeCls("x-hidden")});b=this.callParent([d,c,g]);a.fireEvent("aftereventdrop",a,this.dragData.eventRecords);return b}});Ext.define("Sch.feature.ColumnLines",{extend:"Sch.plugin.Lines",cls:"sch-column-line",showTip:false,requires:["Ext.data.JsonStore"],init:function(a){this.timeAxis=a.getTimeAxis();this.store=Ext.create("Ext.data.JsonStore",{fields:["Date"],data:a.getOrientation()==="horizontal"?this.getData():[]});this.callParent(arguments);this.panel=a;this.panel.on("destroy",this.onHostDestroy,this);this.timeAxis.on("reconfigure",this.populate,this)},onHostDestroy:function(){this.timeAxis.un("reconfigure",this.populate,this)},populate:function(){var a=this.panel;var b=a.getOrientation()==="horizontal"&&a.getStore().getCount()>0;this.store.removeAll(b);this.store.add(this.getData())},getElementData:function(){var a=this.schedulerView;if(a.getOrientation()==="horizontal"&&a.store.getCount()>0){return this.callParent(arguments)}return[]},getData:function(){var a=[];this.timeAxis.forEachMainInterval(function(d,b,c){if(c>0){a.push({Date:d})}});return a}});Ext.define("Sch.plugin.CurrentTimeLine",{extend:"Sch.plugin.Lines",tooltipText:"Current time",updateInterval:60000,autoUpdate:true,expandToFitView:true,timer:null,init:function(c){var b=Ext.create("Ext.data.JsonStore",{fields:["Date","Cls","Text"],data:[{Date:new Date,Cls:"sch-todayLine",Text:this.tooltipText}]});var a=b.first();if(this.autoUpdate){this.timer=setInterval(function(){a.set("Date",new Date)},this.updateInterval)}c.on("destroy",this.onHostDestroy,this);this.store=b;this.callParent(arguments)},onHostDestroy:function(){if(this.timer){clearInterval(this.timer);this.timer=null}if(this.store.autoDestroy){this.store.destroy()}}});Ext.define("Sch.view.Horizontal",{requires:["Ext.util.Region","Ext.Element","Sch.util.Date"],view:null,constructor:function(a){Ext.apply(this,a)},translateToScheduleCoordinate:function(a){var b=this.view;if(b.rtl){return b.getTimeAxisColumn().getEl().getRight()-a}return a-b.getEl().getX()+b.getScroll().left},translateToPageCoordinate:function(a){var b=this.view;return a+b.getEl().getX()-b.getScroll().left},getEventRenderData:function(a,b,c){var j=b||a.getStartDate(),h=c||a.getEndDate()||j,l=this.view,g=l.timeAxis.getStart(),m=l.timeAxis.getEnd(),k=Math,e=l.getXFromDate(Sch.util.Date.max(j,g)),n=l.getXFromDate(Sch.util.Date.min(h,m)),d={};if(this.view.rtl){d.right=k.min(e,n)}else{d.left=k.min(e,n)}d.width=k.max(1,k.abs(n-e))-l.eventBorderWidth;if(l.managedEventSizing){d.top=k.max(0,l.barMargin-(Ext.isIE&&!Ext.isStrict?0:l.eventBorderWidth-l.cellTopBorderWidth));d.height=l.rowHeight-2*l.barMargin-l.eventBorderWidth}d.start=j;d.end=h;d.startsOutsideView=j<g;d.endsOutsideView=h>m;return d},getScheduleRegion:function(e,h){var c=Ext.Element.prototype.getRegion?"getRegion":"getPageBox",l=this.view,k=e?Ext.fly(l.getRowNode(e))[c]():l.getTableRegion(),g=l.timeAxis.getStart(),n=l.timeAxis.getEnd(),b=l.getDateConstraints(e,h)||{start:g,end:n},d=this.translateToPageCoordinate(l.getXFromDate(b.start)),m=this.translateToPageCoordinate(l.getXFromDate(b.end)),j=k.top+l.barMargin,a=k.bottom-l.barMargin-l.eventBorderWidth;return new Ext.util.Region(j,Math.max(d,m),a,Math.min(d,m))},getResourceRegion:function(l,e,k){var o=this.view,d=o.getRowNode(l),g=Ext.fly(d).getOffsetsTo(o.getEl()),m=o.timeAxis.getStart(),q=o.timeAxis.getEnd(),c=e?Sch.util.Date.max(m,e):m,h=k?Sch.util.Date.min(q,k):q,j=o.getXFromDate(c),p=o.getXFromDate(h),n=g[1]+o.cellTopBorderWidth,a=g[1]+Ext.fly(d).getHeight()-o.cellBottomBorderWidth;if(!Ext.versions.touch){var b=o.getScroll();n+=b.top;a+=b.top}return new Ext.util.Region(n,Math.max(j,p),a,Math.min(j,p))},columnRenderer:function(d,s,m,o,q){var p=this.view;var b=p.eventStore.getEventsForResource(m);if(b.length===0){return}var j=p.timeAxis,n=[],h,e;for(h=0,e=b.length;h<e;h++){var a=b[h],c=a.getStartDate(),g=a.getEndDate();if(c&&g&&j.timeSpanInAxis(c,g)){n[n.length]=p.generateTplData(a,m,o)}}if(p.dynamicRowHeight){var k=p.eventLayout.horizontal;k.applyLayout(n,m);s.rowHeight=k.getRowHeight(m,b)}return p.eventTpl.apply(n)},resolveResource:function(b){var a=this.view;var c=a.findRowByChild(b);if(c){return a.getRecordForRowNode(c)}return null},getTimeSpanRegion:function(b,j,h){var d=this.view,c=d.getXFromDate(b),e=d.getXFromDate(j||b),a,g;if(!g){g=d.getTableRegion()}if(h){a=Math.max(g?g.bottom-g.top:0,d.getEl().dom.clientHeight)}else{a=g?g.bottom-g.top:0}return new Ext.util.Region(0,Math.max(c,e),a,Math.min(c,e))},getStartEndDatesFromRegion:function(c,b){var a=this.view.getDateFromCoordinate(c.left,b),d=this.view.getDateFromCoordinate(c.right,b);if(d&&a){return{start:Sch.util.Date.min(a,d),end:Sch.util.Date.max(a,d)}}return null},onEventAdd:function(o,n){var m=this.view;var e={};for(var h=0,c=n.length;h<c;h++){var a=n[h].getResources();for(var g=0,d=a.length;g<d;g++){var b=a[g];e[b.getId()]=b}}Ext.Object.each(e,function(k,j){m.repaintEventsForResource(j)})},onEventRemove:function(l,e){var j=this.view;var k=this.resourceStore;var g=Ext.tree&&Ext.tree.View&&j instanceof Ext.tree.View;if(!Ext.isArray(e)){e=[e]}var h=function(m){if(j.store.indexOf(m)>=0){j.repaintEventsForResource(m)}};for(var d=0;d<e.length;d++){var a=e[d].getResources();if(a.length>1){Ext.each(a,h,this)}else{var b=j.getEventNodeByRecord(e[d]);if(b){var c=j.resolveResource(b);if(Ext.Element.prototype.fadeOut){Ext.get(b).fadeOut({callback:function(){h(c)}})}else{Ext.Anim.run(Ext.get(b),"fade",{out:true,duration:500,after:function(){h(c)},autoClear:false})}}}}},onEventUpdate:function(c,d,b){var e=d.previous;var a=this.view;if(e&&e[d.resourceIdField]){var g=d.getResource(e[d.resourceIdField]);if(g){a.repaintEventsForResource(g)}}var h=d.getResources();Ext.each(h,function(j){a.repaintEventsForResource(j)})},setColumnWidth:function(c,b){var a=this.view;a.getTimeAxisViewModel().setTickWidth(c,b);a.fireEvent("columnwidthchange",a,c)},getVisibleDateRange:function(){var d=this.view;if(!d.getEl()){return null}var c=d.getTableRegion(),b=d.timeAxis.getStart(),g=d.timeAxis.getEnd(),e=d.getWidth();if(c.right-c.left<e){return{startDate:b,endDate:g}}var a=d.getScroll();return{startDate:d.getDateFromCoordinate(a.left,null,true),endDate:d.getDateFromCoordinate(a.left+e,null,true)}}});Ext.define("Sch.mixin.AbstractTimelineView",{requires:["Sch.data.TimeAxis","Sch.view.Horizontal"],selectedEventCls:"sch-event-selected",readOnly:false,horizontalViewClass:"Sch.view.Horizontal",timeCellCls:"sch-timetd",timeCellSelector:".sch-timetd",eventBorderWidth:1,timeAxis:null,timeAxisViewModel:null,eventPrefix:null,rowHeight:null,orientation:"horizontal",horizontal:null,vertical:null,secondaryCanvasEl:null,panel:null,displayDateFormat:null,snapToIncrement:null,el:null,_initializeTimelineView:function(){if(this.horizontalViewClass){this.horizontal=Ext.create(this.horizontalViewClass,{view:this})}if(this.verticalViewClass){this.vertical=Ext.create(this.verticalViewClass,{view:this})}var a=this.eventPrefix||this.getId();if(!a){throw"No event prefix specifiec for the scheduler"}Ext.apply(this,{eventPrefix:a+"-"})},getTimeAxisViewModel:function(){return this.timeAxisViewModel},getFormattedDate:function(a){return Ext.Date.format(a,this.getDisplayDateFormat())},getFormattedEndDate:function(b,a){if(b.getHours()===0&&b.getMinutes()===0&&!(b.getYear()===a.getYear()&&b.getMonth()===a.getMonth()&&b.getDate()===a.getDate())){b=Sch.util.Date.add(b,Sch.util.Date.DAY,-1)}return Ext.Date.format(b,this.getDisplayDateFormat())},getDisplayDateFormat:function(){return this.displayDateFormat},setDisplayDateFormat:function(a){this.displayDateFormat=a},fitColumns:function(b){if(this.orientation==="horizontal"){this.getTimeAxisViewModel().fitToAvailableWidth(b)}else{var a=Math.floor((this.panel.getWidth()-Ext.getScrollbarSize().width-1)/this.headerCt.getColumnCount());this.setColumnWidth(a,b)}},getElementFromEventRecord:function(a){return Ext.get(this.eventPrefix+a.internalId)},getEventNodeByRecord:function(a){return document.getElementById(this.eventPrefix+a.internalId)},getEventNodesByRecord:function(a){return this.el.select("[id="+this.eventPrefix+a.internalId+"]")},getStartEndDatesFromRegion:function(b,a){return this[this.orientation].getStartEndDatesFromRegion(b,a)},getTimeResolution:function(){return this.timeAxis.getResolution()},setTimeResolution:function(b,a){this.timeAxis.setResolution(b,a);if(this.snapToIncrement){this.refreshKeepingScroll()}},getEventIdFromDomNodeId:function(a){return a.substring(this.eventPrefix.length)},getDateFromDomEvent:function(b,a){return this.getDateFromXY(b.getXY(),a)},getSnapPixelAmount:function(){return this.getTimeAxisViewModel().getSnapPixelAmount()},getTimeColumnWidth:function(){return this.getTimeAxisViewModel().getTickWidth()},setSnapEnabled:function(a){this.snapToIncrement=a;if(a){this.refreshKeepingScroll()}},setReadOnly:function(a){this.readOnly=a;this[a?"addCls":"removeCls"](this._cmpCls+"-readonly")},isReadOnly:function(){return this.readOnly},setOrientation:function(a){this.orientation=a},getOrientation:function(){return this.orientation},getDateFromXY:function(c,b,a){return this.getDateFromCoordinate(this.orientation==="horizontal"?c[0]:c[1],b,a)},getDateFromCoordinate:function(c,b,a){if(!a){c=this[this.orientation].translateToScheduleCoordinate(c)}return this.timeAxisViewModel.getDateFromPosition(c,b)},getDateFromX:function(a,b){return this.getDateFromCoordinate(a,b)},getDateFromY:function(b,a){return this.getDateFromCoordinate(b,a)},getCoordinateFromDate:function(a,b){var c=this.timeAxisViewModel.getPositionFromDate(a);if(b===false){c=this[this.orientation].translateToPageCoordinate(c)}return Math.round(c)},getXFromDate:function(a,b){return this.getCoordinateFromDate(a,b)},getYFromDate:function(a,b){return this.getCoordinateFromDate(a,b)},getTimeSpanDistance:function(a,b){return this.timeAxisViewModel.getDistanceBetweenDates(a,b)},getTimeSpanRegion:function(a,b){return this[this.orientation].getTimeSpanRegion(a,b)},getScheduleRegion:function(b,a){return this[this.orientation].getScheduleRegion(b,a)},getTableRegion:function(){throw"Abstract method call"},getRowNode:function(a){throw"Abstract method call"},getRecordForRowNode:function(a){throw"Abstract method call"},getVisibleDateRange:function(){return this[this.orientation].getVisibleDateRange()},setColumnWidth:function(b,a){this[this.orientation].setColumnWidth(b,a)},findRowByChild:function(a){throw"Abstract method call"},setBarMargin:function(b,a){this.barMargin=b;if(!a){this.refreshKeepingScroll()}},getRowHeight:function(){return this.rowHeight},setRowHeight:function(a,b){this.rowHeight=a||24;if(this.orientation==="vertical"){this.timeAxisViewModel.setTickWidth(this.rowHeight,b)}else{if(this.getEl()&&!b){this.refreshKeepingScroll(true)}}},refreshKeepingScroll:function(){throw"Abstract method call"},scrollVerticallyTo:function(b,a){throw"Abstract method call"},scrollHorizontallyTo:function(a,b){throw"Abstract method call"},getVerticalScroll:function(){throw"Abstract method call"},getHorizontalScroll:function(){throw"Abstract method call"},getEl:Ext.emptyFn,getSecondaryCanvasEl:function(){if(!this.secondaryCanvasEl){this.secondaryCanvasEl=this.getEl().createChild({cls:"sch-secondary-canvas"})}return this.secondaryCanvasEl},getScroll:function(){throw"Abstract method call"},getOuterEl:function(){return this.getEl()},getRowContainerEl:function(){return this.getEl()},getScrollEventSource:function(){return this.getEl()},getViewportHeight:function(){return this.getEl().getHeight()},getViewportWidth:function(){return this.getEl().getWidth()},getDateConstraints:Ext.emptyFn});Ext.apply(Sch,{VERSION:"2.2.5"});Ext.define("Sch.mixin.TimelineView",{extend:"Sch.mixin.AbstractTimelineView",overScheduledEventClass:"sch-event-hover",altColCls:"sch-col-alt",timeCellCls:"sch-timetd",timeCellSelector:".sch-timetd",ScheduleEventMap:{click:"Click",mousedown:"MouseDown",mouseup:"MouseUp",dblclick:"DblClick",contextmenu:"ContextMenu",keydown:"KeyDown",keyup:"KeyUp"},_initializeTimelineView:function(){this.callParent(arguments);this.timeCellSelector="."+this.timeCellCls;this.on("destroy",this._onDestroy,this);this.on("afterrender",this._onAfterRender,this);this.setOrientation(this.orientation);this.addEvents("beforetooltipshow","columnwidthchange");this.enableBubble("columnwidthchange");this.addCls("sch-timelineview");if(this.readOnly){this.addCls(this._cmpCls+"-readonly")}this.addCls(this._cmpCls);if(this.eventAnimations){this.addCls("sch-animations-enabled")}},inheritables:function(){return{processUIEvent:function(d){var a=d.getTarget(this.eventSelector),c=this.ScheduleEventMap,b=d.type,g=false;if(a&&b in c){this.fireEvent(this.scheduledEventName+b,this,this.resolveEventRecord(a),d);g=!(this.getSelectionModel() instanceof Ext.selection.RowModel)}if(!g){return this.callParent(arguments)}}}},_onDestroy:function(){if(this.tip){this.tip.destroy()}},_onAfterRender:function(){if(this.overScheduledEventClass){this.setMouseOverEnabled(true)}if(this.tooltipTpl){this.el.on("mousemove",this.setupTooltip,this,{single:true})}var a=this.bufferedRenderer;if(a){this.patchBufferedRenderingPlugin(a);this.patchBufferedRenderingPlugin(this.lockingPartner.bufferedRenderer)}this.on("bufferedrefresh",this.onBufferedRefresh,this,{buffer:10});this.setupTimeCellEvents()},patchBufferedRenderingPlugin:function(c){var b=this;var a=c.setBodyTop;c.setBodyTop=function(d,e){if(d<0){d=0}var g=a.apply(this,arguments);b.fireEvent("bufferedrefresh",this);return g}},onBufferedRefresh:function(){this.getSecondaryCanvasEl().dom.style.top=this.body.dom.style.top},setMouseOverEnabled:function(a){this[a?"mon":"mun"](this.el,{mouseover:this.onMouseOver,mouseout:this.onMouseOut,delegate:this.eventSelector,scope:this})},onMouseOver:function(c,a){if(a!==this.lastItem){this.lastItem=a;Ext.fly(a).addCls(this.overScheduledEventClass);var b=this.resolveEventRecord(a);if(b){this.fireEvent("eventmouseenter",this,b,c)}}},onMouseOut:function(b,a){if(this.lastItem){if(!b.within(this.lastItem,true,true)){Ext.fly(this.lastItem).removeCls(this.overScheduledEventClass);this.fireEvent("eventmouseleave",this,this.resolveEventRecord(this.lastItem),b);delete this.lastItem}}},highlightItem:function(b){if(b){var a=this;a.clearHighlight();a.highlightedItem=b;Ext.fly(b).addCls(a.overItemCls)}},setupTooltip:function(){var b=this,a=Ext.apply({renderTo:Ext.getBody(),delegate:b.eventSelector,target:b.el,anchor:"b",rtl:b.rtl,show:function(){Ext.ToolTip.prototype.show.apply(this,arguments);if(this.triggerElement&&b.getOrientation()==="horizontal"){this.setX(this.targetXY[0]-10);this.setY(Ext.fly(this.triggerElement).getY()-this.getHeight()-10)}}},b.tipCfg);b.tip=Ext.create("Ext.ToolTip",a);b.tip.on({beforeshow:function(d){if(!d.triggerElement||!d.triggerElement.id){return false}var c=this.resolveEventRecord(d.triggerElement);if(!c||this.fireEvent("beforetooltipshow",this,c)===false){return false}d.update(this.tooltipTpl.apply(this.getDataForTooltipTpl(c)))},scope:this})},getTimeAxisColumn:function(){if(!this.timeAxisColumn){this.timeAxisColumn=this.headerCt.down("timeaxiscolumn")}return this.timeAxisColumn},getDataForTooltipTpl:function(a){return Ext.apply({_record:a},a.data)},refreshKeepingScroll:function(){this.suspendLayouts();this.saveScrollState();this.refresh();if(this.up("tablepanel[lockable=true]").lockedGridDependsOnSchedule){this.lockingPartner.refresh()}this.resumeLayouts(true);this.restoreScrollState()},setupTimeCellEvents:function(){this.mon(this.el,{click:this.handleScheduleEvent,dblclick:this.handleScheduleEvent,contextmenu:this.handleScheduleEvent,scope:this})},getTableRegion:function(){return this.el.down(".x-grid-table").getRegion()},getRowNode:function(a){return this.getNodeByRecord(a)},findRowByChild:function(a){return this.findItemByChild(a)},getRecordForRowNode:function(a){return this.getRecord(a)},refreshKeepingResourceScroll:function(){var a=this.getScroll();this.refresh();if(this.getOrientation()==="horizontal"){this.scrollVerticallyTo(a.top)}else{this.scrollHorizontallyTo(a.left)}},scrollHorizontallyTo:function(a,b){var c=this.getEl();if(c){c.scrollTo("left",Math.max(0,a),b)}},scrollVerticallyTo:function(c,a){var b=this.getEl();if(b){b.scrollTo("top",Math.max(0,c),a)}},getVerticalScroll:function(){var a=this.getEl();return a.getScroll().top},getHorizontalScroll:function(){var a=this.getEl();return a.getScroll().left},getScroll:function(){var a=this.getEl().getScroll();return{top:a.top,left:a.left}},getXYFromDate:function(){var a=this.getCoordinateFromDate.apply(this,arguments);return this.orientation==="horizontal"?[a,0]:[0,a]},handleScheduleEvent:function(a){}});Ext.define("Sch.view.TimelineGridView",{extend:"Ext.grid.View",mixins:["Sch.mixin.TimelineView"]},function(){this.override(Sch.mixin.TimelineView.prototype.inheritables()||{})});Ext.define("Sch.mixin.FilterableTreeView",{prevBlockRefresh:null,initTreeFiltering:function(){var a=function(){var b=this.up("tablepanel").store;if(b instanceof Ext.data.NodeStore){b=this.up("tablepanel[lockable=true]").store}this.mon(b,"nodestore-datachange-start",this.onFilterChangeStart,this);this.mon(b,"nodestore-datachange-end",this.onFilterChangeEnd,this);this.mon(b,"filter-clear",this.onFilterCleared,this);this.mon(b,"filter-set",this.onFilterSet,this)};if(this.rendered){a.call(this)}else{this.on("beforerender",a,this,{single:true})}},onFilterChangeStart:function(){this.prevBlockRefresh=this.blockRefresh;this.blockRefresh=true;Ext.suspendLayouts()},onFilterChangeEnd:function(){Ext.resumeLayouts(true);this.blockRefresh=this.prevBlockRefresh},onFilterCleared:function(){delete this.toggle;var a=this.getEl();if(a){a.removeCls("sch-tree-filtered")}},onFilterSet:function(){this.toggle=function(){};var a=this.getEl();if(a){a.addCls("sch-tree-filtered")}}});Ext.define("Sch.mixin.Zoomable",{zoomLevels:[{width:30,increment:1,resolution:1,preset:"year",resolutionUnit:"MONTH"},{width:50,increment:1,resolution:1,preset:"year",resolutionUnit:"MONTH"},{width:100,increment:1,resolution:1,preset:"year",resolutionUnit:"MONTH"},{width:200,increment:1,resolution:1,preset:"year",resolutionUnit:"MONTH"},{width:100,increment:1,resolution:7,preset:"monthAndYear",resolutionUnit:"DAY"},{width:30,increment:1,resolution:1,preset:"weekDateAndMonth",resolutionUnit:"DAY"},{width:35,increment:1,resolution:1,preset:"weekAndMonth",resolutionUnit:"DAY"},{width:50,increment:1,resolution:1,preset:"weekAndMonth",resolutionUnit:"DAY"},{width:20,increment:1,resolution:1,preset:"weekAndDayLetter"},{width:50,increment:1,resolution:1,preset:"weekAndDay",resolutionUnit:"HOUR"},{width:100,increment:1,resolution:1,preset:"weekAndDay",resolutionUnit:"HOUR"},{width:50,increment:6,resolution:30,preset:"hourAndDay",resolutionUnit:"MINUTE"},{width:100,increment:6,resolution:30,preset:"hourAndDay",resolutionUnit:"MINUTE"},{width:60,increment:2,resolution:30,preset:"hourAndDay",resolutionUnit:"MINUTE"},{width:60,increment:1,resolution:30,preset:"hourAndDay",resolutionUnit:"MINUTE"},{width:30,increment:15,resolution:5,preset:"minuteAndHour"},{width:60,increment:15,resolution:5,preset:"minuteAndHour"},{width:130,increment:15,resolution:5,preset:"minuteAndHour"},{width:60,increment:5,resolution:5,preset:"minuteAndHour"},{width:100,increment:5,resolution:5,preset:"minuteAndHour"}],minZoomLevel:null,maxZoomLevel:null,visibleZoomFactor:5,cachedCenterDate:null,isFirstZoom:true,isZooming:false,initializeZooming:function(){this.zoomLevels=this.zoomLevels.slice();this.setMinZoomLevel(this.minZoomLevel||0);this.setMaxZoomLevel(this.maxZoomLevel!==null?this.maxZoomLevel:this.zoomLevels.length-1);this.on("viewchange",this.clearCenterDateCache,this)},getZoomLevelUnit:function(b){var a=Sch.preset.Manager.getPreset(b.preset).headerConfig;return a.bottom?a.bottom.unit:a.middle.unit},getMilliSecondsPerPixelForZoomLevel:function(b){var a=Sch.util.Date;return Math.round((a.add(new Date(1,0,1),this.getZoomLevelUnit(b),b.increment)-new Date(1,0,1))/b.width)},presetToZoomLevel:function(e){var d=Sch.preset.Manager.getPreset(e);var c=d.headerConfig;var a=c.bottom;var b=c.middle;return{preset:e,increment:(a?a.increment:b.increment)||1,resolution:d.timeResolution.increment,resolutionUnit:d.timeResolution.unit,width:d.timeColumnWidth}},calculateCurrentZoomLevel:function(){var d=this.presetToZoomLevel(this.viewPreset);var c=this.timeAxis.headerConfig;var a=c.bottom;var b=c.middle;d.width=this.timeAxis.preset.timeColumnWidth;d.increment=(a?a.increment:b.increment)||1;return d},getCurrentZoomLevelIndex:function(){var g=this.calculateCurrentZoomLevel();var b=this.getMilliSecondsPerPixelForZoomLevel(g);var e=this.zoomLevels;for(var c=0;c<e.length;c++){var d=this.getMilliSecondsPerPixelForZoomLevel(e[c]);if(d==b){return c}if(c===0&&b>d){return -0.5}if(c==e.length-1&&b<d){return e.length-1+0.5}var a=this.getMilliSecondsPerPixelForZoomLevel(e[c+1]);if(d>b&&b>a){return c+0.5}}throw"Can't find current zoom level index"},setMaxZoomLevel:function(a){if(a<0||a>=this.zoomLevels.length){throw new Error("Invalid range for `setMinZoomLevel`")}this.maxZoomLevel=a},setMinZoomLevel:function(a){if(a<0||a>=this.zoomLevels.length){throw new Error("Invalid range for `setMinZoomLevel`")}this.minZoomLevel=a},getViewportCenterDateCached:function(){if(this.cachedCenterDate){return this.cachedCenterDate}return this.cachedCenterDate=this.getViewportCenterDate()},clearCenterDateCache:function(){this.cachedCenterDate=null},zoomToLevel:function(b,s){b=Ext.Number.constrain(b,this.minZoomLevel,this.maxZoomLevel);var t=this.calculateCurrentZoomLevel();var d=this.getMilliSecondsPerPixelForZoomLevel(t);var m=this.zoomLevels[b];var a=this.getMilliSecondsPerPixelForZoomLevel(m);if(d==a){return null}var z=this;var n=this.getSchedulingView();var g=n.getOuterEl();var u=n.getScrollEventSource();if(this.isFirstZoom){this.isFirstZoom=false;u.on("scroll",this.clearCenterDateCache,this)}var j=this.orientation=="vertical";var e=this.getViewportCenterDateCached();var o=j?g.getHeight():g.getWidth();var p=Ext.clone(Sch.preset.Manager.getPreset(m.preset));var w=s?{}:this.calculateOptimalDateRange(e,o,m);var c=p.headerConfig;var h=c.bottom;var A=c.middle;p[j?"rowHeight":"timeColumnWidth"]=m.width;if(h){h.increment=m.increment}else{A.increment=m.increment}this.isZooming=true;this.viewPreset=m.preset;var q=h?h.unit:A.unit;this.timeAxis.reconfigure({preset:p,headerConfig:c,unit:q,increment:m.increment,resolutionUnit:Sch.util.Date.getUnitByName(m.resolutionUnit||q),resolutionIncrement:m.resolution,weekStartDay:this.weekStartDay,mainUnit:A.unit,shiftUnit:p.shiftUnit,shiftIncrement:p.shiftIncrement||1,defaultSpan:p.defaultSpan||1,start:w.startDate||this.getStart(),end:w.endDate||this.getEnd()});u.on("scroll",function(){z.cachedCenterDate=e},this,{single:true});if(j){var k=n.getYFromDate(e,true);n.scrollVerticallyTo(k-o/2)}else{var l=n.getXFromDate(e,true);n.scrollHorizontallyTo(l-o/2)}z.isZooming=false;this.fireEvent("zoomchange",this,b);return b},zoomToSpan:function(o,c){if(o.start&&o.end&&o.start<o.end){var n=this.timeAxis.generateTicks(c?Sch.util.Date.add(o.start,this.timeAxis.mainUnit,-1):o.start,o.end,this.timeAxis.unit,this.timeAxis.increment);var d=this.getSchedulingView().getTimeAxisViewModel().getAvailableWidth();var k=Math.floor(this.getCurrentZoomLevelIndex()),e=d/n.length<this.zoomLevels[k].width?-1:1,b=k+e,h=this.orientation=="vertical"?"rowHeight":"timeColumnWidth",j=Ext.create("Sch.data.TimeAxis");var g,p,l,a,s,m,q=null;while(b>=0&&b<=this.zoomLevels.length-1){g=this.zoomLevels[b];p=Ext.clone(Sch.preset.Manager.getPreset(g.preset));a=p.headerConfig.bottom;s=p.headerConfig.middle;p[h]=g.width;if(a){a.increment=g.increment;m=a.unit}else{s.increment=g.increment;m=s.unit}Ext.apply(j,{preset:p,headerConfig:p.headerConfig,unit:m,increment:g.increment,resolutionUnit:Sch.util.Date.getUnitByName(g.resolutionUnit||m),resolutionIncrement:g.resolution,mainUnit:s.unit,shiftUnit:p.shiftUnit,shiftIncrement:p.shiftIncrement||1,defaultSpan:p.defaultSpan||1});n=j.generateTicks(c?Sch.util.Date.add(o.start,j.mainUnit,-1):o.start,o.end,j.unit,j.increment);if(e<0){if(d/n.length>=g.width){q=this.zoomToLevel(b,true);break}}else{if(d/n.length<g.width){if(k!==b-e){q=this.zoomToLevel(b-e,true);break}break}}b+=e}this.setTimeSpan(c?Sch.util.Date.add(o.start,this.timeAxis.mainUnit,-1):o.start,o.end);return q}return null},zoomIn:function(a){a=a||1;var b=this.getCurrentZoomLevelIndex();if(b>=this.zoomLevels.length-1){return null}return this.zoomToLevel(Math.floor(b)+a)},zoomOut:function(a){a=a||1;var b=this.getCurrentZoomLevelIndex();if(b<=0){return null}return this.zoomToLevel(Math.ceil(b)-a)},zoomInFull:function(){return this.zoomToLevel(this.maxZoomLevel)},zoomOutFull:function(){return this.zoomToLevel(this.minZoomLevel)},calculateOptimalDateRange:function(c,j,e){var b=Sch.util.Date;var k=Sch.preset.Manager.getPreset(e.preset).headerConfig;var g=k.top?k.top.unit:k.middle.unit;var l=this.getZoomLevelUnit(e);var d=Math.ceil(j/e.width*e.increment*this.visibleZoomFactor/2);var a=b.add(c,l,-d);var h=b.add(c,l,d);return{startDate:this.timeAxis.floorDate(a,false,g),endDate:this.timeAxis.ceilDate(h,false,g)}}});Ext.define("Sch.mixin.AbstractTimelinePanel",{requires:["Sch.data.TimeAxis","Sch.view.model.TimeAxis","Sch.feature.ColumnLines","Sch.preset.Manager"],mixins:["Sch.mixin.Zoomable"],orientation:"horizontal",weekStartDay:1,snapToIncrement:false,readOnly:false,eventResizeHandles:"both",timeAxis:null,timeAxisViewModel:null,viewPreset:"weekAndDay",trackHeaderOver:true,startDate:null,endDate:null,columnLines:true,trackMouseOver:false,eventBorderWidth:1,getOrientation:function(){return this.orientation},cellBorderWidth:1,cellTopBorderWidth:1,cellBottomBorderWidth:1,_initializeTimelinePanel:function(){this.initializeZooming();this.renderers=[];if(!this.timeAxis){this.timeAxis=Ext.create("Sch.data.TimeAxis")}if(!this.timeAxisViewModel||!(this.timeAxisViewModel instanceof Sch.view.model.TimeAxis)){var a=Ext.apply({snapToIncrement:this.snapToIncrement,forceFit:this.forceFit,timeAxis:this.timeAxis},this.timeAxisViewModel||{});this.timeAxisViewModel=new Sch.view.model.TimeAxis(a)}this.timeAxisViewModel.on("update",this.onTimeAxisViewModelUpdate,this);if(!this.viewPreset){throw"You must define a valid view preset object. See Sch.preset.Manager class for reference"}this.on("destroy",this.onPanelDestroyed,this);this.timeAxis.on("reconfigure",this.onTimeAxisReconfigure,this);this.addCls("sch-"+this.orientation)},onTimeAxisViewModelUpdate:function(){var a=this.getSchedulingView();if(a&&a.viewReady){a.refreshKeepingScroll()}},onPanelDestroyed:function(){this.timeAxisViewModel.destroy();this.timeAxis.un("reconfigure",this.onTimeAxisReconfigure,this)},getSchedulingView:function(){throw"Abstract method call"},setReadOnly:function(a){this.getSchedulingView().setReadOnly(a)},isReadOnly:function(){return this.getSchedulingView().isReadOnly()},switchViewPreset:function(d,a,g,b){if(b&&this.timeAxis.preset){this.applyViewSettings(this.timeAxis.preset);return}if(this.fireEvent("beforeviewchange",this,d,a,g)!==false){if(Ext.isString(d)){this.viewPreset=d;d=Sch.preset.Manager.getPreset(d)}if(!d){throw"View preset not found"}var e=d.headerConfig;var c={unit:e.bottom?e.bottom.unit:e.middle.unit,increment:(e.bottom?e.bottom.increment:e.middle.increment)||1,resolutionUnit:d.timeResolution.unit,resolutionIncrement:d.timeResolution.increment,weekStartDay:this.weekStartDay,mainUnit:e.middle.unit,shiftUnit:d.shiftUnit,headerConfig:d.headerConfig,shiftIncrement:d.shiftIncrement||1,preset:d,defaultSpan:d.defaultSpan||1};if(b){if(this.timeAxis.getCount()===0||a){c.start=a||new Date}}else{c.start=a||this.timeAxis.getStart()}c.end=g;this.timeAxis.reconfigure(c);this.applyViewSettings(d);if(this.getOrientation()==="horizontal"){this.getSchedulingView().scrollHorizontallyTo(0)}else{this.getSchedulingView().scrollVerticallyTo(0)}}},applyViewSettings:function(b){var a=this.getSchedulingView();a.setDisplayDateFormat(b.displayDateFormat);if(this.orientation==="horizontal"){a.setRowHeight(this.rowHeight||b.rowHeight,true)}},getStart:function(){return this.getStartDate()},getStartDate:function(){return this.timeAxis.getStart()},getEnd:function(){return this.getEndDate()},getEndDate:function(){return this.timeAxis.getEnd()},setTimeColumnWidth:function(b,a){this.timeAxisViewModel.setTickWidth(b,a)},getTimeColumnWidth:function(){return this.timeAxisViewModel.getTickWidth()},onTimeAxisReconfigure:function(){this.fireEvent("viewchange",this)},shiftNext:function(a){this.suspendLayouts&&this.suspendLayouts();this.timeAxis.shiftNext(a);this.suspendLayouts&&this.resumeLayouts(true)},shiftPrevious:function(a){this.suspendLayouts&&this.suspendLayouts();this.timeAxis.shiftPrevious(a);this.suspendLayouts&&this.resumeLayouts(true)},goToNow:function(){this.setTimeSpan(new Date)},setTimeSpan:function(b,a){if(this.timeAxis){this.timeAxis.setTimeSpan(b,a)}},setStart:function(a){this.setTimeSpan(a)},setEnd:function(a){this.setTimeSpan(null,a)},getTimeAxis:function(){return this.timeAxis},scrollToDate:function(c,b){var a=this.getSchedulingView();var d=a.getCoordinateFromDate(c,true);if(this.orientation=="horizontal"){a.scrollHorizontallyTo(d,b)}else{a.scrollVerticallyTo(d,b)}},getViewportCenterDate:function(){var b=this.getSchedulingView(),a=b.getScroll(),c;if(this.getOrientation()==="vertical"){c=[0,a.top+b.getViewportHeight()/2]}else{c=[a.left+b.getViewportWidth()/2,0]}return b.getDateFromXY(c,null,true)},addCls:function(){throw"Abstract method call"},removeCls:function(){throw"Abstract method call"},registerRenderer:function(b,a){this.renderers.push({fn:b,scope:a})},deregisterRenderer:function(b,a){Ext.each(this.renderers,function(c,d){if(b===c){Ext.Array.removeAt(this.renderers,d);return false}})}});Ext.define("Sch.mixin.TimelinePanel",{extend:"Sch.mixin.AbstractTimelinePanel",requires:["Sch.util.Patch","Sch.column.timeAxis.Horizontal","Sch.preset.Manager"],mixins:["Sch.mixin.Zoomable","Sch.mixin.Lockable"],tipCfg:{cls:"sch-tip",showDelay:1000,hideDelay:0,autoHide:true,anchor:"b"},inheritables:function(){return{columnLines:true,enableLocking:true,lockable:true,initComponent:function(){if(this.partnerTimelinePanel){this.timeAxis=this.partnerTimelinePanel.getTimeAxis();this.startDate=this.timeAxis.getStart();this.endDate=this.timeAxis.getEnd()}if(this.viewConfig&&this.viewConfig.forceFit){this.forceFit=true}if(Ext.versions.extjs.isGreaterThanOrEqual("4.2.1")){this.cellTopBorderWidth=0}this._initializeTimelinePanel();this.configureColumns();var b=this.normalViewConfig=this.normalViewConfig||{};Ext.apply(this.normalViewConfig,{timeAxisViewModel:this.timeAxisViewModel,eventBorderWidth:this.eventBorderWidth,timeAxis:this.timeAxis,readOnly:this.readOnly,orientation:this.orientation,rtl:this.rtl,cellBorderWidth:this.cellBorderWidth,cellTopBorderWidth:this.cellTopBorderWidth,cellBottomBorderWidth:this.cellBottomBorderWidth});Ext.Array.forEach(["eventRendererScope","eventRenderer","dndValidatorFn","resizeValidatorFn","createValidatorFn","tooltipTpl","validatorFnScope","snapToIncrement","eventResizeHandles","enableEventDragDrop","enableDragCreation","resizeConfig","createConfig","tipCfg","getDateConstraints"],function(c){if(c in this){b[c]=this[c]}},this);this.mon(this.timeAxis,"reconfigure",this.onMyTimeAxisReconfigure,this);this.addEvents("timeheaderclick","timeheaderdblclick","beforeviewchange","viewchange");this.callParent(arguments);this.switchViewPreset(this.viewPreset,this.startDate||this.timeAxis.getStart(),this.endDate||this.timeAxis.getEnd(),true);var a=this.columnLines;if(a){this.columnLinesFeature=new Sch.feature.ColumnLines(Ext.isObject(a)?a:undefined);this.columnLinesFeature.init(this);this.columnLines=true}this.relayEvents(this.getSchedulingView(),["beforetooltipshow"]);this.on("afterrender",this.__onAfterRender,this);this.on("zoomchange",function(){this.normalGrid.scrollTask.cancel()})},getState:function(){var a=this,b=a.callParent(arguments);Ext.apply(b,{viewPreset:a.viewPreset,startDate:a.getStart(),endDate:a.getEnd(),zoomMinLevel:a.zoomMinLevel,zoomMaxLevel:a.zoomMaxLevel,currentZoomLevel:a.currentZoomLevel});return b},applyState:function(b){var a=this;a.callParent(arguments);if(b&&b.viewPreset){a.switchViewPreset(b.viewPreset,b.startDate,b.endDate)}if(b&&b.currentZoomLevel){a.zoomToLevel(b.currentZoomLevel)}}}},onMyTimeAxisReconfigure:function(a){if(this.stateful&&this.rendered){this.saveState()}},onLockedGridItemDblClick:function(b,a,c,e,d){if(this.orientation==="vertical"&&a){this.fireEvent("timeheaderdblclick",this,a.get("start"),a.get("end"),e,d)}},getSchedulingView:function(){return this.normalGrid.getView()},getTimeAxisColumn:function(){if(!this.timeAxisColumn){this.timeAxisColumn=this.down("timeaxiscolumn")}return this.timeAxisColumn},configureColumns:function(){var a=this.columns=this.columns||[];var c=[];var b=[];Ext.Array.each(a,function(d){if(d.position==="right"){if(!Ext.isNumber(d.width)){Ext.Error.raise('"Right" columns must have a fixed width')}d.locked=false;b.push(d)}else{d.locked=true;c.push(d)}d.lockable=false});Ext.Array.erase(a,0,a.length);Ext.Array.insert(a,0,c.concat({xtype:"timeaxiscolumn",timeAxisViewModel:this.timeAxisViewModel,trackHeaderOver:this.trackHeaderOver,renderer:this.mainRenderer,scope:this}).concat(b));this.horizontalColumns=Ext.Array.clone(a);this.verticalColumns=[Ext.apply({xtype:"verticaltimeaxis",width:100,locked:true,timeAxis:this.timeAxis,timeAxisViewModel:this.timeAxisViewModel,cellTopBorderWidth:this.cellTopBorderWidth,cellBottomBorderWidth:this.cellBottomBorderWidth},this.timeAxisColumnCfg||{})];if(this.orientation==="vertical"){this.columns=this.verticalColumns;this.store=this.timeAxis;this.on("beforerender",function(){this.normalGrid.headerCt.add(this.createResourceColumns())},this)}},mainRenderer:function(b,n,g,k,m){var h=this.renderers,l=this.orientation==="horizontal",c=l?g:this.resourceStore.getAt(m),a="&nbsp;";n.rowHeight=null;for(var d=0;d<h.length;d++){a+=h[d].fn.call(h[d].scope||this,b,n,c,k,m)||""}if(this.variableRowHeight){var j=this.getSchedulingView();var e=l?j.getRowHeight():this.timeAxisViewModel.getTickWidth();n.style="height:"+((n.rowHeight||e)-j.cellTopBorderWidth-j.cellBottomBorderWidth)+"px"}return a},__onAfterRender:function(){var a=this;a.normalGrid.on({collapse:a.onNormalGridCollapse,expand:a.onNormalGridExpand,scope:a});a.lockedGrid.on({collapse:a.onLockedGridCollapse,itemdblclick:a.onLockedGridItemDblClick,scope:a});if(a.lockedGridDependsOnSchedule){a.normalGrid.getView().on("itemupdate",a.onNormalViewItemUpdate,a)}if(this.partnerTimelinePanel){if(this.partnerTimelinePanel.rendered){this.setupPartnerTimelinePanel()}else{this.partnerTimelinePanel.on("afterrender",this.setupPartnerTimelinePanel,this)}}},onLockedGridCollapse:function(){if(this.normalGrid.collapsed){this.normalGrid.expand()}},onNormalGridCollapse:function(){var b=this;if(!b.normalGrid.reExpander){b.normalGrid.reExpander=b.normalGrid.placeholder}if(!b.lockedGrid.rendered){b.lockedGrid.on("render",b.onNormalGridCollapse,b,{delay:1})}else{var a=b.lockedGrid.headerCt&&b.lockedGrid.headerCt.getHeight();b.lastLockedWidth=b.lockedGrid.getWidth();b.lockedGrid.flex=1;b.lockedGrid.doLayout();if(b.lockedGrid.collapsed){b.lockedGrid.expand()}b.addCls("sch-normalgrid-collapsed")}},onNormalGridExpand:function(){this.removeCls("sch-normalgrid-collapsed");delete this.lockedGrid.flex;this.lockedGrid.setWidth(this.lastLockedWidth)},onNormalViewItemUpdate:function(a,b,d){if(this.lockedGridDependsOnSchedule){var c=this.lockedGrid.getView();c.suspendEvents();c.refreshNode(b);c.resumeEvents()}},setupPartnerTimelinePanel:function(){var g=this.partnerTimelinePanel;var d=g.down("splitter");var c=this.down("splitter");if(d){d.on("dragend",function(){this.lockedGrid.setWidth(g.lockedGrid.getWidth())},this)}if(c){c.on("dragend",function(){g.lockedGrid.setWidth(this.lockedGrid.getWidth())},this)}var b=this.partnerTimelinePanel.lockedGrid.getWidth();this.lockedGrid.setWidth(b);var a=this.partnerTimelinePanel.getSchedulingView().getEl(),e=this.getSchedulingView().getEl();this.partnerTimelinePanel.mon(e,"scroll",function(j,h){a.scrollTo("left",h.scrollLeft)});this.mon(a,"scroll",function(j,h){e.scrollTo("left",h.scrollLeft)})}},function(){var a="4.2.0";Ext.apply(Sch,{VERSION:"2.2.5"});if(Ext.versions.extjs.isLessThan(a)){alert("The Ext JS version you are using needs to be updated to at least "+a)}});Ext.define("Sch.panel.TimelineGridPanel",{extend:"Ext.grid.Panel",mixins:["Sch.mixin.TimelinePanel"],subGridXType:"gridpanel",initComponent:function(){this.callParent(arguments);this.getSchedulingView()._initializeTimelineView()}},function(){this.override(Sch.mixin.TimelinePanel.prototype.inheritables()||{})});Ext.define("Sch.panel.TimelineTreePanel",{extend:"Ext.tree.Panel",requires:["Ext.data.TreeStore","Sch.mixin.FilterableTreeView"],mixins:["Sch.mixin.TimelinePanel"],useArrows:true,rootVisible:false,lockedXType:"treepanel",initComponent:function(){this.callParent(arguments);this.getSchedulingView()._initializeTimelineView()}},function(){this.override(Sch.mixin.TimelinePanel.prototype.inheritables()||{})});Ext.define("Sch.plugin.Printable",{extend:"Ext.AbstractPlugin",lockableScope:"top",docType:"<!DOCTYPE HTML>",beforePrint:Ext.emptyFn,afterPrint:Ext.emptyFn,autoPrintAndClose:true,fakeBackgroundColor:true,scheduler:null,constructor:function(a){Ext.apply(this,a)},init:function(a){this.scheduler=a;a.print=Ext.Function.bind(this.print,this)},mainTpl:new Ext.XTemplate('{docType}<html class="x-border-box {htmlClasses}"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /><title>{title}</title>{styles}</head><body class="sch-print-body {bodyClasses}"><div class="sch-print-ct {componentClasses}" style="width:{totalWidth}px"><div class="sch-print-headerbg" style="border-left-width:{totalWidth}px;height:{headerHeight}px;"></div><div class="sch-print-header-wrap">{[this.printLockedHeader(values)]}{[this.printNormalHeader(values)]}</div>{[this.printLockedGrid(values)]}{[this.printNormalGrid(values)]}</div><script type="text/javascript">{setupScript}<\/script></body></html>',{printLockedHeader:function(a){var b="";if(a.lockedGrid){b+='<div style="left:-'+a.lockedScroll+"px;margin-right:-"+a.lockedScroll+"px;width:"+(a.lockedWidth+a.lockedScroll)+'px"';b+='class="sch-print-lockedheader x-grid-header-ct x-grid-header-ct-default x-docked x-docked-top x-grid-header-ct-docked-top x-grid-header-ct-default-docked-top x-box-layout-ct x-docked-noborder-top x-docked-noborder-right x-docked-noborder-left">';b+=a.lockedHeader;b+="</div>"}return b},printNormalHeader:function(a){var b="";if(a.normalGrid){b+='<div style="left:'+(a.lockedGrid?a.lockedWidth:"0")+"px;width:"+a.normalWidth+'px;" class="sch-print-normalheader x-grid-header-ct x-grid-header-ct-default x-docked x-docked-top x-grid-header-ct-docked-top x-grid-header-ct-default-docked-top x-box-layout-ct x-docked-noborder-top x-docked-noborder-right x-docked-noborder-left">';b+='<div style="margin-left:-'+a.normalScroll+'px">'+a.normalHeader+"</div>";b+="</div>"}return b},printLockedGrid:function(a){var b="";if(a.lockedGrid){b+='<div id="lockedRowsCt" style="left:-'+a.lockedScroll+"px;margin-right:-"+a.lockedScroll+"px;width:"+(a.lockedWidth+a.lockedScroll)+"px;top:"+a.headerHeight+'px;" class="sch-print-locked-rows-ct '+a.innerLockedClasses+' x-grid-inner-locked">';b+=a.lockedRows;b+="</div>"}return b},printNormalGrid:function(a){var b="";if(a.normalGrid){b+='<div id="normalRowsCt" style="left:'+(a.lockedGrid?a.lockedWidth:"0")+"px;top:"+a.headerHeight+"px;width:"+a.normalWidth+'px" class="sch-print-normal-rows-ct '+a.innerNormalClasses+'">';b+='<div style="position:relative;overflow:visible;margin-left:-'+a.normalScroll+'px">'+a.normalRows+"</div>";b+="</div>"}return b}}),getGridContent:function(p){var o=p.normalGrid,e=p.lockedGrid,q=e.getView(),h=o.getView(),l,d,n,k,m,b,j;this.beforePrint(p);if(e.collapsed&&!o.collapsed){b=e.getWidth()+o.getWidth()}else{b=o.getWidth();j=e.getWidth()}var c=q.store.getRange();d=q.tpl.apply(q.collectData(c,0));n=h.tpl.apply(h.collectData(c,0));k=q.el.getScroll().left;m=h.el.getScroll().left;var a=document.createElement("div");a.innerHTML=d;if(Ext.versions.extjs.isLessThan("4.2.1")){e.headerCt.items.each(function(t,s){if(t.isHidden()){Ext.fly(a).down("colgroup:nth-child("+(s+1)+") col").setWidth(0)}})}d=a.innerHTML;if(Sch.feature&&Sch.feature.AbstractTimeSpan){var g=(p.plugins||[]).concat(p.normalGrid.plugins||[]).concat(p.columnLinesFeature||[]);Ext.each(g,function(s){if(s instanceof Sch.feature.AbstractTimeSpan&&s.generateMarkup){n=s.generateMarkup(true)+n}})}this.afterPrint(p);return{normalHeader:o.headerCt.el.dom.innerHTML,lockedHeader:e.headerCt.el.dom.innerHTML,lockedGrid:!e.collapsed,normalGrid:!o.collapsed,lockedRows:d,normalRows:n,lockedScroll:k,normalScroll:m,lockedWidth:j-(Ext.isWebKit?1:0),normalWidth:b,headerHeight:o.headerCt.getHeight(),innerLockedClasses:e.view.el.dom.className,innerNormalClasses:o.view.el.dom.className+(this.fakeBackgroundColor?" sch-print-fake-background":""),width:p.getWidth()}},getStylesheets:function(){return Ext.getDoc().select('link[rel="stylesheet"]')},print:function(){var h=this.scheduler;if(!(this.mainTpl instanceof Ext.Template)){var a=22;this.mainTpl=Ext.create("Ext.XTemplate",this.mainTpl,{compiled:true,disableFormats:true})}var j=h.getView(),k=this.getStylesheets(),e=Ext.get(Ext.core.DomHelper.createDom({tag:"div"})),b;k.each(function(l){e.appendChild(l.dom.cloneNode(true))});b=e.dom.innerHTML+"";var g=this.getGridContent(h),c=this.mainTpl.apply(Ext.apply({waitText:this.waitText,docType:this.docType,htmlClasses:Ext.getBody().parent().dom.className,bodyClasses:Ext.getBody().dom.className,componentClasses:h.el.dom.className,title:h.title||"",styles:b,totalWidth:h.getWidth(),setupScript:"window.onload = function(){ ("+this.setupScript.toString()+")("+h.syncRowHeight+", "+this.autoPrintAndClose+", "+Ext.isChrome+", "+Ext.isIE+"); };"},g));var d=window.open("","printgrid");this.printWindow=d;d.document.write(c);d.document.close()},setupScript:function(e,a,d,b){var c=function(){if(e){var g=document.getElementById("lockedRowsCt"),p=document.getElementById("normalRowsCt"),h=g&&g.getElementsByTagName("tr"),n=p&&p.getElementsByTagName("tr"),l=n&&h?n.length:0;for(var k=0;k<l;k++){var j=n[k].clientHeight;var m=h[k].clientHeight;var o=Math.max(j,m)+"px";h[k].style.height=n[k].style.height=o}}if(a){window.print();if(!d){window.close()}}};if(b){setTimeout(c,0)}else{c()}}});Ext.define("Sch.plugin.Export",{extend:"Ext.util.Observable",alternateClassName:"Sch.plugin.PdfExport",mixins:["Ext.AbstractPlugin"],requires:["Ext.XTemplate"],lockableScope:"top",printServer:undefined,tpl:null,exportDialogClassName:"Sch.widget.ExportDialog",exportDialogConfig:{},defaultConfig:{format:"A4",orientation:"portrait",range:"complete",showHeader:true,singlePageExport:false},expandAllBeforeExport:false,pageSizes:{A5:{width:5.8,height:8.3},A4:{width:8.3,height:11.7},A3:{width:11.7,height:16.5},Letter:{width:8.5,height:11},Legal:{width:8.5,height:14}},openAfterExport:true,fileFormat:"pdf",DPI:72,constructor:function(a){a=a||{};if(a.exportDialogConfig){Ext.Object.each(this.defaultConfig,function(c,b,e){var d=a.exportDialogConfig[c];if(d){e[c]=d}})}this.callParent([a]);if(!this.tpl){this.tpl=new Ext.XTemplate('<!DOCTYPE html><html class="x-border-box {htmlClasses}"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /><title>{column}/{row}</title>{styles}</head><body class="x-webkit sch-export {bodyClasses}">','<tpl if="showHeader">','<div class="sch-export-header" style="width:{totalWidth}px"><h2>{column}/{row}</h2></div>',"</tpl>",'<div class="{componentClasses}" style="height:{bodyHeight}px; width:{totalWidth}px; position: relative !important">{HTML}</div></body></html>',{disableFormats:true})}this.addEvents("hidedialogwindow","showdialogerror","updateprogressbar");this.setFileFormat(this.fileFormat)},init:function(a){this.scheduler=a;a.showExportDialog=Ext.Function.bind(this.showExportDialog,this);a.doExport=Ext.Function.bind(this.doExport,this)},setFileFormat:function(a){if(typeof a!=="string"){this.fileFormat="pdf"}else{a=a.toLowerCase();if(a==="png"){this.fileFormat=a}else{this.fileFormat="pdf"}}},showExportDialog:function(){var b=this,a=b.scheduler.getSchedulingView();if(b.win){b.win.destroy();b.win=null}b.win=Ext.create(b.exportDialogClassName,{plugin:b,exportDialogConfig:Ext.apply({startDate:b.scheduler.getStart(),endDate:b.scheduler.getEnd(),rowHeight:a.rowHeight,columnWidth:a.timeAxisViewModel.getTickWidth(),defaultConfig:b.defaultConfig},b.exportDialogConfig)});b.saveRestoreData();b.win.show()},saveRestoreData:function(){var b=this.scheduler,a=b.getSchedulingView(),c=b.normalGrid,d=b.lockedGrid;this.restoreSettings={width:b.getWidth(),height:b.getHeight(),rowHeight:a.rowHeight,columnWidth:a.timeAxisViewModel.getTickWidth(),startDate:b.getStart(),endDate:b.getEnd(),normalWidth:c.getWidth(),normalLeft:c.getEl().getStyle("left"),lockedWidth:d.getWidth(),lockedCollapse:d.collapsed,normalCollapse:c.collapsed}},getStylesheets:function(){var c=Ext.getDoc().select('link[rel="stylesheet"]'),a=Ext.get(Ext.core.DomHelper.createDom({tag:"div"})),b;c.each(function(d){a.appendChild(d.dom.cloneNode(true))});b=a.dom.innerHTML+"";return b},doExport:function(o,k,s){this.mask();var N=this,q=N.scheduler,t=q.getSchedulingView(),n=N.getStylesheets(),L=o||N.defaultConfig,u=q.normalGrid,I=q.lockedGrid,D=u.headerCt.getHeight();if(!N.restoreSettings){N.saveRestoreData()}u.expand();I.expand();N.fireEvent("updateprogressbar",0.1);if(this.expandAllBeforeExport&&q.expandAll){q.expandAll()}var M=q.timeAxis.getTicks(),x=t.timeAxisViewModel.getTickWidth(),G,e,h;if(!L.singlePageExport){if(L.orientation==="landscape"){G=N.pageSizes[L.format].height*N.DPI;h=N.pageSizes[L.format].width*N.DPI}else{G=N.pageSizes[L.format].width*N.DPI;h=N.pageSizes[L.format].height*N.DPI}var K=41;e=Math.floor(h)-D-(L.showHeader?K:0)}t.timeAxisViewModel.suppressFit=true;if(L.range!=="complete"){var d,b,m,c,A;if(L.range==="date"){d=new Date(L.dateFrom);b=new Date(L.dateTo);if(Sch.util.Date.getDurationInDays(d,b<1)){b=Sch.util.Date.add(b,Sch.util.Date.DAY,1);b=Sch.util.Date.constrain(b,q.getStart(),q.getEnd())}}else{if(L.range==="current"){m=t.getVisibleDateRange();d=m.startDate;b=m.endDate;if(!b){b=t.timeAxis.getEnd()}}}c=Math.floor(t.timeAxis.getTickFromDate(d));A=Math.floor(t.timeAxis.getTickFromDate(b));M=Ext.Array.filter(M,function(l,a){return a>=c&&a<=A});q.setTimeSpan(d,b)}var F,C,j,H;if(!L.singlePageExport){q.setWidth(G);q.setTimeColumnWidth(x);t.timeAxisViewModel.setTickWidth(x);j=N.calculatePages(L,M,x,G,e);H={ticks:M,printHeight:e,paperWidth:G,headerHeight:D,styles:n,config:L};C=N.getExportJsonHtml(j,H);F=L.format}else{C=N.getExportJsonHtml(null,{styles:n,config:L,timeColumnWidth:x,ticks:M});var g=N.getRealSize(),z=Ext.Number.toFixed(g.width/N.DPI,1),y=Ext.Number.toFixed(g.height/N.DPI,1);F=z+"in*"+y+"in"}N.fireEvent("updateprogressbar",0.4);if(N.printServer){if(!N.debug&&!N.test){Ext.Ajax.request({type:"POST",url:N.printServer,timeout:60000,params:{html:{array:C},format:F,orientation:L.orientation,range:L.range,fileFormat:N.fileFormat},success:function(a){N.onSuccess(a,k,s)},failure:function(a){N.onFailure(a,s)},scope:N})}else{if(N.debug){var p,J=Ext.JSON.decode(C);for(var E=0,B=J.length;E<B;E++){p=window.open();p.document.write(J[E].html);p.document.close()}}}}else{throw"Print server URL is not defined, please specify printServer config"}t.timeAxisViewModel.suppressFit=false;N.restorePanel();if(N.test){return{htmlArray:Ext.JSON.decode(C),calculatedPages:j}}},getRealSize:function(){var c=this.scheduler,b=c.normalGrid.headerCt.getHeight(),a=b+c.lockedGrid.getView().getEl().down(".x-grid-table").getHeight(),d=c.lockedGrid.headerCt.getEl().first().getWidth()+c.normalGrid.body.select(".x-grid-table").first().getWidth();return{width:d,height:a}},calculatePages:function(x,y,m,u,b){var z=this,l=z.scheduler,w=l.lockedGrid,c=l.getSchedulingView().rowHeight,A=w.headerCt,t=A.getEl().first().getWidth(),k=null,n=0;if(t>w.getWidth()){var h=0,d=0,q=0,s=false,e;k=[];w.headerCt.items.each(function(E,C,B){e=E.width;if(!q||q+e<u){q+=e;if(C===B-1){s=true;var D=u-q;n=Math.floor(D/m)}}else{s=true}if(s){d=C;k.push({firstColumnIdx:h,lastColumnIdx:d,totalColumnsWidth:q||e});h=d+1;q=0}})}else{n=Math.floor((u-t)/m)}var p=Math.floor(u/m),a=Math.ceil((y.length-n)/p),j=l.getSchedulingView().store.getCount(),g=Math.floor(b/c),o=Math.ceil(j/g);if(!k||a===0){a+=1}return{columnsAmountLocked:n,columnsAmountNormal:p,lockedColumnPages:k,rowsAmount:g,rowPages:o,columnPages:a,timeColumnWidth:m,lockedGridWidth:t,rowHeight:c,panelHTML:{}}},getExportJsonHtml:function(g,H){var K=this,o=K.scheduler,B=[],y=new RegExp(/x-ie\d?|x-gecko/g),E=Ext.getBody().dom.className.replace(y,""),s=o.el.dom.className,n=H.styles,I=H.config,J=H.ticks,p,d,e,q,t;if(Ext.isIE){E+=" x-ie-export"}o.timeAxis.autoAdjust=false;if(!I.singlePageExport){var u=g.columnsAmountLocked,x=g.columnsAmountNormal,m=g.lockedColumnPages,j=g.rowsAmount,w=g.rowPages,a=g.columnPages,F=H.paperWidth,c=H.printHeight,C=H.headerHeight,l=null,b,h;t=g.timeColumnWidth;p=g.panelHTML;if(m){h=m.length;a+=h}for(var D=0;D<a;D+=1){if(m&&D<h){if(D===h-1&&u!==0){o.normalGrid.show();l=Ext.Number.constrain(u-1,0,J.length-1);o.setTimeSpan(J[0].start,J[l].end)}else{o.normalGrid.hide()}var G=m[D];this.showLockedColumns();this.hideLockedColumns(G.firstColumnIdx,G.lastColumnIdx);o.lockedGrid.setWidth(G.totalColumnsWidth+1)}else{if(D===0){this.showLockedColumns();if(u!==0){o.normalGrid.show()}l=Ext.Number.constrain(u-1,0,J.length-1);o.setTimeSpan(J[0].start,J[l].end)}else{o.lockedGrid.hide();o.normalGrid.show();if(l===null){l=-1}if(J[l+x]){o.setTimeSpan(J[l+1].start,J[l+x].end);l=l+x}else{o.setTimeSpan(J[l+1].start,J[J.length-1].end)}}}o.setTimeColumnWidth(t,true);o.getSchedulingView().timeAxisViewModel.setTickWidth(t);for(var A=0;A<w;A+=1){K.hideRows(j,A);p.dom=o.body.dom.innerHTML;p.k=A;p.i=D;d=K.resizePanelHTML(p);q=K.tpl.apply(Ext.apply({bodyClasses:E,bodyHeight:c+C,componentClasses:s,styles:n,showHeader:I.showHeader,HTML:d.dom.innerHTML,totalWidth:F,headerHeight:C,column:D+1,row:A+1}));e={html:q};B.push(e);K.showRows()}}}else{t=H.timeColumnWidth;p=g?g.panelHTML:{};o.setTimeSpan(J[0].start,J[J.length-1].end);o.lockedGrid.setWidth(o.lockedGrid.headerCt.getEl().first().getWidth());o.setTimeColumnWidth(t);o.getSchedulingView().timeAxisViewModel.setTickWidth(t);var z=K.getRealSize();Ext.apply(p,{dom:o.body.dom.innerHTML,column:1,row:1});d=K.resizePanelHTML(p);q=K.tpl.apply(Ext.apply({bodyClasses:E,bodyHeight:z.height,componentClasses:s,styles:n,showHeader:false,HTML:d.dom.innerHTML,totalWidth:z.width}));e={html:q};B.push(e)}o.timeAxis.autoAdjust=true;return Ext.JSON.encode(B)},resizePanelHTML:function(g){var m=Ext.get(Ext.core.DomHelper.createDom({tag:"div",html:g.dom})),l=this.scheduler,d=l.lockedGrid,k=l.normalGrid,h,e,b;if(Ext.isIE6||Ext.isIE7||Ext.isIEQuirks){var j=document.createDocumentFragment(),a,c;if(j.getElementById){a="getElementById";c=""}else{a="querySelector";c="#"}j.appendChild(m.dom);h=d.body.child(".x-grid-view")?d.body.child(".x-grid-view"):d.body.child(".x-tree-view");e=[j[a](c+l.id+"-targetEl"),j[a](c+l.id+"-innerCt"),j[a](c+d.id),j[a](c+d.body.id),j[a](c+h.id)];b=[j[a](c+k.id),j[a](c+k.headerCt.id),j[a](c+k.body.id),j[a](c+k.getView().id)];Ext.Array.each(e,function(n){if(n!==null){n.style.height="100%";n.style.width="100%"}});Ext.Array.each(b,function(o,n){if(o!==null){if(n===1){o.style.width="100%"}else{o.style.height="100%";o.style.width="100%"}}});m.dom.innerHTML=j.firstChild.innerHTML}else{h=d.body.child(".x-grid-view")||d.body.child(".x-tree-view");e=[m.select("#"+l.id+"-targetEl").first(),m.select("#"+l.id+"-innerCt").first(),m.select("#"+d.id).first(),m.select("#"+d.body.id).first(),m.select("#"+h.id)];b=[m.select("#"+k.id).first(),m.select("#"+k.headerCt.id).first(),m.select("#"+k.body.id).first(),m.select("#"+k.getView().id).first()];Ext.Array.each(e,function(o,n){if(o){o.setHeight("100%");if(n!==3&&n!==2){o.setWidth("100%")}}});Ext.Array.each(b,function(o,n){if(n===1){o.setWidth("100%")}else{o.applyStyles({height:"100%",width:"100%"})}})}return m},getWin:function(){return this.win||null},onSuccess:function(c,j,b){var d=this,h=d.getWin(),a;try{a=Ext.JSON.decode(c.responseText)}catch(g){this.onFailure(c,b);return}d.fireEvent("updateprogressbar",1);if(a.success){setTimeout(function(){d.fireEvent("hidedialogwindow");d.unmask();if(d.openAfterExport){window.open(a.url,"ExportedPanel")}},h?h.hideTime:3000)}else{d.fireEvent("showdialogerror",h,a.msg);d.unmask()}if(j){j.call(this,c)}},onFailure:function(b,a){var c=this.getWin(),d=b.status===200?b.responseText:b.statusText;this.fireEvent("showdialogerror",c,d);this.unmask();if(a){a.call(this,b)}},hideRows:function(d,g){var c=this.scheduler.lockedGrid.getEl().select(".x-grid-row"),a=this.scheduler.normalGrid.getEl().select(".x-grid-row"),h=d*g,b=h+d;for(var e=0;e<a.elements.length;e+=1){if(e<h||e>=b){c.elements[e].className+=" sch-none";a.elements[e].className+=" sch-none"}}},showRows:function(){this.scheduler.getEl().select(".x-grid-row").each(function(a){a.removeCls("sch-none")})},hideLockedColumns:function(c,e){var d=this.scheduler.lockedGrid.headerCt.items.items;for(var b=0,a=d.length;b<a;b+=1){if(b<c||b>e){d[b].hide()}}},showLockedColumns:function(){this.scheduler.lockedGrid.headerCt.items.each(function(a){a.show()})},mask:function(){var a=Ext.getBody().mask();a.addCls("sch-export-mask")},unmask:function(){Ext.getBody().unmask()},restorePanel:function(){var b=this.scheduler,a=this.restoreSettings;b.setWidth(a.width);b.setHeight(a.height);b.setTimeSpan(a.startDate,a.endDate);b.setTimeColumnWidth(a.columnWidth,true);b.getSchedulingView().setRowHeight(a.rowHeight);b.lockedGrid.show();b.normalGrid.setWidth(a.normalWidth);b.normalGrid.getEl().setStyle("left",a.normalLeft);b.lockedGrid.setWidth(a.lockedWidth);if(a.lockedCollapse){b.lockedGrid.collapse()}if(a.normalCollapse){b.normalGrid.collapse()}},destroy:function(){if(this.win){this.win.destroy()}}});Ext.define("Sch.widget.ResizePicker",{extend:"Ext.Panel",alias:"widget.dualrangepicker",width:200,height:200,border:true,collapsible:false,bodyStyle:"position:absolute; margin:5px",verticalCfg:{height:120,value:24,increment:2,minValue:20,maxValue:80,reverse:true,disabled:true},horizontalCfg:{width:120,value:100,minValue:25,increment:5,maxValue:200,disable:true},initComponent:function(){var a=this;a.addEvents("change","changecomplete","select");a.horizontalCfg.value=a.dialogConfig.columnWidth;a.verticalCfg.value=a.dialogConfig.rowHeight;a.verticalCfg.disabled=a.dialogConfig.scrollerDisabled||false;a.dockedItems=[a.vertical=new Ext.slider.Single(Ext.apply({dock:"left",style:"margin-top:10px",vertical:true,listeners:{change:a.onSliderChange,changecomplete:a.onSliderChangeComplete,scope:a}},a.verticalCfg)),a.horizontal=new Ext.slider.Single(Ext.apply({dock:"top",style:"margin-left:28px",listeners:{change:a.onSliderChange,changecomplete:a.onSliderChangeComplete,scope:a}},a.horizontalCfg))];a.callParent(arguments)},afterRender:function(){var b=this;b.addCls("sch-ux-range-picker");b.valueHandle=this.body.createChild({cls:"sch-ux-range-value",cn:{tag:"span"}});b.valueSpan=this.valueHandle.down("span");var a=new Ext.dd.DD(this.valueHandle);Ext.apply(a,{startDrag:function(){b.dragging=true;this.constrainTo(b.body)},onDrag:function(){b.onHandleDrag.apply(b,arguments)},endDrag:function(){b.onHandleEndDrag.apply(b,arguments);b.dragging=false},scope:this});this.setValues(this.getValues());this.callParent(arguments);this.body.on("click",this.onBodyClick,this)},onBodyClick:function(c,a){var b=[c.getXY()[0]-8-this.body.getX(),c.getXY()[1]-8-this.body.getY()];this.valueHandle.setLeft(Ext.Number.constrain(b[0],0,this.getAvailableWidth()));this.valueHandle.setTop(Ext.Number.constrain(b[1],0,this.getAvailableHeight()));this.setValues(this.getValuesFromXY([this.valueHandle.getLeft(true),this.valueHandle.getTop(true)]));this.onSliderChangeComplete()},getAvailableWidth:function(){return this.body.getWidth()-18},getAvailableHeight:function(){return this.body.getHeight()-18},onHandleDrag:function(){this.setValues(this.getValuesFromXY([this.valueHandle.getLeft(true),this.valueHandle.getTop(true)]))},onHandleEndDrag:function(){this.setValues(this.getValuesFromXY([this.valueHandle.getLeft(true),this.valueHandle.getTop(true)]))},getValuesFromXY:function(d){var c=d[0]/this.getAvailableWidth();var a=d[1]/this.getAvailableHeight();var e=Math.round((this.horizontalCfg.maxValue-this.horizontalCfg.minValue)*c);var b=Math.round((this.verticalCfg.maxValue-this.verticalCfg.minValue)*a)+this.verticalCfg.minValue;return[e+this.horizontalCfg.minValue,b]},getXYFromValues:function(d){var b=this.horizontalCfg.maxValue-this.horizontalCfg.minValue;var g=this.verticalCfg.maxValue-this.verticalCfg.minValue;var a=Math.round((d[0]-this.horizontalCfg.minValue)*this.getAvailableWidth()/b);var c=d[1]-this.verticalCfg.minValue;var e=Math.round(c*this.getAvailableHeight()/g);return[a,e]},updatePosition:function(){var a=this.getValues();var b=this.getXYFromValues(a);this.valueHandle.setLeft(Ext.Number.constrain(b[0],0,this.getAvailableWidth()));if(this.verticalCfg.disabled){this.valueHandle.setTop(this.dialogConfig.rowHeight)}else{this.valueHandle.setTop(Ext.Number.constrain(b[1],0,this.getAvailableHeight()))}this.positionValueText();this.setValueText(a)},positionValueText:function(){var a=this.valueHandle.getTop(true);var b=this.valueHandle.getLeft(true);this.valueSpan.setLeft(b>30?-30:10);this.valueSpan.setTop(a>10?-20:20)},setValueText:function(a){if(this.verticalCfg.disabled){a[1]=this.dialogConfig.rowHeight}this.valueSpan.update("["+a.toString()+"]")},setValues:function(a){this.horizontal.setValue(a[0]);if(this.verticalCfg.reverse){if(!this.verticalCfg.disabled){this.vertical.setValue(this.verticalCfg.maxValue+this.verticalCfg.minValue-a[1])}}else{if(!this.verticalCfg.disabled){this.vertical.setValue(a[1])}}if(!this.dragging){this.updatePosition()}this.positionValueText();this.setValueText(a)},getValues:function(){var a=this.vertical.getValue();if(this.verticalCfg.reverse){a=this.verticalCfg.maxValue-a+this.verticalCfg.minValue}return[this.horizontal.getValue(),a]},onSliderChange:function(){this.fireEvent("change",this,this.getValues());if(!this.dragging){this.updatePosition()}},onSliderChangeComplete:function(){this.fireEvent("changecomplete",this,this.getValues())},afterLayout:function(){this.callParent(arguments);this.updatePosition()}});Ext.define("Sch.widget.ExportDialogForm",{extend:"Ext.form.Panel",requires:["Ext.ProgressBar","Sch.widget.ResizePicker"],border:false,bodyPadding:"10 10 0 10",autoHeight:true,initComponent:function(){var a=this;a.createFields();Ext.apply(this,{fieldDefaults:{labelAlign:"top",labelWidth:100,anchor:"90%"},items:[a.rangeField,a.resizePicker,a.dateFromField,a.dateToField,a.showHeaderField,a.exportToSingleField,a.formatField,a.orientationField,a.progressBar||a.createProgressBar()]});a.callParent(arguments);a.on({hideprogressbar:a.hideProgressBar,showprogressbar:a.showProgressBar,updateprogressbar:a.updateProgressBar,scope:a})},createFields:function(){var d=this,a=d.dialogConfig;d.rangeField=new Ext.form.field.ComboBox({xtype:"combo",value:a.defaultConfig.range,triggerAction:"all",cls:"sch-export-dialog-range",forceSelection:true,editable:false,fieldLabel:a.rangeFieldLabel,name:"range",queryMode:"local",displayField:"name",valueField:"value",store:Ext.create("Ext.data.Store",{fields:["name","value"],data:[{name:a.completeViewText,value:"complete"},{name:a.dateRangeText,value:"date"},{name:a.currentViewText,value:"current"}]}),listeners:{change:d.onRangeChange,scope:d}});d.resizePicker=new Sch.widget.ResizePicker({dialogConfig:a,hidden:true,padding:"0 0 5 0"});d.dateFromField=new Ext.form.field.Date({fieldLabel:a.dateRangeFromText,labelAlign:"left",labelWidth:80,baseBodyCls:"sch-exportdialogform-date",padding:"10 0 5 0",name:"dateFrom",format:a.dateRangeFormat||Ext.Date.defaultFormat,hidden:true,allowBlank:false,maxValue:a.endDate,minValue:a.startDate,value:a.startDate,validator:function(e){return Ext.Date.parse(e,this.format)>=new Date(a.startDate)}});d.dateToField=new Ext.form.field.Date({fieldLabel:a.dateRangeToText,labelAlign:"left",labelWidth:80,name:"dateTo",format:a.dateRangeFormat||Ext.Date.defaultFormat,baseBodyCls:"sch-exportdialogform-date",hidden:true,allowBlank:false,maxValue:a.endDate,minValue:a.startDate,value:a.endDate,validator:function(e){return Ext.Date.parse(e,this.format)<=new Date(a.endDate)}});d.showHeaderField=new Ext.form.field.Checkbox({xtype:"checkboxfield",fieldLabel:d.dialogConfig.showHeaderLabel,name:"showHeader",checked:a.defaultConfig.showHeaderLabel?true:false});d.exportToSingleField=new Ext.form.field.Checkbox({xtype:"checkboxfield",fieldLabel:d.dialogConfig.exportToSingleLabel,name:"singlePageExport",checked:a.defaultConfig.singlePageExport?true:false});d.formatField=new Ext.form.field.ComboBox({value:a.defaultConfig.format,triggerAction:"all",forceSelection:true,editable:false,fieldLabel:a.formatFieldLabel,name:"format",queryMode:"local",store:["A5","A4","A3","Letter","Legal"]});var c=a.defaultConfig.orientation==="portrait"?'class="sch-none"':"",b=a.defaultConfig.orientation==="landscape"?'class="sch-none"':"";d.orientationField=new Ext.form.field.ComboBox({value:a.defaultConfig.orientation,triggerAction:"all",baseBodyCls:"sch-exportdialogform-orientation",forceSelection:true,editable:false,fieldLabel:d.dialogConfig.orientationFieldLabel,afterSubTpl:new Ext.XTemplate('<span id="sch-exportdialog-imagePortrait" '+b+'></span><span id="sch-exportdialog-imageLandscape" '+c+"></span>"),name:"orientation",displayField:"name",valueField:"value",queryMode:"local",store:Ext.create("Ext.data.Store",{fields:["name","value"],data:[{name:a.orientationPortraitText,value:"portrait"},{name:a.orientationLandscapeText,value:"landscape"}]}),listeners:{change:function(g,e){switch(e){case"landscape":Ext.fly("sch-exportdialog-imagePortrait").toggleCls("sch-none");Ext.fly("sch-exportdialog-imageLandscape").toggleCls("sch-none");break;case"portrait":Ext.fly("sch-exportdialog-imagePortrait").toggleCls("sch-none");Ext.fly("sch-exportdialog-imageLandscape").toggleCls("sch-none");break}}}})},createProgressBar:function(){return this.progressBar=new Ext.ProgressBar({text:this.config.progressBarText,animate:true,hidden:true,margin:"4px 0 10px 0"})},onRangeChange:function(b,a){switch(a){case"complete":this.dateFromField.hide();this.dateToField.hide();this.resizePicker.hide();break;case"date":this.dateFromField.show();this.dateToField.show();this.resizePicker.hide();break;case"current":this.dateFromField.hide();this.dateToField.hide();this.resizePicker.show();this.resizePicker.expand(true);break}},showProgressBar:function(){if(this.progressBar){this.progressBar.show()}},hideProgressBar:function(){if(this.progressBar){this.progressBar.hide()}},updateProgressBar:function(a){if(this.progressBar){this.progressBar.updateProgress(a)}}});Ext.define("Sch.widget.ExportDialog",{alternateClassName:"Sch.widget.PdfExportDialog",extend:"Ext.window.Window",alias:"widget.exportdialog",modal:false,width:240,cls:"sch-exportdialog",frame:false,layout:"fit",draggable:false,padding:0,plugin:null,buttonsPanel:null,buttonsPanelScope:null,progressBar:null,generalError:"An error occured, try again.",title:"Export Settings",formatFieldLabel:"Paper format",orientationFieldLabel:"Orientation",rangeFieldLabel:"Export range",showHeaderLabel:"Add page number",exportToSingleLabel:"Export as single page",orientationPortraitText:"Portrait",orientationLandscapeText:"Landscape",completeViewText:"Complete schedule",currentViewText:"Current view",dateRangeText:"Date range",dateRangeFromText:"Export from",pickerText:"Resize column/rows to desired value",dateRangeToText:"Export to",exportButtonText:"Export",cancelButtonText:"Cancel",progressBarText:"Exporting...",dateRangeFormat:"",requires:["Sch.widget.ExportDialogForm"],constructor:function(a){Ext.apply(this,a.exportDialogConfig);this.config=Ext.apply({progressBarText:this.progressBarText,cancelButtonText:this.cancelButtonText,exportButtonText:this.exportButtonText,dateRangeToText:this.dateRangeToText,pickerText:this.pickerText,dateRangeFromText:this.dateRangeFromText,dateRangeText:this.dateRangeText,currentViewText:this.currentViewText,formatFieldLabel:this.formatFieldLabel,orientationFieldLabel:this.orientationFieldLabel,rangeFieldLabel:this.rangeFieldLabel,showHeaderLabel:this.showHeaderLabel,exportToSingleLabel:this.exportToSingleLabel,orientationPortraitText:this.orientationPortraitText,orientationLandscapeText:this.orientationLandscapeText,completeViewText:this.completeViewText,dateRangeFormat:this.dateRangeFormat,defaultConfig:this.defaultConfig},a.exportDialogConfig);this.callParent(arguments)},initComponent:function(){var b=this,a={hidedialogwindow:b.destroy,showdialogerror:b.showError,updateprogressbar:function(c){b.fireEvent("updateprogressbar",c)},scope:this};Ext.apply(this,{items:[b.form=b.buildForm(b.config)],fbar:b.buildButtons(b.buttonsPanelScope||b)});b.callParent(arguments);b.plugin.on(a)},afterRender:function(){var a=this;a.on("changecomplete",function(c,b){a.plugin.scheduler.setTimeColumnWidth(b[0],true);if(!a.config.scrollerDisabled){if(a.form.resizePicker.verticalCfg.reverse){var d=b[1];a.plugin.scheduler.getSchedulingView().setRowHeight(d)}else{a.plugin.scheduler.getSchedulingView().setRowHeight(b[1])}}});a.relayEvents(a.form.resizePicker,["change","changecomplete","select"]);a.form.relayEvents(a,["updateprogressbar","hideprogressbar","showprogressbar"]);a.callParent(arguments)},buildButtons:function(a){return[{xtype:"button",scale:"medium",text:this.exportButtonText,handler:function(){var c=this.form.getForm();if(c.isValid()){var b=c.getValues();this.fireEvent("showprogressbar");this.plugin.doExport(b)}},scope:a},{xtype:"button",scale:"medium",text:this.cancelButtonText,handler:function(){this.destroy()},scope:a}]},buildForm:function(a){return new Sch.widget.ExportDialogForm({progressBar:this.progressBar,dialogConfig:a})},showError:function(b,a){var c=b,d=a||c.generalError;c.fireEvent("hideprogressbar");Ext.Msg.alert("",d)}});Ext.define("Gnt.model.CalendarDay",{requires:["Ext.data.Types"],extend:"Sch.model.Customizable",idProperty:"Id",customizableFields:[{name:"Date",type:"date",dateFormat:"c",convert:function(b,a){if(!b){return}var c=Ext.data.Types.DATE.convert.call(this,b);if(c){Ext.Date.clearTime(c)}return c}},{name:"Weekday",type:"int"},{name:"OverrideStartDate",type:"date",dateFormat:"c"},{name:"OverrideEndDate",type:"date",dateFormat:"c"},{name:"Type",defaultValue:"DAY"},{name:"Id"},{name:"IsWorkingDay",type:"boolean",defaultValue:false},{name:"Cls",defaultValue:"gnt-holiday"},"Name",{name:"Availability",convert:function(b,a){if(b){return Ext.typeOf(b)==="string"?[b]:b}else{return[]}}}],availabilityCache:null,weekDayField:"Weekday",overrideStartDateField:"OverrideStartDate",overrideEndDateField:"OverrideEndDate",typeField:"Type",dateField:"Date",isWorkingDayField:"IsWorkingDay",clsField:"Cls",nameField:"Name",availabilityField:"Availability",setDate:function(a){if(a){a=Ext.Date.clearTime(a,true)}this.set(this.dateField,a)},clearDate:function(){this.set(this.dateField,null)},getAvailability:function(b){var c=this;if(b){return this.get(this.availabilityField)}if(this.availabilityCache){return this.availabilityCache}var a=[];Ext.Array.each(this.get(this.availabilityField),function(d){a.push(Ext.typeOf(d)==="string"?c.parseInterval(d):d)});this.verifyAvailability(a);return this.availabilityCache=a},setAvailability:function(a){this.availabilityCache=null;this.set(this.availabilityField,this.stringifyIntervals(a));this.getAvailability()},verifyAvailability:function(b){b.sort(function(g,e){return g.startTime-e.startTime});Ext.Array.each(b,function(e){if(e.startTime>e.endTime){throw new Error("Start time "+Ext.Date.format(e.startTime,"H:i")+" is greater than end time "+Ext.Date.format(e.endTime,"H:i"))}});for(var a=1;a<b.length;a++){var c=b[a-1];var d=b[a];if(c.endTime>d.startTime){throw new Error("Availability intervals should not intersect: ["+this.stringifyInterval(c)+"] and ["+this.stringifyInterval(d)+"]")}}},prependZero:function(a){return a<10?"0"+a:a},stringifyInterval:function(b){var c=b.startTime;var a=b.endTime;return this.prependZero(c.getHours())+":"+this.prependZero(c.getMinutes())+"-"+this.prependZero(a.getHours())+":"+this.prependZero(a.getMinutes())},stringifyIntervals:function(b){var c=this;var a=[];Ext.Array.each(b,function(d){if(Ext.typeOf(d)==="string"){a.push(d)}else{a.push(c.stringifyInterval(d))}});return a},parseInterval:function(b){var a=/(\d\d):(\d\d)-(\d\d):(\d\d)/.exec(b);if(!a){throw"Invalid format for availability string: "+b+". It should have exact format: hh:mm-hh:mm"}return{startTime:new Date(0,0,0,a[1],a[2]),endTime:new Date(0,0,0,a[3],a[4])}},getTotalHours:function(){return this.getTotalMS()/1000/60/60},getTotalMS:function(){var a=0;Ext.Array.each(this.getAvailability(),function(b){a+=b.endTime-b.startTime});return a},addAvailabilityInterval:function(d,b){var a;if(d instanceof Date){a={startTime:d,endTime:b}}else{a=this.parseInterval(d+(b?"-"+b:""))}var c=this.getAvailability().concat(a);this.verifyAvailability(c);this.setAvailability(c)},removeAvailbilityInterval:function(a){var b=this.getAvailability();b.splice(a,1);this.setAvailability(b)},getAvailabilityIntervalsFor:function(d){d=typeof d=="number"?new Date(d):d;var c=d.getFullYear();var e=d.getMonth();var b=d.getDate();var a=[];Ext.Array.each(this.getAvailability(),function(g){var h=g.endTime.getDate();a.push({startDate:new Date(c,e,b,g.startTime.getHours(),g.startTime.getMinutes()),endDate:new Date(c,e,b+(h==1?1:0),g.endTime.getHours(),g.endTime.getMinutes())})});return a},getAvailabilityStartFor:function(b){var a=this.getAvailabilityIntervalsFor(b);if(!a.length){return null}return a[0].startDate},getAvailabilityEndFor:function(b){var a=this.getAvailabilityIntervalsFor(b);if(!a.length){return null}return a[a.length-1].endDate}});Ext.define("Gnt.model.Assignment",{extend:"Sch.model.Customizable",idProperty:"Id",customizableFields:[{name:"Id"},{name:"ResourceId"},{name:"TaskId"},{name:"Units",type:"float",defaultValue:100}],resourceIdField:"ResourceId",taskIdField:"TaskId",unitsField:"Units",isPersistable:function(){var a=this.getTask(),b=this.getResource();return a&&!a.phantom&&b&&!b.phantom},getUnits:function(){return Math.max(0,this.get(this.unitsField))},setUnits:function(a){if(a<0){throw"`Units` value for an assignment can't be less than 0"}this.set(this.unitsField,a)},getResourceName:function(){var a=this.getResource();if(a){return a.getName()}return""},getTask:function(a){return(a||this.stores[0].getTaskStore()).getByInternalId(this.getTaskId())},getResource:function(){return this.stores[0].getResourceStore().getByInternalId(this.getResourceId())},getInternalId:function(){return this.getId()||this.internalId},getEffort:function(b){var a=this.getTask();var c=0;a.forEachAvailabilityIntervalWithResources({startDate:a.getStartDate(),endDate:a.getEndDate(),resources:[this.getResource()]},function(h,g,e){var j;for(var d in e){j=e[d].units}c+=(g-h)*j/100});return a.getProjectCalendar().convertMSDurationToUnit(c,b||a.getEffortUnit())}});Ext.define("Gnt.model.Dependency",{extend:"Sch.model.Customizable",inheritableStatics:{Type:{StartToStart:0,StartToEnd:1,EndToStart:2,EndToEnd:3}},idProperty:"Id",customizableFields:[{name:"Id"},{name:"From"},{name:"To"},{name:"Type",type:"int",defaultValue:2},{name:"Lag",type:"number",defaultValue:0},{name:"LagUnit",type:"string",defaultValue:"d",convert:function(a){return a||"d"}},{name:"Cls"}],fromField:"From",toField:"To",typeField:"Type",lagField:"Lag",lagUnitField:"LagUnit",clsField:"Cls",fromTask:null,toTask:null,isHighlighted:false,constructor:function(a){this.callParent(arguments);if(a){if(a.fromTask){if(a.fromTask instanceof Gnt.model.Task){this.setSourceTask(a.fromTask)}else{this.setSourceId(a.fromTask)}}if(a.toTask){if(a.toTask instanceof Gnt.model.Task){this.setTargetTask(a.toTask)}else{this.setTargetId(a.toTask)}}if(Ext.isDefined(a.type)){this.setType(a.type)}if(Ext.isDefined(a.lag)){this.setLag(a.lag)}if(Ext.isDefined(a.lagUnit)){this.setLagUnit(a.lagUnit)}}},getTaskStore:function(){return this.stores[0].taskStore},getSourceTask:function(a){return(a||this.getTaskStore()).getById(this.getSourceId())},setSourceTask:function(a){this.setSourceId(a.getId()||a.internalId)},getTargetTask:function(a){return(a||this.getTaskStore()).getById(this.getTargetId())},setTargetTask:function(a){this.setTargetId(a.getId()||a.internalId)},getSourceId:function(){return this.get(this.fromField)},setSourceId:function(a){this.set(this.fromField,a)},getTargetId:function(){return this.get(this.toField)},setTargetId:function(a){this.set(this.toField,a)},getLagUnit:function(){return this.get(this.lagUnitField)||"d"},isPersistable:function(){var a=this.getSourceTask(),b=this.getTargetTask();return a&&!a.phantom&&b&&!b.phantom},isValid:function(b){var c=this.callParent(arguments),d=this.getSourceId(),a=this.getTargetId();if(c){c=Ext.isNumber(this.getType())&&!Ext.isEmpty(d)&&!Ext.isEmpty(a)&&d!=a}if(c&&b!==false&&this.stores[0]){c=this.stores[0].isValidDependency(d,a,true)}return c}});Ext.define("Gnt.model.Resource",{extend:"Sch.model.Resource",customizableFields:["CalendarId"],calendarIdField:"CalendarId",normalized:false,calendarWaitingListener:null,getTaskStore:function(){return this.stores[0].getTaskStore()},getEventStore:function(){return this.getTaskStore()},getEvents:function(){return this.getTasks()},getTasks:function(){var a=[];this.forEachAssignment(function(b){var c=b.getTask();if(c){a.push(c)}});return a},getCalendar:function(a){return a?this.getOwnCalendar():this.getOwnCalendar()||this.getProjectCalendar()},getOwnCalendar:function(){var a=this.getCalendarId();return a?Gnt.data.Calendar.getCalendar(a):null},getProjectCalendar:function(){return this.stores[0].getTaskStore().getCalendar()},setCalendar:function(b){var a=b instanceof Gnt.data.Calendar;if(a&&!b.calendarId){throw new Error("Can't set calendar w/o `calendarId` property")}this.setCalendarId(a?b.calendarId:b)},setCalendarId:function(c,d){if(c instanceof Gnt.data.Calendar){c=c.calendarId}var b=this.getCalendarId();if(b!=c||d){if(this.calendarWaitingListener){this.calendarWaitingListener.destroy();this.calendarWaitingListener=null}var a={calendarchange:this.adjustToCalendar,scope:this};var g=this.calendar||Gnt.data.Calendar.getCalendar(b);this.calendar=null;g&&g.un(a);this.set(this.calendarIdField,c);var e=Gnt.data.Calendar.getCalendar(c);if(e){e.on(a);if(!d){this.adjustToCalendar()}}else{this.calendarWaitingListener=Ext.data.StoreManager.on("add",function(h,k,j){e=Gnt.data.Calendar.getCalendar(c);if(e){this.calendarWaitingListener.destroy();this.calendarWaitingListener=null;e.on(a);this.adjustToCalendar()}},this,{destroyable:true})}}},adjustToCalendar:function(){this.forEachTask(function(a){a.adjustToCalendar()})},getInternalId:function(){return this.getId()||this.internalId},assignTo:function(a,c){var b=a instanceof Gnt.model.Task?a:this.getTaskStore().getById(a);return b.assign(this,c)},unassignFrom:function(){return this.unAssignFrom.apply(this,arguments)},unAssignFrom:function(a){var b=a instanceof Gnt.model.Task?a:this.getTaskStore().getById(a);b.unAssign(this)},forEachAssignment:function(b,a){a=a||this;var c=this.getInternalId();this.getTaskStore().getAssignmentStore().each(function(d){if(d.getResourceId()==c){return b.call(a,d)}})},forEachTask:function(b,a){a=a||this;var c=this.getInternalId();this.getTaskStore().getAssignmentStore().each(function(e){if(e.getResourceId()==c){var d=e.getTask();if(d){return b.call(a,d)}}})},collectAvailabilityIntervalPoints:function(e,g,b,j,c){for(var d=0;d<e.length;d++){var a=e[d];var h=a.startDate-0;var l=a.endDate-0;if(!j[h]){j[h]=[];c.push(h)}j[h].push(g(h));if(!j[l]){j[l]=[];c.push(l)}j[l].push(b(l))}},forEachAvailabilityIntervalWithTasks:function(e,h,b){b=b||this;var d=e.startDate;var C=e.endDate;if(!d||!C){throw"Both `startDate` and `endDate` are required for `forEachAvailabilityIntervalWithTasks`"}var m=new Date(d);var E=e.includeAllIntervals;var D=e.includeResCalIntervals;var u=this.getCalendar();var q=[];var s=[];var c=[];var I=[d-0,C-0];var o={};this.forEachAssignment(function(k){var j=k.getTask();if(!j||j.getStartDate()>C||j.getEndDate()<d){return}s.push(j);c.push(j.getCalendar());this.collectAvailabilityIntervalPoints([{startDate:j.getStartDate(),endDate:j.getEndDate()}],function(){return{type:"04-taskStart",assignment:k,taskId:j.getInternalId(),units:k.getUnits()}},function(){return{type:"05-taskEnd",taskId:j.getInternalId()}},o,I);q.push(k)});if(!s.length&&!E&&!D){return}var g=Sch.util.Date;o[d-0]=[{type:"00-intervalStart"}];o[C-0]=[{type:"00-intervalEnd"}];var B,w;while(m<C){this.collectAvailabilityIntervalPoints(u.getAvailabilityIntervalsFor(m),function(){return{type:"00-resourceAvailabilityStart"}},function(){return{type:"01-resourceAvailabilityEnd"}},o,I);for(B=0,w=c.length;B<w;B++){this.collectAvailabilityIntervalPoints(c[B].getAvailabilityIntervalsFor(m),function(){return{type:"02-taskAvailabilityStart",taskId:s[B].getInternalId()}},function(){return{type:"03-taskAvailabilityEnd",taskId:s[B].getInternalId()}},o,I)}m=g.getStartOfNextDay(m)}I.sort();var G=false;var F={};var a=0;var A=0;for(B=0,w=I.length-1;B<w;B++){var z=o[I[B]];z.sort(function(k,j){return k.type<j.type});for(var x=0,y=z.length;x<y;x++){var t=z[x];if(t.type=="00-resourceAvailabilityStart"){G=true}if(t.type=="01-resourceAvailabilityEnd"){G=false}if(t.type=="02-taskAvailabilityStart"){a++}if(t.type=="03-taskAvailabilityEnd"){a--}if(t.type=="04-taskStart"){F[t.taskId]=t;A++}if(t.type=="05-taskEnd"){delete F[t.taskId];A--}}if(E||D&&G||G&&a&&A){var p={inResourceCalendar:!!G,inTasksCalendar:!!a,inTask:A};var H=I[B];var n=I[B+1];if(H>C||n<d){continue}if(H<d){H=d-0}if(n>C){n=C-0}if(h.call(b,H,n,F,p)===false){return false}}}},getAllocationInfo:function(a){var b=[];this.forEachAvailabilityIntervalWithTasks(a,function(k,j,h,l){var g=0,d=[],c={};if(l.inResourceCalendar&&l.inTasksCalendar&&l.inTask){for(var e in h){g+=h[e].units;d.push(h[e].assignment);c[e]=h[e].assignment}}b.push(Ext.apply({startDate:new Date(k),endDate:new Date(j),totalAllocation:g,assignments:d,assignmentsHash:c},l))});return b}});Ext.define("Gnt.model.task.More",{indent:function(){var a=this.previousSibling;if(a){a.appendChild(this);a.set("leaf",false);a.expand()}},outdent:function(){var a=this.parentNode;if(a&&!a.isRoot()){if(this.convertEmptyParentToLeaf){a.set("leaf",a.childNodes.length===1)}if(a.nextSibling){a.parentNode.insertBefore(this,a.nextSibling)}else{a.parentNode.appendChild(this)}}},getAllDependencies:function(a){a=a||this.getDependencyStore();return a.getDependenciesForTask(this)},hasIncomingDependencies:function(a){var c=this.getId()||this.internalId;a=a||this.getDependencyStore();var b=a.findBy(function(d){return d.getTargetId()==c});return b>=0},hasOutgoingDependencies:function(a){var c=this.getId()||this.internalId;a=a||this.getDependencyStore();var b=a.findBy(function(d){return d.getSourceId()==c});return b>=0},getIncomingDependencies:function(a){a=a||this.getDependencyStore();return a.getIncomingDependenciesForTask(this)},getOutgoingDependencies:function(a){a=a||this.getDependencyStore();return a.getOutgoingDependenciesForTask(this)},constrain:function(c){if(this.isManuallyScheduled()){return false}var e=false;c=c||this.getTaskStore();var b=this.getConstrainContext(c);if(b){var a=b.startDate;var d=b.endDate;if(a&&a-this.getStartDate()!==0){this.setStartDate(a,true,c.skipWeekendsDuringDragDrop);e=true}else{if(d&&d-this.getEndDate()!==0){this.setEndDate(d,true,c.skipWeekendsDuringDragDrop);e=true}}}return e},getConstrainContext:function(c){var b=this.getIncomingDependencies();if(!b.length){return null}var h=Gnt.model.Dependency.Type,d=new Date(0),e=new Date(0),g=this.getProjectCalendar(),a;Ext.each(b,function(l){var k=l.getSourceTask();if(k){var o=l.getLag()||0,m=l.getLagUnit(),n=k.getStartDate(),j=k.getEndDate();switch(l.getType()){case h.StartToEnd:n=g.skipWorkingTime(n,o,m);if(e<n){e=n;a=k}break;case h.StartToStart:n=g.skipWorkingTime(n,o,m);if(d<n){d=n;a=k}break;case h.EndToStart:j=g.skipWorkingTime(j,o,m);if(d<j){d=j;a=k}break;case h.EndToEnd:j=g.skipWorkingTime(j,o,m);if(e<j){e=j;a=k}break;default:throw"Invalid dependency type: "+l.getType()}}});return{startDate:d>0?d:null,endDate:e>0?e:null,constrainingTask:a}},getCriticalPaths:function(){var b=[this],a=this.getConstrainContext();while(a){b.push(a.constrainingTask);a=a.constrainingTask.getConstrainContext()}return b},cascadeChanges:function(a,b,c){a=a||this.getTaskStore();var d;if(this.isLeaf()){d=this.constrain(a);if(d){this.recalculateParents();b.nbrAffected++}}if(d){Ext.each(this.getOutgoingDependencies(),function(e){var g=e.getTargetTask();if(g&&!g.isManuallyScheduled()){g.cascadeChanges(a,b,e)}})}},addSubtask:function(a){this.set("leaf",false);this.appendChild(a);this.expand();return a},addSuccessor:function(b){var c=this.rec,e=this.getTaskStore(),d=this.getDependencyStore();b=b||new this.self;b.calendar=b.calendar||this.getCalendar();b.taskStore=e;b.setStartDate(this.getEndDate(),true,e.skipWeekendsDuringDragDrop);b.setDuration(1,Sch.util.Date.DAY);this.addTaskBelow(b);var a=new d.model({fromTask:this,toTask:b,type:d.model.Type.EndToStart});d.add(a);return b},addMilestone:function(c){var b=this.getTaskStore();c=c||new this.self;var a=this.getEndDate();if(a){c.calendar=c.calendar||this.getCalendar();c.setStartEndDate(a,a,b.skipWeekendsDuringDragDrop)}return this.addTaskBelow(c)},addPredecessor:function(c){var b=this.getDependencyStore();c=c||new this.self;c.calendar=c.calendar||this.getCalendar();c.beginEdit();c.set(this.startDateField,c.calculateStartDate(this.getStartDate(),1,Sch.util.Date.DAY));c.set(this.endDateField,this.getStartDate());c.set(this.durationField,1);c.set(this.durationUnitField,Sch.util.Date.DAY);c.endEdit();this.addTaskAbove(c);var a=new b.model({fromTask:c,toTask:this,type:b.model.Type.EndToStart});b.add(a);return c},getSuccessors:function(){var j=this.getId()||this.internalId;var e=e||this.getDependencyStore();var c=this.getTaskStore(),h=[];for(var g=0,a=e.getCount();g<a;g++){var d=e.getAt(g);if(d.getSourceId()==j){var b=d.getTargetTask();if(b){h.push(b)}}}return h},getPredecessors:function(){var h=this.getId()||this.internalId;var d=d||this.getDependencyStore();var b=this.getTaskStore(),g=[];for(var e=0,a=d.getCount();e<a;e++){var c=d.getAt(e);if(c.getTargetId()==h){g.push(c.getSourceTask())}}return g},addTaskAbove:function(a){a=a||new this.self;return this.parentNode.insertBefore(a,this)},addTaskBelow:function(a){a=a||new this.self;if(this.nextSibling){return this.parentNode.insertBefore(a,this.nextSibling)}else{return this.parentNode.appendChild(a)}},isAbove:function(a){var b=this,d=Math.min(b.data.depth,a.data.depth);var c=this;while(c.data.depth>d){c=c.parentNode;if(c==a){return false}}while(a.data.depth>d){a=a.parentNode;if(a==b){return true}}while(a.parentNode!==c.parentNode){a=a.parentNode;c=c.parentNode}return a.data.index>c.data.index},cascadeChildren:function(a,c,b){this.cascadeBy(function(d){if(d!==a){return c.call(b||d,d)}})},getSlack:function(b){b=b||Sch.util.Date.DAY;var c=this.getEarlyStartDate(),a=this.getLateStartDate();if(!c||!a){return null}return this.getCalendar().calculateDuration(this.getEarlyStartDate(),this.getLateStartDate(),b)},getEarlyStartDate:function(){var n=this.getTaskStore();if(!n){return this.getEndDate()}var k=this.internalId;if(n.earlyStartDates[k]){return n.earlyStartDates[k]}var c,p=0,h,g;if(this.childNodes.length){for(h=0,g=this.childNodes.length;h<g;h++){c=this.childNodes[h].getEarlyStartDate();if(c<p||!p){p=c}}n.earlyStartDates[k]=p;return p}if(this.isManuallyScheduled()){p=n.earlyStartDates[k]=this.getStartDate();return p}var o=this.getIncomingDependencies(),m;if(!o.length){p=n.earlyStartDates[k]=this.getStartDate();return p}var j=Gnt.model.Dependency.Type,a=this.getCalendar(),e=this.getProjectCalendar(),d;for(h=0,g=o.length;h<g;h++){m=o[h].getSourceTask();if(m){switch(o[h].getType()){case j.StartToStart:c=m.getEarlyStartDate();break;case j.StartToEnd:c=m.getEarlyStartDate();c=a.calculateStartDate(c,this.getDuration(),this.getDurationUnit());break;case j.EndToStart:c=m.getEarlyEndDate();break;case j.EndToEnd:c=m.getEarlyEndDate();c=a.calculateStartDate(c,this.getDuration(),this.getDurationUnit());break}d=o[h].getLag();if(d){c=e.skipWorkingTime(c,d,o[h].getLagUnit())}c=e.skipNonWorkingTime(c,true)}if(c>p){p=c}}var b=this.getStartDate();n.earlyStartDates[k]=p;return n.earlyStartDates[k]},getEarlyEndDate:function(){var d=this.getTaskStore();if(!d){return this.getEndDate()}var c=this.internalId;if(d.earlyEndDates[c]){return d.earlyEndDates[c]}var a=0;if(this.childNodes.length){var g,e,b;for(e=0,b=this.childNodes.length;e<b;e++){g=this.childNodes[e].getEarlyEndDate();if(g>a){a=g}}d.earlyEndDates[c]=a;return a}if(this.isManuallyScheduled()){a=d.earlyEndDates[c]=this.getEndDate();return a}var h=this.getEarlyStartDate();if(!h){return null}a=d.earlyEndDates[c]=this.getCalendar().calculateEndDate(h,this.getDuration(),this.getDurationUnit());return a},getLateEndDate:function(){var m=this.getTaskStore();if(!m){return this.getEndDate()}var k=this.internalId;if(m.lateEndDates[k]){return m.lateEndDates[k]}var b,o=0,h,e;if(this.childNodes.length){for(h=0,e=this.childNodes.length;h<e;h++){b=this.childNodes[h].getLateEndDate();if(b>o){o=b}}m.lateEndDates[k]=o;return o}if(this.isManuallyScheduled()){o=m.lateEndDates[k]=this.getEndDate();return o}var n=this.getOutgoingDependencies();if(!n.length){o=m.lateEndDates[k]=m.getProjectEndDate();return o}var j=Gnt.model.Dependency.Type,a=this.getCalendar(),d=this.getProjectCalendar(),g,c;for(h=0,e=n.length;h<e;h++){g=n[h].getTargetTask();if(g){switch(n[h].getType()){case j.StartToStart:b=g.getLateStartDate();b=a.calculateEndDate(b,this.getDuration(),this.getDurationUnit());break;case j.StartToEnd:b=g.getLateEndDate();b=a.calculateEndDate(b,this.getDuration(),this.getDurationUnit());break;case j.EndToStart:b=g.getLateStartDate();break;case j.EndToEnd:b=g.getLateEndDate();break}c=n[h].getLag();if(c){b=d.skipWorkingTime(b,-c,n[h].getLagUnit())}b=d.skipNonWorkingTime(b,false);if(b<o||!o){o=b}}}m.lateEndDates[k]=o||m.getProjectEndDate();return m.lateEndDates[k]},getLateStartDate:function(){var d=this.getTaskStore();if(!d){return this.getStartDate()}var c=this.internalId;if(d.lateStartDates[c]){return d.lateStartDates[c]}var a;if(this.childNodes.length){var g,e,b;for(e=0,b=this.childNodes.length;e<b;e++){g=this.childNodes[e].getLateStartDate();if(g<a||!a){a=g}}d.lateStartDates[c]=a;return a}if(this.isManuallyScheduled()){a=d.lateStartDates[c]=this.getStartDate();return a}var h=this.getLateEndDate();if(!h){return null}a=d.lateStartDates[c]=this.getCalendar().calculateStartDate(h,this.getDuration(),this.getDurationUnit());return a},resetEarlyDates:function(){var b=this.getTaskStore();if(!b){return}var a=this.internalId;b.earlyStartDates[a]=null;b.earlyEndDates[a]=null},resetLateDates:function(){var b=this.getTaskStore();if(!b){return}var a=this.internalId;b.lateStartDates[a]=null;b.lateEndDates[a]=null}});Ext.define("Gnt.model.Task",{extend:"Sch.model.Range",requires:["Sch.util.Date","Ext.data.NodeInterface"],mixins:["Gnt.model.task.More"],idProperty:"Id",customizableFields:[{name:"Id"},{name:"Duration",type:"number",useNull:true},{name:"Effort",type:"number",useNull:true},{name:"EffortUnit",type:"string",defaultValue:"h"},{name:"CalendarId",type:"string"},{name:"Note",type:"string"},{name:"DurationUnit",type:"string",defaultValue:"d",convert:function(a){return a||"d"}},{name:"PercentDone",type:"number",defaultValue:0},{name:"ManuallyScheduled",type:"boolean",defaultValue:false},{name:"SchedulingMode",type:"string",defaultValue:"Normal"},{name:"BaselineStartDate",type:"date",dateFormat:"c"},{name:"BaselineEndDate",type:"date",dateFormat:"c"},{name:"BaselinePercentDone",type:"int",defaultValue:0},{name:"Draggable",type:"boolean",persist:false,defaultValue:true},{name:"Resizable",persist:false},{name:"PhantomId",type:"string"},{name:"PhantomParentId",type:"string"},{name:"index",type:"int",persist:true}],draggableField:"Draggable",resizableField:"Resizable",nameField:"Name",durationField:"Duration",durationUnitField:"DurationUnit",effortField:"Effort",effortUnitField:"EffortUnit",percentDoneField:"PercentDone",manuallyScheduledField:"ManuallyScheduled",schedulingModeField:"SchedulingMode",calendarIdField:"CalendarId",baselineStartDateField:"BaselineStartDate",baselineEndDateField:"BaselineEndDate",baselinePercentDoneField:"BaselinePercentDone",noteField:"Note",calendar:null,dependencyStore:null,taskStore:null,phantomIdField:"PhantomId",phantomParentIdField:"PhantomParentId",normalized:false,recognizedSchedulingModes:["Normal","Manual","FixedDuration","EffortDriven","DynamicAssignment"],convertEmptyParentToLeaf:true,autoCalculateEffortForParentTask:true,autoCalculatePercentDoneForParentTask:true,isHighlighted:false,calendarWaitingListener:null,childTasksDuration:null,completedChildTasksDuration:null,constructor:function(){this.callParent(arguments);if(this.phantom){this.data[this.phantomIdField]=this.internalId;this._phantomId=this.internalId}},normalize:function(){var c=this.getDuration(),h=this.getDurationUnit(),b=this.getStartDate(),g=this.getEndDate(),e=this.getSchedulingMode(),d=this.data;if(g&&this.inclusiveEndDate){var k=this.fields.getByKey(this.endDateField).dateFormat;var a=k&&!Ext.Date.formatContainsHourInfo(k)||g.getHours()===0&&g.getMinutes()===0&&g.getSeconds()===0&&g.getMilliseconds()===0;if(a){if(Ext.isNumber(c)){g=d[this.endDateField]=this.calculateEndDate(b,c,h)}else{g=d[this.endDateField]=Ext.Date.add(g,Ext.Date.DAY,1)}}}if(c==null&&b&&g){c=d[this.durationField]=this.calculateDuration(b,g,h)}if((e=="Normal"||this.isManuallyScheduled())&&g==null&&b&&Ext.isNumber(c)){g=d[this.endDateField]=this.calculateEndDate(b,c,h)}var m=this.get(this.effortField),j=this.getEffortUnit();if(e=="FixedDuration"){if(g==null&&b&&Ext.isNumber(c)){g=d[this.endDateField]=this.calculateEndDate(b,c,h)}if(m==null&&b&&g){d[this.effortField]=this.calculateEffort(b,g,j)}}else{if(e=="EffortDriven"){if(m==null&&b&&g){d[this.effortField]=this.calculateEffort(b,g,j)}if(g==null&&b&&m){d[this.endDateField]=this.calculateEffortDrivenEndDate(b,m,j);if(c==null){d[this.durationField]=this.calculateDuration(b,d[this.endDateField],h)}}}else{if(g==null&&b&&Ext.isNumber(c)){g=d[this.endDateField]=this.calculateEndDate(b,c,h)}}}var l=this.getCalendarId();if(l){this.setCalendarId(l,true)}this.normalized=true},normalizeParent:function(){var m=this.childNodes;var a=0;var d=0;var j=0;var k=this.autoCalculatePercentDoneForParentTask;var g=this.autoCalculateEffortForParentTask;for(var e=0;e<m.length;e++){var c=m[e];var b=c.isLeaf();if(!b){c.normalizeParent()}if(g){a+=c.getEffort("MILLI")}if(k){var l=b?c.getDuration("MILLI")||0:c.childTasksDuration;d+=l;j+=b?l*(c.getPercentDone()||0):c.completedChildTasksDuration}}if(k){this.childTasksDuration=d;this.completedChildTasksDuration=j;var h=d?j/d:0;if(this.getPercentDone()!=h){this.data[this.percentDoneField]=h}}if(g){if(this.getEffort("MILLI")!=a){this.data[this.effortField]=this.getProjectCalendar().convertMSDurationToUnit(a,this.getEffortUnit())}}},getInternalId:function(){return this.getId()||this.internalId},getCalendar:function(a){return a?this.getOwnCalendar():this.getOwnCalendar()||this.getProjectCalendar()},getOwnCalendar:function(){var a=this.get(this.calendarIdField);return a?Gnt.data.Calendar.getCalendar(a):this.calendar},getProjectCalendar:function(){var a=this.getTaskStore(true);var b=a&&a.getCalendar()||this.parentNode&&this.parentNode.getProjectCalendar()||this.isRoot()&&this.calendar;if(!b){Ext.Error.raise("Can't find a project calendar in `getProjectCalendar`")}return b},setCalendar:function(b){var a=b instanceof Gnt.data.Calendar;if(a&&!b.calendarId){throw new Error("Can't set calendar w/o `calendarId` property")}this.setCalendarId(a?b.calendarId:b)},setCalendarId:function(c,d){if(c instanceof Gnt.data.Calendar){c=c.calendarId}var b=this.getCalendarId();if(b!=c||d){if(this.calendarWaitingListener){this.calendarWaitingListener.destroy();this.calendarWaitingListener=null}var a={calendarchange:this.adjustToCalendar,scope:this};var g=this.calendar||Gnt.data.Calendar.getCalendar(b);this.calendar=null;g&&g.un(a);this.set(this.calendarIdField,c);var e=Gnt.data.Calendar.getCalendar(c);if(e){e.on(a);if(!d){this.adjustToCalendar()}}else{this.calendarWaitingListener=Ext.data.StoreManager.on("add",function(h,k,j){e=Gnt.data.Calendar.getCalendar(c);if(e){this.calendarWaitingListener.destroy();this.calendarWaitingListener=null;e.on(a);this.adjustToCalendar()}},this,{destroyable:true})}}},getDependencyStore:function(){var a=this.dependencyStore||this.getTaskStore().dependencyStore;if(!a){Ext.Error.raise("Can't find a dependencyStore in `getDependencyStore`")}return a},getResourceStore:function(){return this.getTaskStore().getResourceStore()},getAssignmentStore:function(){return this.getTaskStore().getAssignmentStore()},getTaskStore:function(b){if(this.taskStore){return this.taskStore}var a=this.stores[0]&&this.stores[0].treeStore||this.parentNode&&this.parentNode.getTaskStore(b);if(!a&&!b){Ext.Error.raise("Can't find a taskStore in `getTaskStore`")}this.taskStore=a;return a},setTaskStore:function(a){this.taskStore=a},isManuallyScheduled:function(){return this.get(this.schedulingModeField)==="Manual"||this.get(this.manuallyScheduledField)},setManuallyScheduled:function(a){if(a){this.set(this.schedulingModeField,"Manual")}else{if(this.get(this.schedulingModeField)=="Manual"){this.set(this.schedulingModeField,"Normal")}}return this.set(this.manuallyScheduledField,a)},setSchedulingMode:function(a){if(!Ext.Array.contains(this.recognizedSchedulingModes,a)){throw"Unrecognized scheduling mode: "+a}this.beginEdit();this.set(this.schedulingModeField,a);if(a==="FixedDuration"){this.updateEffortBasedOnDuration()}if(a==="EffortDriven"){this.updateDurationBasedOnEffort()}this.endEdit()},skipNonWorkingTime:function(b,c){var a=false;this.forEachAvailabilityIntervalWithResources(c?{startDate:b}:{endDate:b,isForward:false},function(g,e,d){b=c?g:e;a=true;return false});return a?new Date(b):this.getCalendar().skipNonWorkingTime(b,c)},setStartDate:function(a,h,g){var e,d;this.beginEdit();if(!a){this.set(this.durationField,null);this.set(this.startDateField,null)}else{var c=this.getCalendar();if(g&&!this.isManuallyScheduled()){if(!this.isMilestone()||c.isHoliday(a-1)){a=this.skipNonWorkingTime(a,true)}}var b=this.getSchedulingMode();this.set(this.startDateField,a);if(h!==false){if(b=="EffortDriven"){this.set(this.endDateField,this.calculateEffortDrivenEndDate(a,this.getEffort()))}else{e=this.getDuration();if(Ext.isNumber(e)){this.set(this.endDateField,this.calculateEndDate(a,e,this.getDurationUnit()))}}}else{d=this.getEndDate();if(d){this.set(this.durationField,this.calculateDuration(a,d,this.getDurationUnit()))}}}e=this.getDuration();d=this.getEndDate();if(a&&d&&(e===undefined||e===null)){this.set(this.durationField,this.calculateDuration(a,d,this.getDurationUnit()))}this.onPotentialEffortChange();this.endEdit()},setEndDate:function(b,g,e){var d,a;this.beginEdit();if(!b){this.set(this.durationField,null);this.set(this.endDateField,null)}else{var c=this.getCalendar();if(e&&!this.isManuallyScheduled()){b=this.skipNonWorkingTime(b,false)}if(g!==false){d=this.getDuration();if(Ext.isNumber(d)){this.set(this.startDateField,this.calculateStartDate(b,d,this.getDurationUnit()));this.set(this.endDateField,b)}else{this.set(this.endDateField,b)}}else{a=this.getStartDate();this.set(this.endDateField,b);if(a){this.set(this.durationField,this.calculateDuration(a,b,this.getDurationUnit()))}}}d=this.getDuration();a=this.getStartDate();if(b&&a&&(d===undefined||d===null)){this.set(this.durationField,this.calculateDuration(a,b,this.getDurationUnit()))}this.onPotentialEffortChange();this.endEdit()},setStartEndDate:function(a,b,d){this.beginEdit();if(d&&!this.isManuallyScheduled()){var c=a-b===0;a=a&&this.skipNonWorkingTime(a,true);b=b&&this.skipNonWorkingTime(b,false);if(c&&b<a){a=b}}this.set(this.startDateField,a);this.set(this.endDateField,b);this.set(this.durationField,this.calculateDuration(a,b,this.getDurationUnit()));this.onPotentialEffortChange();this.endEdit()},getDuration:function(a){if(!a){return this.get(this.durationField)}var b=this.getProjectCalendar(),c=b.convertDurationToMs(this.get(this.durationField),this.get(this.durationUnitField));return b.convertMSDurationToUnit(c,a)},getEffort:function(a){var b=this.get(this.effortField)||0;if(!a){return b}var c=this.getProjectCalendar(),d=c.convertDurationToMs(b,this.getEffortUnit());return c.convertMSDurationToUnit(d,a)},setEffort:function(b,a){a=a||this.get(this.effortUnitField);this.beginEdit();this.set(this.effortField,b);this.set(this.effortUnitField,a);if(this.getSchedulingMode()==="EffortDriven"){this.updateDurationBasedOnEffort()}if(this.getSchedulingMode()==="DynamicAssignment"){this.updateAssignments()}this.endEdit()},getCalendarDuration:function(a){return this.getProjectCalendar().convertMSDurationToUnit(this.getEndDate()-this.getStartDate(),a||this.get(this.durationUnitField))},setDuration:function(d,c){c=c||this.get(this.durationUnitField);this.beginEdit();if(Ext.isNumber(d)&&!this.getStartDate()){var a=new Date;Ext.Date.clearTime(a);this.setStartDate(a)}var b=null;if(Ext.isNumber(d)){b=this.calculateEndDate(this.getStartDate(),d,c)}this.set(this.endDateField,b);this.set(this.durationField,d);this.set(this.durationUnitField,c);this.onPotentialEffortChange();this.endEdit()},calculateStartDate:function(e,d,c){c=c||this.getDurationUnit();if(this.isManuallyScheduled()){return Sch.util.Date.add(a,c,-d)}else{if(this.getTaskStore(true)&&this.hasResources()){var b=this.getProjectCalendar().convertDurationToMs(d,c||this.getDurationUnit());var a;this.forEachAvailabilityIntervalWithResources({endDate:e,isForward:false},function(k,j,h){var g=j-k;if(g>=b){a=new Date(j-b);return false}else{b-=g}});return a}else{return this.getCalendar().calculateStartDate(e,d,c)}}},endEdit:function(a,c){var b=this.dirty;this.dirty=false;this.callParent(arguments);this.dirty=b},calculateEndDate:function(a,g,d){d=d||this.getDurationUnit();if(this.isManuallyScheduled()){return Sch.util.Date.add(a,d,g)}else{var c=this.getSchedulingMode();if(this.getTaskStore(true)&&this.hasResources()&&c!="FixedDuration"&&c!="DynamicAssignment"&&c!="EffortDriven"){var b=this.getProjectCalendar().convertDurationToMs(g,d||this.getDurationUnit());var e;this.forEachAvailabilityIntervalWithResources({startDate:a},function(l,k,j){var h=k-l;if(h>=b){e=new Date(l+b);return false}else{b-=h}});return e}else{return this.getCalendar().calculateEndDate(a,g,d)}}},calculateDuration:function(a,c,b){b=b||this.getDurationUnit();if(!a||!c){return 0}if(this.isManuallyScheduled()){return this.getProjectCalendar().convertMSDurationToUnit(c-a,b)}else{if(this.getTaskStore(true)&&this.hasResources()){var d=0;this.forEachAvailabilityIntervalWithResources({startDate:a,endDate:c},function(h,g,e){d+=g-h});return this.getProjectCalendar().convertMSDurationToUnit(d,b)}else{return this.getCalendar().calculateDuration(a,c,b)}}},forEachAvailabilityIntervalWithResources:function(g,j,a){a=a||this;var F=this;var d=g.startDate;var C=g.endDate;var q=g.isForward!==false;if(q?!d:!C){throw new Error("At least `startDate` or `endDate` is required, depending from the `isForward` option")}var l=new Date(q?d:C);var b=g.includeEmptyIntervals;var c=this.getOwnCalendar();var J=Boolean(c);var H=this.getProjectCalendar();var D,y,t;if(g.resources){D=g.resources;t=[];y=[];Ext.each(D,function(k){y.push(k.getCalendar());t.push(F.getAssignmentFor(k))})}else{t=this.getAssignments();D=[];y=[];Ext.each(t,function(K){var k=K.getResource();if(k){D.push(k);y.push(k.getCalendar())}})}if(!D.length){return}var h=Sch.util.Date;var B,x,E,G,o;var w=q?!C:!d;while(w||(q?l<C:l>d)){var s={};var I=[];if(J){var m=c.getAvailabilityIntervalsFor(l-(q?0:1));for(x=0;x<m.length;x++){E=m[x];G=E.startDate-0;o=E.endDate-0;if(!s[G]){s[G]=[];I.push(G)}s[G].push({type:"00-taskAvailailabilityStart",typeBackward:"01-taskAvailailabilityStart"});I.push(o);s[o]=s[o]||[];s[o].push({type:"01-taskAvailailabilityEnd",typeBackward:"00-taskAvailailabilityEnd"})}}for(B=0;B<y.length;B++){var e=y[B].getAvailabilityIntervalsFor(l-(q?0:1));for(x=0;x<e.length;x++){E=e[x];G=E.startDate-0;o=E.endDate-0;if(!s[G]){s[G]=[];I.push(G)}s[G].push({type:"02-resourceAvailailabilityStart",typeBackward:"03-resourceAvailailabilityStart",assignment:t[B],resourceId:D[B].getInternalId(),units:t[B].getUnits()});if(!s[o]){s[o]=[];I.push(o)}s[o].push({type:"03-resourceAvailailabilityEnd",typeBackward:"02-resourceAvailailabilityEnd",assignment:t[B],resourceId:D[B].getInternalId(),units:t[B].getUnits()})}}I.sort();var A=false;var p={};var n=0;var z,u;if(q){for(B=0;B<I.length;B++){z=s[I[B]];z.sort(function(K,k){return K.type<k.type});for(x=0;x<z.length;x++){u=z[x];if(u.type=="00-taskAvailailabilityStart"){A=true}if(u.type=="01-taskAvailailabilityEnd"){A=false}if(u.type=="02-resourceAvailailabilityStart"){p[u.resourceId]=u;n++}if(u.type=="03-resourceAvailailabilityEnd"){delete p[u.resourceId];n--}}if((A||!J)&&(n||b)){G=I[B];o=I[B+1];if(G>=C||o<=d){continue}if(G<d){G=d-0}if(o>C){o=C-0}if(j.call(a,G,o,p)===false){return false}}}}else{for(B=I.length-1;B>=0;B--){z=s[I[B]];z.sort(function(K,k){return K.typeBackward<k.typeBackward});for(x=0;x<z.length;x++){u=z[x];if(u.typeBackward=="00-taskAvailailabilityEnd"){A=true}if(u.typeBackward=="01-taskAvailailabilityStart"){A=false}if(u.typeBackward=="02-resourceAvailailabilityEnd"){p[u.resourceId]=u;n++}if(u.typeBackward=="03-resourceAvailailabilityStart"){delete p[u.resourceId];n--}}if((A||!J)&&(n||b)){G=I[B-1];o=I[B];if(G>C||o<=d){continue}if(G<d){G=d-0}if(o>C){o=C-0}if(j.call(a,G,o,p)===false){return false}}}}l=q?h.getStartOfNextDay(l):h.getEndOfPreviousDay(l)}},calculateEffortDrivenEndDate:function(a,c,b){var e=this.getProjectCalendar().convertDurationToMs(c,b||this.getEffortUnit());var d=new Date(a);this.forEachAvailabilityIntervalWithResources({startDate:a},function(m,l,k){var n=0;for(var j in k){n+=k[j].units}var h=l-m;var g=n*h/100;if(g>=e){d=new Date(m+e/g*h);return false}else{e-=g}});return d},recalculateParents:function(){var h=new Date(9999,0,0),y=new Date(0),e=this.parentNode;var t=this.autoCalculatePercentDoneForParentTask;var g=this.autoCalculateEffortForParentTask;if(e&&e.childNodes.length>0&&(g||t)){var d=0;var n=0;var q=0;for(var s=0,w=e.childNodes.length;s<w;s++){var a=e.childNodes[s];var x=a.isLeaf();if(g){d+=a.getEffort("MILLI")}if(t){var b=x?a.getDuration("MILLI")||0:a.childTasksDuration;n+=b;q+=x?b*(a.getPercentDone()||0):a.completedChildTasksDuration}}if(g&&e.getEffort("MILLI")!=d){e.setEffort(this.getProjectCalendar().convertMSDurationToUnit(d,e.getEffortUnit()))}if(t){e.childTasksDuration=n;e.completedChildTasksDuration=q;var o=n?q/n:0;if(e.getPercentDone()!=o){e.setPercentDone(o)}}}var c,j;if(e&&!e.isRoot()&&e.childNodes.length>0){if(!e.isManuallyScheduled()){for(var u=0,p=e.childNodes.length;u<p;u++){var m=e.childNodes[u];h=Sch.util.Date.min(h,m.getStartDate()||h);y=Sch.util.Date.max(y,m.getEndDate()||y)}c=h-new Date(9999,0,0)!==0&&e.getStartDate()-h!==0;j=y-new Date(0)!==0&&e.getEndDate()-y!==0;if(c&&j){e.setStartEndDate(h,y,false)}else{if(c){e.setStartDate(h,j,false)}else{if(j){e.setEndDate(y,false,false)}}}}if(this.getTaskStore().cascading&&(c||j)||!c&&!j){e.recalculateParents()}}},isMilestone:function(){return this.getDuration()===0},isBaselineMilestone:function(){var b=this.getBaselineStartDate(),a=this.getBaselineEndDate();if(b&&a){return a-b===0}return false},afterEdit:function(b){if(this.stores.length>0||!this.normalized){this.callParent(arguments)}else{var a=this.taskStore||this.getTaskStore(true);if(a&&!a.isFillingRoot){a.afterEdit(this,b)}this.callParent(arguments)}},afterCommit:function(){this.callParent(arguments);if(this.stores.length>0||!this.normalized){return}var a=this.taskStore||this.getTaskStore(true);if(a&&!a.isFillingRoot){a.afterCommit(this)}},afterReject:function(){if(this.stores.length>0){this.callParent(arguments)}else{var a=this.getTaskStore(true);if(a&&!a.isFillingRoot){a.afterReject(this)}this.callParent(arguments)}},getDurationUnit:function(){return this.get(this.durationUnitField)||"d"},getEffortUnit:function(){return this.get(this.effortUnitField)||"h"},getBaselinePercentDone:function(){return this.get(this.baselinePercentDoneField)||0},isPersistable:function(){var a=this.parentNode;return !a.phantom},getResources:function(){var b=this.getAssignmentStore(),c=this.getInternalId();var a=[];if(b){b.each(function(d){if(d.getTaskId()==c){a.push(d.getResource())}})}return a},getAssignments:function(){var b=this.getAssignmentStore(),c=this.getInternalId();var a=[];if(b){b.each(function(d){if(d.getTaskId()==c){a.push(d)}})}return a},hasAssignments:function(){var b=this.getAssignmentStore(),c=this.getInternalId();var a=false;if(b){b.each(function(d){if(d.getTaskId()==c){a=true;return false}})}return a},hasResources:function(){var b=this.getAssignmentStore(),c=this.getInternalId();var a=false;if(b){b.each(function(d){if(d.getTaskId()==c&&d.getResource()){a=true;return false}})}return a},getAssignmentFor:function(b){var c=this.getAssignmentStore(),e=this.getInternalId(),d=b instanceof Gnt.model.Resource?b.getInternalId():b;var a;if(c){c.each(function(g){if(g.getTaskId()==e&&g.getResourceId()==d){a=g;return false}})}return a||null},unassign:function(){return this.unAssign.apply(this,arguments)},unAssign:function(c){var d=this.getAssignmentStore();var b=this.getInternalId();var e=c instanceof Gnt.model.Resource?c.getInternalId():c;var a=d.findBy(function(g){return g.getResourceId()==e&&g.getTaskId()==b});if(a>=0){d.removeAt(a)}},assign:function(e,a){var b=this.getTaskStore(),j=this.getInternalId(),g=b.getAssignmentStore(),d=b.getResourceStore();var h=e instanceof Gnt.model.Resource?e.getInternalId():e;g.each(function(k){if(k.getTaskId()==j&&k.getResourceId()==h){throw"Resource can't be assigned twice to the same task"}});if(e instanceof Gnt.model.Resource&&d.indexOf(e)==-1){d.add(e)}var c=new Gnt.model.Assignment({TaskId:j,ResourceId:h,Units:a});g.add(c);return c},calculateEffort:function(a,c,b){if(!a||!c){return 0}var d=0;this.forEachAvailabilityIntervalWithResources({startDate:a,endDate:c},function(j,h,g){var k=0;for(var e in g){k+=g[e].units}d+=(h-j)*k/100});return this.getProjectCalendar().convertMSDurationToUnit(d,b||this.getEffortUnit())},updateAssignments:function(){var b={};var a=this.getStartDate();var d=this.getEndDate();if(!a||!d){return}var c=0;this.forEachAvailabilityIntervalWithResources({startDate:a,endDate:d},function(j,h,g){for(var k in g){c+=h-j}});if(!c){return}var e=this.getEffort(Sch.util.Date.MILLI);Ext.Array.each(this.getAssignments(),function(g){g.setUnits(e/c*100)})},updateEffortBasedOnDuration:function(){this.setEffort(this.calculateEffort(this.getStartDate(),this.getEndDate()))},updateDurationBasedOnEffort:function(){this.setEndDate(this.calculateEffortDrivenEndDate(this.getStartDate(),this.getEffort(),this.getEffortUnit()),false)},onPotentialEffortChange:function(){switch(this.getSchedulingMode()){case"FixedDuration":this.updateEffortBasedOnDuration();break;case"DynamicAssignment":this.updateAssignments();break}},onAssignmentMutation:function(){switch(this.getSchedulingMode()){case"FixedDuration":this.updateEffortBasedOnDuration();break;case"EffortDriven":this.updateDurationBasedOnEffort();break}},onAssignmentStructureMutation:function(){switch(this.getSchedulingMode()){case"FixedDuration":this.updateEffortBasedOnDuration();break;case"EffortDriven":var a=this.calculateEffortDrivenEndDate(this.getStartDate(),this.getEffort(),this.getEffortUnit());this.setStartEndDate(this.getStartDate(),a,this.getTaskStore().skipWeekendsDuringDragDrop);break;case"DynamicAssignment":this.updateAssignments();break}},adjustToCalendar:function(){if(this.get("leaf")&&!this.isManuallyScheduled()){this.setStartDate(this.getStartDate(),true,this.getTaskStore().skipWeekendsDuringDragDrop)}},isEditable:function(a){if(!this.isLeaf()){if(a===this.effortField&&this.autoCalculateEffortForParentTask){return false}if(a===this.percentDoneField&&this.autoCalculatePercentDoneForParentTask){return false}}if((a===this.durationField||a===this.endDateField)&&this.getSchedulingMode()==="EffortDriven"){return false}if(a===this.effortField&&this.getSchedulingMode()==="FixedDuration"){return false}return true},isDraggable:function(){return this.getDraggable()},isResizable:function(){return this.getResizable()},getWBSCode:function(){var b=[],a=this;while(!a.data.root){b.push(a.data.index+1);a=a.parentNode}return b.reverse().join(".")},getDisplayStartDate:function(d,b,c,a){if(arguments.length<3){c=this.getStartDate();if(arguments.length<2){b=true}}if(c&&b&&this.getEndDate()-this.getStartDate()===0&&c-Ext.Date.clearTime(c,true)===0&&!Ext.Date.formatContainsHourInfo(d)){c=Sch.util.Date.add(c,Sch.util.Date.MILLI,-1)}return a?c:c?Ext.util.Format.date(c,d):""},getDisplayEndDate:function(d,b,c,a){if(arguments.length<3){c=this.getEndDate();if(arguments.length<2){b=true}}if(c&&(!this.isMilestone()||b)&&c-Ext.Date.clearTime(c,true)===0&&!Ext.Date.formatContainsHourInfo(d)){c=Sch.util.Date.add(c,Sch.util.Date.MILLI,-1)}return a?c:c?Ext.util.Format.date(c,d):""},getId:function(){var a=this.data[this.idProperty];return a&&a!=="root"?a:null}},function(){Ext.data.NodeInterface.decorate(this);this.override({remove:function(){var b=this.parentNode;var a=this.getTaskStore();var c=this.callParent(arguments);if(a.recalculateParents){if(b.convertEmptyParentToLeaf&&b.childNodes.length===0){b.set("leaf",true)}else{if(!b.isRoot()&&b.childNodes.length>0){b.childNodes[0].recalculateParents()}}}return c},insertBefore:function(a){if(this.phantom){this.data[this.phantomIdField]=a.data[this.phantomParentIdField]=this.internalId}return this.callParent(arguments)},appendChild:function(c){if(this.phantom){var a=c instanceof Array?c:[c];for(var b=0;b<a.length;b++){this.data[this.phantomIdField]=a[b].data[this.phantomParentIdField]=this.internalId}}return this.callParent(arguments)},createNode:function(b){b=this.callParent(arguments);if(!b.normalized){var a=b.updateInfo;b.updateInfo=function(){a.apply(this,arguments);delete b.updateInfo;b.normalize()}}return b}})});Ext.define("Gnt.util.DurationParser",{requires:["Sch.util.Date"],parseNumberFn:null,durationRegex:null,allowDecimals:true,unitsRegex:{MILLI:/^ms$|^mil/i,SECOND:/^s$|^sec/i,MINUTE:/^m$|^min/i,HOUR:/^h$|^hr$|^hour/i,DAY:/^d$|^day/i,WEEK:/^w$|^wk|^week/i,MONTH:/^mo|^mnt/i,QUARTER:/^q$|^quar|^qrt/i,YEAR:/^y$|^yr|^year/i},constructor:function(a){Ext.apply(this,a);if(!this.durationRegex){this.durationRegex=this.allowDecimals?/^\s*([\-+]?\d+(?:[.,]\d+)?)\s*(\w+)?/i:/^\s*([\-+]?\d+)(?![.,])\s*(\w+)?/i}},parse:function(c){var a=this.durationRegex.exec(c);if(c==null||!a){return null}var e=this.parseNumberFn(a[1]);var b=a[2];var d;if(b){Ext.iterate(this.unitsRegex,function(g,h){if(h.test(b)){d=Sch.util.Date.getUnitByName(g);return false}});if(!d){return null}}return{value:e,unit:d}}});Ext.define("Gnt.util.DependencyParser",{requires:["Gnt.util.DurationParser"],separator:/\s*;\s*/,parseNumberFn:null,dependencyRegex:/(-?\d+)(SS|SF|FS|FF)?([\+\-].*)?/i,types:["SS","SF","FS","FF"],constructor:function(a){this.durationParser=new Gnt.util.DurationParser(a);Ext.apply(this,a)},parse:function(k){if(!k){return[]}var d=k.split(this.separator);var l=[];var c=this.dependencyRegex;for(var g=0;g<d.length;g++){var a=d[g];if(!a&&g==d.length-1){continue}var h=c.exec(a);var e={};if(!h){return null}e.taskId=parseInt(h[1],10);e.type=Ext.Array.indexOf(this.types,(h[2]||"FS").toUpperCase());var j=h[3];if(j){var b=this.durationParser.parse(j);if(!b){return null}e.lag=b.value;e.lagUnit=b.unit||"d"}l.push(e)}return l}});Ext.define("Gnt.util.Data",{requires:["Ext.data.Model"],singleton:true,cloneModelSet:function(b,d,c){var e=[],a;var g=function(h){a=h.copy();Ext.data.Model.id(a);a.phantom=false;a.originalRecord=h;if(d){if(d.call(c||b,a,h)===false){return}}e.push(a)};if(b.isStore||b.isMixedCollection){b.each(g)}else{Ext.Array.each(b,g)}return e},applyCloneChanges:function(g,m,j,p){var a=[];var e=g.getRemovedRecords();for(var d=0,b=e.length;d<b;d++){if(e[d].originalRecord){a.push(e[d].originalRecord)}}if(a.length){m.remove(a);g.removed.length=0}var n=g.getModifiedRecords(),q,c,o,h;for(d=0,b=n.length;d<b;d++){q=n[d].originalRecord;c=n[d].getData();delete c[n[d].idProperty];if(q){q.beginEdit();for(var k in c){q.set(k,c[k])}if(j){j.call(p||n[d],c,n[d])}q.endEdit()}else{if(j){j.call(p||n[d],c,n[d])}h=m.add(c);n[d].originalRecord=h&&h[0]}n[d].commit(true)}}});Ext.define("Gnt.data.Calendar",{extend:"Ext.data.Store",requires:["Ext.Date","Gnt.model.CalendarDay","Sch.model.Range","Sch.util.Date"],model:"Gnt.model.CalendarDay",daysPerMonth:30,daysPerWeek:7,hoursPerDay:24,unitsInMs:null,defaultNonWorkingTimeCssCls:"gnt-holiday",weekendsAreWorkdays:false,weekendFirstDay:6,weekendSecondDay:0,holidaysCache:null,availabilityIntervalsCache:null,daysIndex:null,weekAvailability:null,defaultWeekAvailability:null,nonStandardWeeksByStartDate:null,nonStandardWeeksStartDates:null,calendarId:null,parent:null,defaultAvailability:["00:00-24:00"],name:null,suspendCacheUpdate:0,statics:{getCalendar:function(a){if(a instanceof Gnt.data.Calendar){return a}return Ext.data.StoreManager.lookup("GNT_CALENDAR:"+a)},getAllCalendars:function(){var a=[];Ext.data.StoreManager.each(function(b){if(b instanceof Gnt.data.Calendar){a.push(b)}});return a}},constructor:function(a){a=a||{};var b=a.parent;delete a.parent;var c=a.calendarId;delete a.calendarId;this.callParent(arguments);this.setParent(b);this.setCalendarId(c);this.unitsInMs={MILLI:1,SECOND:1000,MINUTE:60*1000,HOUR:60*60*1000,DAY:this.hoursPerDay*60*60*1000,WEEK:this.daysPerWeek*this.hoursPerDay*60*60*1000,MONTH:this.daysPerMonth*this.hoursPerDay*60*60*1000,QUARTER:3*this.daysPerMonth*24*60*60*1000,YEAR:4*3*this.daysPerMonth*24*60*60*1000};this.defaultWeekAvailability=this.getDefaultWeekAvailability();this.on({update:this.clearCache,datachanged:this.clearCache,clear:this.clearCache,load:this.clearCache,scope:this});this.clearCache()},getCalendarId:function(){return this.calendarId},setCalendarId:function(b){if(this.calendarId!=null){Ext.data.StoreManager.unregister(this)}this.calendarId=b;if(b!=null){this.storeId="GNT_CALENDAR:"+b;Ext.data.StoreManager.register(this)}else{this.storeId=null}var a=this.proxy;if(a&&a.extraParams){a.extraParams.calendarId=b}},getDefaultWeekAvailability:function(){var e=this.defaultAvailability;var d=this.weekendFirstDay;var a=this.weekendSecondDay;var c=[];for(var b=0;b<7;b++){c.push(this.weekendsAreWorkdays||b!=d&&b!=a?new Gnt.model.CalendarDay({Type:"WEEKDAY",Weekday:b,Availability:Ext.Array.clone(e),IsWorkingDay:true}):new Gnt.model.CalendarDay({Type:"WEEKDAY",Weekday:b,Availability:[]}))}return c},clearCache:function(){if(this.suspendCacheUpdate>0){return}this.holidaysCache={};this.availabilityIntervalsCache={};var c=this.daysIndex={};var a=this.weekAvailability=[];var d=this.nonStandardWeeksStartDates=[];var b=this.nonStandardWeeksByStartDate={};this.each(function(m){var e=m.getId();var p=/^(\d)-(\d\d\d\d\/\d\d\/\d\d)-(\d\d\d\d\/\d\d\/\d\d)$/.exec(e);var l=/^WEEKDAY:(\d+)$/.exec(e);var o=m.getType();var n=m.getWeekday();if(o=="WEEKDAYOVERRIDE"||p){var g,k;if(o=="WEEKDAYOVERRIDE"){g=m.getOverrideStartDate();k=m.getOverrideEndDate()}if(p){g=Ext.Date.parse(p[2],"Y/m/d");k=Ext.Date.parse(p[3],"Y/m/d");n=p[1]}if(g&&k&&n!=null){var j=g-0;if(!b[j]){b[j]={startDate:new Date(g),endDate:new Date(k),name:m.getName(),weekAvailability:[],mainDay:null};d.push(j)}if(n>=0){b[j].weekAvailability[n]=m}else{b[j].mainDay=m}}}else{if(o=="WEEKDAY"||l){if(l){n=l[1]}if(n!=null){if(n<0||n>6){throw new Error("Incorrect week day index")}a[n]=m}}else{var h=m.getDate();if(h){c[h-0]=m}}}});d.sort();this.fireEvent("calendarchange",this)},intersectsWithCurrentWeeks:function(b,c){var a=false;this.forEachNonStandardWeek(function(g){var d=g.startDate;var e=g.endDate;if(d<=b&&b<e||d<c&&c<=e){a=true;return false}});return a},addNonStandardWeek:function(b,g,a,c){b=Ext.Date.clearTime(new Date(b));g=Ext.Date.clearTime(new Date(g));if(this.intersectsWithCurrentWeeks(b,g)){throw new Error("Can not add intersecting week")}var e=this.model;var h=[];Ext.Array.each(a,function(j,k){if(j instanceof Gnt.model.CalendarDay){j.setType("WEEKDAYOVERRIDE");j.setOverrideStartDate(b);j.setOverrideEndDate(g);j.setWeekday(k);j.setName(c||"Week override");h.push(j)}else{if(Ext.isArray(j)){var l=new e;l.setType("WEEKDAYOVERRIDE");l.setOverrideStartDate(b);l.setOverrideEndDate(g);l.setWeekday(k);l.setName(c||"Week override");l.setAvailability(j);h.push(l)}}});var d=new e;d.setType("WEEKDAYOVERRIDE");d.setOverrideStartDate(b);d.setOverrideEndDate(g);d.setWeekday(-1);d.setName(c||"Week override");h.push(d);this.add(h)},getNonStandardWeekByStartDate:function(a){return this.nonStandardWeeksByStartDate[Ext.Date.clearTime(new Date(a))-0]||null},getNonStandardWeekByDate:function(d){d=Ext.Date.clearTime(new Date(d))-0;var e=this.nonStandardWeeksStartDates;var a=this.nonStandardWeeksByStartDate;for(var c=0;c<e.length;c++){var b=a[e[c]];if(b.startDate>d){break}if(b.startDate<=d&&d<=b.endDate){return b}}return null},removeNonStandardWeek:function(a){a=Ext.Date.clearTime(new Date(a))-0;var b=this.getNonStandardWeekByStartDate(a);if(!b){return}this.remove(Ext.Array.clean(b.weekAvailability).concat(b.mainDay))},forEachNonStandardWeek:function(e,c){var d=this;var g=this.nonStandardWeeksStartDates;var a=this.nonStandardWeeksByStartDate;for(var b=0;b<g.length;b++){if(e.call(c||d,a[g[b]])===false){return false}}},setWeekendsAreWorkDays:function(a){if(a!==this.weekendsAreWorkdays){this.weekendsAreWorkdays=a;this.defaultWeekAvailability=this.getDefaultWeekAvailability();this.clearCache()}},areWeekendsWorkDays:function(){return this.weekendsAreWorkdays},getCalendarDay:function(a){a=typeof a=="number"?new Date(a):a;return this.getOverrideDay(a)||this.getWeekDay(a.getDay(),a)||this.getDefaultCalendarDay(a.getDay())},getOverrideDay:function(a){return this.getOwnCalendarDay(a)||this.parent&&this.parent.getOverrideDay(a)||null},getOwnCalendarDay:function(a){a=typeof a=="number"?new Date(a):a;return this.daysIndex[Ext.Date.clearTime(a,true)-0]},getWeekDay:function(c,b){if(b){var a=this.getNonStandardWeekByDate(b);if(a&&a.weekAvailability[c]){return a.weekAvailability[c]}}return this.weekAvailability[c]||this.parent&&this.parent.getWeekDay(c,b)||null},getDefaultCalendarDay:function(a){if(!this.hasOwnProperty("defaultAvailability")&&this.parent){return this.parent.getDefaultCalendarDay(a)}return this.defaultWeekAvailability[a]},isHoliday:function(c){var b=c-0;var d=this.holidaysCache;if(d[b]!=null){return d[b]}c=typeof c=="number"?new Date(c):c;var a=this.getCalendarDay(c);if(!a){throw"Can't find day for "+c}return d[b]=!a.getIsWorkingDay()},isWeekend:function(b){var a=b.getDay();return a===this.weekendFirstDay||a===this.weekendSecondDay},isWorkingDay:function(a){return !this.isHoliday(a)},convertMSDurationToUnit:function(a,b){return a/this.unitsInMs[Sch.util.Date.getNameOfUnit(b)]},convertDurationToMs:function(b,a){return b*this.unitsInMs[Sch.util.Date.getNameOfUnit(a)]},getHolidaysRanges:function(d,h,a){if(d>h){Ext.Error.raise("startDate can't be bigger than endDate")}d=Ext.Date.clearTime(d,true);h=Ext.Date.clearTime(h,true);var c=[],j,e;for(e=d;e<h;e=Sch.util.Date.getNext(e,Sch.util.Date.DAY,1)){if(this.isHoliday(e)||this.weekendsAreWorkdays&&a&&this.isWeekend(e)){var k=this.getCalendarDay(e);var l=k&&k.getCls()||this.defaultNonWorkingTimeCssCls;var g=Sch.util.Date.getNext(e,Sch.util.Date.DAY,1);if(!j){j={StartDate:e,EndDate:g,Cls:l}}else{if(j.Cls==l){j.EndDate=g}else{c.push(j);j={StartDate:e,EndDate:g,Cls:l}}}}else{if(j){c.push(j);j=null}}}if(j){c.push(j)}var b=[];Ext.each(c,function(m){b.push(Ext.create("Sch.model.Range",{StartDate:m.StartDate,EndDate:m.EndDate,Cls:m.Cls}))});return b},forEachAvailabilityInterval:function(t,g,q){q=q||this;var m=this;var d=t.startDate;var k=t.endDate;var p=t.isForward!==false;if(p?!d:!k){throw new Error("At least `startDate` or `endDate` is required, depending from the `isForward` option")}var a=new Date(p?d:k);var s=p?!k:!d;var c=Sch.util.Date;while(s||(p?a<k:a>d)){var j=this.getAvailabilityIntervalsFor(a-(p?0:1));for(var h=p?0:j.length-1;p?h<j.length:h>=0;p?h++:h--){var b=j[h];var l=b.startDate;var o=b.endDate;if(l>=k||o<=d){continue}var e=l<d?d:l;var n=o>k?k:o;if(g.call(q,e,n)===false){return false}}a=p?c.getStartOfNextDay(a):c.getEndOfPreviousDay(a)}},calculateDuration:function(a,d,b){var c=0;this.forEachAvailabilityInterval({startDate:a,endDate:d},function(h,g){var e=h.getTimezoneOffset()-g.getTimezoneOffset();c+=g-h+e*60*1000});return this.convertMSDurationToUnit(c,b)},calculateEndDate:function(a,g,b){if(!g){return new Date(a)}var e=Sch.util.Date,d;g=this.convertDurationToMs(g,b);var c=g===0&&Ext.Date.clearTime(a,true)-a===0?e.add(a,Sch.util.Date.DAY,-1):a;this.forEachAvailabilityInterval({startDate:c},function(k,j){var l=j-k;var h=k.getTimezoneOffset()-j.getTimezoneOffset();if(l>=g){d=new Date(k-0+g);return false}else{g-=l+h*60*1000}});return d},calculateStartDate:function(d,c,b){if(!c){return new Date(d)}var a;c=this.convertDurationToMs(c,b);this.forEachAvailabilityInterval({endDate:d,isForward:false},function(g,e){var h=e-g;if(h>=c){a=new Date(e-c);return false}else{c-=h}});return a},skipNonWorkingTime:function(a,b){this.forEachAvailabilityInterval(b?{startDate:a}:{endDate:a,isForward:false},function(d,c){a=b?d:c;return false});return new Date(a)},skipWorkingTime:function(a,c,b){return c>=0?this.calculateEndDate(a,c,b):this.calculateStartDate(a,-c,b)},getAvailabilityIntervalsFor:function(a){a=Ext.Date.clearTime(new Date(a))-0;if(this.availabilityIntervalsCache[a]){return this.availabilityIntervalsCache[a]}return this.availabilityIntervalsCache[a]=this.getCalendarDay(a).getAvailabilityIntervalsFor(a)},getByInternalId:function(a){return this.data.map[a]},getParentableCalendars:function(){var c=this,a=[],d=Gnt.data.Calendar.getAllCalendars();var b=function(e){if(!e.parent){return false}if(e.parent==c){return true}return b(e.parent)};Ext.Array.each(d,function(e){if(e===c){return}if(!b(e)){a.push({Id:e.calendarId,Name:e.name||e.calendarId})}});return a},setParent:function(e){var d=Gnt.data.Calendar.getCalendar(e);if(e&&!d){throw new Error("Invalid parent specified for the calendar")}if(this.parent!=d){var b=this.proxy;var c={calendarchange:this.clearCache,scope:this};var a=this.parent;if(a){a.un(c)}this.parent=d;if(d){d.on(c)}if(b&&b.extraParams){b.extraParams.parentId=d?d.calendarId:null}this.clearCache();this.fireEvent("parentchange",this,d,a)}}});Ext.define("Gnt.data.calendar.BusinessTime",{extend:"Gnt.data.Calendar",daysPerMonth:20,daysPerWeek:5,hoursPerDay:8,defaultAvailability:["08:00-12:00","13:00-17:00"]});Ext.define("Gnt.data.DependencyStore",{extend:"Ext.data.Store",model:"Gnt.model.Dependency",taskStore:null,constructor:function(){this.callParent(arguments);this.init()},init:function(){this.on({beforesync:this.onBeforeSyncOperation,scope:this})},onBeforeSyncOperation:function(a,b){if(a.create){for(var d,c=a.create.length-1;c>=0;c--){d=a.create[c];if(!d.isPersistable()){Ext.Array.remove(a.create,d)}}if(a.create.length===0){delete a.create}}return Boolean(a.create&&a.create.length>0||a.update&&a.update.length>0||a.destroy&&a.destroy.length>0)},getDependenciesForTask:function(b){var h=b.getId()||b.internalId;var e=[],g=this;for(var d=0,a=g.getCount();d<a;d++){var c=g.getAt(d);if(c.getSourceId()==h||c.getTargetId()==h){e.push(c)}}return e},getIncomingDependenciesForTask:function(b){var h=b.getId()||b.internalId;var e=[],g=this;for(var d=0,a=g.getCount();d<a;d++){var c=g.getAt(d);if(c.getTargetId()==h){e.push(c)}}return e},getOutgoingDependenciesForTask:function(b){var h=b.getId()||b.internalId;var e=[],g=this;for(var d=0,a=g.getCount();d<a;d++){var c=g.getAt(d);if(c.getSourceId()==h){e.push(c)}}return e},hasTransitiveDependency:function(d,b,a){var c=this;return this.findBy(function(g){var e=g.getTargetId();if(g.getSourceId()==d){return e==b&&g!==a?true:c.hasTransitiveDependency(g.getTargetId(),b,a)}})>=0},isValidDependency:function(j,b,e){var g=true;var d,c,a;if(j instanceof Gnt.model.Dependency){d=j.getSourceId();c=this.getSourceTask(d);b=j.getTargetId();a=this.getTargetTask(b)}else{d=j;c=this.getSourceTask(d);a=this.getTargetTask(b)}if(!e&&j instanceof Gnt.model.Dependency){g=j.isValid()}else{g=d&&b&&d!=b}if(g){if(c&&a&&(c.contains(a)||a.contains(c))){g=false}var h=e||j instanceof Gnt.model.Dependency;if(g&&(!h&&this.areTasksLinked(d,b)||this.hasTransitiveDependency(b,d,h?j:null))){g=false}}return g},areTasksLinked:function(c,e){var d=this;var b=c instanceof Gnt.model.Task?c.getId()||c.internalId:c;var a=e instanceof Gnt.model.Task?e.getId()||e.internalId:e;return !!this.getByTaskIds(b,a)},getByTaskIds:function(c,b){var d=this;var a=this.findBy(function(h){var e=h.getTargetId(),g=h.getSourceId();if(g===c&&e===b||g===b&&e===c){return true}});return this.getAt(a)},getSourceTask:function(a){var b=a instanceof Gnt.model.Dependency?a.getSourceId():a;return this.getTaskStore().getById(b)},getTargetTask:function(a){var b=a instanceof Gnt.model.Dependency?a.getTargetId():a;return this.getTaskStore().getById(b)},getTaskStore:function(){return this.taskStore}});Ext.define("Gnt.data.TaskStore",{extend:"Ext.data.TreeStore",requires:["Gnt.model.Task","Gnt.data.Calendar","Gnt.data.DependencyStore"],mixins:["Sch.data.mixin.FilterableTreeStore","Sch.data.mixin.EventStore"],model:"Gnt.model.Task",calendar:null,dependencyStore:null,resourceStore:null,assignmentStore:null,weekendsAreWorkdays:false,cascadeChanges:false,batchSync:true,recalculateParents:true,skipWeekendsDuringDragDrop:true,cascadeDelay:0,cascading:false,isFillingRoot:false,earlyStartDates:null,earlyEndDates:null,lateStartDates:null,lateEndDates:null,lastTotalTimeSpan:null,constructor:function(c){this.addEvents("filter","clearfilter","beforecascade","cascade");c=c||{};if(!c.calendar){var a={};if(c.hasOwnProperty("weekendsAreWorkdays")){a.weekendsAreWorkdays=c.weekendsAreWorkdays}else{if(this.self.prototype.hasOwnProperty("weekendsAreWorkdays")&&this.self!=Gnt.data.TaskStore){a.weekendsAreWorkdays=this.weekendsAreWorkdays}}c.calendar=new Gnt.data.Calendar(a)}var b=c.dependencyStore||Ext.create("Gnt.data.DependencyStore");delete c.dependencyStore;this.setDependencyStore(b);var d=c.resourceStore||Ext.create("Gnt.data.ResourceStore");delete c.resourceStore;this.setResourceStore(d);var g=c.assignmentStore||Ext.create("Gnt.data.AssignmentStore",{resourceStore:d});delete c.assignmentStore;this.setAssignmentStore(g);var e=c.calendar;if(e){delete c.calendar;this.setCalendar(e,true)}this.resetEarlyDates();this.resetLateDates();this.mixins.observable.constructor.call(this);this.on({beforefill:this.onRootBeforeFill,fillcomplete:this.onRootFillEnd,remove:this.onTaskDeleted,write:this.onTaskStoreWrite,sort:this.onSorted,scope:this});this.callParent([c]);if(this.autoSync){if(this.batchSync){this.sync=Ext.Function.createBuffered(this.sync,500)}else{this.on("beforesync",this.onTaskStoreBeforeSync,this)}}this.initTreeFiltering();this.treeStore=this},load:function(){this.un("remove",this.onTaskDeleted,this);this.callParent(arguments);this.on("remove",this.onTaskDeleted,this)},loadData:function(H,B){var F=this,w=F.getRootNode(),c=B?B.addRecords:false,y=B?B.syncStore:false;F.suspendAutoSync();F.suspendEvents();if(!c&&w){w.removeAll()}if(!F.getRootNode()){w=F.setRootNode()}if(H.length){var g=H.length,e=F.model,p=[],z=typeof H[0].get==="function",b,t,q,C,E,G,A,o,j,s;var D=F.sortNewNodesByIndex(H);for(var x=0;x<g;x++){t=F.getById(H[x].getId?H[x].getId():H[x].Id);s=false;b=0;if(t){C=z?H[x].get("parentId"):H[x].parentId;E=t.parentNode.getId();G=z?H[x].get("index"):H[x].index;A=t.get("index");if((typeof C!=="undefined"||C===null?C!==E:false)||(typeof G!=="undefined"?G!==A:false)){o=C===null?w:F.getById(C);j=E===null?w:F.getById(E);if(o&&o.get("parentId")===t.getId()&&F.selfChildInRecordsData(t.getId(),C,D)){s=true}}else{b=1}}else{t=z?new e(H[x].data):new e(H[x]);E=t.get("parentId");if(E){o=F.getById(E)}else{if(E===null){o=w}}}if(!s){if(z){t.set(H[x].data)}else{t.set(H[x])}}else{continue}if(o&&!b){F.moveChildren(t,o,j,D);F.fixNodeDates(t)}else{if(typeof o==="undefined"&&!b){q={node:t,index:t.get("index")||0,parentId:t.get("parentId")};p.push(q)}else{F.fixNodeDates(t)}}if(o&&!y){o.commit();t.commit();if(j){j.commit()}}}var h=0,n=0,k=p.length,d,m;while(p.length){if(h>p.length-1){h=0;n=1}d=p[h];m=d.parentId===null?w:F.getById(d.parentId);if(m){var a=F.nodeIsChild(d.node,o);if(a){m.insertChild(d.index,d.node);F.fixNodeDates(d.node);p.splice(h,1);if(!y){m.commit();d.node.commit()}h-=1}}h+=1;if(n&&h===k-1&&p.length===k){throw"Invalid data, possible infinite loop."}}if(F.nodesToExpand){x=0;for(var u=F.nodesToExpand.length;x<u;x+=1){t=F.nodesToExpand[x];if(t.childNodes&&t.childNodes.length){t.expand()}}delete F.nodesToExpand}}F.resumeAutoSync();F.resumeEvents();this.fireEvent("datachanged");this.fireEvent("refresh");if(y){F.sync()}if(this.buffered){}},selfChildInRecordsData:function(d,c,b){var a=false;a=typeof b[c]==="undefined"?true:b[c]===d;return a},sortNewNodesByIndex:function(c){var b={},a=function(d,e){if(typeof d.get==="function"){return d.get(e)}return d[e]};Ext.Array.each(c,function(d){b[a(d,"Id")]=a(d,"parentId")});Ext.Array.sort(c,function(e,k){var j=a(e,"index"),h=a(k,"index"),g=a(e,"parentId"),d=a(k,"parentId");if(typeof j!=="undefined"&&typeof h!=="undefined"){if(g===d){return j<h?-1:j>h?1:0}else{if(g===null){return 1}else{if(d===null){return -1}else{return g<d?-1:1}}}}return 0});return b},fixNodeDates:function(b){var c=b.calculateDuration(b.getStartDate(),b.getEndDate(),b.getDurationUnit()),a;b.set({Duration:c});if(this.recalculateParents){if(b.childNodes.length){a=b.getChildAt(0);a.recalculateParents()}else{b.recalculateParents()}}},nodeIsChild:function(c,b){var d=b.getId(),a=true;if(c.childNodes.length){c.cascadeBy(function(e){if(e.getId()===d){a=false;return false}})}return a},moveChildren:function(e,d,c,g){if(e.get("expanded")){if(!this.nodesToExpand){this.nodesToExpand=[]}this.nodesToExpand.push(e);e.set("expanded",false)}var b,j=this.nodeIsChild(e,d),h=g?!this.selfChildInRecordsData(e.getId(),d.getId(),g):true,a=c||this.getById(e.get("parentId"));if(!j&&h){d.set("parentId",null);this.moveChildren(d,this.getRootNode(),e)}if(j||h){if(e.childNodes.length){b=e.copy(null,true);e.removeAll()}if(a&&a.getId()!==d.getId()){a.removeChild(e)}typeof e.get("index")!=="undefined"?d.insertChild(e.get("index"),e):d.appendChild(e);if(b){b.cascadeBy(function(l){if(l!==b){var k=l.copy(null);k.get("index")?e.insertChild(k.get("index"),k):e.appendChild(k)}})}this.fixNodeDates(e)}},setRootNode:function(){var b=this;this.tree.setRootNode=Ext.Function.createInterceptor(this.tree.setRootNode,function(c){Ext.apply(c,{calendar:b.calendar,taskStore:b,dependencyStore:b.dependencyStore,phantom:false,dirty:false})});var a=this.callParent(arguments);delete this.tree.setRootNode;return a},onRootBeforeFill:function(){this.isFillingRoot=true;this.un({append:this.onNodeUpdated,insert:this.onNodeUpdated,update:this.onTaskUpdated,scope:this})},onRootFillEnd:function(b,a){a.normalizeParent();this.on({append:this.onNodeUpdated,insert:this.onNodeUpdated,update:this.onTaskUpdated,scope:this});this.isFillingRoot=false},getDependencyStore:function(){return this.dependencyStore},setDependencyStore:function(a){var b={add:this.onDependencyAddOrUpdate,update:this.onDependencyAddOrUpdate,remove:this.onDependencyDelete,scope:this};if(this.dependencyStore){this.dependencyStore.un(b)}this.dependencyStore=Ext.StoreMgr.lookup(a);if(a){a.taskStore=this;a.on(b)}},setResourceStore:function(a){this.resourceStore=Ext.StoreMgr.lookup(a);a.taskStore=this;a.normalizeResources()},getResourceStore:function(){return this.resourceStore||null},setAssignmentStore:function(b){var a={add:this.onAssignmentStructureMutation,update:this.onAssignmentMutation,remove:this.onAssignmentStructureMutation,scope:this};if(this.assignmentStore){this.assignmentStore.un(a)}this.assignmentStore=Ext.StoreMgr.lookup(b);b.taskStore=this;b.on(a)},getAssignmentStore:function(){return this.assignmentStore||null},renormalizeTasks:function(c,b){if(b instanceof Gnt.model.Task){b.adjustToCalendar()}else{var a=this.getRootNode();if(a){a.cascadeBy(function(d){d.adjustToCalendar()})}}},getCalendar:function(){return this.calendar||null},setCalendar:function(d,b){var c={calendarchange:this.renormalizeTasks,scope:this};if(this.calendar){this.calendar.un(c)}this.calendar=d;d.on(c);var a=this.tree&&this.getRootNode();if(a){a.calendar=d}if(!b){this.renormalizeTasks()}},getCriticalPaths:function(){var b=this.getRootNode(),a=[],d=new Date(0);b.cascadeBy(function(e){d=Sch.util.Date.max(e.getEndDate(),d)});b.cascadeBy(function(e){if(d-e.getEndDate()===0&&!e.isRoot()&&!(!e.isLeaf()&&e.childNodes.length)){a.push(e)}});var c=[];Ext.each(a,function(e){c.push(e.getCriticalPaths())});return c},onNodeUpdated:function(b,c){if(!c.isRoot()){if(this.lastTotalTimeSpan){var a=this.getTotalTimeSpan();if(c.getEndDate()>a.end||c.getStartDate()<a.start){this.lastTotalTimeSpan=null}}if(c.getEndDate()-this.getProjectEndDate()===0){this.resetLateDates()}if(!this.cascading&&this.recalculateParents){c.recalculateParents()}}},onTaskUpdated:function(c,b,a){var g=b.previous;if(this.lastTotalTimeSpan){var d=this.getTotalTimeSpan();if(g&&(g[b.endDateField]-d.end===0||g[b.startDateField]-d.start===0)||b.getEndDate()>d.end||b.getStartDate()<d.start){this.lastTotalTimeSpan=null}}if(!this.cascading&&a!==Ext.data.Model.COMMIT&&g){if(b.startDateField in g||b.endDateField in g||"parentId" in g||b.effortField in g||b.percentDoneField in g||g[b.schedulingModeField]=="Manual"){var e=b;if(this.cascadeChanges){if(g[e.schedulingModeField]=="Manual"){var h=e.getIncomingDependencies();if(h.length){e=h[0].getSourceTask()}}Ext.Function.defer(this.cascadeChangesForTask,this.cascadeDelay,this,[e])}else{this.resetEarlyDates();this.resetLateDates()}if(this.recalculateParents){e.recalculateParents()}}else{if(g[b.schedulingModeField]&&b.isManuallyScheduled()){this.resetEarlyDates();this.resetLateDates()}}}},cascadeChangesForTask:function(a){var c=this,b={nbrAffected:0};Ext.each(a.getOutgoingDependencies(),function(d){var e=d.getTargetTask();if(e){if(!c.cascading){c.fireEvent("beforecascade",c)}c.cascading=true;e.cascadeChanges(c,b,d)}});if(c.cascading){c.cascading=false;c.fireEvent("cascade",c,b);this.resetEarlyDates();this.resetLateDates()}},onTaskDeleted:function(g,e,b){var c=this.dependencyStore;var j;if(c&&!e.isReplace&&!b){j=e.getAllDependencies(c);c.remove(j)}var d=this.getTotalTimeSpan();var a=e.getStartDate();var h=e.getEndDate();if(h-d.end===0||a-d.start===0){this.lastTotalTimeSpan=null}this.resetEarlyDates();this.resetLateDates()},onAssignmentMutation:function(c,a){var b=this;Ext.each(a,function(e){var d=e.getTask(b);if(d){d.onAssignmentMutation(e)}})},onAssignmentStructureMutation:function(c,a){var b=this;Ext.each(a,function(e){var d=e.getTask(b);if(d){d.onAssignmentStructureMutation(e)}})},onDependencyAddOrUpdate:function(b,d){this.resetEarlyDates();this.resetLateDates();if(this.cascadeChanges){var c=this,a;Ext.each(d,function(e){a=e.getTargetTask();if(a){a.constrain(c)}})}},onDependencyDelete:function(a,b){this.resetEarlyDates();this.resetLateDates()},getNewRecords:function(){return Ext.Array.filter(this.tree.flatten(),this.filterNew,this)},getUpdatedRecords:function(){return Ext.Array.filter(this.tree.flatten(),this.filterUpdated,this)},filterNew:function(a){return a.phantom&&a.isValid()&&a!=this.tree.root},filterUpdated:function(a){return a.dirty&&!a.phantom&&a.isValid()&&a!=this.tree.root},onTaskStoreBeforeSync:function(b,c){var a=b.create;if(a){for(var e,d=a.length-1;d>=0;d--){e=a[d];if(!e.isPersistable()){Ext.Array.remove(a,e)}}if(a.length===0){delete b.create}}return Boolean(b.create&&b.create.length>0||b.update&&b.update.length>0||b.destroy&&b.destroy.length>0)},onTaskStoreWrite:function(c,b){var d=this.dependencyStore;if(!d||b.action!=="create"){return}var a=b.getRecords(),e;Ext.each(a,function(g){e=g.getId();if(!g.phantom&&e!==g._phantomId){Ext.each(d.getNewRecords(),function(h){var k=h.getSourceId();var j=h.getTargetId();if(k===g._phantomId){h.setSourceId(e)}else{if(j===g._phantomId){h.setTargetId(e)}}});Ext.each(g.childNodes,function(h){if(h.phantom){h.set("parentId",e)}});delete g._phantomId}})},forEachTaskUnOrdered:function(c,b){var e=this.tree.nodeHash;var a=this.getRootNode();for(var d in e){if(e[d]!==a){c.call(b||this,e[d])}}},getTotalTimeSpan:function(){if(this.lastTotalTimeSpan){return this.lastTotalTimeSpan}var a=new Date(9999,0,1),b=new Date(0);this.forEachTaskUnOrdered(function(d){var c=d.getStartDate();if(c<a){a=c}var e=d.getEndDate();if(e>b){b=e}});a=a<new Date(9999,0,1)?a:null;b=b>new Date(0)?b:null;this.lastTotalTimeSpan={start:a,end:b||a||null};return this.lastTotalTimeSpan},getProjectStartDate:function(){return this.getTotalTimeSpan().start},getProjectEndDate:function(){return this.getTotalTimeSpan().end},getCount:function(b){var a=b===false?0:-1;this.getRootNode().cascadeBy(function(){a++});return a},toArray:function(){var a=[];this.getRootNode().cascadeBy(function(b){a.push(b)});return a},remove:function(a){Ext.each(a,function(b){b.remove()})},indent:function(a){a=Ext.isArray(a)?a.slice():[a];a.sort(function(d,c){return d.data.index-c.data.index});Ext.each(a,function(b){b.indent()})},outdent:function(a){a=Ext.isArray(a)?a.slice():[a];a.sort(function(d,c){return c.data.index-d.data.index});Ext.each(a,function(b){b.outdent()})},getTasksForResource:function(a){return a.getTasks()},getEventsForResource:function(a){return this.getTasksForResource(a)},indexOf:function(a){return a&&this.tree.getNodeById(a.internalId)?0:-1},getByInternalId:function(a){return this.tree.getNodeById(a)},queryBy:function(b,a){var d=[];var c=this;this.getRootNode().cascadeBy(function(e){if(b.call(a||c,e)){d.push(e)}});return d},onSorted:function(){if(this.lastTreeFilter){this.filterTreeBy(this.lastTreeFilter)}},append:function(a){this.getRootNode().appendChild(a)},resetEarlyDates:function(){this.earlyStartDates={};this.earlyEndDates={};this.fireEvent("resetearlydates")},resetLateDates:function(a){this.lateStartDates={};this.lateEndDates={};this.fireEvent("resetlatedates")}});Ext.define("Gnt.data.ResourceStore",{requires:["Gnt.model.Resource"],extend:"Sch.data.ResourceStore",model:"Gnt.model.Resource",taskStore:null,constructor:function(){this.mixins.observable.constructor.call(this);this.on({load:this.normalizeResources,scope:this});this.callParent(arguments)},normalizeResources:function(){this.each(function(b){if(!b.normalized){var a=b.getCalendarId();if(a){b.setCalendarId(a,true)}b.normalized=true}})},getTaskStore:function(){return this.taskStore||null},getAssignmentStore:function(){return this.assignmentStore||null},getByInternalId:function(a){return this.data.getByKey(a)||this.getById(a)}});Ext.define("Gnt.data.AssignmentStore",{extend:"Ext.data.Store",requires:["Gnt.model.Assignment"],model:"Gnt.model.Assignment",taskStore:null,getTaskStore:function(){return this.taskStore},getResourceStore:function(){return this.getTaskStore().resourceStore},getByInternalId:function(a){return this.data.getByKey(a)||this.getById(a)}});Ext.define("Gnt.patches.IETreeStore",{extend:"Sch.util.Patch",requires:["Gnt.data.TaskStore"],target:"Gnt.data.TaskStore",ieOnly:true,overrides:{onNodeAdded:function(c,e){var d=this,b=d.getProxy(),a=b.getReader(),g=e.raw||e[e.persistenceProperty],h;Ext.Array.remove(d.removed,e);e.join(d);if(!e.isLeaf()){h=a.getRoot(g);if(h){d.fillNode(e,a.extractData(h));if(g[a.root]){delete g[a.root]}}}if(d.autoSync&&!d.autoSyncSuspended&&(e.phantom||e.dirty)){d.sync()}}}});Ext.define("Gnt.template.Template",{extend:"Ext.XTemplate",isLegacyIE:Ext.isIE8m||Ext.isIEQuirks,getInnerTpl:Ext.emptyFn,innerTpl:null,dependencyTerminalMarkup:'<div class="sch-gantt-terminal sch-gantt-terminal-start"></div><div class="sch-gantt-terminal sch-gantt-terminal-end"></div>',constructor:function(a){Ext.apply(this,a);var c=a.rtl?"right":"left";var b=this.getInnerTpl(a)||"";this.callParent(['<div class="sch-event-wrap {ctcls} x-unselectable" style="'+c+':{offset}px">'+(a.leftLabel?'<tpl if="this.hasLabel(leftLabel)"><div class="sch-gantt-labelct sch-gantt-labelct-left"><label class="sch-gantt-label sch-gantt-label-left">{leftLabel}</label></div></tpl>':"")+(a.rightLabel?'<div class="sch-gantt-labelct sch-gantt-labelct-right" style="left:{width}px"><label class="sch-gantt-label sch-gantt-label-right">{rightLabel}</label></div>':"")+(a.topLabel?'<div class="sch-gantt-labelct sch-gantt-labelct-top"><label class="sch-gantt-label sch-gantt-label-top">{topLabel}</label></div>':"")+b+(a.bottomLabel?'<div class="sch-gantt-labelct sch-gantt-labelct-bottom"><label class="sch-gantt-label sch-gantt-label-bottom">{bottomLabel}</label></div>':"")+"</div>",{compiled:true,disableFormats:true,hasLabel:function(d){return !!d}}])}});Ext.define("Gnt.template.Task",{extend:"Gnt.template.Template",innerTpl:'<div class="sch-gantt-progress-bar" style="width:{percentDone}%;{progressBarStyle}" unselectable="on">&#160;</div>',getInnerTpl:function(a){var b=a.rtl?"right":"left";return'<div id="'+a.prefix+'{id}" class="sch-gantt-item sch-gantt-task-bar {cls}" unselectable="on" style="width:{width}px;{style}">'+(a.resizeHandles==="both"||a.resizeHandles==="left"?'<div class="sch-resizable-handle sch-gantt-task-handle sch-resizable-handle-start sch-resizable-handle-west"></div>':"")+this.innerTpl+(a.resizeHandles==="both"||a.resizeHandles==="right"?'<div class="sch-resizable-handle sch-gantt-task-handle sch-resizable-handle-end sch-resizable-handle-east"></div>':"")+(a.enableProgressBarResize?'<div style="'+b+':{percentDone}%" class="sch-gantt-progressbar-handle"></div>':"")+(a.enableDependencyDragDrop?this.dependencyTerminalMarkup:"")+"</div>"}});Ext.define("Gnt.template.Milestone",{extend:"Gnt.template.Template",innerTpl:Ext.isIE8m||Ext.isIEQuirks?'<div style="border-width:{[Math.floor(values.side*0.7)]}px" class="sch-gantt-milestone-diamond-top {cls}" unselectable="on" style="{style}"></div><div style="border-width:{[Math.floor(values.side*0.7)]}px" class="sch-gantt-milestone-diamond-bottom {cls}" unselectable="on" style="{style}"></div>':'<img style="{[values.print ? "height:" + values.side + "px;border-left-width:" + values.side + "px" : ""]};{style}" src="'+Ext.BLANK_IMAGE_URL+'" class="sch-gantt-milestone-diamond {cls}" unselectable="on"/>',getInnerTpl:function(a){return"<div "+(this.isLegacyIE?'style="width:{[Math.floor(values.side*0.7)]}px"':"")+' id="'+a.prefix+'{id}" class="sch-gantt-item sch-gantt-milestone-diamond-ct">'+this.innerTpl+(a.enableDependencyDragDrop?this.dependencyTerminalMarkup:"")+"</div>"}});Ext.define("Gnt.template.ParentTask",{extend:"Gnt.template.Template",innerTpl:'<div class="sch-gantt-progress-bar" style="width:{percentDone}%;{progressBarStyle}">&#160;</div><div class="sch-gantt-parenttask-arrow sch-gantt-parenttask-leftarrow"></div><div class="sch-gantt-parenttask-arrow sch-gantt-parenttask-rightarrow"></div>',getInnerTpl:function(a){return'<div id="'+a.prefix+'{id}" class="sch-gantt-item sch-gantt-parenttask-bar {cls}" style="width:{width}px; {style}">'+this.innerTpl+(a.enableDependencyDragDrop?this.dependencyTerminalMarkup:"")+"</div>"}});Ext.define("Gnt.Tooltip",{extend:"Ext.ToolTip",alias:"widget.gantt_task_tooltip",requires:["Ext.Template"],startText:"Starts: ",endText:"Ends: ",durationText:"Duration:",mode:"startend",cls:"sch-tip",height:40,autoHide:false,anchor:"b-tl",maskOnDisable:false,initComponent:function(){this.rtl=this.gantt.rtl;if(this.mode==="startend"&&!this.startEndTemplate){this.startEndTemplate=(new Ext.Template('<div class="sch-timetipwrap {cls}"><div>'+this.startText+"{startText}</div><div>"+this.endText+"{endText}</div></div>")).compile()}if(this.mode==="duration"&&!this.durationTemplate){this.durationTemplate=(new Ext.Template('<div class="sch-timetipwrap {cls}">',"<div>"+this.startText+" {startText}</div>","<div>"+this.durationText+" {duration} {unit}</div>","</div>")).compile()}this.callParent(arguments)},update:function(e,b,d,a){var c;if(this.mode==="duration"){c=this.getDurationContent(e,b,d,a)}else{c=this.getStartEndContent(e,b,d,a)}this.callParent([c])},getStartEndContent:function(b,g,a,j){var e=this.gantt,k=e.getFormattedDate(b),d=k,h;if(g-b>0){d=e.getFormattedEndDate(g,b)}var c={cls:a?"sch-tip-ok":"sch-tip-notok",startText:k,endText:d};if(this.showClock){Ext.apply(c,{startHourDegrees:roundedStart.getHours()*30,startMinuteDegrees:roundedStart.getMinutes()*6});if(g){Ext.apply(c,{endHourDegrees:h.getHours()*30,endMinuteDegrees:h.getMinutes()*6})}}return this.startEndTemplate.apply(c)},getDurationContent:function(g,b,d,a){var c=a.getDurationUnit()||Sch.util.Date.DAY;var e=a.calculateDuration(g,b,c);return this.durationTemplate.apply({cls:d?"sch-tip-ok":"sch-tip-notok",startText:this.gantt.getFormattedDate(g),duration:parseFloat(Ext.Number.toFixed(e,1)),unit:Sch.util.Date.getReadableNameOfUnit(c,e>1)})},show:function(a){if(a){this.setTarget(a)}this.callParent([])}});Ext.define("Gnt.feature.TaskDragDrop",{extend:"Ext.dd.DragZone",requires:["Gnt.Tooltip","Ext.dd.StatusProxy","Ext.dd.ScrollManager"],onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,constructor:function(b,a){a=a||{};Ext.apply(this,a);if(Ext.isIE&&(Ext.isIE8||Ext.isIE7||Ext.ieVersion<9)&&window.top!==window){Ext.dd.DragDropManager.notifyOccluded=true}this.proxy=this.proxy||Ext.create("Ext.dd.StatusProxy",{shadow:false,dropAllowed:"sch-gantt-dragproxy",dropNotAllowed:"sch-gantt-dragproxy",ensureAttachedToBody:Ext.emptyFn});var d=this,c=d.gantt;if(d.useTooltip){d.tip=Ext.create("Gnt.Tooltip",{cls:"gnt-dragdrop-tip",gantt:c})}d.callParent([b,Ext.apply(a,{ddGroup:d.gantt.id+"-task-dd"})]);d.scroll=false;d.isTarget=true;d.ignoreSelf=false;d.addInvalidHandleClass("sch-resizable-handle");d.addInvalidHandleClass("x-resizable-handle");d.addInvalidHandleClass("sch-gantt-terminal");d.addInvalidHandleClass("sch-gantt-progressbar-handle");Ext.dd.ScrollManager.register(d.gantt.el);d.gantt.ownerCt.el.appendChild(this.proxy.el);d.gantt.on({destroy:d.cleanUp,scope:d})},useTooltip:true,validatorFn:function(a,b,d,c){return true},validatorFnScope:null,cleanUp:function(){if(this.tip){this.tip.destroy()}this.destroy()},containerScroll:false,dropAllowed:"sch-gantt-dragproxy",dropNotAllowed:"sch-gantt-dragproxy",destroy:function(){this.callParent(arguments);Ext.dd.ScrollManager.unregister(this.gantt.el)},autoOffset:function(a,e){var d=this.dragData.repairXY,c=a-d[0],b=e-d[1];this.setDelta(c,b)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=c;this.maxX=b;if(a){this.setXTicks(this.initPageX,a)}this.constrainX=true},setYConstraint:function(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=a;this.maxY=c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},constrainTo:function(a,b){this.resetConstraints();this.initPageX=a.left;this.initPageY=b.top;this.setXConstraint(a.left,a.right-(b.right-b.left),this.xTickSize);this.setYConstraint(b.top-1,b.top-1,this.yTickSize)},onDragOver:function(j,k){var h=this.dragData,g=h.record,d=this.gantt,b=this.proxy.el.getX()+(d.rtl?this.proxy.el.getWidth():0)+this.gantt.getXOffset(g),a=d.getDateFromXY([b,0],"round");if(!h.hidden){Ext.fly(h.sourceNode).hide();h.hidden=true}if(!a||a-h.start===0){return}h.start=a;this.valid=this.validatorFn.call(this.validatorFnScope||d,g,a,h.duration,j)!==false;if(this.tip){var c=g.calculateEndDate(a,g.getDuration(),g.getDurationUnit());this.updateTip(g,a,c)}},onStartDrag:function(){var a=this.dragData.record;if(this.tip){this.tip.enable();this.tip.show(Ext.get(this.dragData.sourceNode));this.updateTip(a,a.getStartDate(),a.getEndDate())}this.gantt.fireEvent("taskdragstart",this.gantt,a)},updateTip:function(b,c,a){if(b.isMilestone()&&c-Ext.Date.clearTime(c,true)===0){c=Sch.util.Date.add(c,Sch.util.Date.MILLI,-1);a=Sch.util.Date.add(a,Sch.util.Date.MILLI,-1)}this.tip.update(c,a,true)},getDragData:function(k){var h=this.gantt,d=k.getTarget(h.eventSelector);if(d&&!k.getTarget(".sch-gantt-baseline-item")){var j=Ext.get(d),b=h.resolveTaskRecord(j),c=b.isMilestone();if(h.fireEvent("beforetaskdrag",h,b,k)===false){return null}var a=d.cloneNode(true),m=h.getSnapPixelAmount(),l=j.getXY();a.id=Ext.id();var n=Ext.fly(d).getHeight();Ext.get(a).setHeight(n-(Ext.isIE7&&!c?2:0));if(Ext.isIE8m&&c){Ext.get(a).setSize(n+5,n+5)}if(m<=1){Ext.fly(a).setStyle("left",0)}this.constrainTo(Ext.fly(h.findItemByChild(d)).getRegion(),j.getRegion());if(m>=1){this.setXConstraint(this.leftConstraint,this.rightConstraint,m)}return{sourceNode:d,repairXY:l,ddel:a,record:b,duration:Sch.util.Date.getDurationInMinutes(b.getStartDate(),b.getEndDate())}}return null},afterRepair:function(){Ext.fly(this.dragData.sourceNode).show();if(this.tip){this.tip.hide()}this.dragging=false},getRepairXY:function(){this.gantt.fireEvent("aftertaskdrop",this.gantt);return this.dragData.repairXY},onDragDrop:function(h,k){var g=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(k),d=this.dragData,b=this.gantt,a=d.record,j=d.start;var c=false;if(this.tip){this.tip.disable()}if(this.valid&&j&&a.getStartDate()-j!==0){b.taskStore.on("update",function(){c=true},null,{single:true});a.setStartDate(j,true,b.taskStore.skipWeekendsDuringDragDrop);if(c){b.fireEvent("taskdrop",b,a);if(Ext.isIE9){this.proxy.el.setStyle("visibility","hidden");Ext.Function.defer(this.onValidDrop,10,this,[g,h,k])}else{this.onValidDrop(g,h,k)}}}if(!c){this.onInvalidDrop(g,h,k)}b.fireEvent("aftertaskdrop",b,a)},onInvalidDrop:function(b,a,c){if(Ext.isIE&&!a){a=b;b=b.getTarget()||document.body}return this.callParent([b,a,c])}});Ext.define("Gnt.feature.DependencyDragDrop",{extend:"Ext.util.Observable",rtl:null,constructor:function(b){this.addEvents("beforednd","dndstart","drop","afterdnd");var a=b.ganttView;this.rtl=a.rtl;Ext.apply(this,{el:a.el,ddGroup:a.id+"-sch-dependency-dd",ganttView:a,dependencyStore:a.getDependencyStore()});this.el.on("mousemove",function(){this.setupDragZone();this.setupDropZone()},this,{single:true});this.callParent(arguments)},fromText:"From: <strong>{0}</strong> {1}<br/>",toText:"To: <strong>{0}</strong> {1}",startText:"Start",endText:"End",useLineProxy:true,terminalSelector:".sch-gantt-terminal",destroy:function(){if(this.dragZone){this.dragZone.destroy()}if(this.dropZone){this.dropZone.destroy()}if(this.lineProxyEl){this.lineProxyEl.destroy()}},initLineProxy:function(b,a){var d=this.lineProxyEl=this.el.createChild({cls:"sch-gantt-connector-proxy"});var e=Ext.isIE9m||Ext.isIEQuirks?0:4;var c=this.rtl?a?"r":"l":a?"l":"r";d.alignTo(b,c,[a?-e:e,0]);Ext.apply(this,{containerTop:this.el.getTop(),containerLeft:this.el.getLeft(),startXY:d.getXY(),startScrollLeft:this.el.dom.scrollLeft,startScrollTop:this.el.dom.scrollTop})},updateLineProxy:function(o){var a=this.lineProxyEl,l=o[0]-this.startXY[0]+this.el.dom.scrollLeft-this.startScrollLeft,k=o[1]-this.startXY[1]+this.el.dom.scrollTop-this.startScrollTop,b=Math.max(1,Math.sqrt(Math.pow(l,2)+Math.pow(k,2))-2),j=Math.atan2(k,l)-Math.PI/2,e;if(Ext.isIE9m||Ext.isIEQuirks){var m=Math.cos(j),h=Math.sin(j),n='progid:DXImageTransform.Microsoft.Matrix(sizingMethod="auto expand", M11 = '+m+", M12 = "+-h+", M21 = "+h+", M22 = "+m+")",d,g;if(this.el.dom.scrollTop!==this.startScrollTop){d=this.startScrollTop-this.containerTop}else{d=this.el.dom.scrollTop-this.containerTop}if(this.el.dom.scrollLeft!==this.startScrollLeft){g=this.startScrollLeft-this.containerLeft}else{g=this.el.dom.scrollLeft-this.containerLeft}e={height:b+"px",top:Math.min(0,k)+this.startXY[1]+d+(k<0?2:0)+"px",left:Math.min(0,l)+this.startXY[0]+g+(l<0?2:0)+"px",filter:n,"-ms-filter":n}}else{var c="rotate("+j+"rad)";e={height:b+"px","-o-transform":c,"-webkit-transform":c,"-ms-transform":c,"-moz-transform":c,transform:c}}a.show().setStyle(e)},setupDragZone:function(){var b=this,a=this.ganttView;this.dragZone=Ext.create("Ext.dd.DragZone",this.el,{ddGroup:this.ddGroup,onStartDrag:function(){this.el.addCls("sch-gantt-dep-dd-dragging");b.fireEvent("dndstart",b);if(b.useLineProxy){var c=this.dragData;b.initLineProxy(c.sourceNode,c.isStart)}},getDragData:function(h){var g=h.getTarget(b.terminalSelector);if(g){var d=a.resolveTaskRecord(g);if(b.fireEvent("beforednd",this,d)===false){return null}var c=!!g.className.match("sch-gantt-terminal-start"),j=Ext.core.DomHelper.createDom({cls:"sch-dd-dependency",children:[{tag:"span",cls:"sch-dd-dependency-from",html:Ext.String.format(b.fromText,Ext.String.htmlEncode(d.getName()),c?b.startText:b.endText)},{tag:"span",cls:"sch-dd-dependency-to",html:Ext.String.format(b.toText,"","")}]});return{fromId:d.getId()||d.internalId,isStart:c,repairXY:Ext.fly(g).getXY(),ddel:j,sourceNode:Ext.fly(g).up(a.eventSelector)}}return false},afterRepair:function(){this.el.removeCls("sch-gantt-dep-dd-dragging");this.dragging=false;b.fireEvent("afterdnd",this)},onMouseUp:function(){this.el.removeCls("sch-gantt-dep-dd-dragging");if(b.lineProxyEl){if(Ext.isIE9m||Ext.isIEQuirks){Ext.destroy(b.lineProxyEl);b.lineProxyEl=null}else{b.lineProxyEl.animate({to:{height:0},duration:500,callback:function(){Ext.destroy(b.lineProxyEl);b.lineProxyEl=null}})}}},getRepairXY:function(){return this.dragData.repairXY}})},setupDropZone:function(){var b=this,a=this.ganttView;this.dropZone=Ext.create("Ext.dd.DropZone",this.el,{ddGroup:this.ddGroup,getTargetFromEvent:function(c){if(b.useLineProxy){b.updateLineProxy(c.getXY())}return c.getTarget(b.terminalSelector)},onNodeEnter:function(j,c,h,g){var d=j.className.match("sch-gantt-terminal-start");Ext.fly(j).addCls(d?"sch-gantt-terminal-start-drophover":"sch-gantt-terminal-end-drophover")},onNodeOut:function(j,c,h,g){var d=j.className.match("sch-gantt-terminal-start");Ext.fly(j).removeCls(d?"sch-gantt-terminal-start-drophover":"sch-gantt-terminal-end-drophover")},onNodeOver:function(m,c,l,k){var d=a.resolveTaskRecord(m),g=d.getId()||d.internalId,h=m.className.match("sch-gantt-terminal-start"),j=Ext.String.format(b.toText,Ext.String.htmlEncode(d.getName()),h?b.startText:b.endText);c.proxy.el.down(".sch-dd-dependency-to").update(j);if(b.dependencyStore.isValidDependency(k.fromId,g)){return this.dropAllowed}else{return this.dropNotAllowed}},onNodeDrop:function(j,n,k,g){var l,c=true,d=Gnt.model.Dependency.Type,h=a.resolveTaskRecord(j),m=h.getId()||h.internalId;if(b.lineProxyEl){Ext.destroy(b.lineProxyEl);b.lineProxyEl=null}this.el.removeCls("sch-gantt-dep-dd-dragging");if(g.isStart){if(j.className.match("sch-gantt-terminal-start")){l=d.StartToStart}else{l=d.StartToEnd}}else{if(j.className.match("sch-gantt-terminal-start")){l=d.EndToStart}else{l=d.EndToEnd}}c=b.dependencyStore.isValidDependency(g.fromId,m);if(c){b.fireEvent("drop",this,g.fromId,m,l)}b.fireEvent("afterdnd",this);return c}})}});Ext.define("Gnt.feature.DragCreator",{requires:["Ext.Template","Sch.util.DragTracker","Gnt.Tooltip"],constructor:function(a){Ext.apply(this,a||{});this.init()},disabled:false,showDragTip:true,dragTolerance:2,validatorFn:Ext.emptyFn,validatorFnScope:null,setDisabled:function(a){this.disabled=a;if(this.dragTip){this.dragTip.setDisabled(a)}},getProxy:function(){if(!this.proxy){this.proxy=this.template.append(this.ganttView.ownerCt.el,{},true)}return this.proxy},onBeforeDragStart:function(g){var c=this.ganttView,b=g.getTarget("."+c.timeCellCls,2);if(b){var a=c.resolveTaskRecord(b);var d=c.getDateFromDomEvent(g);if(!this.disabled&&b&&!a.getStartDate()&&!a.getEndDate()&&c.fireEvent("beforedragcreate",c,a,d,g)!==false){g.stopEvent();this.taskRecord=a;this.originalStart=d;this.rowRegion=c.getScheduleRegion(this.taskRecord,this.originalStart);this.dateConstraints=c.getDateConstraints(this.resourceRecord,this.originalStart);return true}}return false},onDragStart:function(){var c=this,a=c.ganttView,b=c.getProxy();c.start=c.originalStart;c.end=c.start;c.rowBoundaries={top:c.rowRegion.top,bottom:c.rowRegion.bottom};b.setRegion({top:c.rowBoundaries.top,right:c.tracker.startXY[0],bottom:c.rowBoundaries.bottom,left:c.tracker.startXY[0]});b.show();c.ganttView.fireEvent("dragcreatestart",c.ganttView);if(c.showDragTip){c.dragTip.update(c.start,c.end,true,this.taskRecord);c.dragTip.enable();c.dragTip.show(b)}},onDrag:function(h){var d=this,c=d.ganttView,b=d.tracker.getRegion().constrainTo(d.rowRegion),g=c.getStartEndDatesFromRegion(b,"round");if(!g){return}d.start=g.start||d.start;d.end=g.end||d.end;var a=d.dateConstraints;if(a){d.end=Sch.util.Date.constrain(d.end,a.start,a.end);d.start=Sch.util.Date.constrain(d.start,a.start,a.end)}d.valid=this.validatorFn.call(d.validatorFnScope||d,this.taskRecord,d.start,d.end,h)!==false;if(d.showDragTip){d.dragTip.update(d.start,d.end,d.valid,this.taskRecord)}Ext.apply(b,d.rowBoundaries);this.getProxy().setRegion(b)},onDragEnd:function(a){var b=this.ganttView;if(this.showDragTip){this.dragTip.disable()}if(!this.start||!this.end||this.end<this.start){this.valid=false}if(this.valid){this.taskRecord.setStartEndDate(this.start,this.end);b.fireEvent("dragcreateend",b,this.taskRecord,a)}this.proxy.hide();b.fireEvent("afterdragcreate",b)},init:function(){var c=this.ganttView,a=c.el,b=Ext.Function.bind;this.lastTime=new Date;this.template=this.template||Ext.create("Ext.Template",'<div class="sch-gantt-dragcreator-proxy"></div>',{compiled:true,disableFormats:true});c.on({destroy:this.onGanttDestroy,scope:this});this.tracker=new Sch.util.DragTracker({el:a,tolerance:this.dragTolerance,onBeforeStart:b(this.onBeforeDragStart,this),onStart:b(this.onDragStart,this),onDrag:b(this.onDrag,this),onEnd:b(this.onDragEnd,this)});if(this.showDragTip){this.dragTip=Ext.create("Gnt.Tooltip",{mode:"duration",cls:"sch-gantt-dragcreate-tip",gantt:c})}},onGanttDestroy:function(){if(this.dragTip){this.dragTip.destroy()}if(this.tracker){this.tracker.destroy()}if(this.proxy){Ext.destroy(this.proxy);this.proxy=null}}});Ext.define("Gnt.feature.LabelEditor",{extend:"Ext.Editor",labelPosition:"",constructor:function(b,a){this.ganttView=b;this.ganttView.on("afterrender",this.onGanttRender,this);Ext.apply(this,a);if(this.labelPosition==="left"){this.alignment="r-r"}else{if(this.labelPosition==="right"){this.alignment="l-l"}}this.delegate=".sch-gantt-label-"+this.labelPosition;this.callParent([a])},edit:function(a){var b=this.ganttView.getElementFromEventRecord(a).up(this.ganttView.eventWrapSelector);this.record=a;this.startEdit(b.down(this.delegate),this.dataIndex?a.get(this.dataIndex):"")},delegate:"",dataIndex:"",shadow:false,completeOnEnter:true,cancelOnEsc:true,ignoreNoChange:true,onGanttRender:function(a){if(!this.field.width){this.autoSize="width"}this.on({beforestartedit:function(c,b,d){return a.fireEvent("labeledit_beforestartedit",a,this.record,d,c)},beforecomplete:function(c,d,b){return a.fireEvent("labeledit_beforecomplete",a,d,b,this.record,c)},complete:function(c,d,b){this.record.set(this.dataIndex,d);a.fireEvent("labeledit_complete",a,d,b,this.record,c)},scope:this});a.el.on("dblclick",function(c,b){this.edit(a.resolveTaskRecord(b))},this,{delegate:this.delegate})}});Ext.define("Gnt.feature.ProgressBarResize",{requires:["Ext.ToolTip","Ext.resizer.Resizer"],constructor:function(a){Ext.apply(this,a||{});var b=this.ganttView;b.on({destroy:this.cleanUp,scope:this});b.el.on("mousedown",this.onMouseDown,this,{delegate:".sch-gantt-progressbar-handle"});this.callParent(arguments)},useTooltip:true,increment:10,tip:null,resizable:null,ganttView:null,onMouseDown:function(d,b){var c=this.ganttView,h=c.resolveTaskRecord(b);if(c.fireEvent("beforeprogressbarresize",c,h)!==false){var a=Ext.fly(b).prev(".sch-gantt-progress-bar");d.stopEvent();this.resizable=this.createResizable(a,h,d);c.fireEvent("progressbarresizestart",c,h);Ext.getBody().on("mouseup",this.onBodyMouseUp,this,{single:true,delay:1})}},createResizable:function(b,h,d){var k=d.getTarget(),j=this.ganttView.rtl,g=b.up(this.ganttView.eventSelector),l=g.getWidth()-2,c=l*this.increment/100;var a=Ext.create("Ext.resizer.Resizer",{target:b,taskRecord:h,handles:j?"w":"e",minWidth:0,maxWidth:l,minHeight:1,widthIncrement:c,listeners:{resizedrag:this.partialResize,resize:this.afterResize,scope:this}});a.resizeTracker.onMouseDown(d,a[j?"west":"east"].dom);g.select(".x-resizable-handle, .sch-gantt-terminal, .sch-gantt-progressbar-handle").hide();if(this.useTooltip){this.tip=Ext.create("Ext.ToolTip",{autoHide:false,anchor:"b",html:"%"});this.tip.setTarget(b);this.tip.update(h.getPercentDone()+"%");this.tip.show()}return a},partialResize:function(c,b){var a=Math.round(b*100/(c.maxWidth*this.increment))*this.increment;if(this.tip){this.tip.body.update(a+"%")}},afterResize:function(g,b,c,j){var k=g.taskRecord;if(this.tip){this.tip.destroy();this.tip=null}var a=g.taskRecord.getPercentDone();if(Ext.isNumber(b)){var d=Math.round(b*100/(g.maxWidth*this.increment))*this.increment;g.taskRecord.setPercentDone(d)}if(a===g.taskRecord.getPercentDone()){this.ganttView.refreshNode(this.ganttView.indexOf(g.taskRecord))}g.destroy();this.resizable=null;this.ganttView.fireEvent("afterprogressbarresize",this.ganttView,k)},onBodyMouseUp:function(){if(this.resizable){this.afterResize(this.resizable)}},cleanUp:function(){if(this.tip){this.tip.destroy()}}});Ext.define("Gnt.feature.TaskResize",{constructor:function(a){Ext.apply(this,a);var b=this.gantt;b.on({destroy:this.cleanUp,scope:this});b.mon(b.el,"mousedown",this.onMouseDown,this,{delegate:".sch-resizable-handle"});this.callParent(arguments)},showDuration:true,useTooltip:true,validatorFn:Ext.emptyFn,validatorFnScope:null,onMouseDown:function(d){var b=this.gantt,a=d.getTarget(b.eventSelector),g=b.resolveTaskRecord(a);var c=g.isResizable();if(c===false||typeof c==="string"&&!a.className.match(c)){return}if(b.fireEvent("beforetaskresize",b,g,d)===false){return}d.stopEvent();this.createResizable(Ext.get(a),g,d);b.fireEvent("taskresizestart",b,g)},createResizable:function(h,n,m){var q=m.getTarget(),l=this.gantt,o=l.rtl,a=!!q.className.match("sch-resizable-handle-start"),k=o&&!a||!o&&a,d=l.getSnapPixelAmount(),c=h.getWidth(),p=h.up(".x-grid-row").getRegion();this.resizable=Ext.create("Ext.resizer.Resizer",{otherEdgeX:k?h.getRight():h.getLeft(),target:h,taskRecord:n,isStart:a,isWest:k,handles:k?"w":"e",constrainTo:p,minHeight:1,minWidth:d,widthIncrement:d,listeners:{resizedrag:this.partialResize,resize:this.afterResize,scope:this}});this.resizable.resizeTracker.onMouseDown(m,this.resizable[k?"west":"east"].dom);if(this.useTooltip){if(!this.tip){this.tip=Ext.create("Gnt.Tooltip",{mode:this.showDuration?"duration":"startend",gantt:this.gantt})}var b=n.getStartDate(),j=n.getEndDate();this.tip.show(h);this.tip.update(b,j,true,n)}},partialResize:function(l,h,g,k){var m=this.gantt,j=l.isWest,b;if(j){b=m.getDateFromCoordinate(l.otherEdgeX-Math.min(h,this.resizable.maxWidth),"round")}else{b=m.getDateFromCoordinate(l.otherEdgeX+Math.min(h,this.resizable.maxWidth),"round")}if(!b||l.date-b===0){return}var c=l.isStart?b:l.taskRecord.getStartDate(),d=l.isStart?l.taskRecord.getEndDate():b,a=this.validatorFn.call(this.validatorFnScope||this,l.taskRecord,c,d)!==false;l.date=b;m.fireEvent("partialtaskresize",m,l.taskRecord,c,d,l.el,k);if(this.useTooltip){this.tip.update(c,d,a,l.taskRecord)}},afterResize:function(n,m,j,k){if(this.useTooltip){this.tip.hide()}var l=n.taskRecord,g=l.getStartDate(),o=l.getEndDate(),b=n.isStart?n.date:g,d=n.isStart?o:n.date,c=this.gantt;n.destroy();if(b&&d&&(b-g||d-o)&&this.validatorFn.call(this.validatorFnScope||this,l,b,d,k)!==false){var a=this.gantt.taskStore.skipWeekendsDuringDragDrop;if(b-g!==0){l.setStartDate(b<=d?b:d,false,a)}else{l.setEndDate(b<=d?d:b,false,a)}}else{c.refreshKeepingScroll()}c.fireEvent("aftertaskresize",c,l)},cleanUp:function(){if(this.tip){this.tip.destroy()}}});Ext.define("Gnt.feature.WorkingTime",{extend:"Sch.plugin.Zones",requires:["Ext.data.Store","Sch.model.Range"],expandToFitView:true,calendar:null,init:function(a){if(!this.calendar){Ext.Error.raise("Required attribute 'calendar' missed during initialization of 'Gnt.feature.WorkingTime'")}this.bindCalendar(this.calendar);Ext.apply(this,{store:new Ext.data.Store({model:"Sch.model.Range"})});this.callParent(arguments);a.on("viewchange",this.onViewChange,this);this.onViewChange()},bindCalendar:function(b){var a={datachanged:this.refresh,update:this.refresh,scope:this,delay:1};if(this.calendar){this.calendar.un(a)}b.on(a);this.calendar=b},onViewChange:function(){var a=Sch.util.Date;if(a.compareUnits(this.timeAxis.unit,a.WEEK)>0){this.setDisabled(true)}else{this.setDisabled(false);this.refresh()}},refresh:function(){var a=this.schedulerView;this.store.removeAll(true);this.store.add(this.calendar.getHolidaysRanges(a.timeAxis.getStart(),a.timeAxis.getEnd(),true))}});Ext.define("Gnt.plugin.DependencyEditor",{extend:"Ext.form.Panel",mixins:["Ext.AbstractPlugin"],lockableScope:"top",requires:["Ext.form.field.Display","Ext.form.field.ComboBox","Ext.form.field.Number","Gnt.model.Dependency"],hideOnBlur:true,fromText:"From",toText:"To",typeText:"Type",lagText:"Lag",endToStartText:"Finish-To-Start",startToStartText:"Start-To-Start",endToEndText:"Finish-To-Finish",startToEndText:"Start-To-Finish",showLag:false,border:false,height:150,width:260,frame:true,labelWidth:60,triggerEvent:"dependencydblclick",constrain:false,initComponent:function(){Ext.apply(this,{items:this.buildFields(),defaults:{width:240},floating:true,hideMode:"offsets"});this.callParent(arguments);this.addCls("sch-gantt-dependencyeditor")},init:function(a){a.on(this.triggerEvent,this.onDependencyDblClick,this);a.on("destroy",this.destroy,this);a.on("afterrender",this.onGanttRender,this,{delay:50});this.gantt=a;this.taskStore=a.getTaskStore()},onGanttRender:function(){this.render(Ext.getBody());this.collapse(Ext.Component.DIRECTION_TOP,true);this.hide();if(this.hideOnBlur){this.on({show:function(){this.mon(Ext.getBody(),{click:this.onMouseClick,scope:this})},hide:function(){this.mun(Ext.getBody(),{click:this.onMouseClick,scope:this})},delay:50})}},show:function(a,b){this.dependencyRecord=a;this.getForm().loadRecord(a);this.fromLabel.setValue(Ext.String.htmlEncode(this.dependencyRecord.getSourceTask().getName()));this.toLabel.setValue(Ext.String.htmlEncode(this.dependencyRecord.getTargetTask().getName()));this.callParent([]);this.el.setXY(b);this.expand(!this.constrain);if(this.constrain){this.doConstrain(Ext.util.Region.getRegion(Ext.getBody()))}},buildFields:function(){var c=this,d=Gnt.model.Dependency,b=d.Type,a=[this.fromLabel=Ext.create("Ext.form.DisplayField",{fieldLabel:this.fromText}),this.toLabel=Ext.create("Ext.form.DisplayField",{fieldLabel:this.toText}),this.typeField=Ext.create("Ext.form.ComboBox",{name:d.prototype.nameField,fieldLabel:this.typeText,triggerAction:"all",queryMode:"local",valueField:"value",displayField:"text",editable:false,store:Ext.create("Ext.data.JsonStore",{fields:["text","value"],data:[{text:this.endToStartText,value:b.EndToStart},{text:this.startToStartText,value:b.StartToStart},{text:this.endToEndText,value:b.EndToEnd},{text:this.startToEndText,value:b.StartToEnd}]})})];if(this.showLag){a.push(this.lagField=Ext.create("Ext.form.NumberField",{name:d.prototype.lagField,fieldLabel:this.lagText}))}return a},onDependencyDblClick:function(c,a,d,b){if(this.lagField){this.lagField.name=a.lagField}if(this.typeField){this.typeField.name=a.typeField}if(a!=this.dependencyRecord){this.show(a,d.getXY())}},onMouseClick:function(a){if(this.collapsed||a.within(this.getEl())||a.getTarget(".x-layer")||a.getTarget(".sch-ignore-click")){return}this.collapse()},afterCollapse:function(){delete this.dependencyRecord;this.hide();this.callParent(arguments);if(this.hideOnBlur){this.mun(Ext.getBody(),"click",this.onMouseClick,this)}}});Ext.define("Gnt.plugin.TaskContextMenu",{extend:"Ext.menu.Menu",mixins:["Ext.AbstractPlugin"],lockableScope:"top",requires:["Gnt.model.Dependency"],plain:true,triggerEvent:"taskcontextmenu",texts:{newTaskText:"New task",newMilestoneText:"New milestone",deleteTask:"Delete task(s)",editLeftLabel:"Edit left label",editRightLabel:"Edit right label",add:"Add...",deleteDependency:"Delete dependency...",addTaskAbove:"Task above",addTaskBelow:"Task below",addMilestone:"Milestone",addSubtask:"Sub-task",addSuccessor:"Successor",addPredecessor:"Predecessor"},grid:null,rec:null,lastHighlightedItem:null,createMenuItems:function(){var a=this.texts;return[{handler:this.deleteTask,requiresTask:true,scope:this,itemId:"deleteTask",text:a.deleteTask},{handler:this.editLeftLabel,requiresTask:true,scope:this,itemId:"editLeftLabel",text:a.editLeftLabel},{handler:this.editRightLabel,requiresTask:true,scope:this,itemId:"editRightLabel",text:a.editRightLabel},{text:a.add,itemId:"addTaskMenu",menu:{plain:true,items:[{handler:this.addTaskAboveAction,requiresTask:true,scope:this,text:a.addTaskAbove},{handler:this.addTaskBelowAction,scope:this,text:a.addTaskBelow},{handler:this.addMilestone,requiresTask:true,scope:this,text:a.addMilestone},{handler:this.addSubtask,requiresTask:true,scope:this,text:a.addSubtask},{handler:this.addSuccessor,requiresTask:true,scope:this,text:a.addSuccessor},{handler:this.addPredecessor,requiresTask:true,scope:this,text:a.addPredecessor}]}},{text:a.deleteDependency,requiresTask:true,itemId:"deleteDependencyMenu",isDependenciesMenu:true,menu:{plain:true,listeners:{beforeshow:this.populateDependencyMenu,mouseover:this.onDependencyMouseOver,mouseleave:this.onDependencyMouseOut,scope:this}}}]},buildMenuItems:function(){this.items=this.createMenuItems()},initComponent:function(){this.buildMenuItems();this.callParent(arguments)},init:function(b){b.on("destroy",this.cleanUp,this);var a=b.getSchedulingView(),c=b.lockedGrid.getView();if(this.triggerEvent==="itemcontextmenu"){c.on("itemcontextmenu",this.onItemContextMenu,this);a.on("itemcontextmenu",this.onItemContextMenu,this)}a.on("taskcontextmenu",this.onTaskContextMenu,this);a.on("containercontextmenu",this.onContainerContextMenu,this);c.on("containercontextmenu",this.onContainerContextMenu,this);this.grid=b},populateDependencyMenu:function(g){var d=this.grid,b=d.getTaskStore(),e=this.rec.getAllDependencies(),a=d.dependencyStore;g.removeAll();if(e.length===0){return false}var c=this.rec.getId()||this.rec.internalId;Ext.each(e,function(k){var j=k.getSourceId(),h=b.getById(j==c?k.getTargetId():j);if(h){g.add({depId:k.internalId,text:Ext.util.Format.ellipsis(Ext.String.htmlEncode(h.getName()),30),scope:this,handler:function(m){var l;a.each(function(n){if(n.internalId==m.depId){l=n;return false}});a.remove(l)}})}},this)},onDependencyMouseOver:function(d,a,b){if(a){var c=this.grid.getSchedulingView();if(this.lastHighlightedItem){c.unhighlightDependency(this.lastHighlightedItem.depId)}this.lastHighlightedItem=a;c.highlightDependency(a.depId)}},onDependencyMouseOut:function(b,a){if(this.lastHighlightedItem){this.grid.getSchedulingView().unhighlightDependency(this.lastHighlightedItem.depId)}},cleanUp:function(){this.destroy()},onTaskContextMenu:function(b,a,c){this.activateMenu(a,c)},onItemContextMenu:function(b,a,d,c,g){this.activateMenu(a,g)},onContainerContextMenu:function(a,b){this.activateMenu(null,b)},activateMenu:function(b,a){if(this.grid.isReadOnly()){return}a.stopEvent();this.rec=b;this.configureMenuItems();this.showAt(a.getXY())},configureMenuItems:function(){var b=this.query("[requiresTask]");var c=this.rec;Ext.each(b,function(d){d.setDisabled(!c)});var a=this.query("[isDependenciesMenu]")[0];if(c&&a){a.setDisabled(!c.getAllDependencies().length)}},copyTask:function(c){var b=this.grid.getTaskStore().model;var a=new b({leaf:true});a.setPercentDone(0);a.setName(this.texts.newTaskText);a.set(a.startDateField,c&&c.getStartDate()||null);a.set(a.endDateField,c&&c.getEndDate()||null);a.set(a.durationField,c&&c.getDuration()||null);a.set(a.durationUnitField,c&&c.getDurationUnit()||"d");return a},addTaskAbove:function(a){var b=this.rec;if(b){b.addTaskAbove(a)}else{this.grid.taskStore.getRootNode().appendChild(a)}},addTaskBelow:function(a){var b=this.rec;if(b){b.addTaskBelow(a)}else{this.grid.taskStore.getRootNode().appendChild(a)}},deleteTask:function(){var a=this.grid.getSelectionModel().selected;this.grid.taskStore.remove(a.getRange())},editLeftLabel:function(){this.grid.getSchedulingView().editLeftLabel(this.rec)},editRightLabel:function(){this.grid.getSchedulingView().editRightLabel(this.rec)},addTaskAboveAction:function(){this.addTaskAbove(this.copyTask(this.rec))},addTaskBelowAction:function(){this.addTaskBelow(this.copyTask(this.rec))},addSubtask:function(){var a=this.rec;a.addSubtask(this.copyTask(a))},addSuccessor:function(){var a=this.rec;a.addSuccessor(this.copyTask(a))},addPredecessor:function(){var a=this.rec;a.addPredecessor(this.copyTask(a))},addMilestone:function(){var b=this.rec,a=this.copyTask(b);b.addTaskBelow(a);a.setStartEndDate(b.getEndDate(),b.getEndDate())}});Ext.define("Gnt.plugin.Export",{extend:"Sch.plugin.Export",alternateClassName:"Gnt.plugin.PdfExport",showExportDialog:function(){this.exportDialogConfig.scrollerDisabled=true;this.callParent(arguments)},getExportJsonHtml:function(e,j){var c=this.scheduler.getSchedulingView(),d=c.dependencyView,a=d.painter.getDependencyTplData(c.dependencyStore.getRange()),g=d.lineTpl.apply(a),b=j.config,h;if(!b.singlePageExport){h={dependencies:g,rowsAmount:e.rowsAmount,columnsAmountNormal:e.columnsAmountNormal,columnsAmountLocked:e.columnsAmountLocked,timeColumnWidth:e.timeColumnWidth,lockedGridWidth:e.lockedGridWidth,rowHeight:e.rowHeight}}else{e={};h={dependencies:g,singlePageExport:true}}h.lockedColumnPages=e.lockedColumnPages;e.panelHTML=h;return this.callParent(arguments)},getRealSize:function(){var a=this.callParent(arguments);a.width+=Ext.select(".x-splitter").first().getWidth();return a},resizePanelHTML:function(c){var j=this.callParent(arguments),e=j.select(".sch-dependencyview-ct").first(),h=j.select(".x-splitter").first(),b=0,g=0,a,d;if(!c.singlePageExport){g=c.k*c.rowsAmount*c.rowHeight;a=c.lockedColumnPages?c.lockedColumnPages.length:0;d=c.i;if(a){if(d>=a-1){if(d===a-1){b=0}else{var k=d-a+1;b=k===a-1?c.timeColumnWidth*c.columnsAmountLocked:c.timeColumnWidth*c.columnsAmountLocked+(k-1)*c.timeColumnWidth*c.columnsAmountNormal}}else{h.hide()}}else{if(d){b=(d-1)*c.timeColumnWidth*c.columnsAmountNormal+c.timeColumnWidth*c.columnsAmountLocked}}}e.dom.innerHTML=c.dependencies;e.applyStyles({top:-g+"px",left:-b+"px"});h.setHeight("100%");return j}});Ext.define("Gnt.plugin.Printable",{extend:"Sch.plugin.Printable",getGridContent:function(e){var k=e.getSchedulingView();k._print=true;var a=this.callParent(arguments),j=k.dependencyView,o=j.painter.getDependencyTplData(k.dependencyStore.getRange()),d=j.lineTpl.apply(o),n=a.normalRows;if(Ext.select(".sch-gantt-critical-chain").first()){var b=Ext.DomHelper.createDom({tag:"div",html:d});b=Ext.get(b);var q=Ext.DomHelper.createDom({tag:"div",html:n});q=Ext.get(q);var s=k.getCriticalPaths(),c=k.dependencyStore,p,h,g,m;Ext.each(s,function(l){for(h=0,g=l.length;h<g;h++){p=l[h];this.highlightTask(p,e,q);if(h<g-1){m=c.getAt(c.findBy(function(t){return t.getTargetId()===(p.getId()||p.internalId)&&t.getSourceId()===(l[h+1].getId()||l[h+1].internalId)}));this.highlightDependency(m,b,j)}}},this);n=q.getHTML();d=b.getHTML()}a.normalRows=d+n;delete k._print;return a},highlightTask:function(b,a,e){var d=a.getSchedulingView().getElementFromEventRecord(b),c=d.id;if(d){e.select("#"+c).first().parent("tr").addCls("sch-gantt-task-highlighted")}},highlightDependency:function(c,b,a){var d=c instanceof Ext.data.Model?c.internalId:c;return b.select(".sch-dep-"+d).addCls(a.selectedCls)}});Ext.define("Gnt.view.DependencyPainter",{ganttView:null,rowHeight:null,topArrowOffset:8,arrowOffset:8,lineWidth:2,xOffset:6,constructor:function(a){a=a||{};Ext.apply(this,a)},setRowHeight:function(a){this.rowHeight=a},getTaskBox:function(u){var k=Sch.util.Date,m=u.getStartDate(),t=u.getEndDate(),p=this.ganttView,o=p.bufferedRenderer,g=p.timeAxis.getStart(),d=p.timeAxis.getEnd();if(!u.isVisible()||!m||!t||!k.intersectSpans(m,t,g,d)||!o&&p.store.indexOf(u)<0){return null}var h,c=p.getXFromDate(k.max(m,g)),b=p.getXFromDate(k.min(t,d)),a=p.getNodeByRecord(u);if(a||o){var x=p.getXOffset(u),q,l,z=u.isMilestone(),y=true;if(c>x){c-=x}b+=x;if(!z&&Ext.isIE){if((Ext.isIE6||Ext.isIE7||Ext.isIE8)&&Ext.isIEQuirks){b+=1;c-=2}}var j=p.el;var n=j.getScroll().top;if(a){var w=p.getEventNodeByRecord(u);h=Ext.fly(w).getOffsetsTo(j);q=h[1]+n+(z&&Ext.isIE8?3:0);l=q+Ext.fly(w).getHeight();if(z){b+=1}}else{var s=p.all.elements;var e=p.store.getAt(p.all.startIndex);if(u.isAbove(e)){a=s[p.all.startIndex];h=Ext.fly(a).getOffsetsTo(j);h[1]-=p.rowHeight}else{a=s[p.all.endIndex];h=Ext.fly(a).getOffsetsTo(j);h[1]+=p.rowHeight}q=h[1]+n;l=q+this.rowHeight;y=false}return{top:q,end:b,bottom:l,start:c,rendered:y}}},getRenderData:function(h){var g=h.getSourceTask(),d=h.getTargetTask();if(!g||!d){return null}var a=this.getTaskBox(g);var e=this.getTaskBox(d);var c=this.ganttView;if(c.bufferRender&&a&&!a.rendered&&e&&!e.rendered){var j=c.store.getAt(c.all.startIndex);var b=c.store.getAt(c.all.endIndex);if(g.isAbove(j)&&d.isAbove(j)||b.isAbove(g)&&b.isAbove(d)){return null}}return{fromBox:a,toBox:e}},getDependencyTplData:function(p){var k=this,n=k.ganttView;if(p instanceof Ext.data.Model){p=[p]}if(p.length===0||n.store.getCount()===0){return}var a=[],o,j,g,m,h,b;for(var e=0,c=p.length;e<c;e++){b=p[e];var d=this.getRenderData(b);if(d){m=d.fromBox;h=d.toBox;if(m&&h){o=k.getLineCoordinates(m,h,b);if(o){a.push({dependency:b,id:b.internalId,cls:b.getCls(),lineCoordinates:o})}}}}return a},getLineCoordinates:function(s,p,k){var g,t,q=[0,s.top-1+(s.bottom-s.top)/2],a=[0,p.top-1+(p.bottom-p.top)/2],b=a[1]>q[1],h=Gnt.model.Dependency.Type,d=this.arrowOffset+this.xOffset,c=k.getType(),n=[],u=k.getTargetTask().isMilestone(),l,j,w;switch(c){case h.StartToEnd:q[0]=s.start;a[0]=p.end+d;g="l";t="r";break;case h.StartToStart:q[0]=s.start;a[0]=p.start-d;g="l";t="l";break;case h.EndToStart:q[0]=s.end;a[0]=p.start-d;g="r";t="l";break;case h.EndToEnd:q[0]=s.end;a[0]=p.end+d;g="r";t="r";break;default:throw"Invalid dependency type: "+k.getType()}n.push(q);var o=q[0]+(g==="r"?this.xOffset:-this.xOffset);if(b&&c===h.EndToStart&&s.end<p.start+5){l=Math.min(p.start+this.xOffset,p.end);n.push([l,q[1]]);n.push([l,p.top-this.arrowOffset-(u?2:0)])}else{if(g!==t&&g==="r"&&o>a[0]||g==="l"&&o<a[0]){j=p[t==="l"?"start":"end"];w=a[1]+(b?-1:1)*(this.rowHeight/2);n.push([o,q[1]]);n.push([o,w]);n.push([a[0],w]);n.push(a);n.push([j+(a[0]<j?-this.arrowOffset:this.arrowOffset)-(u&&t==="l"?2:0),a[1]])}else{j=p[t==="l"?"start":"end"];if(g==="r"){l=Math.max(o,a[0])}else{l=Math.min(o,a[0])}n.push([l,q[1]]);n.push([l,a[1]]);n.push([j+(l<j?-this.arrowOffset:this.arrowOffset)-(u&&t==="l"?2:0),a[1]])}}var e=[];for(var m=0;m<n.length-1;m++){e.push({x1:n[m][0],y1:n[m][1],x2:n[m+1][0],y2:n[m+1][1]})}return e}});Ext.define("Gnt.view.Dependency",{extend:"Ext.util.Observable",requires:["Gnt.feature.DependencyDragDrop","Gnt.view.DependencyPainter"],lineWidth:1,containerEl:null,ganttView:null,painter:null,taskStore:null,store:null,dnd:null,lineTpl:null,enableDependencyDragDrop:true,renderAllDepsBuffered:false,dependencyCls:"sch-dependency",selectedCls:"sch-dependency-selected",dependencyPainterClass:"Gnt.view.DependencyPainter",constructor:function(a){this.callParent(arguments);var c=this.ganttView;c.on({refresh:this.renderAllDependenciesBuffered,bufferedrefresh:this.renderAllDependenciesBuffered,itemupdate:this.onTaskUpdated,scope:this});this.bindTaskStore(c.getTaskStore());this.bindDependencyStore(a.store);if(!this.lineTpl){var d=this.rtl;var b=d?"right":"left";this.lineTpl=Ext.create("Ext.XTemplate",'<tpl for=".">'+Ext.String.format('<tpl for="lineCoordinates"><div class="{0} {[ parent.dependency.isHighlighted ? "{1}" : "" ]} {[values.x1==values.x2 ? "sch-dependency-line-v" : "sch-dependency-line-h"]} {lineCls} sch-dep-{parent.id} {0}-line {[this.getSuffixedCls(parent.cls, "-line")]}" style="'+b+":{[Math.min(values.x1, values.x2)]}px;top:{[Math.min(values.y1, values.y2)]}px;width:{[Math.abs(values.x1-values.x2)+"+this.lineWidth+"]}px;height:{[Math.abs(values.y1-values.y2)+"+this.lineWidth+']}px"></div></tpl><div style="'+b+':{[values.lineCoordinates[values.lineCoordinates.length - 1].x2]}px;top:{[values.lineCoordinates[values.lineCoordinates.length - 1].y2]}px"    class="{0}-arrow-ct {0} {[ values.dependency.isHighlighted ? "{1}" : "" ]} sch-dep-{id} {[this.getSuffixedCls(values.cls, "-arrow-ct")]}"><img src="'+Ext.BLANK_IMAGE_URL+'" class="{0}-arrow {0}-arrow-{[this.getArrowDirection(values.lineCoordinates)]} {[this.getSuffixedCls(values.cls, "-arrow")]}" /></div>',this.dependencyCls,this.selectedCls)+"</tpl>",{compiled:true,disableFormats:true,getArrowDirection:function(g){var e=g[g.length-1];if(e.y2<e.y1){return"up"}if(e.x1===e.x2){return"down"}else{if(!d&&e.x1>e.x2||d&&e.x1<e.x2){return"left"}else{return"right"}}},getSuffixedCls:function(e,g){if(e&&e.indexOf(" ")!=-1){return e.replace(/^\s*(.*)\s*$/,"$1").split(/\s+/).join(g+" ")+g}else{return e+g}}})}this.painter=Ext.create(this.dependencyPainterClass,Ext.apply({rowHeight:c.rowHeight,ganttView:c},a));this.addEvents("beforednd","dndstart","drop","afterdnd","beforecascade","cascade","dependencyclick","dependencycontextmenu","dependencydblclick","refresh");if(this.enableDependencyDragDrop){this.dnd=Ext.create("Gnt.feature.DependencyDragDrop",{ganttView:this.ganttView});this.dnd.on("drop",this.onDependencyDrop,this);this.relayEvents(this.dnd,["beforednd","dndstart","afterdnd","drop"])}this.containerEl=this.containerEl.createChild({cls:"sch-dependencyview-ct "+(this.lineWidth===1?" sch-dependencyview-thin ":"")});this.ganttView.mon(this.containerEl,{dblclick:this.onDependencyClick,click:this.onDependencyClick,contextmenu:this.onDependencyClick,scope:this,delegate:"."+this.dependencyCls});if(c.rendered){this.renderAllDependenciesBuffered()}},bindDependencyStore:function(a){this.depStoreListeners={refresh:this.renderAllDependenciesBuffered,clear:this.renderAllDependenciesBuffered,load:this.renderAllDependenciesBuffered,add:this.onDependencyAdd,update:this.onDependencyUpdate,remove:this.onDependencyDelete,scope:this};a.on(this.depStoreListeners);this.store=a},unBindDependencyStore:function(){if(this.depStoreListeners){this.store.un(this.depStoreListeners)}},bindTaskStore:function(a){var b=this.ganttView;this.taskStoreListeners={cascade:this.onTaskStoreCascade,beforefill:this.onRootFillStart,remove:this.renderAllDependenciesBuffered,insert:this.renderAllDependenciesBuffered,append:this.renderAllDependenciesBuffered,move:this.renderAllDependenciesBuffered,sort:this.renderAllDependenciesBuffered,scope:this};Ext.apply(this.taskStoreListeners,{expand:this.renderAllDependenciesBuffered,collapse:this.renderAllDependenciesBuffered});a.on(this.taskStoreListeners);this.taskStore=a},onTaskStoreCascade:function(a,b){if(b&&b.nbrAffected>0){this.renderAllDependenciesBuffered()}},unBindTaskStore:function(a){a=a||this.taskStore;if(!a){return}if(this.ganttViewListeners){this.ganttView.un(this.ganttViewListeners)}a.un(this.taskStoreListeners)},onRootFillStart:function(){var a=this.taskStore;this.unBindTaskStore(a);this.taskStore.on("fillcomplete",function(){this.bindTaskStore(a)},this,{single:true})},onDependencyClick:function(b,a){var c=this.getRecordForDependencyEl(a);this.fireEvent("dependency"+b.type,this,c,b,a)},highlightDependency:function(a){if(!(a instanceof Ext.data.Model)){a=this.getDependencyRecordByInternalId(a)}if(a){a.isHighlighted=true;this.getElementsForDependency(a).addCls(this.selectedCls)}},unhighlightDependency:function(a){if(!(a instanceof Ext.data.Model)){a=this.getDependencyRecordByInternalId(a)}if(a){a.isHighlighted=false;this.getElementsForDependency(a).removeCls(this.selectedCls)}},getElementsForDependency:function(a){var b=a instanceof Ext.data.Model?a.internalId:a;return this.containerEl.select(".sch-dep-"+b)},depRe:new RegExp("sch-dep-([^\\s]+)"),getDependencyRecordByInternalId:function(d){var c,b,a;for(b=0,a=this.store.getCount();b<a;b++){c=this.store.getAt(b);if(c.internalId==d){return c}}return null},getRecordForDependencyEl:function(c){var a=c.className.match(this.depRe),d=null;if(a&&a[1]){var b=a[1];d=this.getDependencyRecordByInternalId(b)}return d},renderAllDependenciesBuffered:function(){var a=this;this.containerEl.update("");setTimeout(function(){if(!a.ganttView.isDestroyed){a.renderAllDependencies()}},0)},renderAllDependencies:function(){if(!this.containerEl.dom){return}this.containerEl.update("");this.renderDependencies(this.store.data.items);this.fireEvent("refresh",this)},getDependencyElements:function(){return this.containerEl.select("."+this.dependencyCls)},renderDependencies:function(b){if(b){var a=this.painter.getDependencyTplData(b);this.lineTpl[Ext.isIE?"insertFirst":"append"](this.containerEl,a)}},renderTaskDependencies:function(d){var c=[];if(d instanceof Ext.data.Model){d=[d]}for(var a=0,b=d.length;a<b;a++){c=c.concat(this.store.getDependenciesForTask(d[a]))}this.renderDependencies(c)},onDependencyUpdate:function(b,a){this.removeDependencyElements(a,false);this.renderDependencies(a)},onDependencyAdd:function(a,b){this.renderDependencies(b)},removeDependencyElements:function(a,b){if(b!==false){this.getElementsForDependency(a).fadeOut({remove:true})}else{this.getElementsForDependency(a).remove()}},onDependencyDelete:function(b,a){this.removeDependencyElements(a)},dimEventDependencies:function(a){this.containerEl.select(this.depRe+a).setOpacity(0.2)},clearSelectedDependencies:function(){this.containerEl.select("."+this.selectedCls).removeCls(this.selectedCls);this.store.each(function(a){a.isHighlighted=false})},onTaskUpdated:function(a){if(!this.taskStore.cascading&&(!a.previous||a.startDateField in a.previous||a.endDateField in a.previous)){this.updateDependencies(a)}},updateDependencies:function(b){if(b instanceof Ext.data.Model){b=[b]}var a=this;Ext.each(b,function(c){Ext.each(a.store.getDependenciesForTask(c),function(d){a.removeDependencyElements(d,false)})});this.renderTaskDependencies(b)},onNewDependencyCreated:function(){},onDependencyDrop:function(g,d,b,e){var c=this.store;var a=new c.model({fromTask:d,toTask:b,type:e});if(c.isValidDependency(a)&&this.onNewDependencyCreated(a)!==false){c.add(a)}},destroy:function(){if(this.dnd){this.dnd.destroy()}this.unBindTaskStore();this.unBindDependencyStore()},setRowHeight:function(a,b){this.rowHeight=a;this.painter.setRowHeight(a);if(!b){this.renderAllDependencies()}}});Ext.define("Gnt.view.Gantt",{extend:"Sch.view.TimelineGridView",alias:["widget.ganttview"],requires:["Gnt.view.Dependency","Gnt.model.Task","Gnt.template.Task","Gnt.template.ParentTask","Gnt.template.Milestone","Gnt.feature.TaskDragDrop","Gnt.feature.ProgressBarResize","Gnt.feature.TaskResize","Sch.view.Horizontal"],uses:["Gnt.feature.LabelEditor","Gnt.feature.DragCreator"],mixins:["Sch.mixin.FilterableTreeView"],_cmpCls:"sch-ganttview",barMargin:4,scheduledEventName:"task",trackOver:false,toggleOnDblClick:false,milestoneOffset:11,parentTaskOffset:6,eventSelector:".sch-gantt-item",eventWrapSelector:".sch-event-wrap",progressBarResizer:null,taskResizer:null,taskDragDrop:null,dragCreator:null,dependencyView:null,resizeConfig:null,createConfig:null,dragDropConfig:null,progressBarResizeConfig:null,dependencyViewConfig:null,externalGetRowClass:null,constructor:function(a){a=a||{};if(a){this.externalGetRowClass=a.getRowClass;delete a.getRowClass}this.addEvents("taskclick","taskdblclick","taskcontextmenu","beforetaskresize","taskresizestart","partialtaskresize","aftertaskresize","beforeprogressbarresize","progressbarresizestart","afterprogressbarresize","beforetaskdrag","taskdragstart","taskdrop","aftertaskdrop","labeledit_beforestartedit","labeledit_beforecomplete","labeledit_complete","beforedependencydrag","dependencydragstart","dependencydrop","afterdependencydragdrop","beforedragcreate","dragcreatestart","dragcreateend","afterdragcreate","scheduleclick","scheduledblclick","schedulecontextmenu");this.callParent(arguments);this.initTreeFiltering();this.addCls("sch-ganttview")},onRender:function(){this.configureLabels();this.setupGanttEvents();this.setupTemplates();this.callParent(arguments)},getDependencyStore:function(){return this.dependencyStore},configureFeatures:function(){if(this.enableProgressBarResize!==false){this.progressBarResizer=Ext.create("Gnt.feature.ProgressBarResize",Ext.apply({ganttView:this},this.progressBarResizeConfig||{}));this.on({beforeprogressbarresize:this.onBeforeTaskProgressBarResize,progressbarresizestart:this.onTaskProgressBarResizeStart,afterprogressbarresize:this.onTaskProgressBarResizeEnd,scope:this})}if(this.resizeHandles!=="none"){this.taskResizer=Ext.create("Gnt.feature.TaskResize",Ext.apply({gantt:this,validatorFn:this.resizeValidatorFn||Ext.emptyFn,validatorFnScope:this.validatorFnScope||this},this.resizeConfig||{}));this.on({beforedragcreate:this.onBeforeDragCreate,beforetaskresize:this.onBeforeTaskResize,taskresizestart:this.onTaskResizeStart,aftertaskresize:this.onTaskResizeEnd,scope:this})}if(this.enableTaskDragDrop){this.taskDragDrop=Ext.create("Gnt.feature.TaskDragDrop",this.ownerCt.el,Ext.apply({gantt:this,validatorFn:this.dndValidatorFn||Ext.emptyFn,validatorFnScope:this.validatorFnScope||this},this.dragDropConfig));this.on({beforetaskdrag:this.onBeforeTaskDrag,taskdragstart:this.onDragDropStart,aftertaskdrop:this.onDragDropEnd,scope:this})}if(this.enableDragCreation){this.dragCreator=Ext.create("Gnt.feature.DragCreator",Ext.apply({ganttView:this,validatorFn:this.createValidatorFn||Ext.emptyFn,validatorFnScope:this.validatorFnScope||this},this.createConfig))}},getTemplateForTask:function(b,a){if(b.isMilestone()||a&&b.isBaselineMilestone()){return this.milestoneTemplate}if(b.isLeaf()){return this.eventTemplate}return this.parentEventTemplate},columnRenderer:function(E,y,n){var o=n.getStartDate(),s=this.timeAxis,z=Sch.util.Date,b={},K="",u="",j=s.getStart(),h=s.getEnd(),N=n.isMilestone(),H=n.isLeaf(),t,w,C;if(o){var F=n.getEndDate()||Sch.util.Date.add(o,Sch.util.Date.DAY,1),e=Sch.util.Date.intersectSpans(o,F,j,h);if(e){C=F>h;w=z.betweenLesser(o,j,h);var J=Math.floor(this.getXFromDate(w?o:j)),d=Math.floor(this.getXFromDate(C?h:F)),g=N?0:d-J,A=this.leftLabelField,m=this.rightLabelField,B=this.topLabelField,l=this.bottomLabelField,M=this.getTemplateForTask(n);if(!N&&!H){if(C){g+=this.parentTaskOffset}else{g+=2*this.parentTaskOffset}}b={id:n.internalId,offset:N?(d||J)-this.getXOffset(n):J,width:Math.max(1,g),ctcls:"",cls:"",print:this._print,record:n,percentDone:Math.min(n.getPercentDone()||0,100)};t=this.eventRenderer.call(this.eventRendererScope||this,n,b,n.store)||{};if(A){b.leftLabel=A.renderer.call(A.scope||this,n.data[A.dataIndex],n)}if(m){b.rightLabel=m.renderer.call(m.scope||this,n.data[m.dataIndex],n)}if(B){b.topLabel=B.renderer.call(B.scope||this,n.data[B.dataIndex],n)}if(l){b.bottomLabel=l.renderer.call(l.scope||this,n.data[l.dataIndex],n)}Ext.apply(b,t);var k=" sch-event-resizable-"+n.getResizable();if(N){b.side=Math.round((this.enableBaseline?0.4:0.5)*this.rowHeight);u+=" sch-gantt-milestone"}else{b.width=Math.max(1,g);if(C){u+=" sch-event-endsoutside "}if(!w){u+=" sch-event-startsoutside "}if(H){u+=" sch-gantt-task"}else{u+=" sch-gantt-parent-task"}}if(n.dirty){k+=" sch-dirty "}if(n.isDraggable()===false){k+=" sch-event-fixed "}b.cls=(b.cls||"")+(n.getCls()||"")+k;b.ctcls+=" "+u;K+=M.apply(b)}}if(this.enableBaseline){var x=n.getBaselineStartDate(),a=n.getBaselineEndDate();if(!t){t=this.eventRenderer.call(this,n,b,n.store)||{}}if(x&&a&&Sch.util.Date.intersectSpans(x,a,j,h)){C=a>h;w=z.betweenLesser(x,j,h);var c=n.isBaselineMilestone(),q=Math.floor(this.getXFromDate(w?x:j)),p=Math.floor(this.getXFromDate(C?h:a)),I=c?0:p-q,G=this.getTemplateForTask(n,true),L={progressBarStyle:t.baseProgressBarStyle||"",id:n.internalId+"-base",percentDone:n.getBaselinePercentDone(),offset:N?(p||q)-this.getXOffset(n):q,print:this._print,width:Math.max(1,I),baseline:true};u="";if(c){L.side=Math.round(0.4*this.rowHeight);u="sch-gantt-milestone-baseline sch-gantt-baseline-item"}else{if(n.isLeaf()){u="sch-gantt-task-baseline sch-gantt-baseline-item"}else{u="sch-gantt-parenttask-baseline sch-gantt-baseline-item"}}if(C){u+=" sch-event-endsoutside "}if(!w){u+=" sch-event-startsoutside "}L.ctcls=u+" "+(t.basecls||"");K+=G.apply(L)}}return K},setupTemplates:function(){var a={leftLabel:this.leftLabelField,rightLabel:this.rightLabelField,topLabel:this.topLabelField,bottomLabel:this.bottomLabelField,prefix:this.eventPrefix,resizeHandles:this.resizeHandles,enableDependencyDragDrop:this.enableDependencyDragDrop!==false,enableProgressBarResize:this.enableProgressBarResize,rtl:this.rtl};var b;if(!this.eventTemplate){b=this.taskBodyTemplate?Ext.apply({innerTpl:this.taskBodyTemplate},a):a;this.eventTemplate=Ext.create("Gnt.template.Task",b)}if(!this.parentEventTemplate){b=this.parentTaskBodyTemplate?Ext.apply({innerTpl:this.parentTaskBodyTemplate},a):a;this.parentEventTemplate=Ext.create("Gnt.template.ParentTask",b)}if(!this.milestoneTemplate){b=this.milestoneBodyTemplate?Ext.apply({innerTpl:this.milestoneBodyTemplate},a):a;this.milestoneTemplate=Ext.create("Gnt.template.Milestone",b)}},getDependencyView:function(){return this.dependencyView},getTaskStore:function(){return this.taskStore},initDependencies:function(){if(this.dependencyStore){var b=this,a=Ext.create("Gnt.view.Dependency",Ext.apply({containerEl:b.el,ganttView:b,enableDependencyDragDrop:b.enableDependencyDragDrop,store:b.dependencyStore,rtl:b.rtl},this.dependencyViewConfig));a.on({beforednd:b.onBeforeDependencyDrag,dndstart:b.onDependencyDragStart,drop:b.onDependencyDrop,afterdnd:b.onAfterDependencyDragDrop,beforecascade:b.onBeforeCascade,cascade:b.onCascade,scope:b});b.dependencyView=a;b.relayEvents(a,["dependencyclick","dependencycontextmenu","dependencydblclick"])}},setupGanttEvents:function(){var a=this.getSelectionModel();if(this.toggleParentTasksOnClick){this.on({taskclick:function(c,b){if(!b.isLeaf()){b.isExpanded()?b.collapse():b.expand()}}})}},configureLabels:function(){var a={renderer:function(b){return b},dataIndex:undefined};Ext.Array.forEach(["left","right","top","bottom"],function(c){var b=this[c+"LabelField"];if(b){if(Ext.isString(b)){b=this[c+"LabelField"]={dataIndex:b}}Ext.applyIf(b,a);if(b.editor){b.editor=Ext.create("Gnt.feature.LabelEditor",this,{labelPosition:c,field:b.editor,dataIndex:b.dataIndex})}}},this);this.on("labeledit_beforestartedit",this.onBeforeLabelEdit,this)},onBeforeTaskDrag:function(b,a){return !this.readOnly&&a.isDraggable()!==false&&(this.allowParentTaskMove||a.isLeaf())},onDragDropStart:function(){if(this.tip){this.tip.disable()}},onDragDropEnd:function(){if(this.tip){this.tip.enable()}},onTaskProgressBarResizeStart:function(){if(this.tip){this.tip.hide();this.tip.disable()}},onTaskProgressBarResizeEnd:function(){if(this.tip){this.tip.enable()}},onTaskResizeStart:function(){if(this.tip){this.tip.hide();this.tip.disable()}},onTaskResizeEnd:function(){if(this.tip){this.tip.enable()}},onBeforeDragCreate:function(){return !this.readOnly},onBeforeTaskResize:function(a,b){return !this.readOnly&&b.getSchedulingMode()!=="EffortDriven"},onBeforeTaskProgressBarResize:function(){return !this.readOnly},onBeforeLabelEdit:function(){return !this.readOnly},onBeforeEdit:function(){return !this.readOnly},afterRender:function(){this.initDependencies();this.callParent(arguments);this.el.on("mousemove",this.configureFeatures,this,{single:true})},resolveTaskRecord:function(a){var b=this.findItemByChild(a);if(b){return this.getRecord(this.findItemByChild(a))}return null},resolveEventRecord:function(a){return this.resolveTaskRecord(a)},highlightTask:function(b,a){if(!(b instanceof Ext.data.Model)){b=this.taskStore.getById(b)}if(b){b.isHighlighted=true;var d=this.getNode(b);if(d){Ext.fly(d).addCls("sch-gantt-task-highlighted")}var c=b.getInternalId();if(a!==false){this.dependencyStore.each(function(e){if(e.getSourceId()==c){this.highlightDependency(e);this.highlightTask(e.getTargetId(),a)}},this)}}},unhighlightTask:function(a,c){if(!(a instanceof Ext.data.Model)){a=this.taskStore.getById(a)}if(a){a.isHighlighted=false;Ext.fly(this.getNode(a)).removeCls("sch-gantt-task-highlighted");var b=a.getId()||a.internalId;if(c!==false){this.dependencyStore.each(function(d){if(d.getSourceId()==b){this.unhighlightDependency(d);this.unhighlightTask(d.getTargetId(),c)}},this)}}},getRowClass:function(b){var a="";if(b.isHighlighted){a="sch-gantt-task-highlighted"}if(this.externalGetRowClass){a+=" "+(this.externalGetRowClass.apply(this,arguments)||"")}return a},clearSelectedTasksAndDependencies:function(){this.getSelectionModel().deselectAll();this.getDependencyView().clearSelectedDependencies();this.el.select("tr.sch-gantt-task-highlighted").removeCls("sch-gantt-task-highlighted");this.taskStore.getRootNode().cascadeBy(function(a){a.isHighlighted=false})},getCriticalPaths:function(){return this.taskStore.getCriticalPaths()},highlightCriticalPaths:function(){this.clearSelectedTasksAndDependencies();var h=this.getCriticalPaths(),c=this.getDependencyView(),g=this.dependencyStore,e,d,b,a;Ext.each(h,function(j){for(d=0,b=j.length;d<b;d++){e=j[d];this.highlightTask(e,false);if(d<b-1){a=g.getAt(g.findBy(function(k){return k.getTargetId()==e.getInternalId()&&k.getSourceId()==j[d+1].getInternalId()}));c.highlightDependency(a)}}},this);this.addCls("sch-gantt-critical-chain");this.getSelectionModel().setLocked(true)},unhighlightCriticalPaths:function(){this.el.removeCls("sch-gantt-critical-chain");this.getSelectionModel().setLocked(false);this.clearSelectedTasksAndDependencies()},getXOffset:function(a){var b=0;if(a.isMilestone()){b=Math.floor(this.rowHeight*Math.sqrt(2)/4)-2}else{if(!a.isLeaf()){b=this.parentTaskOffset}}return b},onDestroy:function(){if(this.dependencyView){this.dependencyView.destroy()}this.callParent(arguments)},highlightDependency:function(a){this.dependencyView.highlightDependency(a)},unhighlightDependency:function(a){this.dependencyView.unhighlightDependency(a)},onBeforeDependencyDrag:function(b,a){return this.fireEvent("beforedependencydrag",this,a)},onDependencyDragStart:function(a){this.fireEvent("dependencydragstart",this);if(this.tip){this.tip.disable()}},onDependencyDrop:function(b,c,a,d){this.fireEvent("dependencydrop",this,this.taskStore.getNodeById(c),this.taskStore.getById(a),d)},onAfterDependencyDragDrop:function(){this.fireEvent("afterdependencydragdrop",this);if(this.tip){this.tip.enable()}},onBeforeCascade:function(a,b){this.taskStore.un("update",this.onUpdate,this)},onCascade:function(a,b){this.taskStore.on("update",this.onUpdate,this)},getLeftEditor:function(){return this.leftLabelField.editor},getRightEditor:function(){return this.rightLabelField.editor},getTopEditor:function(){return this.topLabelField.editor},getBottomEditor:function(){return this.bottomLabelField.editor},editLeftLabel:function(a){var b=this.leftLabelField&&this.leftLabelField.editor;if(b){b.edit(a)}},editRightLabel:function(a){var b=this.rightLabelField&&this.rightLabelField.editor;if(b){b.edit(a)}},editTopLabel:function(a){var b=this.topLabelField&&this.topLabelField.editor;if(b){b.edit(a)}},editBottomLabel:function(a){var b=this.bottomLabelField&&this.bottomLabelField.editor;if(b){b.edit(a)}},getOuterElementFromEventRecord:function(a){var b=this.callParent([a]);return b&&b.up(this.eventWrapSelector)||null},getDependenciesForTask:function(a){console.warn("`ganttPanel.getDependenciesForTask()` is deprecated, use `task.getAllDependencies()` instead");return a.getAllDependencies()},onAdd:function(){Ext.suspendLayouts();this.callParent(arguments);Ext.resumeLayouts()},onRemove:function(){Ext.suspendLayouts();this.callParent(arguments);Ext.resumeLayouts()},onUpdate:function(c,a,b,d){this.refreshSize=Ext.emptyFn;Ext.suspendLayouts();this.callParent(arguments);Ext.resumeLayouts();this.refreshSize=Gnt.view.Gantt.prototype.refreshSize},handleScheduleEvent:function(c){var a=c.getTarget("."+this.timeCellCls,3);if(a){var b=this.findRowByChild(a);this.fireEvent("schedule"+c.type,this,this.getDateFromDomEvent(c,"floor"),this.indexOf(b),c)}},scrollEventIntoView:function(c,d,a,n,o){o=o||this;var j=this;var k=this.taskStore;var l=function(p){j.up("panel").scrollTask.cancel();p.scrollIntoView(j.el,true,a);if(d){if(typeof d==="boolean"){p.highlight()}else{p.highlight(null,d)}}n&&n.call(o)};if(!c.isVisible()){c.bubble(function(p){p.expand()})}var m;var b=c.getStartDate();var h=c.getEndDate();if(b&&h){var g=this.timeAxis;if(!g.dateInAxis(b)||!g.dateInAxis(h)){var e=g.getEnd()-g.getStart();g.setTimeSpan(new Date(b.getTime()-e/2),new Date(h.getTime()+e/2))}m=this.getElementFromEventRecord(c)}else{m=this.getNode(c);if(m){m=Ext.fly(m).down(".x-grid-cell")}}if(m){l(m)}else{}}},function(){if(Ext.isIE){Gnt.view.Gantt.override({onRowFocus:function(b,a,c){this.callParent([b,a,true])}})}});Ext.define("Gnt.view.ResourceHistogram",{extend:"Sch.view.TimelineGridView",alias:"widget.resourcehistogramview",requires:["Ext.XTemplate","Ext.util.Format","Sch.util.Date","Gnt.model.Resource"],_cmpCls:"gnt-resourcehistogramview",scheduledEventName:"bar",eventSelector:".gnt-resourcehistogram-bar",barTpl:null,barCls:"gnt-resourcehistogram-bar",lineTpl:null,lineCls:"gnt-resourcehistogram-line",limitLineTpl:null,limitLineCls:"gnt-resourcehistogram-limitline",limitLineWidth:1,rowHeight:60,labelMode:false,labelPercentFormat:"0",labelUnitsFormat:"0.0",unitHeight:null,constructor:function(a){this.callParent(arguments);if(this.barCls){this.eventSelector="."+this.barCls}this.unitHeight=this.getAvailableHeight()/(this.scaleMax-this.scaleMin+this.scaleStep);if(!this.barTpl){this.barTpl=new Ext.XTemplate('<tpl for=".">','<div id="{id}" class="'+this.barCls+' {cls}" gnt-bar-index="{index}" style="left:{left}px;top:{top}px;height:{height}px;width:{width}px"></div>',"<tpl if=\"text !== ''\">",'<span class="'+this.barCls+'-text" style="left:{left}px;">{text}</span>',"</tpl>","</tpl>")}if(!this.lineTpl){this.lineTpl=new Ext.XTemplate('<tpl for=".">','<div class="'+this.lineCls+' {cls}" style="top:{top}px;"></div>',"</tpl>")}if(!this.limitLineTpl){this.limitLineTpl=new Ext.XTemplate('<tpl for=".">','<div class="'+this.limitLineCls+' {cls}" style="left:{left}px;top:{top}px;bottom:{bottom}px;width:{width}px;height:{height}px"></div>',"</tpl>")}this.addEvents("barclick","bardblclick","barcontextmenu")},onUpdate:function(b,d,a,c){if(Ext.Array.indexOf(Gnt.model.Resource.prototype.calendarIdField,c)>-1){this.histogram.loadAllocationData(d,true);this.histogram.unbindResourceCalendarListeners(d);var e=d.getOwnCalendar();if(e&&e!==this.histogram.calendar){this.histogram.bindResourceCalendarListeners(d,e)}}this.callParent(arguments)},onDataRefresh:function(){this.histogram.loadAllocationData(null,true);this.histogram.bindCalendarListeners();this.callParent(arguments)},renderLines:function(a){return this.lineTpl.apply(this.prepareLines(a))},prepareLines:function(h){var j=h.scaleMin,d=h.scaleLabelStep,a=this.getAvailableHeight(),e=[],n={},m=this.lineCls,k=m+"min";if(h.scalePoints){var g;for(var c=0,b=h.scalePoints.length;c<b;c++){g=h.scalePoints[c];e.push({value:g.value,top:g.top||Math.round(a-this.unitHeight*(g.value-h.scaleMin)),cls:g.cls+(g.label?" "+m+"-label":"")+(c===0?" "+m+"-min":c==b?" "+m+"-max":"")})}}else{while(j<=h.scaleMax){e.push({value:j,top:Math.round(a-this.unitHeight*(j-h.scaleMin)),cls:k});j+=h.scaleStep;k=j%d?"":m+"-label";if(j==h.scaleMax){k+=" "+m+"-max"}}if(e.length&&e[e.length-1].value!==h.scaleMax){e.push({value:h.scaleMax,top:Math.round(a-this.unitHeight*(h.scaleMax-h.scaleMin)),cls:(h.scaleMax%d?"":m+"-label")+" "+m+"-max"})}}return e},renderLimitLines:function(b,a){return this.limitLineTpl.apply(this.prepareLimitLines(b,a))},prepareLimitLines:function(n,h){var k=[],a=this.getAvailableHeight(),o=this.limitLineCls,d,c,j,m,b;for(var g=0,e=h.length;g<e;g++){d={left:this.getXFromDate(h[g].startDate,true),width:this.getXFromDate(h[g].endDate,true)-this.getXFromDate(h[g].startDate,true),top:"",bottom:"",height:0,cls:""};j=n.calendar.convertMSDurationToUnit(h[g].allocationMS,n.scaleUnit);if(j>=n.scaleMin&&j<=n.scaleMax){d.height=0;if(c>j){d.bottom=Math.round((j-n.scaleMin)*this.unitHeight)-this.limitLineWidth;b="bottom";d.top="";d.cls+=" "+o+"-bottom"}else{d.top=Math.round(a-(j-n.scaleMin)*this.unitHeight);b="top";d.bottom="";d.cls+=" "+o+"-top"}if(k[0]){if(k[k.length-1][b]){d.height=k[k.length-1][b]-d[b]+this.limitLineWidth}else{d.height=a-(d[b]+k[k.length-1][b=="top"?"bottom":"top"])}}d.height=Math.round(Math.abs(d.height));c=j}else{if(j>n.scaleMax){c=n.scaleMax}else{if(j<n.scaleMin){c=n.scaleMin}}}k.push(d)}return k},renderBars:function(b,a,c){return this.barTpl.apply(this.prepareBars(b,a,c))},prepareBars:function(k,e,g){var j=[],a=this.getAvailableHeight(),m=this.barCls,b,h;for(var d=0,c=e.length;d<c;d++){if(e[d].totalAllocation){h=k.calendar.convertMSDurationToUnit(e[d].allocationMS,k.scaleUnit);b={id:g+"-"+d,index:d,left:this.getXFromDate(e[d].startDate,true),width:this.getXFromDate(e[d].endDate,true)-this.getXFromDate(e[d].startDate,true),height:a,top:0,text:"",cls:""};if(this.labelMode){switch(this.labelMode){case"percent":b.text=Ext.util.Format.number(e[d].totalAllocation,this.labelPercentFormat)+"%";break;case"units":b.text=Ext.util.Format.number(h,this.labelUnitsFormat)+Sch.util.Date.getShortNameOfUnit(k.scaleUnit);break;default:b.text=this.labelMode.apply({allocation:h,percent:e[d].totalAllocation})}}if(h<=k.scaleMax+k.scaleStep){b.height=h>=k.scaleMin?Math.round((h-k.scaleMin)*this.unitHeight):0;b.top=a-b.height}else{b.cls=m+"-partofbar"}if(e[d].totalAllocation>100){b.cls=m+"-overwork"}j.push(b)}}return j},columnRenderer:function(e,d,c,h,b){var g=c.getInternalId(),a=this.normalGrid.getView();return(this.showScaleLines?a.renderLines(this):"")+a.renderBars(this,this.allocationData[g].bars,g)+(this.showLimitLines?a.renderLimitLines(this,this.allocationData[g].maxBars):"")},getAvailableHeight:function(){if(this.availableHeight){return this.availableHeight}this.availableHeight=this.rowHeight-this.cellTopBorderWidth-this.cellBottomBorderWidth;return this.availableHeight},resolveEventRecord:function(c){var e=this.findItemByChild(c);if(e){var h=this.getRecord(e);if(h){var a={resource:h};var g=this.histogram.allocationData[h.getInternalId()];var b=c.getAttribute("gnt-bar-index");var d=g.bars[b];a.startDate=d.startDate;a.endDate=d.endDate;a.assignments=d.assignments;a.allocationMS=d.allocationMS;a.totalAllocation=d.totalAllocation;return a}}return null},getDataForTooltipTpl:function(a){return a}});Ext.define("Gnt.column.Scale",{extend:"Ext.grid.column.Template",alias:"widget.scalecolumn",tpl:null,sortable:false,scalePoints:null,scaleStep:2,scaleLabelStep:4,scaleMin:0,scaleMax:24,width:40,availableHeight:48,scaleCellCls:"gnt-scalecolumn",_isGanttColumn:false,initComponent:function(){this.tdCls=(this.tdCls||"")+" "+this.scaleCellCls;if(!this.tpl){this.tpl=new Ext.XTemplate('<div class="'+this.scaleCellCls+'-wrap" style="height:{scaleHeight}px;">','<tpl for="scalePoints">',"<tpl if=\"label !== ''\">",'<span class="'+this.scaleCellCls+'-label-line {cls}" style="top:{top}px"><span class="'+this.scaleCellCls+'-label">{label}</span></span>',"<tpl else>",'<span class="'+this.scaleCellCls+'-line {cls}" style="top:{top}px"></span>',"</tpl>","</tpl>","</div>")}this.setAvailableHeight(this.availableHeight,true);this.callParent(arguments)},setAvailableHeight:function(a,b){this.availableHeight=a;if(!this.scalePoints){this.scaleStepHeight=this.availableHeight/(this.scaleMax-this.scaleMin+this.scaleStep);this.scalePoints=this.buildScalePoints()}else{if(b){this.scalePoints.sort(function(d,c){return d.value>c.value});this.scaleMin=this.scalePoints[0].value;this.scaleMax=this.scalePoints[this.scalePoints.length-1].value;this.scaleStep=(this.scaleMax-this.scaleMin)/10}this.scaleStepHeight=this.availableHeight/(this.scaleMax-this.scaleMin+this.scaleStep);this.updateScalePointsTops()}},defaultRenderer:function(c,d,a){var b={record:Ext.apply({},a.data,a.getAssociatedData()),scaleHeight:this.availableHeight,scalePoints:this.scalePoints};return this.tpl.apply(b)},buildScalePoints:function(){var h=this.scaleMin,j=h,c=this.scaleStep,g=this.scaleLabelStep,d=this.scaleStepHeight,b=this.availableHeight,a=this.scaleCellCls,k=a+"-min",l=[];var e=function(o,n,m){return{top:Math.round(b-(o-h)*d),value:o,label:n!="undefined"?n:"",cls:m||""}};while(j<this.scaleMax){l.push(e(j,j%g||j===h?"":j,k));k="";j+=c}l.push(e(this.scaleMax,this.scaleMax,a+"-max"));return l},updateScalePointsTops:function(){var d=this.scaleStepHeight,e=this.availableHeight,a;for(var c=0,b=this.scalePoints.length;c<b;c++){a=this.scalePoints[c];a.top=Math.round(e-a.value*d)}}});Ext.define("Gnt.panel.Gantt",{extend:"Sch.panel.TimelineTreePanel",alias:["widget.ganttpanel"],alternateClassName:["Sch.gantt.GanttPanel"],requires:["Ext.layout.container.Border","Gnt.view.Gantt","Gnt.model.Dependency","Gnt.data.ResourceStore","Gnt.data.AssignmentStore","Gnt.feature.WorkingTime","Gnt.data.Calendar","Gnt.data.TaskStore","Gnt.data.DependencyStore"],uses:["Sch.plugin.CurrentTimeLine"],viewType:"ganttview",layout:"border",rowLines:true,syncRowHeight:false,useSpacer:false,rowHeight:24,leftLabelField:null,rightLabelField:null,highlightWeekends:true,weekendsAreWorkdays:false,skipWeekendsDuringDragDrop:true,enableTaskDragDrop:true,enableDependencyDragDrop:true,enableProgressBarResize:false,toggleParentTasksOnClick:true,addRowOnTab:true,recalculateParents:true,cascadeChanges:false,showTodayLine:false,enableBaseline:false,baselineVisible:false,enableAnimations:false,workingTimePlugin:null,todayLinePlugin:null,allowParentTaskMove:false,enableDragCreation:true,eventRenderer:Ext.emptyFn,eventRendererScope:null,eventTemplate:null,parentEventTemplate:null,milestoneTemplate:null,taskBodyTemplate:null,parentTaskBodyTemplate:null,milestoneBodyTemplate:null,autoHeight:null,calendar:null,taskStore:null,dependencyStore:null,resourceStore:null,assignmentStore:null,columnLines:false,dndValidatorFn:Ext.emptyFn,createValidatorFn:Ext.emptyFn,resizeHandles:"both",resizeValidatorFn:Ext.emptyFn,resizeConfig:null,progressBarResizeConfig:null,dragDropConfig:null,createConfig:null,autoFitOnLoad:false,refreshLockedTreeOnDependencyUpdate:false,_lockedDependencyListeners:null,wbsColumn:null,earlyStartColumn:null,earlyEndColumn:null,lateStartColumn:null,lateEndColumn:null,earlyDatesListeners:null,lateDatesListeners:null,refreshTimeout:100,getEventSelectionModel:function(){return this.getSelectionModel()},initStores:function(){if(!this.taskStore){Ext.Error.raise("You must specify a taskStore config.")}var a=Ext.StoreMgr.lookup(this.taskStore);if(!a){Ext.Error.raise("You have provided a incorrect taskStore id")}if(!(a instanceof Gnt.data.TaskStore)){Ext.Error.raise("A `taskStore` should be an instance of `Gnt.data.TaskStore` (or of a subclass)")}Ext.apply(this,{store:a,taskStore:a});var d=this.calendar=a.calendar;if(this.dependencyStore){this.dependencyStore=Ext.StoreMgr.lookup(this.dependencyStore);a.setDependencyStore(this.dependencyStore)}else{this.dependencyStore=a.dependencyStore}if(!(this.dependencyStore instanceof Gnt.data.DependencyStore)){Ext.Error.raise("The Gantt dependency store should be a Gnt.data.DependencyStore, or a subclass thereof.")}var b=this.resourceStore?Ext.StoreMgr.lookup(this.resourceStore):a.getResourceStore();if(!(b instanceof Gnt.data.ResourceStore)){Ext.Error.raise("A `ResourceStore` should be an instance of `Gnt.data.ResourceStore` (or of a subclass)")}var c=this.assignmentStore?Ext.StoreMgr.lookup(this.assignmentStore):a.getAssignmentStore();if(!(c instanceof Gnt.data.AssignmentStore)){Ext.Error.raise("An `assignmentStore` should be an instance of `Gnt.data.AssignmentStore` (or of a subclass)")}this.bindAssignmentStore(c,true);this.bindResourceStore(b,true);if(this.needToTranslateOption("weekendsAreWorkdays")){d.setWeekendsAreWorkDays(this.weekendsAreWorkdays)}},initComponent:function(){var e=this;if(Ext.isBoolean(this.showBaseline)){this.enableBaseline=this.baselineVisible=this.showBaseline;this.showBaseline=Gnt.panel.Gantt.prototype.showBaseline}this.autoHeight=false;this.initStores();if(this.needToTranslateOption("cascadeChanges")){this.setCascadeChanges(this.cascadeChanges)}if(this.needToTranslateOption("recalculateParents")){this.setRecalculateParents(this.recalculateParents)}if(this.needToTranslateOption("skipWeekendsDuringDragDrop")){this.setSkipWeekendsDuringDragDrop(this.skipWeekendsDuringDragDrop)}var d=this.normalViewConfig=this.normalViewConfig||{};Ext.apply(this.normalViewConfig,{taskStore:this.taskStore,dependencyStore:this.dependencyStore,enableDependencyDragDrop:this.enableDependencyDragDrop,enableTaskDragDrop:this.enableTaskDragDrop,enableProgressBarResize:this.enableProgressBarResize,enableDragCreation:this.enableDragCreation,allowParentTaskMove:this.allowParentTaskMove,toggleParentTasksOnClick:this.toggleParentTasksOnClick,resizeHandles:this.resizeHandles,enableBaseline:this.baselineVisible||this.enableBaseline,leftLabelField:this.leftLabelField,rightLabelField:this.rightLabelField,topLabelField:this.topLabelField,bottomLabelField:this.bottomLabelField,eventTemplate:this.eventTemplate,parentEventTemplate:this.parentEventTemplate,milestoneTemplate:this.milestoneTemplate,taskBodyTemplate:this.taskBodyTemplate,parentTaskBodyTemplate:this.parentTaskBodyTemplate,milestoneBodyTemplate:this.milestoneBodyTemplate,resizeConfig:this.resizeConfig,dragDropConfig:this.dragDropConfig});if(this.topLabelField||this.bottomLabelField){this.addCls("sch-gantt-topbottom-labels "+(this.topLabelField?"sch-gantt-top-label":""));this.normalViewConfig.rowHeight=52}this.configureFunctionality();this.mon(this.taskStore,"beforecascade",this.onBeforeCascade,this);this.mon(this.taskStore,"cascade",this.onAfterCascade,this);this.callParent(arguments);if(this.autoFitOnLoad){if(this.store.getCount()){this.zoomToFit()}this.mon(this.store,"load",function(){this.zoomToFit()},this)}this.bodyCls=(this.bodyCls||"")+" sch-ganttpanel-container-body";var c=this.getSchedulingView();c.store.calendar=this.calendar;this.relayEvents(c,["taskclick","taskdblclick","taskcontextmenu","beforetaskresize","taskresizestart","partialtaskresize","aftertaskresize","beforeprogressbarresize","progressbarresizestart","afterprogressbarresize","beforetaskdrag","taskdragstart","taskdrop","aftertaskdrop","labeledit_beforestartedit","labeledit_beforecomplete","labeledit_complete","beforedependencydrag","dependencydragstart","dependencydrop","afterdependencydragdrop","dependencyclick","dependencycontextmenu","dependencydblclick","scheduleclick","scheduledblclick","schedulecontextmenu"]);if(this.addRowOnTab){var g=this.lockedGrid,h=this.getSelectionModel();h.onEditorTab=Ext.Function.createInterceptor(h.onEditorTab,this.onEditorTabPress,this)}var b=this.getSchedulingView();this.registerRenderer(b.columnRenderer,b);var a=" sch-ganttpanel sch-horizontal ";if(this.highlightWeekends){a+=" sch-ganttpanel-highlightweekends "}if(!this.rtl){a+=" sch-ltr "}this.addCls(a);if(this.baselineVisible){this.showBaseline()}this.on("add",function(k,j){if(j instanceof Ext.Editor){k.lockedGrid.suspendLayouts();Ext.suspendLayouts();k.lockedGrid.add(j);Ext.resumeLayouts();k.lockedGrid.resumeLayouts()}});this.on("beforeedit",function(j,k){return k.record.isEditable(k.field)},this);this.wbsColumn=this.lockedGrid.headerCt.down("wbscolumn");if(this.wbsColumn){this.bindWBSColumnListeners()}this.slackColumn=this.lockedGrid.headerCt.down("slackcolumn");if(this.slackColumn){this.bindSlackListeners()}this.earlyStartColumn=this.lockedGrid.headerCt.down("earlystartdatecolumn");this.earlyEndColumn=this.lockedGrid.headerCt.down("earlyenddatecolumn");if(this.earlyStartColumn||this.earlyEndColumn){this.bindEarlyDatesListeners()}this.lateStartColumn=this.lockedGrid.headerCt.down("latestartdatecolumn");this.lateEndColumn=this.lockedGrid.headerCt.down("lateenddatecolumn");if(this.lateStartColumn||this.lateEndColumn){this.bindLateDatesListeners()}},onBeforeCascade:function(){var a=this.normalGrid.getView().store;a.suspendEvents();Ext.suspendLayouts()},onAfterCascade:function(g,a){var d=this;var e=this.normalGrid.getView().store;e.resumeEvents();Ext.resumeLayouts(true);if(a.nbrAffected>0){var b=this.normalGrid.getView();var c=this.lockedGrid.getView();b.refreshKeepingScroll(true);setTimeout(function(){Ext.suspendLayouts();c.saveScrollState();c.refresh();c.restoreScrollState();Ext.resumeLayouts(true)},0)}},bindWBSColumnListeners:function(){var a=this.lockedGrid.view;this.mon(this.taskStore,{insert:function(d,c,b){this.updateWBSCells(b?a.store.indexOf(b):1)},remove:function(d,c){var b=c.removeContext;var g=b.nextSibling||b.parentNode&&b.parentNode.nextSibling;var e=g?a.store.indexOf(g):-1;if(e>=0){this.updateWBSCells(e)}},scope:this})},bindSlackListeners:function(){var b=this.lockedGrid.getView();var a=Ext.Function.createBuffered(this.updateSlackColumns,this.refreshTimeout,this,[]);this.slackListeners=this.mon(this.taskStore,{resetearlydates:a,resetlatedates:a,scope:this,destroyable:true})},bindEarlyDatesListeners:function(){var b=this.lockedGrid.getView();var a=Ext.Function.createBuffered(this.updateEarlyDateColumns,this.refreshTimeout,this,[]);this.earlyDatesListeners=this.mon(this.taskStore,{resetearlydates:a,scope:this,destroyable:true})},bindLateDatesListeners:function(){var b=this.lockedGrid.getView();var a=Ext.Function.createBuffered(this.updateLateDateColumns,this.refreshTimeout,this,[]);this.lateDatesListeners=this.mon(this.taskStore,{resetlatedates:a,scope:this,destroyable:true})},onEditorTabPress:function(k,h){var l=this.lockedGrid.view,d=k.getActiveRecord(),b=k.getActiveColumn(),g=l.getPosition(d,b),a=this.lockedGrid.headerCt,c=g.row===this.lockedGrid.view.store.getCount()-1,j=a.items.findIndexBy(function(e){return a.items.indexOf(e)>g.column&&e.isVisible()&&e.getEditor()})<0;if(c&&j){d.addTaskBelow({leaf:true})}},needToTranslateOption:function(a){return this.hasOwnProperty(a)||this.self.prototype.hasOwnProperty(a)&&this.self!=Gnt.panel.Gantt},getDependencyView:function(){return this.getSchedulingView().getDependencyView()},disableWeekendHighlighting:function(a){this.workingTimePlugin.setDisabled(a)},resolveTaskRecord:function(a){return this.getSchedulingView().resolveTaskRecord(a)},fitTimeColumns:function(){this.getSchedulingView().fitColumns()},getResourceStore:function(){return this.getTaskStore().getResourceStore()},getAssignmentStore:function(){return this.getTaskStore().getAssignmentStore()},getTaskStore:function(){return this.taskStore},getDependencyStore:function(){return this.dependencyStore},onDragDropStart:function(){if(this.tip){this.tip.hide();this.tip.disable()}},onDragDropEnd:function(){if(this.tip){this.tip.enable()}},configureFunctionality:function(){var a=this.plugins=[].concat(this.plugins||[]);if(this.highlightWeekends){this.workingTimePlugin=Ext.create("Gnt.feature.WorkingTime",{calendar:this.calendar});a.push(this.workingTimePlugin)}if(this.showTodayLine){this.todayLinePlugin=new Sch.plugin.CurrentTimeLine;a.push(this.todayLinePlugin)}},getWorkingTimePlugin:function(){return this.workingTimePlugin},registerLockedDependencyListeners:function(){var b=this;var a=this.getDependencyStore();this._lockedDependencyListeners=this._lockedDependencyListeners||{load:function(){var c=b.getTaskStore();c.resetEarlyDates();c.resetLateDates();b.lockedGrid.getView().refresh()},add:function(d,c){for(var e=0;e<c.length;e++){b.updateDependencyTasks(c[e])}},update:function(j,g){var e=b.lockedGrid.view;var h=e.store;if(g.previous[g.fromField]){var d=b.taskStore.getByInternalId(g.previous[g.fromField]);if(d){e.refreshNode(h.indexOf(d))}}if(g.previous[g.toField]){var c=b.taskStore.getByInternalId(g.previous[g.toField]);if(c){e.refreshNode(h.indexOf(c))}}b.updateDependencyTasks(g)},remove:function(d,c){b.updateDependencyTasks(c)}};a.un(this._lockedDependencyListeners);a.on(this._lockedDependencyListeners)},updateDependencyTasks:function(b){var a=b.getSourceTask(this.taskStore);var c=b.getTargetTask(this.taskStore);var d=this.lockedGrid.getView();if(a){d.refreshNode(d.store.indexOf(a))}if(c){d.refreshNode(d.store.indexOf(c))}},showBaseline:function(){this.addCls("sch-ganttpanel-showbaseline")},hideBaseline:function(){this.removeCls("sch-ganttpanel-showbaseline")},toggleBaseline:function(){this.toggleCls("sch-ganttpanel-showbaseline")},zoomToFit:function(){if(this.zoomToSpan(this.taskStore.getTotalTimeSpan(),true)===null){this.fitTimeColumns()}},getCascadeChanges:function(){return this.taskStore.cascadeChanges},setCascadeChanges:function(a){this.taskStore.cascadeChanges=a},getRecalculateParents:function(){return this.taskStore.recalculateParents},setRecalculateParents:function(a){this.taskStore.recalculateParents=a},setSkipWeekendsDuringDragDrop:function(a){this.taskStore.skipWeekendsDuringDragDrop=this.skipWeekendsDuringDragDrop=a},getSkipWeekendsDuringDragDrop:function(){return this.taskStore.skipWeekendsDuringDragDrop},bindResourceStore:function(d,a){var c=this;var b={scope:c,update:c.onResourceStoreDataChanged,datachanged:c.onResourceStoreDataChanged};if(!a&&c.resourceStore){if(d!==c.resourceStore&&c.resourceStore.autoDestroy){c.resourceStore.destroy()}else{c.mun(c.resourceStore,b)}if(!d){c.resourceStore=null}}if(d){d=Ext.data.StoreManager.lookup(d);c.mon(d,b);this.taskStore.setResourceStore(d)}c.resourceStore=d;if(d&&!a){c.refreshViews()}},refreshViews:function(){this.lockedGrid.getView().refresh();this.getSchedulingView().refreshKeepingScroll()},bindAssignmentStore:function(c,a){var b=this;if(!a&&b.assignmentStore){if(c!==b.assignmentStore&&b.assignmentStore.autoDestroy){b.assignmentStore.destroy()}else{b.mun(b.assignmentStore,{scope:b,update:b.onAssignmentStoreDataChanged,datachanged:b.onAssignmentStoreDataChanged})}if(!c){b.assignmentStore=null}}if(c){c=Ext.data.StoreManager.lookup(c);b.mon(c,{scope:b,update:b.onAssignmentStoreDataChanged,datachanged:b.onAssignmentStoreDataChanged});this.taskStore.setAssignmentStore(c)}b.assignmentStore=c;if(c&&!a){b.refreshViews()}},onResourceStoreDataChanged:function(){this.refreshViews()},onAssignmentStoreDataChanged:function(){this.refreshViews()},expandAll:function(){Ext.suspendLayouts();this.callParent(arguments);Ext.resumeLayouts()},collapseAll:function(){Ext.suspendLayouts();this.callParent(arguments);Ext.resumeLayouts()},updateWBSCells:function(g){if(g<0){return}var c=this.lockedGrid.view;var b=this.wbsColumn;for(var d=g;d<c.getNodes().length;d++){var e=c.store.getAt(d);var a=c.getCell(e,b);if(a){a.dom.firstChild.innerHTML=b.renderer(null,null,e)}}},redrawColumns:function(g){var k=this.lockedGrid.view;if(g.length){for(var e=0,a=k.getNodes().length;e<a;e++){var b=k.store.getAt(e);for(var d=0,h=g.length;d<h;d++){var m=k.getCell(b,g[d]);var c=[];k.renderCell(g[d],b,e,g[d].getIndex(),c);m.update(c.join(""))}}}},updateSlackColumns:function(){var a=this.lockedGrid.view;if(this.slackColumn){this.redrawColumns([this.slackColumn])}},updateEarlyDateColumns:function(){var a=this.lockedGrid.view;var b=[];if(this.earlyStartColumn){b.push(this.earlyStartColumn)}if(this.earlyEndColumn){b.push(this.earlyEndColumn)}if(b.length){this.redrawColumns(b)}},updateLateDateColumns:function(){var a=this.lockedGrid.view;var b=[];if(this.lateStartColumn){b.push(this.lateStartColumn)}if(this.lateEndColumn){b.push(this.lateEndColumn)}if(b.length){this.redrawColumns(b)}},afterRender:function(){this.callParent(arguments);this.getSelectionModel().view=this.lockedGrid.getView()}});Ext.define("Gnt.panel.ResourceHistogram",{extend:"Sch.panel.TimelineGridPanel",requires:["Ext.XTemplate","Sch.util.Date","Gnt.feature.WorkingTime","Gnt.column.Scale","Gnt.view.ResourceHistogram"],alias:"widget.resourcehistogram",viewType:"resourcehistogramview",layout:"border",preserveScrollOnRefresh:true,showScaleLines:false,showLimitLines:true,calendarListeners:null,calendarListenersHash:null,calendar:null,taskStore:null,resourceStore:null,assignmentStore:null,startDate:null,endDate:null,timelinePanel:null,highlightWeekends:true,allocationData:null,scaleUnit:"HOUR",scaleMin:0,scaleMax:24,scaleLabelStep:4,scaleStep:2,rowHeight:50,resourceText:"Resource",initComponent:function(){this.partnerTimelinePanel=this.partnerTimelinePanel||this.timelinePanel;this.lockedViewConfig=this.lockedViewConfig||{};this.normalViewConfig=this.normalViewConfig||{};this.normalViewConfig.histogram=this;this.normalViewConfig.trackOver=false;this.lockedGridConfig=this.lockedGridConfig||{};Ext.applyIf(this.lockedGridConfig,{width:300});this.lockedViewConfig.rowHeight=this.normalViewConfig.rowHeight=this.rowHeight;this.lockedViewConfig.preserveScrollOnRefresh=this.normalViewConfig.preserveScrollOnRefresh=this.preserveScrollOnRefresh;if(this.scalePoints){this.scalePoints.sort(function(o,n){return o.value>n.value});this.scaleMin=this.scalePoints[0].value;this.scaleMax=this.scalePoints[this.scalePoints.length-1].value;this.scaleStep=(this.scaleMax-this.scaleMin)/10}if(!this.columns){var c,g;this.columns=[];c=this.resourceNameCol=new Ext.grid.column.Column({header:this.resourceText,flex:1,dataIndex:this.resourceStore.model.prototype.nameField});this.columns.push(c);g={width:40};Ext.Array.forEach(["scalePoints","scaleStep","scaleLabelStep","scaleMin","scaleMax","scaleLabelStep","scaleStep"],function(n){g[n]=this[n]},this);g=this.scaleCol=new Gnt.column.Scale(g);this.mon(g,{beforerender:function(){g.setAvailableHeight(this.getSchedulingView().getAvailableHeight());if(this.scalePoints){this.scalePoints=g.scalePoints}},scope:this,single:true});if(this.scalePoints){this.scaleMin=g.scaleMin;this.scaleMax=g.scaleMax;this.scaleStep=g.scaleStep}this.columns.push(g)}else{var e=!Ext.isArray(this.columns)?[this.columns]:this.columns,d;for(var h=0;h<e.length;h++){d=e[h];if(d instanceof Gnt.column.Scale||d.xtype=="scalecolumn"){Ext.Array.forEach(["scalePoints","scaleStep","scaleLabelStep","scaleMin","scaleMax","scaleLabelStep","scaleStep"],function(n){if(!(n in d)){d[n]=this[n]}},this);if(!(d instanceof Gnt.column.Scale)){d=e[h]=Ext.ComponentManager.create(d,"scalecolumn")}this.mon(d,{beforerender:function(){d.setAvailableHeight(this.getSchedulingView().getAvailableHeight())},scope:this,single:true})}}}Ext.Array.forEach(["barCls","barTpl","lineTpl","lineCls","limitLineTpl","limitLineCls","limitLineWidth","labelMode","labelPercentFormat","labelUnitsFormat","scaleMin","scaleMax","scaleStep","loadMask"],function(n){if(n in this){this.normalViewConfig[n]=this[n]}},this);this.store=this.resourceStore;this.taskStore=this.taskStore||this.store.getTaskStore();if(this.taskStore){this.mon(this.taskStore,{update:this.onTaskUpdate,scope:this})}this.calendar=this.calendar||this.taskStore&&this.taskStore.getCalendar();if(!this.calendar){throw'Cannot get project calendar instance: please specify either "calendar" or "taskStore" option'}this.mon(this.calendar,{calendarchange:this.onProjectCalendarChange,scope:this});this.bindCalendarListeners();this.assignmentStore=this.assignmentStore||this.store.getAssignmentStore()||this.taskStore&&this.taskStore.getAssignmentStore();if(this.assignmentStore){this.mon(this.assignmentStore,{refresh:this.onAssignmentsRefresh,remove:this.onAssignmentsChange,update:this.onAssignmentsChange,add:this.onAssignmentsChange,scope:this})}this.plugins=[].concat(this.plugins||[]);if(this.highlightWeekends){this.workingTimePlugin=new Gnt.feature.WorkingTime({calendar:this.calendar});this.plugins.push(this.workingTimePlugin)}this.callParent(arguments);var l="gnt-resourcehistogram sch-horizontal ";if(this.highlightWeekends){l+=" gnt-resourcehistogram-highlightweekends "}this.addCls(l);var j=this.getSchedulingView();this.registerRenderer(j.columnRenderer,this);this.relayEvents(j,["barclick","bardblclick","barcontextmenu"]);if(!this.syncRowHeight){this.enableRowHeightInjection(this.lockedGrid.getView(),this.normalGrid.getView())}this.loadAllocationData(null,true);var b=this.lockedGrid.headerCt.layout;var k=b.getContainerSize;var a=Ext.getScrollbarSize;var m=Ext.getScrollbarSize();b.getContainerSize=function(n){Ext.getScrollbarSize=function(){return{width:0,height:m.height}};var o=k.apply(this,arguments);Ext.getScrollbarSize=a;return o}},destroy:function(){this.unbindCalendarListeners();if(this.assignmentStore){this.mun(this.assignmentStore,{refresh:this.onAssignmentsRefresh,remove:this.onAssignmentsChange,update:this.onAssignmentsChange,add:this.onAssignmentsChange,scope:this})}if(this.taskStore){this.mun(this.taskStore,{update:this.onTaskUpdate,scope:this})}this.mun(this.calendar,{calendarchange:this.onProjectCalendarChange,scope:this})},onProjectCalendarChange:function(){this.loadAllocationData()},unbindResourceCalendarListeners:function(b){var a=this.calendarListenersHash&&this.calendarListenersHash[b.getInternalId()];if(a){Ext.Array.remove(this.calendarListeners,a);Ext.destroy(a)}},bindResourceCalendarListeners:function(d,e){var c=this;e=e||d.getOwnCalendar();var b=function(){c.loadAllocationData(d)};var a=c.mon(e,{load:b,calendarchange:b,scope:c,destroyable:true});c.calendarListenersHash[d.getInternalId()]=a;c.calendarListeners.push(a)},bindCalendarListeners:function(){this.unbindCalendarListeners();var a=this;this.store.each(function(b){var c=b.getOwnCalendar();if(c&&c!==a.calendar){a.bindResourceCalendarListeners(b,c)}})},unbindCalendarListeners:function(){if(this.calendarListeners&&this.calendarListeners.length){Ext.destroy.apply(Ext,this.calendarListeners)}this.calendarListeners=[];this.calendarListenersHash={}},onResourcesLoad:function(){this.loadAllocationData();this.bindCalendarListeners()},onTaskUpdate:function(c,b){var a;if(this.assignmentStore){a=this.assignmentStore.queryBy(function(d){return d.getTaskId()==b.getInternalId()});a=a.getRange()}else{a=b.getAssignments()}this.onAssignmentsChange(this.assignmentStore,a)},onAssignmentsRefresh:function(a){this.onAssignmentsChange(a,a.getRange())},onAssignmentsChange:function(e,b){var d;if(!Ext.isArray(b)){b=[b]}for(var c=0,a=b.length;c<a;c++){d=this.resourceStore.getByInternalId(b[c].getResourceId());if(d){this.loadAllocationData(d)}}},enableRowHeightInjection:function(c,e){var b=c.renderRow;var a=c.renderCell;var d=new Ext.XTemplate("{%","this.processCellValues(values);","this.nextTpl.applyOut(values, out, parent);","%}",{priority:1,processCellValues:function(h){if(e.orientation=="horizontal"){var g=e.getRowHeight()-e.cellTopBorderWidth-e.cellBottomBorderWidth;h.style=(h.style||"")+";height:"+g+"px;"}}});c.addCellTpl(d);e.addCellTpl(d)},loadAllocationData:function(d,b){if(this.resourceStore){if(!d){this.allocationData={};var c=this;var e=this.getStartDate();var a=this.getEndDate();this.store.each(function(g){c.allocationData[g.getInternalId()]=c.processAllocationData(g.getAllocationInfo({startDate:e,endDate:a,includeResCalIntervals:true}))});if(!b&&this.rendered){this.getView().refresh()}}else{this.allocationData=this.allocationData||{};this.allocationData[d.getInternalId()]=this.processAllocationData(d.getAllocationInfo({startDate:this.getStartDate(),endDate:this.getEndDate(),includeResCalIntervals:true}));if(!b&&this.rendered){this.getView().refreshNode(this.store.indexOf(d))}}}},processAllocationData:function(A){var y,z,h,w,o,c,b,m,d,B,s=[],g=[],a=false;var p=function(){if(!z.assignments||!y.inResourceCalendar||!y.totalAllocation||!y.inTasksCalendar){return false}for(var C=0,j=z.assignments.length;C<j;C++){if(y.assignmentsHash[z.assignments[C].getTaskId()]){return false}}return true};var n=function(j){z={startDate:j,totalAllocation:y.totalAllocation,allocationMS:b*y.totalAllocation/100,assignments:y.assignments};a=true};var k=function(j){if(!a){return false}if(j){z.endDate=j}s.push(z);a=false};var q;for(var x=0,t=A.length;x<t;x++){y=A[x];q=Ext.Date.clearTime(y.startDate,true);if(q-w!==0){w=q;m=b;B=d;b=0;d=0;var u=x;while(A[u]&&Ext.Date.clearTime(A[u].startDate,true)-q===0){if(A[u].inResourceCalendar){d+=A[u].endDate-A[u].startDate;if(A[u].totalAllocation&&A[u].inTasksCalendar){b+=A[u].endDate-A[u].startDate}}u++}}else{q=false}if(this.showLimitLines){if(q&&d!=B){if(h){h.endDate=y.startDate;g.push(h)}h={startDate:y.startDate,allocationMS:d}}h.endDate=y.endDate}if(!a){if(y.inTask){n(new Date(y.startDate))}}else{if(!y.inTask){k()}else{var e=false;if(q&&z.endDate<=Sch.util.Date.add(q,Sch.util.Date.DAY,-1)){o=Ext.Date.clearTime(z.endDate,true);if(o<z.endDate){o=Sch.util.Date.add(o,Sch.util.Date.DAY,1)}c=Ext.Date.clearTime(y.startDate,true);e=true}else{if(q&&b!==m){o=c=y.startDate;e=true}else{if(y.totalAllocation&&p()){o=z.endDate;c=new Date(y.startDate);e=true}else{if(y.totalAllocation&&y.totalAllocation!=z.totalAllocation){o=c=y.totalAllocation>z.totalAllocation?new Date(y.startDate):z.endDate;e=true}}}}if(e){k(o);n(c)}}}if(a){z.endDate=y.endDate}}k();if(this.showLimitLines){if(h){g.push(h)}if(g.length){g[0].startDate=this.startDate;g[g.length-1].endDate=this.endDate}}return{bars:s,maxBars:g}}});Ext.define("Gnt.field.mixin.TaskField",{taskField:"",task:null,taskStore:null,config:{suppressTaskUpdate:false},highlightTaskUpdates:true,highlightColor:"#009900",lastHighlight:0,instantUpdate:true,setTask:function(a){if(!a){return}this.setReadOnly(!a.isEditable(a[this.taskField]));this.destroyTaskListener();this.task=a;a.on("taskupdated",this.onTaskUpdateProcess,this);if(!a.getCalendar(true)&&!a.getTaskStore(true)){a.taskStore=a.getTaskStore(true)||this.taskStore;if(!a.taskStore){throw"Configuration issue: Gnt.data.taskStore instance should be provided."}if(!a.getCalendar(true)&&!a.taskStore.getCalendar()){throw"Configuration issue: Gnt.data.Calendar instance should be provided."}}this.setSuppressTaskUpdate(true);if(this.onSetTask){this.onSetTask(a)}this.setSuppressTaskUpdate(false)},onTaskUpdateProcess:function(a,d){if(d!==this){var c=this.getValue();this.setReadOnly(!a.isEditable(a[this.taskField]));this.setSuppressTaskUpdate(true);if(this.onTaskUpdate){this.onTaskUpdate(a,d)}this.setSuppressTaskUpdate(false);if(this.highlightTaskUpdates){var e=this.getValue(),b=Ext.isDate(c);if(b&&c-e!==0||!b&&String(c)!==String(e)){this.highlightField()}}}},highlightField:function(a,b){if(this.rendered&&new Date-this.lastHighlight>1000){this.lastHighlight=new Date;this.inputEl.highlight(a||this.highlightColor,b||{attr:"color"})}},destroyTaskListener:function(){if(this.task){this.task.un("taskupdated",this.onTaskUpdateProcess,this)}}});Ext.define("Gnt.field.EndDate",{extend:"Ext.form.field.Date",requires:["Sch.util.Date"],mixins:["Gnt.field.mixin.TaskField"],alias:"widget.enddatefield",adjustMilestones:true,keepDuration:false,taskField:"endDateField",validateStartDate:true,endBeforeStartText:"End date is before start date",constructor:function(a){a=a||{};if(a.task&&!a.value){a.value=a.task.getEndDate()}this.setSuppressTaskUpdate(true);this.callParent([a]);this.setSuppressTaskUpdate(false);if(this.task){this.setTask(this.task)}},destroy:function(){this.destroyTaskListener();this.callParent()},onSetTask:function(){this.setValue(this.task.getEndDate())},onTaskUpdate:function(a,b){this.setValue(this.task.getEndDate())},rawToValue:function(a){if(!a){return null}return this.visibleToValue(this.parseDate(a))},valueToRaw:function(a){if(!a){return a}return Ext.Date.format(this.valueToVisible(a),this.format)},valueToVisible:function(b,a){a=a||this.task;return a.getDisplayEndDate(this.format,this.adjustMilestones,b,true)},visibleToValue:function(a){if(a&&this.task){if(!Ext.Date.formatContainsHourInfo(this.format)&&a-Ext.Date.clearTime(a,true)===0){a=this.task.getCalendar().getCalendarDay(a).getAvailabilityEndFor(a)||Sch.util.Date.add(a,Sch.util.Date.DAY,1)}}else{a=null}return a},getErrors:function(a){var b=this.callParent([a]);if(b&&b.length){return b}if(this.validateStartDate){a=this.rawToValue(a);if(this.task&&a){if(a<this.task.getStartDate()){return[this.endBeforeStartText]}}}},onExpand:function(){var a=this.valueToVisible(this.getValue());if(!this.isValid()){a=this.getRawValue();if(a){a=Ext.Date.parse(a,this.format)}}this.picker.setValue(Ext.isDate(a)?a:new Date)},onSelect:function(c,a){var d=this;var b=d.getValue();var g=this.visibleToValue(a);var e=Ext.Date.format(a,this.format);if(b!=g){if(this.getErrors(e)){d.setRawValue(e);d.collapse();d.validate()}else{d.setValue(g,true);d.fireEvent("select",d,g);d.collapse()}}},applyChanges:function(a){a=a||this.task;var b=a.getTaskStore(true)||this.taskStore;if(this.value){a.setEndDate(this.value,this.keepDuration,b.skipWeekendsDuringDragDrop)}else{a.setEndDate(null)}},setVisibleValue:function(a){this.setValue(this.rawToValue(Ext.Date.format(a,this.format)))},getVisibleValue:function(){if(!this.getValue()){return null}return Ext.Date.parse(this.valueToRaw(this.getValue()),this.format)},setValue:function(a){this.callParent([a]);if(this.instantUpdate&&!this.getSuppressTaskUpdate()&&this.task){this.applyChanges();var b=this.task.getEndDate();if(b-this.getValue()!==0){this.callParent([b])}this.task.fireEvent("taskupdated",this.task,this)}},getValue:function(){return this.value},assertValue:function(){var c=this,d=c.rawValue,g=c.getRawValue(),a=c.getValue(),e=c.rawToValue(g),b=c.focusTask;if(b){b.cancel()}if(d!=g&&e-a!==0){if(!c.validateOnBlur||c.isValid()){c.setValue(e)}}},beforeBlur:function(){this.assertValue()}});Ext.define("Gnt.field.StartDate",{extend:"Ext.form.field.Date",requires:["Sch.util.Date"],mixins:["Gnt.field.mixin.TaskField"],alias:"widget.startdatefield",adjustMilestones:true,keepDuration:true,taskField:"startDateField",constructor:function(a){a=a||{};if(a.task&&!a.value){a.value=a.task.getStartDate()}this.setSuppressTaskUpdate(true);this.callParent([a]);this.setSuppressTaskUpdate(false);if(this.task){this.setTask(this.task)}},destroy:function(){this.destroyTaskListener();this.callParent()},onSetTask:function(){this.setValue(this.task.getStartDate())},onTaskUpdate:function(a,b){this.setValue(this.task.getStartDate())},rawToValue:function(a){if(!a){return null}return this.visibleToValue(this.parseDate(a))},valueToRaw:function(a){if(!a){return a}return Ext.Date.format(this.valueToVisible(a),this.format)},valueToVisible:function(b,a){a=a||this.task;return a.getDisplayStartDate(this.format,this.adjustMilestones,b,true)},visibleToValue:function(c){var b=this.task;if(b&&c){var d=b.getEndDate();var a=!this.lastValue||this.lastValue-Ext.Date.clearTime(this.lastValue,true)===0;if(this.adjustMilestones&&d&&d-b.getStartDate()===0&&c-Ext.Date.clearTime(c,true)===0&&a){c=b.getCalendar().getCalendarDay(c).getAvailabilityEndFor(c)||c}}return c},onExpand:function(){var a=this.valueToVisible(this.getValue());this.picker.setValue(Ext.isDate(a)?a:new Date)},onSelect:function(c,a){var d=this,e=Ext.Date.format(a,this.format),b=d.getValue(),g=this.visibleToValue(a),h=this.getErrors(e);if(b!=g){if(h&&h.length){d.setRawValue(e);d.collapse();d.validate()}else{d.setValue(g);d.fireEvent("select",d,g);d.collapse()}}},applyChanges:function(a){a=a||this.task;var b=a.getTaskStore(true)||this.taskStore;a.setStartDate(this.value,this.keepDuration,b.skipWeekendsDuringDragDrop)},setVisibleValue:function(a){this.setValue(this.rawToValue(Ext.Date.format(a,this.format)))},getVisibleValue:function(){if(!this.getValue()){return null}return Ext.Date.parse(this.valueToRaw(this.getValue()),this.format)},setValue:function(b){this.callParent([b]);if(this.instantUpdate&&!this.getSuppressTaskUpdate()&&this.task&&this.task.taskStore&&b){this.applyChanges();var a=this.task.getStartDate();if(a-this.getValue()!==0){this.callParent([a])}this.task.fireEvent("taskupdated",this.task,this)}},getValue:function(){return this.value},assertValue:function(){var c=this,d=c.rawValue,g=c.getRawValue(),a=c.getValue(),e=c.rawToValue(g),b=c.focusTask;if(b){b.cancel()}if(d!=g&&e-a!==0){if(!c.validateOnBlur||c.isValid()){c.setValue(e)}}},beforeBlur:function(){this.assertValue()}});Ext.define("Gnt.field.Duration",{extend:"Ext.form.field.Number",requires:["Gnt.util.DurationParser"],mixins:["Gnt.field.mixin.TaskField"],alias:"widget.durationfield",alternateClassName:["Gnt.column.duration.Field","Gnt.widget.DurationField"],disableKeyFilter:true,minValue:0,durationUnit:"h",invalidText:"Invalid duration value",useAbbreviation:false,getDurationUnitMethod:"getDurationUnit",setDurationMethod:"setDuration",getDurationMethod:"getDuration",taskField:"durationField",durationParser:null,durationParserConfig:null,constructor:function(a){var b=this;Ext.apply(this,a);this.durationParser=new Gnt.util.DurationParser(Ext.apply({parseNumberFn:function(){return b.parseValue.apply(b,arguments)},allowDecimals:this.decimalPrecision>0},this.durationParserConfig));this.setSuppressTaskUpdate(true);this.callParent(arguments);this.setSuppressTaskUpdate(false);if(this.task){this.setTask(this.task)}},destroy:function(){this.destroyTaskListener();this.callParent()},onSetTask:function(){this.durationUnit=this.task[this.getDurationUnitMethod]();this.setValue(this.task[this.getDurationMethod]())},onTaskUpdate:function(a,b){this.setValue(this.task[this.getDurationMethod]());this.setSuppressTaskUpdate(false)},rawToValue:function(b){var a=this.parseDuration(b);if(!a){return null}this.durationUnit=a.unit;return a.value!=null?a.value:null},valueToVisible:function(a,b){if(Ext.isNumber(a)){return parseFloat(Ext.Number.toFixed(a,this.decimalPrecision))+" "+Sch.util.Date[this.useAbbreviation?"getShortNameOfUnit":"getReadableNameOfUnit"](b,a!==1)}return""},valueToRaw:function(a){return this.valueToVisible(a,this.durationUnit,this.decimalPrecision,this.useAbbreviation)},parseDuration:function(b){if(b==null){return null}var a=this;var c=this.durationParser.parse(b);if(!c){return null}c.unit=c.unit||this.durationUnit;return c},getDurationValue:function(){var a=this;return this.parseDuration(this.getRawValue())},getErrors:function(b){var a;if(b){a=this.parseDuration(b);if(!a){return[this.invalidText]}b=a.value}return this.callParent([b])},checkChange:function(){if(!this.suspendCheckChange){var d=this,c=d.getDurationValue(),a=d.lastValue;var b=c&&!a||!c&&a||c&&a&&(c.value!=a.value||c.unit!=a.unit);if(b&&!d.isDestroyed){d.lastValue=c;d.fireEvent("change",d,c,a);d.onChange(c,a)}}},getValue:function(){return this.value},applyChanges:function(a){a=a||this.task;a[this.setDurationMethod](this.getValue(),this.durationUnit)},setValue:function(a){var b=a;if(Ext.isObject(a)){this.durationUnit=a.unit;b=a.value}this.callParent([b]);if(this.instantUpdate&&!this.getSuppressTaskUpdate()&&this.task){this.applyChanges();this.task.fireEvent("taskupdated",this.task,this)}},setSpinValue:function(b){var a=this;if(a.enforceMaxLength){if(a.fixPrecision(b).toString().length>a.maxLength){return}}a.setValue(b)},assertValue:function(){var d=this,a=d.getValue(),e=d.durationUnit,c=d.getDurationValue();if(this.isValid()){var b=c&&!a||!c&&a||c&&(c.value!=a||c.unit!=e);if(b){d.setValue(c)}}},beforeBlur:function(){this.assertValue()}});Ext.define("Gnt.field.Effort",{extend:"Gnt.field.Duration",requires:["Gnt.util.DurationParser"],alias:"widget.effortfield",alternateClassName:["Gnt.column.effort.Field","Gnt.widget.EffortField"],invalidText:"Invalid effort value",taskField:"effortField",getDurationUnitMethod:"getEffortUnit",setDurationMethod:"setEffort",getDurationMethod:"getEffort"});Ext.define("Gnt.field.SchedulingMode",{extend:"Ext.form.field.ComboBox",mixins:["Gnt.field.mixin.TaskField"],alias:"widget.schedulingmodefield",alternateClassName:["Gnt.column.schedulingmode.Field"],taskField:"schedulingModeField",store:[["Normal","Normal"],["Manual","Manual"],["FixedDuration","Fixed duration"],["EffortDriven","Effort driven"],["DynamicAssignment","Dynamic assignment"]],pickerAlign:"tl-bl?",matchFieldWidth:true,editable:false,forceSelection:true,triggerAction:"all",constructor:function(a){var b=this;Ext.apply(this,a);this.setSuppressTaskUpdate(true);this.callParent(arguments);this.setSuppressTaskUpdate(false);if(this.task){this.setTask(this.task)}},destroy:function(){this.destroyTaskListener();this.callParent()},onSetTask:function(){this.setValue(this.task.getSchedulingMode())},onTaskUpdate:function(a,b){this.setValue(this.task.getSchedulingMode())},valueToVisible:function(e,b){var c=this,d=[];var a=this.findRecordByValue(e);if(a){d.push(a.data)}else{if(Ext.isDefined(c.valueNotFoundText)){d.push(c.valueNotFoundText)}}return c.displayTpl.apply(d)},applyChanges:function(a){a=a||this.task;a.setSchedulingMode(this.getValue())},getValue:function(){return this.value},setValue:function(a){this.callParent([a]);if(this.instantUpdate&&!this.getSuppressTaskUpdate()&&this.task&&this.value){this.applyChanges();this.task.fireEvent("taskupdated",this.task,this)}}});Ext.define("Gnt.field.Calendar",{extend:"Ext.form.field.ComboBox",requires:["Gnt.data.Calendar"],mixins:["Gnt.field.mixin.TaskField"],alias:"widget.calendarfield",alternateClassName:["Gnt.column.calendar.Field"],taskField:"calendarIdField",pickerAlign:"tl-bl?",matchFieldWidth:true,editable:true,triggerAction:"all",valueField:"Id",displayField:"Name",queryMode:"local",forceSelection:false,allowBlank:true,constructor:function(a){var b=this;Ext.apply(this,a);this.store=this.store||Ext.create("Ext.data.Store",{fields:["Id","Name"]});this.setSuppressTaskUpdate(true);this.callParent(arguments);this.setSuppressTaskUpdate(false);if(this.rendered){this.store.loadData(this.getCalendarData())}else{this.on({render:function(){this.store.loadData(this.getCalendarData())},show:this.setReadOnlyIfEmpty,scope:this})}if(this.task){this.setTask(this.task)}},destroy:function(){this.destroyTaskListener();this.callParent()},setReadOnlyIfEmpty:function(){var a=Gnt.data.Calendar.getAllCalendars();if(!a||!a.length){this.setReadOnly(true)}},getCalendarData:function(){var a=[];Ext.Array.each(Gnt.data.Calendar.getAllCalendars(),function(b){a.push({Id:b.calendarId,Name:b.name||b.calendarId})});return a},onSetTask:function(){this.setReadOnlyIfEmpty();this.setValue(this.task.getCalendarId())},onTaskUpdate:function(a,b){this.setReadOnlyIfEmpty();this.setValue(this.task.getCalendarId())},valueToVisible:function(e,b){var c=this,d=[];var a=this.findRecordByValue(e);if(a){d.push(a.data)}else{if(Ext.isDefined(c.valueNotFoundText)){d.push(c.valueNotFoundText)}}return c.displayTpl.apply(d)},getValue:function(){return this.value},applyChanges:function(a){a=a||this.task;a.setCalendarId(this.value)},setValue:function(a){this.callParent([a]);if(!this.getSuppressTaskUpdate()&&this.task){if(this.task.getCalendarId()!=this.value){this.applyChanges();this.task.fireEvent("taskupdated",this.task,this)}}},assertValue:function(){var a=this.getRawValue();if(!a&&this.value){this.setValue("")}else{this.callParent(arguments)}},onBlur:function(){var a=this.getRawValue();if(!a&&this.value){this.setValue("")}else{this.callParent(arguments)}}});Ext.define("Gnt.field.Percent",{extend:"Ext.form.field.Number",alias:"widget.percentfield",alternateClassName:["Gnt.widget.PercentField"],disableKeyFilter:true,minValue:0,maxValue:100,invalidText:"Invalid percent value",valueToRaw:function(a){if(Ext.isNumber(a)){return parseFloat(Ext.Number.toFixed(a,this.decimalPrecision))+"%"}return""},parseValue:function(b){if(b===null||b===""){return b}var a=parseFloat(b);if(isNaN(a)){return null}return a},getErrors:function(b){var a=this.parseValue(b);if(a===null&&b!==null&&b!==""){return[this.invalidText]}return this.callParent([a])}});Ext.define("Gnt.field.Dependency",{extend:"Ext.form.field.Text",alternateClassName:"Gnt.widget.DependencyField",alias:"widget.dependencyfield",requires:["Gnt.util.DependencyParser"],type:"predecessors",separator:";",task:null,dependencyParser:null,invalidFormatText:"Invalid dependency format",invalidDependencyText:"Invalid dependency found, please make sure you have no cyclic paths between your tasks",constructor:function(a){var b=this;Ext.apply(this,a);this.dependencyParser=new Gnt.util.DependencyParser({parseNumberFn:function(){return Gnt.widget.DurationField.prototype.parseValue.apply(b,arguments)}});this.callParent(arguments);this.addCls("gnt-field-dependency")},setTask:function(a){this.task=a},getDependencies:function(){return this.dependencyParser.parse(this.getRawValue())},getErrors:function(k){if(!k){return}var h=this.dependencyParser.parse(k);if(!h){return[this.invalidFormatText]}var g=this.getDependencies();var j=this.type==="predecessors";var c=this.task;var b=c.getTaskStore().dependencyStore;for(var e=0;e<g.length;e++){var d=j?g[e].taskId:this.task.getInternalId();var a=!j?g[e].taskId:this.task.getInternalId();if(!c.getTaskStore().getById(g[e].taskId)||!b.areTasksLinked(d,a)&&!b.isValidDependency(d,a)){return[this.invalidDependencyText]}}return this.callParent([h.value])},getDisplayValue:function(a){var j=this.type==="predecessors",m=j?a.getIncomingDependencies():a.getOutgoingDependencies(),k=Gnt.util.DependencyParser.prototype.types,e=Gnt.model.Dependency.Type.EndToStart,l=[];for(var d=0;d<m.length;d++){var h=m[d];if(h.isValid(false)){var g=h.getType(),b=h.getLag(),c=h.getLagUnit();l.push(Ext.String.format("{0}{1}{2}{3}{4}",j?h.getSourceId():h.getTargetId(),b||g!==e?k[g]:"",b>0?"+":"",b||"",b&&c!=="d"?c:""))}}return l.join(this.separator)},applyChanges:function(d){d=d||this.task;var m=d.getTaskStore().dependencyStore,h=this.getDependencies(),a=Ext.Array.pluck(h,"taskId"),k=this.type==="predecessors",l=k?d.getIncomingDependencies():d.getOutgoingDependencies(),c=[];for(var g=0;g<l.length;g++){if(!Ext.Array.contains(a,l[g][k?"getSourceId":"getTargetId"]())){c.push(l[g])}}if(c.length>0){m.remove(c)}var n=[];for(g=0;g<h.length;g++){var e=h[g];var b=e.taskId;var j=m.getByTaskIds(b,d.getInternalId());if(j){j.beginEdit();j.setType(e.type);j.setLag(e.lag);j.setLagUnit(e.lagUnit);j.endEdit()}else{n.push(new m.model({fromTask:k?b:d.getInternalId(),toTask:k?d.getInternalId():b,type:e.type,lag:e.lag,lagUnit:e.lagUnit}))}}if(n.length>0){m.add(n)}if(n.length||c.length){d.triggerUIUpdate()}}});Ext.define("Gnt.column.ResourceName",{extend:"Ext.grid.column.Column",alias:"widget.resourcenamecolumn",text:"Resource Name",dataIndex:"ResourceName",flex:1,align:"left",_isGanttColumn:false});Ext.define("Gnt.column.AssignmentUnits",{extend:"Ext.grid.column.Number",alias:"widget.assignmentunitscolumn",text:"Units",dataIndex:"Units",format:"0 %",align:"left"});Ext.define("Gnt.widget.AssignmentGrid",{extend:"Ext.grid.Panel",alias:"widget.assignmentgrid",requires:["Gnt.model.Resource","Gnt.model.Assignment","Gnt.column.ResourceName","Gnt.column.AssignmentUnits","Ext.grid.plugin.CellEditing"],assignmentStore:null,resourceStore:null,readOnly:false,cls:"gnt-assignmentgrid",defaultAssignedUnits:100,taskId:null,sorter:{sorterFn:function(b,a){var d=b.getUnits(),c=a.getUnits();if(!d&&!c||d&&c){return b.get("ResourceName")<a.get("ResourceName")?-1:1}return d?-1:1}},constructor:function(a){this.store=Ext.create("Ext.data.JsonStore",{model:Ext.define("Gnt.model.AssignmentEditing",{extend:"Gnt.model.Assignment",fields:["ResourceName"]})});this.columns=this.buildColumns();if(!this.readOnly){this.plugins=this.buildPlugins()}Ext.apply(this,{selModel:{selType:"checkboxmodel",mode:"MULTI",checkOnly:true,selectByPosition:function(b){var c=this.store.getAt(b.row);this.select(c,true)}}});this.callParent(arguments)},initComponent:function(){this.loadResources();this.mon(this.resourceStore,{datachanged:this.loadResources,scope:this});this.getSelectionModel().on("select",this.onSelect,this,{delay:50});this.callParent(arguments)},onSelect:function(b,a){if((!this.cellEditing||!this.cellEditing.getActiveEditor())&&!a.getUnits()){a.setUnits(this.defaultAssignedUnits)}},loadResources:function(){var d=[],b=this.resourceStore,e;for(var c=0,a=b.getCount();c<a;c++){e=b.getAt(c).getId();d.push({ResourceId:e,ResourceName:b.getById(e).getName(),Units:""})}this.store.loadData(d)},buildPlugins:function(){var a=this.cellEditing=Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:1});a.on("edit",this.onEditingDone,this);return[a]},hide:function(){this.cellEditing.cancelEdit();this.callParent(arguments)},onEditingDone:function(a,b){if(b.value){this.getSelectionModel().select(b.record,true)}else{this.getSelectionModel().deselect(b.record);b.record.reject()}},buildColumns:function(){return[{xtype:"resourcenamecolumn"},{xtype:"assignmentunitscolumn",assignmentStore:this.assignmentStore,editor:{xtype:"numberfield",minValue:0,step:10}}]},loadTaskAssignments:function(d){var b=this.store,g=this.getSelectionModel();this.taskId=d;g.deselectAll(true);for(var c=0,a=b.getCount();c<a;c++){b.getAt(c).data.Units="";b.getAt(c).data.Id=null}b.suspendEvents();var e=this.assignmentStore.queryBy(function(h){return h.getTaskId()===d});e.each(function(j){var h=b.findRecord("ResourceId",j.getResourceId(),0,false,true,true);if(h){h.setUnits(j.getUnits());h.set(h.idProperty,j.getId());g.select(h,true,true)}});b.resumeEvents();b.sort(this.sorter);this.getView().refresh()},saveTaskAssignments:function(){var a=this.assignmentStore,e=this.taskId;var d={};var c=[];this.getSelectionModel().selected.each(function(h){var g=h.getUnits();if(g>0){var k=h.getId();if(k){d[k]=true;a.getById(k).setUnits(g)}else{var j=Ext.create(a.model);j.setTaskId(e);j.setResourceId(h.getResourceId());j.setUnits(g);d[j.internalId]=true;c.push(j)}}});var b=[];a.each(function(g){if(g.getTaskId()===e&&!d[g.getId()||g.internalId]){b.push(g)}});a.suspendAutoSync();a.remove(b);a.add(c);a.resumeAutoSync();if(a.autoSync){a.sync()}}});Ext.define("Gnt.field.Assignment",{extend:"Ext.form.field.Picker",alias:["widget.assignmentfield","widget.assignmenteditor"],alternateClassName:"Gnt.widget.AssignmentField",requires:["Gnt.widget.AssignmentGrid"],matchFieldWidth:false,editable:false,task:null,cancelText:"Cancel",closeText:"Save and Close",assignmentStore:null,resourceStore:null,gridConfig:null,formatString:"{0} [{1}%]",expandPickerOnFocus:true,afterRender:function(){this.callParent(arguments);this.on("expand",this.onPickerExpand,this);if(this.expandPickerOnFocus){this.on("focus",function(){this.expand()},this)}},createPicker:function(){var a=new Gnt.widget.AssignmentGrid(Ext.apply({ownerCt:this.ownerCt,renderTo:document.body,frame:true,floating:true,hidden:true,height:200,width:300,resourceStore:this.task.getResourceStore(),assignmentStore:this.task.getAssignmentStore(),fbar:this.buildButtons()},this.gridConfig||{}));return a},buildButtons:function(){return["->",{text:this.closeText,handler:function(){Ext.Function.defer(this.onGridClose,Ext.isIE&&!Ext.isIE9?60:30,this)},scope:this},{text:this.cancelText,handler:function(){this.collapse();this.fireEvent("blur",this)},scope:this}]},setTask:function(a){this.task=a},onPickerExpand:function(){var a=this.resourceStore,b=this.picker;b.loadTaskAssignments(this.task.getInternalId())},onGridClose:function(){var b=this.picker.getSelectionModel(),a=b.selected;this.collapse();this.fireEvent("blur",this);this.fireEvent("select",this,a);Ext.Function.defer(this.picker.saveTaskAssignments,1,this.picker)},collapseIf:function(b){var a=this;if(this.picker&&!b.getTarget(".x-editor")&&!b.getTarget(".x-menu-item")){a.callParent(arguments)}},mimicBlur:function(b){var a=this;if(!b.getTarget(".x-editor")&&!b.getTarget(".x-menu-item")){a.callParent(arguments)}},getDisplayValue:function(c){c=c||this.task;var h=[],g=this.assignmentStore,j,e=c.getInternalId(),b=c.getAssignments();for(var d=0,a=b.length;d<a;d++){j=b[d];if(j.data.Units>0){h.push(Ext.String.format(this.formatString,j.getResourceName(),j.getUnits()))}}return h.join(", ")}},function(){Gnt.widget.AssignmentCellEditor=function(){var a=console;if(a&&a.log){a.log("Gnt.widget.AssignmentCellEditor is deprecated and should no longer be used. Instead simply use Gnt.field.Assignment.")}}});Ext.define("Gnt.column.ResourceAssignment",{extend:"Ext.grid.column.Column",alias:"widget.resourceassignmentcolumn",requires:["Gnt.field.Assignment"],text:"Assigned Resources",tdCls:"sch-assignment-cell",showUnits:true,field:null,constructor:function(a){a=a||{};var b=a.field||a.editor;delete a.field;delete a.editor;a.editor=b||{formatString:"{0}"+(this.showUnits?" [{1}%]":"")};if(!(a.editor instanceof Ext.form.Field)){a.editor=Ext.ComponentManager.create(a.editor,"assignmentfield")}a.field=a.editor;this.callParent([a]);this.scope=this},afterRender:function(){var a=this.up("ganttpanel");a.on("beforeedit",function(b,c){if(this.field.setTask){this.field.setTask(c.record)}},this);this.callParent(arguments)},renderer:function(b,c,a){return this.field.getDisplayValue(a)}});Ext.define("Gnt.column.Note",{extend:"Ext.grid.column.Column",alias:"widget.notecolumn",text:"Note",field:{xtype:"textfield"},constructor:function(a){this.callParent(arguments);this.scope=this},afterRender:function(){var a=this.up("treepanel");if(!this.dataIndex){this.dataIndex=a.store.model.prototype.noteField}this.callParent(arguments)},renderer:function(b,c,a){if(!a.isEditable(this.dataIndex)){c.tdCls=(c.tdCls||"")+" sch-column-readonly"}return b}});Ext.define("Gnt.column.EndDate",{extend:"Ext.grid.column.Date",alias:"widget.enddatecolumn",requires:["Ext.grid.CellEditor","Gnt.field.EndDate"],text:"Finish",width:100,align:"left",editorFormat:null,adjustMilestones:true,validateStartDate:true,instantUpdate:false,keepDuration:false,field:null,constructor:function(b){b=b||{};var c=b.field||b.editor;delete b.field;var a={format:b.editorFormat||b.format||this.format||Ext.Date.defaultFormat,instantUpdate:this.instantUpdate,adjustMilestones:this.adjustMilestones,keepDuration:this.keepDuration,validateStartDate:this.validateStartDate};Ext.Array.forEach(["instantUpdate","adjustMilestones","keepDuration","validateStartDate"],function(d){if(d in b){a[d]=b[d]}},this);b.editor=c||a;if(!(b.editor instanceof Gnt.field.EndDate)){Ext.applyIf(b.editor,a);b.editor=Ext.ComponentManager.create(b.editor,"enddatefield")}b.field=b.editor;this.callParent([b]);this.scope=this;this.renderer=b.renderer||this.rendererFunc;this.editorFormat=this.editorFormat||this.format},rendererFunc:function(b,c,a){if(!b){return}if(!a.isEditable(this.dataIndex)){c.tdCls=(c.tdCls||"")+" sch-column-readonly"}b=this.field.valueToVisible(b,a);return Ext.util.Format.date(b,this.format)},afterRender:function(){var a=this.ownerCt.up("treepanel");if(!this.dataIndex){this.dataIndex=a.store.model.prototype.endDateField}a.on({beforeedit:this.onBeforeTreeEdit,scope:this});this.callParent(arguments)},onBeforeTreeEdit:function(a,b){if(b.column===this){if(this.field.setTask){this.field.setTask(b.record)}}}});Ext.define("Gnt.column.PercentDone",{extend:"Ext.grid.column.Number",alias:"widget.percentdonecolumn",text:"% Done",width:50,format:"0",align:"center",field:{xtype:"numberfield",minValue:0,maxValue:100},constructor:function(a){this.callParent(arguments);this.scope=this},afterRender:function(){var a=this.up("treepanel");if(!this.dataIndex){this.dataIndex=a.store.model.prototype.percentDoneField}this.callParent(arguments)},renderer:function(b,c,a){if(!a.isEditable(this.dataIndex)){c.tdCls=(c.tdCls||"")+" sch-column-readonly"}return this.defaultRenderer(b,c,a)}});Ext.define("Gnt.column.StartDate",{extend:"Ext.grid.column.Date",alias:"widget.startdatecolumn",requires:["Gnt.field.StartDate"],text:"Start",width:100,align:"left",editorFormat:null,adjustMilestones:true,instantUpdate:false,keepDuration:true,field:null,constructor:function(b){b=b||{};var c=b.field||b.editor;delete b.field;var a={format:b.editorFormat||b.format||this.format||Ext.Date.defaultFormat,instantUpdate:this.instantUpdate,adjustMilestones:this.adjustMilestones,keepDuration:this.keepDuration};Ext.Array.forEach(["instantUpdate","adjustMilestones","keepDuration"],function(d){if(d in b){a[d]=b[d]}},this);b.editor=c||a;if(!(b.editor instanceof Gnt.field.StartDate)){Ext.applyIf(b.editor,a);b.editor=Ext.ComponentManager.create(b.editor,"startdatefield")}b.field=b.editor;this.hasCustomRenderer=true;this.callParent([b]);this.renderer=b.renderer||this.rendererFunc;this.editorFormat=this.editorFormat||this.format},afterRender:function(){var a=this.up("treepanel");var b=a.store;if(!this.dataIndex){this.dataIndex=b.model.prototype.startDateField}this.callParent(arguments);a.on({beforeedit:this.onBeforeTreeEdit,scope:this})},rendererFunc:function(b,c,a){if(!b){return}if(!a.isEditable(this.dataIndex)){c.tdCls=(c.tdCls||"")+" sch-column-readonly"}b=this.field.valueToVisible(b,a);return Ext.util.Format.date(b,this.format)},onBeforeTreeEdit:function(a,b){if(b.column===this){if(this.field.setTask){this.field.setTask(b.record)}}}});Ext.define("Gnt.column.WBS",{extend:"Ext.grid.column.Column",alias:"widget.wbscolumn",text:"WBS",width:40,align:"left",sortable:false,dataIndex:"index",renderer:function(b,c,a){return a.getWBSCode()}});Ext.define("Gnt.column.SchedulingMode",{extend:"Ext.grid.column.Column",requires:["Gnt.field.SchedulingMode"],alias:"widget.schedulingmodecolumn",text:"Mode",width:100,align:"left",data:null,instantUpdate:false,field:null,constructor:function(a){a=a||{};var b=a.field||a.editor||new Gnt.field.SchedulingMode({store:a.data||Gnt.field.SchedulingMode.prototype.store,instantUpdate:this.instantUpdate});delete a.field;delete a.editor;if(!(b instanceof Gnt.field.SchedulingMode)){Ext.applyIf(b,{instantUpdate:this.instantUpdate});b=Ext.ComponentManager.create(b,"schedulingmodefield")}a.field=a.editor=b;this.scope=this;this.callParent([a])},renderer:function(b,c,a){return this.field.valueToVisible(b,a)},afterRender:function(){this.callParent(arguments);var a=this.up("treepanel");a.on("beforeedit",function(b,c){if(this.field.setTask){this.field.setTask(c.record)}},this);if(!this.dataIndex){this.dataIndex=a.store.model.prototype.schedulingModeField}}});Ext.define("Gnt.column.AddNew",{extend:"Ext.grid.column.Column",alias:"widget.addnewcolumn",requires:["Ext.form.field.ComboBox","Ext.Editor"],text:"Add new column...",width:100,resizable:false,sortable:false,draggable:false,colEditor:null,columnList:null,initComponent:function(){this.addCls("gnt-addnewcolumn");this.on({headerclick:this.myOnHeaderClick,headertriggerclick:this.myOnHeaderClick,scope:this});this.callParent(arguments)},getGantt:function(){if(!this.gantt){this.gantt=this.up("ganttpanel")}return this.gantt},getContainingPanel:function(){if(!this.panel){this.panel=this.up("tablepanel")}return this.panel},myOnHeaderClick:function(){if(!this.combo){var a=this.getContainingPanel();var e,d=this;if(this.columnList){e=this.columnList}else{e=Ext.Array.map(Ext.ClassManager.getNamesByExpression("Gnt.column.*"),function(h){var g=Ext.ClassManager.get(h);if(g.prototype._isGanttColumn===false||d instanceof g){return null}return{clsName:h,text:g.prototype.text}});e=Ext.Array.clean(e).sort(function(h,g){return h.text>g.text?1:-1})}var c=this.colEditor=new Ext.Editor({shadow:false,updateEl:false,itemId:"addNewEditor",renderTo:this.el,offsets:[20,0],field:new Ext.form.field.ComboBox({displayField:"text",valueField:"clsName",hideTrigger:true,queryMode:"local",listConfig:{itemId:"addNewEditorComboList",minWidth:150},store:new Ext.data.Store({fields:["text","clsName"],data:e}),listeners:{render:function(){this.on("blur",function(){c.cancelEdit()})},select:this.onSelect,scope:this}})})}var b=this.el.down(".x-column-header-text");this.colEditor.startEdit(b,"");this.colEditor.field.setWidth(this.getWidth()-20);this.colEditor.field.expand();return false},onSelect:function(e,c){var g=c[0];var a=this.ownerCt;var d=g.get("clsName");var b=this.getContainingPanel().getView();this.colEditor.cancelEdit();Ext.require(d,function(){var j=Ext.create(d);a.insert(a.items.indexOf(this),j);var h=this.getGantt();if(j instanceof Gnt.column.WBS){if(!h.wbsColumn){h.bindWBSColumnListeners();h.wbsColumn=j}}else{if(j instanceof Gnt.column.EarlyStartDate){h.earlyStartColumn=j}else{if(j instanceof Gnt.column.EarlyEndDate){h.earlyEndColumn=j}else{if(j instanceof Gnt.column.LateStartDate){h.lateStartColumn=j}else{if(j instanceof Gnt.column.LateEndDate){h.lateEndColumn=j}else{if(j instanceof Gnt.column.Slack){h.slackColumn=j}}}}}}if(!h.slackListeners&&h.slackColumn){h.bindSlackListeners()}if(!h.earlyDatesListeners&&(h.earlyStartColumn||h.earlyEndColumn)){h.bindEarlyDatesListeners()}if(!h.lateDatesListeners&&(h.lateStartColumn||h.lateEndColumn)){h.bindLateDatesListeners()}b.refresh()},this)}});Ext.define("Gnt.column.EarlyStartDate",{extend:"Ext.grid.column.Date",alias:"widget.earlystartdatecolumn",text:"Early Start",width:100,align:"left",adjustMilestones:true,constructor:function(a){a=a||{};this.callParent(arguments);this.renderer=a.renderer||this.rendererFunc;this.scope=a.scope||this;this.hasCustomRenderer=true},afterRender:function(){var a=this.up("ganttpanel");a.registerLockedDependencyListeners();this.callParent(arguments)},rendererFunc:function(b,c,a){c.tdCls=(c.tdCls||"")+" sch-column-readonly";return a.getDisplayStartDate(this.format,this.adjustMilestones,a.getEarlyStartDate())}});Ext.define("Gnt.column.EarlyEndDate",{extend:"Ext.grid.column.Date",alias:"widget.earlyenddatecolumn",text:"Early Finish",width:100,align:"left",adjustMilestones:true,constructor:function(a){a=a||{};this.callParent(arguments);this.renderer=a.renderer||this.rendererFunc;this.scope=a.scope||this;this.hasCustomRenderer=true},afterRender:function(){var a=this.up("ganttpanel");a.registerLockedDependencyListeners();this.callParent(arguments)},rendererFunc:function(b,c,a){c.tdCls=(c.tdCls||"")+" sch-column-readonly";return a.getDisplayEndDate(this.format,this.adjustMilestones,a.getEarlyEndDate())}});Ext.define("Gnt.column.LateStartDate",{extend:"Ext.grid.column.Date",alias:"widget.latestartdatecolumn",text:"Late Start",width:100,align:"left",adjustMilestones:true,constructor:function(a){a=a||{};this.callParent(arguments);this.renderer=a.renderer||this.rendererFunc;this.scope=a.scope||this;this.hasCustomRenderer=true},afterRender:function(){var a=this.up("ganttpanel");a.registerLockedDependencyListeners();this.callParent(arguments)},rendererFunc:function(b,c,a){c.tdCls=(c.tdCls||"")+" sch-column-readonly";return a.getDisplayStartDate(this.format,this.adjustMilestones,a.getLateStartDate())}});Ext.define("Gnt.column.LateEndDate",{extend:"Ext.grid.column.Date",alias:"widget.lateenddatecolumn",text:"Late Finish",width:100,align:"left",adjustMilestones:true,constructor:function(a){a=a||{};this.callParent(arguments);this.renderer=a.renderer||this.rendererFunc;this.scope=a.scope||this;this.hasCustomRenderer=true},afterRender:function(){var a=this.up("ganttpanel");a.registerLockedDependencyListeners();this.callParent(arguments)},rendererFunc:function(b,c,a){c.tdCls=(c.tdCls||"")+" sch-column-readonly";return a.getDisplayEndDate(this.format,this.adjustMilestones,a.getLateEndDate())}});Ext.define("Gnt.column.Slack",{extend:"Ext.grid.column.Column",requires:["Ext.Number","Sch.util.Date"],alias:"widget.slackcolumn",text:"Slack",decimalPrecision:2,useAbbreviation:false,slackUnit:"d",width:100,align:"left",constructor:function(a){a=a||{};this.callParent(arguments);this.renderer=a.renderer||this.rendererFunc;this.scope=a.scope||this;this.hasCustomRenderer=true},afterRender:function(){var a=this.up("ganttpanel");a.registerLockedDependencyListeners();this.callParent(arguments)},rendererFunc:function(b,c,a){c.tdCls=(c.tdCls||"")+" sch-column-readonly";b=a.getSlack();if(Ext.isNumber(b)){return parseFloat(Ext.Number.toFixed(b,this.decimalPrecision))+" "+Sch.util.Date[this.useAbbreviation?"getShortNameOfUnit":"getReadableNameOfUnit"](this.slackUnit,b!==1)}return""}});Ext.define("Gnt.widget.AssignmentEditGrid",{extend:"Ext.grid.Panel",alias:"widget.assignmenteditgrid",requires:["Ext.window.MessageBox","Ext.grid.plugin.CellEditing","Gnt.util.Data","Gnt.model.Resource","Gnt.model.Assignment","Gnt.column.ResourceName","Gnt.column.AssignmentUnits"],assignmentStore:null,resourceStore:null,readOnly:false,cls:"gnt-assignmentgrid",defaultAssignedUnits:100,confirmAddResourceTitle:"Confirm",confirmAddResourceText:"No resource &quot;{0}&quot; in storage yet. Would you like to add it?",noValueText:"Please select resource to assign",noResourceText:"No resource &quot;{0}&quot; in storage",addResources:true,taskId:null,refreshTimeout:100,constructor:function(a){this.store=Ext.create("Gnt.data.AssignmentStore",{taskStore:a.taskStore||a.assignmentStore.getTaskStore()});this.resourceDupStore=Ext.create("Gnt.data.ResourceStore",{taskStore:a.taskStore||a.assignmentStore.getTaskStore()});this.resourceComboStore=Ext.create("Ext.data.JsonStore",{model:Gnt.model.Resource});if(a.addResources!==undefined){this.addResources=a.addResources}this.columns=this.buildColumns();if(!this.readOnly){this.plugins=this.buildPlugins()}this.callParent(arguments)},initComponent:function(){this.loadResources();var a=Ext.Function.createBuffered(this.loadResources,this.refreshTimeout,this,[]);this.mon(this.resourceStore,{add:a,remove:a,refresh:a,clear:a});this.loadTaskAssignments();var b=Ext.Function.createBuffered(this.loadTaskAssignments,this.refreshTimeout,this,[]);this.mon(this.assignmentStore,{add:b,remove:b,refresh:b,clear:b});this.callParent(arguments)},loadResources:function(b){if(!this.resourceStore){return false}var a=Gnt.util.Data.cloneModelSet(this.resourceStore,function(c,d){if(!c.getId()){c.setId(d.getInternalId())}});this.resourceDupStore.loadData(a);this.resourceComboStore.loadData(a);if(!b){this.loadTaskAssignments()}return true},loadTaskAssignments:function(b){b=b||this.taskId;if(!b){return false}if(!this.assignmentStore){return false}this.taskId=b;var e=this.assignmentStore.queryBy(function(g){return g.getTaskId()===b});var a=this.store,c=this.resourceDupStore,d=Gnt.util.Data.cloneModelSet(e,function(h,g){var k=g.getResourceId();var j=c.queryBy(function(m){var l=m.originalRecord;return(l.getId()||l.internalId)==k});if(j.getCount()){j=j.first();h.setResourceId(j.getId()||j.internalId)}});a.suspendEvents();a.loadData(d);a.resumeEvents();this.getView().refresh();return true},insertAssignment:function(b,h){if(!this.store){return}var d=this.store.model.prototype,c={};if(b){c=b}else{c[d.unitsField]=this.defaultAssignedUnits}c[d.taskIdField]=this.taskId;var e=this.store.insert(0,c);var g=this,a=e[0].isValid;e[0].isValid=function(){return a.apply(this,arguments)&&g.isValidAssignment(this)};if(!h){this.cellEditing.startEditByPosition({row:0,column:0})}return e},isValid:function(){var a=true;this.store.each(function(b){if(!b.isValid()){a=false;return false}});return a},getAssignmentErrors:function(a){var b=a.getResourceId();if(!b){return[this.noValueText]}if(!this.resourceDupStore.getByInternalId(b)){return[Ext.String.format(this.noResourceText,b)]}},isValidAssignment:function(a){return !this.getAssignmentErrors(a)},buildPlugins:function(){var a=this.cellEditing=Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:1});var b=a.startEdit;a.startEdit=function(c,e,d){this.completeEdit();return b.apply(this,arguments)};a.on({beforeedit:this.onEditingStart,scope:this});return[a]},hide:function(){this.cellEditing.cancelEdit();return this.callParent(arguments)},onEditingStart:function(a,c){var b=this.store.model.prototype;if(c.field==b.resourceIdField){this.assignment=c.record;this.resourceId=c.record.getResourceId();this.resourceComboStore.loadData(this.resourceDupStore.getRange());this.resourceComboStore.filter(this.resourcesFilter)}},resourceRender:function(b,c,d){var e=this.getAssignmentErrors(d);if(e&&e.length){c.tdCls="x-form-invalid";c.tdAttr='data-errorqtip="'+e.join("<br>")+'"'}else{c.tdCls="";c.tdAttr='data-errorqtip=""'}var a=this.resourceDupStore.getByInternalId(b);return a&&a.getName()||b},filterResources:function(c){var d=c.getInternalId(),b=Gnt.model.Assignment.prototype.resourceIdField,a=true;if(d!==this.resourceId){this.store.each(function(e){if(d==e.get(b)){a=false;return false}})}return a},onResourceComboAssert:function(g){var e=g.getRawValue();if(e){var a=this.resourceDupStore.findExact(g.displayField,e);var b=a!==-1?this.resourceDupStore.getAt(a):false;if(!b){var h=this.assignment;var d=this;var c=function(k){var l=Gnt.model.Resource.prototype,j={};j[l.nameField]=g.rawValue;j=Ext.ModelManager.create(j,Gnt.model.Resource);j.setId(j.internalId);var m=d.resourceDupStore.add(j);if(m&&m.length){if(!k){g.getStore().add(j);g.setValue(m[0].getId())}else{h.setResourceId(m[0].getId())}}};if(this.confirmAddResourceText){Ext.Msg.confirm(this.confirmAddResourceTitle,Ext.String.format(this.confirmAddResourceText,e),function(j){if(j=="yes"){c(true)}})}else{c()}}else{g.select(b,true)}}},buildColumns:function(){var a=this;this.resourceCombo=Ext.create("Ext.form.field.ComboBox",{queryMode:"local",store:this.resourceComboStore,alowBlank:false,editing:this.addResources,validateOnChange:false,autoSelect:false,forceSelection:!this.addResources,valueField:Gnt.model.Resource.prototype.idProperty,displayField:Gnt.model.Resource.prototype.nameField,queryCaching:false});if(this.addResources){this.resourcesFilter=Ext.create("Ext.util.Filter",{filterFn:this.filterResources,scope:this});Ext.Function.interceptBefore(this.resourceCombo,"assertValue",function(){a.onResourceComboAssert(this)})}return[{xtype:"resourcenamecolumn",editor:this.resourceCombo,dataIndex:Gnt.model.Assignment.prototype.resourceIdField,renderer:this.resourceRender,scope:this},{xtype:"assignmentunitscolumn",assignmentStore:this.assignmentStore,editor:{xtype:"percentfield",step:10}}]},saveResources:function(){Gnt.util.Data.applyCloneChanges(this.resourceDupStore,this.resourceStore)},saveTaskAssignments:function(){this.resourceStore.suspendEvents(true);this.assignmentStore.suspendEvents(true);this.saveResources();var c=this,b=this.store.model,d=this.resourceDupStore,a=true;Gnt.util.Data.applyCloneChanges(this.store,this.assignmentStore,function(h){var g=d.getByInternalId(this.getResourceId());if(!g.originalRecord){a=false;return}var e=g.originalRecord;h[b.prototype.resourceIdField]=e.getId()||e.internalId});this.resourceStore.resumeEvents();this.assignmentStore.resumeEvents();return a}});Ext.define("Gnt.widget.DependencyGrid",{extend:"Ext.grid.Panel",alias:"widget.dependencygrid",requires:["Ext.data.JsonStore","Gnt.model.Dependency","Gnt.util.Data","Ext.grid.plugin.CellEditing","Ext.form.field.ComboBox","Gnt.field.Duration"],readOnly:false,showCls:false,cls:"gnt-dependencygrid",task:null,dependencyStore:null,direction:"predecessors",oppositeStore:null,taskStoreListeners:null,refreshTimeout:100,idText:"ID",taskText:"Task Name",blankTaskText:"Please select task",invalidDependencyText:"Invalid dependency",parentChildDependencyText:"Dependency between child and parent found",duplicatingDependencyText:"Duplicating dependency found",transitiveDependencyText:"Transitive dependency",cyclicDependencyText:"Cyclic dependency",typeText:"Type",lagText:"Lag",clsText:"CSS class",endToStartText:"Finish-To-Start",startToStartText:"Start-To-Start",endToEndText:"Finish-To-Finish",startToEndText:"Start-To-Finish",constructor:function(a){a=a||{};this.store=Ext.create("Ext.data.JsonStore",{model:"Gnt.model.Dependency"});if(!this.readOnly){this.plugins=this.buildPlugins()}this.direction=a.direction||this.direction;if(a.oppositeStore){this.setOppositeStore(a.oppositeStore)}if(a.task){this.loadDependencies(a.task)}this.dependencyStore=this.dependencyStore||a.dependencyStore;this.columns=this.buildColumns();this.callParent(arguments)},destroy:function(){this.cellEditing.destroy();this.store.destroy();if(this.deferredStoreBind){this.tasksCombo.un("render",this.bindTaskStore,this)}this.tasksCombo.destroy();this.lagEditor.destroy();this.tasksFilter.destroy();this.callParent(arguments)},setTask:function(a){if(!a){return}this.task=a;var b=a.dependencyStore||a.getTaskStore().dependencyStore;if(b&&b!==this.dependencyStore){this.dependencyStore=b;this.mon(this.dependencyStore,{datachanged:function(){this.loadDependencies()},scope:this})}},buildPlugins:function(){var a=this.cellEditing=Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:1});a.on({beforeedit:this.onEditingStart,edit:this.onEditingDone,scope:this});return[a]},hide:function(){this.cellEditing.cancelEdit();this.callParent(arguments)},onEditingStart:function(a,c){var b=this.store.model.prototype;switch(c.field){case b.lagField:this.lagEditor.durationUnit=c.record.getLagUnit();break}},onEditingDone:function(a,c){var b=this.store.model.prototype;if(c.field==b.lagField){c.record.setLagUnit(this.lagEditor.durationUnit)}},dependencyTypeRender:function(b){var a=this.store.model.Type;switch(b){case a.EndToStart:return this.endToStartText;case a.StartToStart:return this.startToStartText;case a.EndToEnd:return this.endToEndText;case a.StartToEnd:return this.startToEndText}return b},taskValidate:function(b,a){if(!b){return[this.blankTaskText]}if(!a.isValid()){var c=this.getDependencyErrors(a);if(c&&c.length){return c}return[this.invalidDependencyText]}},taskRender:function(d,e,b){var g=this.taskValidate(d,b),a;if(g&&g.length){e.tdCls="x-form-invalid";e.tdAttr='data-errorqtip="'+g.join("<br>")+'"'}else{e.tdCls="";e.tdAttr='data-errorqtip=""'}var c=this.dependencyStore&&this.dependencyStore.getTaskStore();if(c){a=c.getById(d)||c.getByInternalId(d);return a&&Ext.String.htmlEncode(a.getName())||""}return""},filterTasks:function(a){var c=this,b=a.getInternalId(),d;if(this.direction==="predecessors"){d="getSourceId"}else{d="getTargetId"}return b!=this.task.getInternalId()&&!this.task.contains(a)&&!a.contains(this.task)},bindTaskStore:function(){var c=this.dependencyStore&&this.dependencyStore.getTaskStore();if(c){if(!this.taskStoreListeners){var d=Ext.Function.createBuffered(this.bindTaskStore,this.refreshTimeout,this,[]);this.taskStoreListeners=this.mon(c,{append:d,insert:d,update:d,remove:d,refresh:d,clear:d,scope:this,destroyable:true})}var b=Ext.create("Ext.data.JsonStore",{model:c.model});var a=c.tree.getRootNode();b.loadData(Gnt.util.Data.cloneModelSet(c.tree.flatten(),function(g,e){if(e===a){return false}if(!e.getId()){g.setId(e.getPhantomId())}}));this.tasksFilter=Ext.create("Ext.util.Filter",{filterFn:this.filterTasks,scope:this});b.filter(this.tasksFilter);this.tasksCombo.bindStore(b)}},buildColumns:function(){var c=this,b=this.store.model.prototype,e=this.store.model.Type,d=[],a=this.dependencyStore&&this.dependencyStore.getTaskStore();this.tasksCombo=Ext.create("Ext.form.field.ComboBox",{queryMode:"local",alowBlank:false,editing:false,forceSelection:true,valueField:this.task?this.task.idProperty:"Id",displayField:this.task?this.task.nameField:"Name",queryCaching:false,validator:function(g){if(!g){return c.blankTaskText}return true}});if(!a){this.deferredStoreBind=true;this.tasksCombo.on("render",this.bindTaskStore,this)}else{this.bindTaskStore()}if(this.direction==="predecessors"){d.push({text:this.idText,dataIndex:b.fromField,width:50},{text:this.taskText,dataIndex:b.fromField,flex:1,editor:this.tasksCombo,renderer:function(h,j,g){return c.taskRender(h,j,g)}})}else{d.push({text:this.idText,dataIndex:b.toField,width:50},{text:this.taskText,dataIndex:b.toField,flex:1,editor:this.tasksCombo,renderer:function(h,j,g){return c.taskRender(h,j,g)}})}this.lagEditor=Ext.create("Gnt.field.Duration");d.push({text:this.typeText,dataIndex:b.typeField,width:120,renderer:function(g){return c.dependencyTypeRender(g)},editor:{xtype:"combo",triggerAction:"all",queryMode:"local",editable:false,store:[[e.EndToStart,this.endToStartText],[e.StartToStart,this.startToStartText],[e.EndToEnd,this.endToEndText],[e.StartToEnd,this.startToEndText]]}},{text:this.lagText,dataIndex:b.lagField,width:100,editor:this.lagEditor,renderer:function(j,k,g){var h=this.store.model.prototype;return c.lagEditor.valueToVisible(j,g.get(h.lagUnitField),2)}},{text:this.clsText,dataIndex:b.clsField,hidden:!this.showCls,width:100});return d},insertDependency:function(b,j){if(!this.store){return}var e=this.task.getInternalId(),d=this.store.model.prototype,c={},h=this;if(b){c=b}else{c[d.typeField]=this.store.model.Type.EndToStart;c[d.lagField]=0;c[d.lagUnitField]="d"}if(this.direction==="predecessors"){c[d.toField]=e}else{c[d.fromField]=e}var g=this.store.insert(0,c);if(g.length){var a=g[0].isValid;g[0].isValid=function(){return a.call(this,false)&&h.isValidDependency(this)}}if(!j){this.cellEditing.startEditByPosition({row:0,column:1})}return g},onOppositeStoreChange:function(){this.getView().refresh()},setOppositeStore:function(a){if(this.oppositeStore){this.oppositeStore.un("update",this.onOppositeStoreChange,this);this.oppositeStore.un("datachanged",this.onOppositeStoreChange,this)}this.oppositeStore=a;this.oppositeStore.on("update",this.onOppositeStoreChange,this);this.oppositeStore.on("datachanged",this.onOppositeStoreChange,this)},loadDependencies:function(b){var c=this;b=b||this.task;if(!b){return}if(this.task!==b){this.setTask(b)}var d;if(this.direction==="predecessors"){d=b.getIncomingDependencies(this.dependencyStore);if(!this.oppositeStore){this.oppositeData=b.getOutgoingDependencies(this.dependencyStore)}}else{d=b.getOutgoingDependencies(this.dependencyStore);if(!this.oppositeStore){this.oppositeData=b.getIncomingDependencies(this.dependencyStore)}}var a=Gnt.util.Data.cloneModelSet(d,function(g){var e=g.isValid;g.isValid=function(){return e.call(this,false)&&c.isValidDependency(this)}});this.store.loadData(a)},getDependencyErrors:function(c){var k=this,m=this.dependencyStore,e=this.task.getInternalId(),a=e,l=[],d,b;if(this.direction==="predecessors"){e=c.getSourceId();d="getTargetId";b=e}else{a=c.getTargetId();d="getSourceId";b=a}var j=m.getSourceTask(e);var g=m.getTargetTask(a);if(j&&g&&(j.contains(g)||g.contains(j))){l.push(k.parentChildDependencyText)}var h;if(this.oppositeStore){h=this.oppositeStore.findBy(function(o){var n=k.direction==="predecessors"?[o[d](),b]:[b,o[d]()];return o[d]()==b||m.hasTransitiveDependency.apply(m,n)})>=0}else{Ext.each(this.oppositeData,function(o){var n=k.direction==="predecessors"?[o[d](),b]:[b,o[d]()];if(o[d]()==b||m.hasTransitiveDependency.apply(m,n)){h=true;return false}})}if(h){l.push(this.cyclicDependencyText)}this.store.each(function(q){var p=q.getSourceId(),o=q.getTargetId();if(e==p&&a==o&&q!==c){l.push(k.duplicatingDependencyText);return false}var n=k.direction==="predecessors"?[e,p]:[o,a];if(m.hasTransitiveDependency.apply(m,n)){l.push(k.transitiveDependencyText);return false}});return l},isValidDependency:function(a){var b=this.getDependencyErrors(a);return !b||!b.length},isValid:function(){var a=true;this.store.each(function(b){if(!b.isValid()){a=false;return false}});return a},saveDependencies:function(){if(!this.isValid()){return}Gnt.util.Data.applyCloneChanges(this.store,this.dependencyStore)}});Ext.define("Gnt.widget.taskeditor.TaskForm",{extend:"Ext.form.Panel",alias:"widget.taskform",requires:["Gnt.model.Task","Ext.form.FieldContainer","Ext.form.field.Text","Ext.form.field.Date","Gnt.field.Percent","Gnt.field.StartDate","Gnt.field.EndDate","Gnt.field.Duration","Gnt.field.SchedulingMode","Gnt.field.Effort"],alternateClassName:["Gnt.widget.TaskForm"],task:null,taskBuffer:null,taskStore:null,highlightTaskUpdates:true,showBaseline:true,editBaseline:false,showCalendar:false,showSchedulingMode:false,taskNameText:"Name",taskNameConfig:null,durationText:"Duration",durationConfig:null,datesText:"Dates",baselineText:"Baseline",startText:"Start",startConfig:null,finishText:"Finish",finishConfig:null,percentDoneText:"Percent Complete",percentDoneConfig:null,baselineStartText:"Start",baselineStartConfig:null,baselineFinishText:"Finish",baselineFinishConfig:null,baselinePercentDoneText:"Percent Complete",baselinePercentDoneConfig:null,effortText:"Effort",effortConfig:null,invalidEffortText:"Invalid effort value",calendarText:"Calendar",calendarConfig:null,schedulingModeText:"Scheduling Mode",schedulingModeConfig:null,constructor:function(b){b=b||{};this.showBaseline=b.showBaseline;this.editBaseline=b.editBaseline;var a=Gnt.model.Task.prototype;this.fieldNames={baselineEndDateField:a.baselineEndDateField,baselinePercentDoneField:a.baselinePercentDoneField,baselineStartDateField:a.baselineStartDateField,calendarIdField:a.calendarIdField,clsField:a.clsField,draggableField:a.draggableField,durationField:a.durationField,durationUnitField:a.durationUnitField,effortField:a.effortField,effortUnitField:a.effortUnitField,endDateField:a.endDateField,manuallyScheduledField:a.manuallyScheduledField,nameField:a.nameField,percentDoneField:a.percentDoneField,resizableField:a.resizableField,schedulingModeField:a.schedulingModeField,startDateField:a.startDateField,noteField:a.noteField};Ext.apply(this,b,{border:false,layout:"anchor",defaultType:"textfield"});if(this.task){this.fieldNames=this.getFieldNames(this.task);this.taskBuffer=this.taskBuffer||this.task.copy()}if(!this.items){this.buildFields()}this.callParent(arguments)},getFieldNames:function(b){if(!b){return}var a={};for(var c in this.fieldNames){a[c]=b[c]}return a},renameFields:function(b){var a=this.getFieldNames(b);if(!a){return}var d=this.getForm(),g=false,e;for(var c in this.fieldNames){e=d.findField(this.fieldNames[c]);if(e&&a[c]&&a[c]!=e.name){g=true;e.name=a[c]}}if(g){this.fieldNames=a}},buildFields:function(){var d=this,e=this.fieldNames,c=this.task,b=this.taskStore,j='<table class="gnt-fieldcontainer-label-wrap"><td width="1" class="gnt-fieldcontainer-label">',h='<td><div class="gnt-fieldcontainer-separator"></div></table>';var g=function(k){return c?c.get(e[k]):""};var a=function(l,k){return Ext.apply(l,{taskStore:d.taskStore,task:d.task,highlightTaskUpdates:d.highlightTaskUpdates},k)};this.items=this.items||[];this.items.push.call(this.items,{xtype:"fieldcontainer",layout:"hbox",defaults:{allowBlank:false},items:[a({xtype:"textfield",fieldLabel:this.taskNameText,name:e.nameField,labelWidth:110,flex:1,value:g(e.nameField)},this.taskNameConfig),a({xtype:"durationfield",fieldLabel:this.durationText,name:e.durationField,margins:"0 0 0 6",labelWidth:90,width:170,value:g(e.durationField)},this.durationConfig)]},a({xtype:"percentfield",fieldLabel:this.percentDoneText,name:e.percentDoneField,labelWidth:110,width:200,allowBlank:false,value:g(e.percentDoneField)},this.percentDoneConfig),{xtype:"fieldcontainer",fieldLabel:this.datesText,labelAlign:"top",labelSeparator:"",beforeLabelTextTpl:j,afterLabelTextTpl:h,layout:"hbox",defaults:{labelWidth:110,flex:1,allowBlank:false},items:[a({xtype:"startdatefield",fieldLabel:this.startText,name:e.startDateField,value:g(e.startDateField)},this.startConfig),a({xtype:"enddatefield",fieldLabel:this.finishText,name:e.endDateField,margins:"0 0 0 6",value:g(e.endDateField)},this.finishConfig)]},a({xtype:"effortfield",fieldLabel:this.effortText,name:e.effortField,invalidText:this.invalidEffortText,labelWidth:110,width:200,margins:"0 0 0 6",allowBlank:true,value:g(e.effortField)},this.effortConfig));if(this.showBaseline){this.items.push.call(this.items,{xtype:"fieldcontainer",fieldLabel:this.baselineText,labelAlign:"top",labelSeparator:"",beforeLabelTextTpl:j,afterLabelTextTpl:h,layout:"hbox",defaultType:"datefield",defaults:{labelWidth:110,flex:1,cls:"gnt-baselinefield"},items:[a({fieldLabel:this.baselineStartText,name:e.baselineStartDateField,value:g(e.baselineStartDateField),readOnly:!this.editBaseline},this.baselineStartConfig),a({fieldLabel:this.baselineFinishText,name:e.baselineEndDateField,margins:"0 0 0 6",value:g(e.baselineEndDateField),readOnly:!this.editBaseline},this.baselineFinishConfig)]},a({xtype:"percentfield",fieldLabel:this.baselinePercentDoneText,name:e.baselinePercentDoneField,labelWidth:110,width:200,cls:"gnt-baselinefield",value:g(e.baselinePercentDoneField),readOnly:!this.editBaseline},this.baselinePercentDoneConfig))}if(this.showCalendar){this.items.push(a({xtype:"calendarfield",fieldLabel:this.calendarText,name:e.calendarIdField,value:g(e.calendarIdField)},this.calendarConfig))}if(this.showSchedulingMode){this.items.push(a({xtype:"schedulingmodefield",fieldLabel:this.schedulingModeText,name:e.schedulingModeField,value:g(e.schedulingModeField),allowBlank:false},this.schedulingModeConfig))}},setSuppressTaskUpdate:function(b){var a=this.getForm().getFields();a.each(function(c){c.setSuppressTaskUpdate&&c.setSuppressTaskUpdate(b)})},loadRecord:function(b,a){if(b&&b!==this.task){this.renameFields(b)}this.task=b;this.taskBuffer=a;if(!this.taskBuffer){this.taskBuffer=b.copy();this.taskBuffer.taskStore=b.taskStore}var d=this,c=d.getForm();c._record=b;Ext.suspendLayouts();Ext.iterate(b.getData(),function(e,h){var g=c.findField(e);if(g){if(g.setTask){g.setSuppressTaskUpdate(true);g.setTask(d.taskBuffer);g.setSuppressTaskUpdate(false)}else{g.setValue(h)}if(c.trackResetOnLoad){g.resetOriginalValue()}}});Ext.resumeLayouts(true);this.fireEvent("afterloadrecord",this,b)},updateRecord:function(b){b=b||this.task;var a=Ext.Function.bind(function(){this.setSuppressTaskUpdate(true);var c=this.getForm().getFields();b.beginEdit();c.each(function(e){if(e.applyChanges){e.applyChanges(b)}else{var d=b.fields.getByKey(e.name);if(d&&d.persist){b.set(e.name,e.getValue())}}});b.endEdit();this.setSuppressTaskUpdate(false);this.fireEvent("afterupdaterecord",this,b)},this);if(b&&this.fireEvent("beforeupdaterecord",this,b,a)!==false){a();return true}return false}});Ext.define("Gnt.widget.taskeditor.TaskEditor",{extend:"Ext.panel.Panel",alias:"widget.taskeditor",requires:["Ext.tab.Panel","Ext.form.Panel","Gnt.widget.taskeditor.TaskForm","Gnt.widget.AssignmentEditGrid","Gnt.widget.DependencyGrid","Ext.form.field.HtmlEditor"],alternateClassName:["Gnt.widget.TaskEditor"],task:null,taskStore:null,assignmentStore:null,resourceStore:null,taskFormClass:"Gnt.widget.taskeditor.TaskForm",advancedFormClass:"Gnt.widget.taskeditor.TaskForm",showAssignmentGrid:true,showDependencyGrid:true,showNotes:true,showStyle:true,showAdvancedForm:true,showBaseline:true,tabsConfig:null,taskFormConfig:null,dependencyGridClass:"Gnt.widget.DependencyGrid",dependencyGridConfig:null,assignmentGridConfig:null,styleFormConfig:null,advancedFormConfig:null,notesConfig:null,height:340,width:600,layout:"fit",tabs:null,taskForm:null,assignmentGrid:null,dependencyGrid:null,advancedForm:null,generalText:"General",resourcesText:"Resources",dependencyText:"Predecessors",addDependencyText:"Add new",dropDependencyText:"Remove",notesText:"Notes",advancedText:"Advanced",stylingText:"Styling",clsText:"CSS Class",backgroundText:"Background",doneBackgroundText:"Progress Background",wbsCodeText:"WBS code",addAssignmentText:"Add new",dropAssignmentText:"Remove",noteText:"Note",constructor:function(a){var d=this,c=Gnt.model.Task.prototype;a=a||{};Ext.apply(this,a);this.taskFormConfig=this.taskFormConfig||{};Ext.applyIf(this.taskFormConfig,{showBaseline:this.showBaseline});var b=[];this.taskForm=Ext.create(this.taskFormClass||"Gnt.widget.taskeditor.TaskForm",Ext.applyIf(this.taskFormConfig,{task:this.task,taskStore:this.taskStore}));b.push(this.taskForm);if(this.showDependencyGrid){this.dependencyGrid=Ext.create(this.dependencyGridClass,Ext.apply({task:this.task,margin:5,tbar:{layout:"auto",items:[{xtype:"button",iconCls:"gnt-action-add",text:this.addDependencyText,handler:function(){d.dependencyGrid.insertDependency()}},{xtype:"button",iconCls:"gnt-action-remove",text:this.dropDependencyText,itemId:"drop-dependency-btn",disabled:true,handler:function(){var g=d.dependencyGrid.getSelectionModel().getSelection();if(g&&g.length){d.dependencyGrid.store.remove(g)}}}]},listeners:{selectionchange:function(j,h){var g=d.dependencyGrid;if(!g.dropDepBtn){g.dropDepBtn=g.down("[itemId=drop-dependency-btn]")}g.dropDepBtn&&g.dropDepBtn.setDisabled(!h.length)}}},this.dependencyGridConfig));b.push(this.dependencyGrid)}if(this.showAssignmentGrid&&this.assignmentStore&&this.resourceStore){this.assignmentGrid=Ext.create("Gnt.widget.AssignmentEditGrid",Ext.apply({assignmentStore:this.assignmentStore,resourceStore:this.resourceStore,tbar:{layout:"auto",items:[{xtype:"button",iconCls:"gnt-action-add",text:this.addAssignmentText,handler:function(){d.assignmentGrid.insertAssignment()}},{xtype:"button",iconCls:"gnt-action-remove",text:this.dropAssignmentText,itemId:"drop-assignment-btn",disabled:true,handler:function(){var g=d.assignmentGrid.getSelectionModel().getSelection();if(g&&g.length){d.assignmentGrid.store.remove(g)}}}]},listeners:{afterrender:{fn:function(g){g.loadTaskAssignments(d.task.get(d.task.idProperty))},single:true},selectionchange:function(j,h){var g=d.assignmentGrid;if(!g.dropBtn){g.dropBtn=g.down("[itemId=drop-assignment-btn]")}g.dropBtn&&g.dropBtn.setDisabled(!h.length)}}},this.assignmentGridConfig));b.push(this.assignmentGrid)}if(this.showAdvancedForm){var e=Ext.ClassManager.get(this.advancedFormClass||"Gnt.widget.taskeditor.TaskForm").prototype;this.advancedFormConfig=this.advancedFormConfig||{};this.advancedForm=Ext.create(this.advancedFormClass||"Gnt.widget.taskeditor.TaskForm",Ext.applyIf(this.advancedFormConfig,{items:[{xtype:"calendarfield",fieldLabel:e.calendarText,name:this.task?this.task.calendarIdField:c.calendarIdField,value:this.task&&this.task.getCalendarId(true),taskStore:this.taskStore,task:this.task},{xtype:"schedulingmodefield",fieldLabel:e.schedulingModeText,name:this.task?this.task.schedulingModeField:c.schedulingModeField,value:this.task&&this.task.getSchedulingMode(),allowBlank:false,taskStore:this.taskStore,task:this.task},{xtype:"displayfield",fieldLabel:this.wbsCodeText,name:"wbsCode",value:this.task&&this.task.getWBSCode()}],task:this.task,taskStore:this.taskStore}));b.push(this.advancedForm)}if(this.showNotes){this.notesEditor=Ext.create("Ext.form.field.HtmlEditor",Ext.apply({name:this.noteText,listeners:{afterrender:{fn:function(g){d.notesEditor.setValue(d.task.get(d.task.noteField))},single:true}}},this.notesConfig));this.notesPanel=Ext.create("Ext.panel.Panel",{border:false,layout:"fit",items:this.notesEditor});b.push(this.notesPanel)}this.tabsConfig=this.tabsConfig||{};if(b.length>1||this.tabsConfig.items){this.taskForm.title=this.taskForm.title||this.generalText;if(this.dependencyGrid){this.dependencyGrid.title=this.dependencyGrid.title||this.dependencyText}if(this.assignmentGrid){this.assignmentGrid.title=this.assignmentGrid.title||this.resourcesText}if(this.advancedForm){this.advancedForm.title=this.advancedForm.title||this.advancedText}if(this.notesPanel){this.notesPanel.title=this.notesPanel.title||this.notesText}if(this.styleForm){this.styleForm.title=this.styleForm.title||this.stylingText}if(this.tabsConfig.items){b.push.apply(b,Ext.isArray(this.tabsConfig.items)?this.tabsConfig.items:[this.tabsConfig.items]);delete this.tabsConfig.items}this.tabs=new Ext.tab.Panel(Ext.apply({border:false,items:b,defaults:{margin:5,border:false}},this.tabsConfig))}this.items=this.tabs||this.taskForm;this.callParent(arguments)},loadTask:function(b){if(!b){return}this.task=b;this.taskForm.setSuppressTaskUpdate(true);this.taskForm.getForm().reset();if(this.assignmentGrid){var a=b.copy();a.taskStore=Ext.apply({},b.taskStore);this.taskForm.loadRecord(b,a)}else{this.taskForm.loadRecord(b)}if(this.advancedForm){this.advancedForm.setSuppressTaskUpdate(true);var c=this.advancedForm.getForm();c.reset();this.advancedForm.loadRecord(b,this.taskForm.taskBuffer);var d=c.findField("wbsCode");if(d){d.setValue(b.getWBSCode())}this.advancedForm.setSuppressTaskUpdate(false)}this.taskForm.setSuppressTaskUpdate(false);if(this.styleForm){this.styleForm.loadRecord(b)}if(this.notesEditor){this.notesEditor.setValue(b.get(b.noteField))}if(this.assignmentGrid){this.taskForm.taskBuffer.taskStore.setAssignmentStore(this.assignmentGrid.store);this.taskForm.taskBuffer.taskStore.setResourceStore(this.assignmentGrid.resourceDupStore);this.assignmentGrid.store.taskStore=this.taskForm.taskBuffer.taskStore;this.assignmentGrid.resourceDupStore.taskStore=this.taskForm.taskBuffer.taskStore;this.assignmentGrid.loadResources();this.assignmentGrid.loadTaskAssignments(b.getId()||b.getPhantomId())}if(this.dependencyGrid){this.dependencyGrid.loadDependencies(b)}this.fireEvent("loadtask",this,b)},getActiveTab:function(){return this.tabs&&this.tabs.getActiveTab()},setActiveTab:function(a){return this.tabs&&this.tabs.setActiveTab(a)},getTabByComponent:function(b){if(!this.tabs){return}var a;this.tabs.items.each(function(c){if(b===c||b.isDescendantOf(c)){a=c;return false}},this);return a},validate:function(){var b=this.getActiveTab(),a=true,c;if(b){if(!this.taskForm.isValid()){if(this.taskForm.isDescendantOf(b)){return false}a=false;c=this.getTabByComponent(this.taskForm)}if(this.dependencyGrid&&!this.dependencyGrid.isValid()){if(this.dependencyGrid.isDescendantOf(b)){return false}a=false;c=c||this.getTabByComponent(this.dependencyGrid)}if(this.assignmentGrid&&!this.assignmentGrid.isValid()){if(this.assignmentGrid.isDescendantOf(b)){return false}a=false;c=c||this.getTabByComponent(this.assignmentGrid)}if(this.advancedForm&&!this.advancedForm.isValid()){if(this.advancedForm.isDescendantOf(b)){return false}a=false;c=c||this.getTabByComponent(this.advancedForm)}}if(c){this.setActiveTab(c)}return this.fireEvent("validate",this,c)!==false&&a},updateTask:function(){var a=Ext.Function.bind(function(){this.taskForm.updateRecord();if(this.advancedForm){this.advancedForm.updateRecord()}if(this.notesEditor){this.task.set(this.task.noteField,this.notesEditor.getValue())}if(this.styleForm){this.styleForm.getForm().updateRecord()}if(this.assignmentGrid){this.assignmentGrid.saveTaskAssignments()}if(this.dependencyGrid){this.dependencyGrid.saveDependencies()}this.fireEvent("afterupdatetask",this)},this);if(this.fireEvent("beforeupdatetask",this,a)!==false){a();return true}return false}});Ext.define("Gnt.plugin.TaskEditor",{extend:"Ext.window.Window",requires:["Ext.window.MessageBox","Gnt.widget.taskeditor.TaskEditor"],mixins:["Ext.AbstractPlugin"],lockableScope:"top",panelConfig:null,height:340,width:600,layout:"fit",triggerEvent:"taskdblclick",title:"Task Information",closeAction:"hide",modal:true,gantt:null,assignmentStore:null,resourceStore:null,taskStore:null,alertCaption:"Information",alertText:"Please correct marked errors to save changes",okText:"Ok",cancelText:"Cancel",constructor:function(a){a=a||{};if(!a.buttons){this.buttons=["->",{text:this.okText,handler:function(){this.completeEditing()||Ext.Msg.alert(this.alertCaption,this.alertText)},scope:this},{text:this.cancelText,handler:this.close,scope:this}]}this.callParent(arguments)},init:function(d){this.assignmentStore=this.assignmentStore||d.getAssignmentStore();this.resourceStore=this.resourceStore||d.getResourceStore();this.taskStore=this.taskStore||d.getTaskStore();var b={width:null,height:null,border:false},e=["task","taskStore","assignmentStore","resourceStore","generalText","resourcesText","dependencyText","addDependencyText","dropDependencyText","notesText","advancedText","wbsCodeText","addAssignmentText","dropAssignmentText","noteText","showAssignmentGrid","showDependencyGrid","showNotes","showStyle","showAdvancedForm","taskFormClass","advancedFormClass","tabsConfig","taskFormConfig","dependencyGridConfig","assignmentGridConfig","advancedFormConfig","styleFormConfig"];for(var c=0,a=e.length;c<a;c++){if(this[e[c]]!==undefined){b[e[c]]=this[e[c]]}}b.showBaseline=d.enableBaseline;Ext.apply(b,this.panelConfig);this.taskEditor=Ext.create("Gnt.widget.taskeditor.TaskEditor",b);this.add(this.taskEditor);this.relayEvents(this.taskEditor,["validate","beforeupdatetask","afterupdatetask","loadtask"]);d.on(this.triggerEvent,this.onTriggerEvent,this);d.on("destroy",this.destroy,this);this.gantt=d;d.taskEditor=this},destroy:function(){this.taskEditor.destroy();this.callParent(arguments)},onTriggerEvent:function(b,a){this.showTask(a)},showTask:function(a){if(this.taskEditor&&a){this.taskEditor.loadTask(a);this.show()}},validate:function(){if(this.taskEditor){return this.taskEditor.validate()}},completeEditing:function(){if(this.taskEditor){if(!this.taskEditor.validate()){return false}if(this.taskEditor.updateTask()){this.hide();return true}return false}},updateTask:function(){if(this.taskEditor){return this.taskEditor.updateTask()}}});Ext.define("Gnt.column.Dependency",{extend:"Ext.grid.column.Column",requires:["Gnt.field.Dependency"],separator:";",type:"predecessors",field:null,constructor:function(a){a=a||{};var b=a.field||a.editor;delete a.field;delete a.editor;Ext.apply(this,a);a.editor=b||Ext.create("Gnt.widget.DependencyField",{type:this.type,separator:this.separator});if(!(a.editor instanceof Gnt.widget.DependencyField)){a.editor=Ext.ComponentManager.create(a.editor,"dependencyfield")}a.field=a.editor;this.scope=this;this.callParent([a])},afterRender:function(){var a=this.up("ganttpanel");a.registerLockedDependencyListeners();a.on("beforeedit",function(b,c){this.field.setTask(c.record)},this);this.callParent(arguments)},renderer:function(b,c,a){if(!a.isEditable(this.dataIndex)){c.tdCls=(c.tdCls||"")+" sch-column-readonly"}return this.field.getDisplayValue(a)}});Ext.define("Gnt.column.Successor",{extend:"Gnt.column.Dependency",alias:"widget.successorcolumn",text:"Successors",type:"successors"});Ext.define("Gnt.column.Predecessor",{extend:"Gnt.column.Dependency",alias:"widget.predecessorcolumn",text:"Predecessors",type:"predecessors"});Ext.define("Gnt.column.Duration",{extend:"Ext.grid.column.Column",alias:"widget.durationcolumn",requires:["Gnt.field.Duration"],text:"Duration",width:80,align:"left",decimalPrecision:2,getDurationUnitMethod:"getDurationUnit",setDurationMethod:"setDuration",durationField:"durationField",useAbbreviation:false,instantUpdate:true,field:null,constructor:function(a){a=a||{};var b=a.field||a.editor;delete a.field;delete a.editor;Ext.apply(this,a);a.editor=b||Ext.create("Gnt.field.Duration",{taskField:this.durationField,useAbbreviation:this.useAbbreviation,decimalPrecision:this.decimalPrecision,getDurationUnitMethod:this.getDurationUnitMethod,setDurationMethod:this.setDurationMethod,instantUpdate:this.instantUpdate});if(!(a.editor instanceof Gnt.field.Duration)){Ext.applyIf(a.editor,{instantUpdate:this.instantUpdate});a.editor=Ext.ComponentManager.create(a.editor,"durationfield")}a.field=a.editor;this.scope=this;this.callParent([a])},afterRender:function(){var b=this,a=this.up("treepanel");if(!this.dataIndex){this.dataIndex=a.store.model.prototype[this.durationField]}this.callParent(arguments);a.on({beforeedit:this.onBeforeTreeEdit,scope:this})},renderer:function(b,d,a){if(!Ext.isNumber(b)){return""}if(!a.isEditable(this.dataIndex)){d.tdCls=(d.tdCls||"")+" sch-column-readonly"}var c=a[this.getDurationUnitMethod]();return this.field.valueToVisible(b,c)},onBeforeTreeEdit:function(a,b){if(b.column===this){if(this.field.setTask){this.field.setTask(b.record)}}}});Ext.define("Gnt.column.Effort",{extend:"Gnt.column.Duration",alias:"widget.effortcolumn",text:"Effort",getDurationUnitMethod:"getEffortUnit",setDurationMethod:"setEffort",durationField:"effortField"});Ext.define("Gnt.widget.Calendar",{extend:"Ext.picker.Date",alias:"widget.ganttcalendar",requires:["Gnt.data.Calendar","Sch.util.Date"],calendar:null,startDate:null,endDate:null,disabledDatesText:"Holiday",initComponent:function(){if(!this.calendar){Ext.Error.raise('Required attribute "calendar" missing during initialization of `Gnt.widget.Calendar`')}if(!this.startDate){Ext.Error.raise('Required attribute "startDate" missing during initialization of `Gnt.widget.Calendar`')}if(!this.endDate){this.endDate=Sch.util.Date.add(this.startDate,Sch.util.Date.MONTH,1)}this.setCalendar(this.calendar);this.minDate=this.value=this.startDate;this.injectDates();this.callParent(arguments)},injectDates:function(){var a=this;var b=a.disabledDates=[];Ext.each(a.calendar.getHolidaysRanges(a.startDate,a.endDate),function(c){c.forEachDate(function(d){b.push(Ext.Date.format(d,a.format))})});a.setDisabledDates(b)},setCalendar:function(b){var a={update:this.injectDates,remove:this.injectDates,add:this.injectDates,load:this.injectDates,clear:this.injectDates,scope:this};if(this.calendar){this.calendar.un(a)}this.calendar=b;b.on(a)}});Ext.define("Gnt.widget.calendar.ResourceCalendarGrid",{extend:"Ext.grid.Panel",requires:["Gnt.data.Calendar","Sch.util.Date"],alias:"widget.resourcecalendargrid",resourceStore:null,calendarStore:null,initComponent:function(){var a=this;this.calendarStore=this.calendarStore||Ext.create("Ext.data.Store",{fields:["Id","Name"]});Ext.apply(a,{store:a.resourceStore,columns:[{header:"Name",dataIndex:"Name",flex:1},{header:"Calendar",dataIndex:"CalendarId",flex:1,renderer:function(g,j,b,e,d,c){if(!g){var h=b.getCalendar();g=h?h.calendarId:""}var k=a.calendarStore.getById(g);return k?k.get("Name"):g},editor:{xtype:"combobox",store:a.calendarStore,queryMode:"local",displayField:"Name",valueField:"Id",editable:false,allowBlank:false}}],border:true,height:180,plugins:[Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:2})]});this.calendarStore.loadData(this.getCalendarData());this.callParent(arguments)},getCalendarData:function(){var a=[];Ext.Array.each(Gnt.data.Calendar.getAllCalendars(),function(b){a.push({Id:b.calendarId,Name:b.name||b.calendarId})});return a}});Ext.define("Gnt.widget.calendar.AvailabilityGrid",{extend:"Ext.grid.Panel",requires:["Ext.grid.plugin.CellEditing","Gnt.data.Calendar","Sch.util.Date"],alias:"widget.calendaravailabilitygrid",calendarDay:null,height:160,addButton:null,removeButton:null,startText:"Start",endText:"End",addText:"Add",removeText:"Remove",maxIntervalsNum:5,initComponent:function(){Ext.applyIf(this,{store:new Ext.data.Store({fields:["startTime","endTime"],data:this.calendarDay.getAvailability()}),plugins:[new Ext.grid.plugin.CellEditing({clicksToEdit:2})],tbar:this.buildToolbar(),columns:[{xtype:"datecolumn",header:this.startText,format:"g:i a",dataIndex:"startTime",flex:1,editor:{xtype:"timefield",allowBlank:false,initDate:"31/12/1899"}},{xtype:"datecolumn",header:this.endText,format:"g:i a",dataIndex:"endTime",flex:1,editor:{xtype:"timefield",allowBlank:false,initDate:"31/12/1899"}}],listeners:{selectionchange:this.onAvailabilityGridSelectionChange,scope:this}});this.callParent(arguments)},buildToolbar:function(){this.addButton=new Ext.Button({text:this.addText,iconCls:"gnt-action-add",handler:this.addAvailability,scope:this});this.removeButton=new Ext.Button({text:this.removeText,iconCls:"gnt-action-remove",handler:this.removeAvailability,scope:this,disabled:true});return[this.addButton,this.removeButton]},onAvailabilityGridSelectionChange:function(a){this.removeButton.setDisabled(!a||a.getSelection().length===0)},setAvailability:function(a){this.store.loadData(a);this.addButton.setDisabled(this.store.getCount()>=this.maxIntervalsNum)},addAvailability:function(){var a=this.getStore(),b=a.count();if(b>=this.maxIntervalsNum){return}a.add({startTime:new Date(0,0,0,12,0),endTime:new Date(0,0,0,13,0)});if(b+1>=this.maxIntervalsNum&&this.addButton){this.addButton.disable()}},removeAvailability:function(){var a=this.getStore(),c=a.getCount(),b=this.getSelectionModel().getSelection();if(b.length===0){return}a.remove(b[0]);if(c<this.maxIntervalsNum&&this.addButton){this.addButton.enable()}},isValid:function(b){try{this.calendarDay.verifyAvailability(this.getIntervals())}catch(a){if(!b){Ext.MessageBox.show({title:"Error",msg:a,modal:true,icon:Ext.MessageBox.ERROR,buttons:Ext.MessageBox.OK});setTimeout(function(){var c=Ext.MessageBox.getEl();if(c){c.setStyle("z-index",100000)}},100)}return false}return true},extractTimeFromDate:function(a){return new Date(0,0,0,a.getHours(),a.getMinutes(),a.getSeconds())},getIntervals:function(){var a=[];var b=this;this.getStore().each(function(c){a.push({startTime:b.extractTimeFromDate(c.get("startTime")),endTime:b.extractTimeFromDate(c.get("endTime"))})});return a}});Ext.define("Gnt.widget.calendar.DayEditor",{extend:"Gnt.widget.calendar.AvailabilityGrid",requires:["Ext.grid.plugin.CellEditing","Gnt.data.Calendar","Sch.util.Date"],alias:"widget.calendardayeditor",height:160,workingTimeText:"Working day",nonworkingTimeText:"Non-working day",initComponent:function(){var a=this.calendarDay.getIsWorkingDay();Ext.applyIf(this,{dockedItems:[{xtype:"radiogroup",dock:"top",name:"dayType",padding:"0 5px",margin:0,items:[{boxLabel:this.workingTimeText,name:"IsWorkingDay",inputValue:true,checked:a},{boxLabel:this.nonworkingTimeText,name:"IsWorkingDay",inputValue:false,checked:!a}],listeners:{change:this.onDayTypeChanged,scope:this}}]});this.on("viewready",this.applyState,this);this.callParent(arguments)},getDayTypeRadioGroup:function(){return this.down('radiogroup[name="dayType"]')},applyState:function(){if(!this.isWorkingDay()){this.getView().disable();this.addButton.disable()}},onDayTypeChanged:function(a){var b=a.getValue();if(Ext.isArray(b.IsWorkingDay)){return}this.getView().setDisabled(!b.IsWorkingDay);this.addButton.setDisabled(!b.IsWorkingDay||this.getStore().getCount()>=this.maxIntervalsNum)},isWorkingDay:function(){return this.getDayTypeRadioGroup().getValue().IsWorkingDay},isValid:function(){if(this.isWorkingDay()){return this.callParent()}return true},getIntervals:function(){if(!this.isWorkingDay()){return[]}return this.callParent()}});Ext.define("Gnt.widget.calendar.WeekEditor",{extend:"Ext.form.Panel",requires:["Ext.grid.Panel","Gnt.data.Calendar","Sch.util.Date","Gnt.widget.calendar.AvailabilityGrid"],alias:"widget.calendarweekeditor",weekName:null,startDate:null,endDate:null,weekAvailability:null,calendarWeekAvailability:null,defaultWeekAvailability:null,backupWeekAvailability:null,layout:"anchor",defaults:{border:false,anchor:"100%"},defaultTimeText:"Default day",workingTimeText:"Working day",nonworkingTimeText:"Non-working day",currentDayIndex:null,_weekDaysGrid:null,_availabilityGrid:null,initComponent:function(){this.backupWeekAvailability=[];this.items=[{xtype:"radiogroup",padding:"0 5px",name:"dayType",items:[{boxLabel:this.defaultTimeText,name:"IsWorkingDay",inputValue:0},{boxLabel:this.workingTimeText,name:"IsWorkingDay",inputValue:1},{boxLabel:this.nonworkingTimeText,name:"IsWorkingDay",inputValue:2}],listeners:{change:this.onDayTypeChanged,scope:this}},{layout:"column",padding:"0 0 5px 0",defaults:{border:false},items:[{margin:"0 10px 0 5px",columnWidth:0.5,items:this.getWeekDaysGrid()},{columnWidth:0.5,margin:"0 5px 0 0",items:this.getAvailabilityGrid()}]}];this.callParent(arguments)},getWeekDaysGrid:function(){if(this._weekDaysGrid!=null){return this._weekDaysGrid}var a=Ext.Date.dayNames;return this._weekDaysGrid=new Ext.grid.Panel({hideHeaders:true,height:160,columns:[{header:"",dataIndex:"name",flex:1}],store:new Ext.data.Store({fields:["id","name"],idProperty:"id",data:[{id:1,name:a[1]},{id:2,name:a[2]},{id:3,name:a[3]},{id:4,name:a[4]},{id:5,name:a[5]},{id:6,name:a[6]},{id:0,name:a[0]}]}),listeners:{viewready:this.onWeekDaysListViewReady,selectionchange:this.onWeekDaysListSelectionChange,beforeselect:this.onWeekDaysListBeforeSelect,scope:this}})},getAvailabilityGrid:function(){if(!this._availabilityGrid){this._availabilityGrid=new Gnt.widget.calendar.AvailabilityGrid({calendarDay:new Gnt.model.CalendarDay})}return this._availabilityGrid},getDayTypeRadioGroup:function(){return this.down('radiogroup[name="dayType"]')},getWeekAvailability:function(){return this.weekAvailability},onWeekDaysListViewReady:function(){var b=this.getWeekDaysGrid(),a=b.getStore().getAt(0);this.currentDayIndex=a.getId();this.readFromData();b.getSelectionModel().select(a,false,true)},onWeekDaysListBeforeSelect:function(){if(!this.saveToData()){return false}},applyChanges:function(e){if(!this.saveToData()){return false}var b=this.weekAvailability;var d=false;for(var c=0;c<7;c++){var a=b[c];if(a){d=true}if(!a){e[c]=null}if(a&&!e[c]){e[c]=a}if(a&&e[c]){e[c].setIsWorkingDay(a.getIsWorkingDay());e[c].setAvailability(a.getAvailability())}}if(!d){Ext.MessageBox.show({title:"Error",msg:"Week override contains only 'default' days - can't save it",modal:true,icon:Ext.MessageBox.ERROR,buttons:Ext.MessageBox.OK});setTimeout(function(){var g=Ext.MessageBox.getEl();if(g){g.setStyle("z-index",100000)}},100);return false}return true},onWeekDaysListSelectionChange:function(a,b){this.currentDayIndex=b[0].getId();this.readFromData()},getCurrentTypeOfWeekDay:function(a){return this.weekAvailability[a]?this.weekAvailability[a].getIsWorkingDay()?1:2:0},getCurrentWeekDay:function(a){return this.weekAvailability[a]||this.calendarWeekAvailability[a]||this.defaultWeekAvailability[a]},saveToData:function(){var c=this.currentDayIndex;var d=this.getDayTypeRadioGroup().getValue().IsWorkingDay;var a=this.weekAvailability;if(d===0){a[c]=null;return true}var b=this.getAvailabilityGrid();if(d==1){if(!b.isValid()){return false}if(!a[c]){a[c]=this.copyDefaultWeekDay(c)}a[c].setIsWorkingDay(true);a[c].setAvailability(b.getIntervals());this.backupWeekAvailability[c]=null;return true}if(!a[c]){a[c]=this.copyDefaultWeekDay(c)}a[c].setIsWorkingDay(false);a[c].setAvailability([]);return true},copyDefaultWeekDay:function(a){var b=(this.calendarWeekAvailability[a]||this.defaultWeekAvailability[a]).copy();b.setType("WEEKDAYOVERRIDE");b.setOverrideStartDate(this.startDate);b.setOverrideEndDate(this.endDate);b.setName(this.weekName);return b},readFromData:function(b){var a=this.getCurrentWeekDay(this.currentDayIndex);var c=this.getCurrentTypeOfWeekDay(this.currentDayIndex);this.getAvailabilityGrid().setAvailability(b||a.getAvailability());this.getDayTypeRadioGroup().suspendEvents();this.getDayTypeRadioGroup().setValue({IsWorkingDay:[c]});this.getDayTypeRadioGroup().resumeEvents();this.getAvailabilityGrid().setDisabled(c!=1)},onDayTypeChanged:function(d,b,a){var h=d.getValue();if(h.IsWorkingDay==null||Ext.isArray(h.IsWorkingDay)){return}var e=this.weekAvailability;var g=this.backupWeekAvailability;var j=this.currentDayIndex;var c=this.getAvailabilityGrid();var k;if(a.IsWorkingDay==1){g[j]=c.getIntervals()}switch(h.IsWorkingDay){case 0:e[j]=null;break;case 1:if(!e[j]){e[j]=this.copyDefaultWeekDay(j)}k=g[j];e[j].setIsWorkingDay(true);break;case 2:if(!e[j]){e[j]=this.copyDefaultWeekDay(j)}e[j].setAvailability([]);e[j].setIsWorkingDay(false);break;default:throw"Unrecognized day type"}this.readFromData(k)}});Ext.define("Gnt.widget.calendar.DatePicker",{extend:"Ext.picker.Date",alias:"widget.gntdatepicker",workingDayCls:"gnt-datepicker-workingday",nonWorkingDayCls:"gnt-datepicker-nonworkingday",overriddenDayCls:"gnt-datepicker-overriddenday",overriddenWeekDayCls:"gnt-datepicker-overriddenweekday",weekOverridesStore:null,dayOverridesCalendar:null,update:function(){this.callParent(arguments);this.refreshCssClasses()},refreshCssClasses:function(){var d=this,b=d.cells.elements;this.removeCustomCls();for(var c=0;c<d.numDays;c++){var a=b[c].firstChild.dateValue;b[c].className+=" "+this.getDateCls(new Date(a))}},getDateCls:function(e){var b="";if(e.getMonth()!==this.getActive().getMonth()){return}var c=this.dayOverridesCalendar;if(c.getOwnCalendarDay(e)){b+=" "+this.overriddenDayCls;if(!c.isWorkingDay(e)){b+=" "+this.nonWorkingDayCls}}else{var g=null;this.weekOverridesStore.each(function(h){if(Ext.Date.between(e,h.get("startDate"),h.get("endDate"))){g=h;return false}});if(g){b+=" "+this.overriddenWeekDayCls;var d=e.getDay(),a=g.get("weekAvailability");if(a&&a[d]&&!a[d].getIsWorkingDay()){b+=" "+this.nonWorkingDayCls}}else{if(!c.isWorkingDay(e)){b+=" "+this.nonWorkingDayCls}}}return b||this.workingDayCls},removeCustomCls:function(){this.cells.removeCls([this.overriddenDayCls,this.nonWorkingDayCls,this.workingDayCls,this.overriddenWeekDayCls])}});Ext.define("Gnt.widget.calendar.Calendar",{extend:"Ext.form.Panel",requires:["Ext.XTemplate","Gnt.data.Calendar","Gnt.widget.calendar.DayEditor","Gnt.widget.calendar.WeekEditor","Gnt.widget.calendar.DatePicker"],alias:"widget.calendar",defaults:{padding:10,border:false},workingDayCls:"gnt-datepicker-workingday",nonWorkingDayCls:"gnt-datepicker-nonworkingday",overriddenDayCls:"gnt-datepicker-overriddenday",overriddenWeekDayCls:"gnt-datepicker-overriddenweekday",calendar:null,dayOverrideNameHeaderText:"Name",dateText:"Date",addText:"Add",editText:"Edit",removeText:"Remove",workingDayText:"Working day",weekendsText:"Weekends",overriddenDayText:"Overridden day",overriddenWeekText:"Overridden week",defaultTimeText:"Default day",workingTimeText:"Working day",nonworkingTimeText:"Non-working day",dayGridConfig:null,weekGridConfig:null,datePickerConfig:null,dayOverridesText:"Day overrides",weekOverridesText:"Week overrides",okText:"OK",cancelText:"Cancel",calendarNameText:"Calendar name",tplTexts:{tplWorkingHours:"Working hours for",tplIsNonWorking:"is non-working",tplOverride:"override",tplInCalendar:"in calendar",tplDayInCalendar:"standard day in calendar"},parentCalendarText:"Parent calendar",noParentText:"No parent",selectParentText:"Select parent",newDayName:"[Without name]",overrideErrorText:"There is already an override for this day",intersectDatesErrorText:"Dates shouldn't intersect",startDateErrorText:"StartDate greater then EndDate",dayGrid:null,weekGrid:null,datePicker:null,legendTpl:'<ul class="gnt-calendar-legend"><li class="gnt-calendar-legend-item"><div class="gnt-calendar-legend-itemstyle {workingDayCls}"></div><span class="gnt-calendar-legend-itemname">{workingDayText}</span><div style="clear: both"></div></li><li><div class="gnt-calendar-legend-itemstyle {nonWorkingDayCls}"></div><span class="gnt-calendar-legend-itemname">{weekendsText}</span><div style="clear: both"></div></li><li class="gnt-calendar-legend-override"><div class="gnt-calendar-legend-itemstyle {overriddenDayCls}">31</div><span class="gnt-calendar-legend-itemname">{overriddenDayText}</span><div style="clear: both"></div></li><li class="gnt-calendar-legend-override"><div class="gnt-calendar-legend-itemstyle {overriddenWeekDayCls}">31</div><span class="gnt-calendar-legend-itemname">{overriddenWeekText}</span><div style="clear: both"></div></li></ul>',dateInfoTpl:null,dayOverridesCalendar:null,weekOverridesStore:null,copiesIndexByOriginalId:null,getDayGrid:function(){if(!this.dayGrid){var a=this.calendar.model;this.dayGrid=new Ext.grid.Panel(Ext.apply({title:"Day overrides",tbar:[{text:this.addText,action:"add",iconCls:"gnt-action-add",handler:this.addDay,scope:this},{text:this.editText,action:"edit",iconCls:"gnt-action-edit",handler:this.editDay,scope:this},{text:this.removeText,action:"remove",iconCls:"gnt-action-remove",handler:this.removeDay,scope:this}],store:new Gnt.data.Calendar,plugins:[new Ext.grid.plugin.CellEditing({clicksToEdit:2})],columns:[{header:"Name",dataIndex:a.prototype.nameField,flex:1,editor:{allowBlank:false}},{header:"Date",dataIndex:a.prototype.dateField,width:100,xtype:"datecolumn",editor:{xtype:"datefield"}}]},this.dayGridConfig||{}));this.dayOverridesCalendar=this.dayGrid.store}return this.dayGrid},getWeekGrid:function(){if(!this.weekGrid){this.weekGrid=new Ext.grid.Panel(Ext.apply({title:"Week overrides",border:true,plugins:[new Ext.grid.plugin.CellEditing({clicksToEdit:2})],store:new Ext.data.Store({fields:["name","startDate","endDate","weekAvailability","mainDay"]}),tbar:[{text:this.addText,action:"add",iconCls:"gnt-action-add",handler:this.addWeek,scope:this},{text:this.editText,action:"edit",iconCls:"gnt-action-edit",handler:this.editWeek,scope:this},{text:this.removeText,action:"remove",iconCls:"gnt-action-remove",handler:this.removeWeek,scope:this}],columns:[{header:"Name",dataIndex:"name",flex:1,editor:{allowBlank:false}},{xtype:"datecolumn",header:"Start date",dataIndex:"startDate",width:100,editor:{xtype:"datefield"}},{xtype:"datecolumn",header:"End Date",dataIndex:"endDate",width:100,editor:{xtype:"datefield"}}]},this.weekGridConfig||{}));this.weekOverridesStore=this.weekGrid.store}return this.weekGrid},getDatePicker:function(){if(!this.datePicker){this.datePicker=new Gnt.widget.calendar.DatePicker(Ext.apply({dayOverridesCalendar:this.getDayGrid().store,weekOverridesStore:this.getWeekGrid().store},this.datePickerConfig))}return this.datePicker},initComponent:function(){this.copiesIndexByOriginalId={};var d=this;d.setupTemplates();if(!(this.legendTpl instanceof Ext.Template)){this.legendTpl=new Ext.XTemplate(this.legendTpl)}if(!(this.dateInfoTpl instanceof Ext.Template)){this.dateInfoTpl=new Ext.XTemplate(this.dateInfoTpl)}var e=this.calendar;if(!e){Ext.Error.raise('Required attribute "calendar" is missed during initialization of `Gnt.widget.Calendar`')}var b=this.getWeekGrid(),a=this.getDayGrid(),c=this.getDatePicker();a.on({selectionchange:this.onDayGridSelectionChange,validateedit:this.onDayGridValidateEdit,edit:this.onDayGridEdit,scope:this});a.store.on({update:this.refreshView,remove:this.refreshView,add:this.refreshView,scope:this});b.on({selectionchange:this.onWeekGridSelectionChange,validateedit:this.onWeekGridValidateEdit,edit:this.onWeekGridEdit,scope:this});b.store.on({update:this.refreshView,remove:this.refreshView,add:this.refreshView,scope:this});c.on({select:this.onDateSelect,scope:this});this.fillDaysStore();this.fillWeeksStore();this.mon(e,{load:this.onCalendarChange,add:this.onCalendarChange,remove:this.onCalendarChange,update:this.onCalendarChange,scope:this});this.dateInfoPanel=new Ext.Panel({cls:"gnt-calendar-dateinfo",columnWidth:0.33,border:false,height:200});this.items=[{xtype:"container",layout:"hbox",pack:"start",align:"stretch",items:[{html:Ext.String.format('{0}: "{1}"',this.calendarNameText,e.name),border:false,flex:1},{xtype:"combobox",name:"cmb_parentCalendar",fieldLabel:d.parentCalendarText,store:new Ext.data.Store({fields:["Id","Name"],data:[{Id:-1,Name:d.noParentText}].concat(e.getParentableCalendars())}),queryMode:"local",displayField:"Name",valueField:"Id",editable:false,emptyText:d.selectParentText,value:e.parent?e.parent.calendarId:-1,flex:1}]},{layout:"column",defaults:{border:false},items:[{margin:"0 15px 0 0",columnWidth:0.3,html:this.legendTpl.apply({workingDayText:this.workingDayText,weekendsText:this.weekendsText,overriddenDayText:this.overriddenDayText,overriddenWeekText:this.overriddenWeekText,workingDayCls:this.workingDayCls,nonWorkingDayCls:this.nonWorkingDayCls,overriddenDayCls:this.overriddenDayCls,overriddenWeekDayCls:this.overriddenWeekDayCls})},{columnWidth:0.37,margin:"0 5px 0 0",items:[c]},this.dateInfoPanel]},{xtype:"tabpanel",height:220,items:[a,b]}];this.callParent(arguments)},onCalendarChange:function(){this.fillDaysStore();this.fillWeeksStore();this.refreshView()},setupTemplates:function(){var a=this.tplTexts;this.dateInfoTpl=this.dateInfoTpl||Ext.String.format(['<tpl if="isWorkingDay == true">',"<div>{0} {date}:</div>","</tpl>",'<tpl if="isWorkingDay == false">',"<div>{date} {1}</div>","</tpl>",'<ul class="gnt-calendar-availabilities">','<tpl for="availability">',"<li>{.}</li>","</tpl>","</ul>","<span>Based on: ",'<tpl if="override == true">','{2} "{name}" {3} "{calendarName}"',"</tpl>",'<tpl if="override == false">','{4} "{calendarName}"',"</tpl>","</span>"].join(""),a.tplWorkingHours,a.tplIsNonWorking,a.tplOverride,a.tplInCalendar,a.tplDayInCalendar)},afterRender:function(){this.callParent(arguments);this.onDateSelect(this.getDatePicker(),new Date)},fillDaysStore:function(){var a=this;var b=[];this.calendar.each(function(c){if(c.getType()=="DAY"&&c.getDate()){b.push(a.copyCalendarDay(c))}});this.dayOverridesCalendar.loadData(b)},copyCalendarDay:function(a){var b=a.copy();b.__COPYOF__=a.internalId;this.copiesIndexByOriginalId[a.internalId]=b.internalId;return b},fillWeeksStore:function(){var a=this;var b=[];this.calendar.forEachNonStandardWeek(function(c){var d=Ext.apply({},c);d.weekAvailability=Ext.Array.map(d.weekAvailability,function(e){return e&&a.copyCalendarDay(e)||null});d.mainDay=a.copyCalendarDay(d.mainDay);b.push(d)});this.weekOverridesStore.loadData(b)},addDay:function(){var a=this.getDatePicker().getValue();if(this.dayOverridesCalendar.getOwnCalendarDay(a)){Ext.MessageBox.show({title:"Error",msg:this.overrideErrorText,icon:Ext.MessageBox.WARNING,buttons:Ext.MessageBox.OK});return}var b=Ext.create("Gnt.model.CalendarDay",{Name:this.newDayName,Type:"DAY",Date:a,IsWorkingDay:false});this.dayOverridesCalendar.insert(0,b);this.getDayGrid().getSelectionModel().select([b],false,false)},editDay:function(){var e=this,c=this.getDayGrid().getSelectionModel().getSelection();if(c.length===0){return}var a=c[0];var b=new Gnt.widget.calendar.DayEditor({addText:this.addText,removeText:this.removeText,workingTimeText:this.workingTimeText,nonworkingTimeText:this.nonworkingTimeText,calendarDay:a});var d=Ext.create("Ext.window.Window",{title:this.dayOverridesText,modal:true,width:280,height:260,layout:"fit",items:b,buttons:[{text:this.okText,handler:function(){if(b.isValid()){var g=b.calendarDay;g.setIsWorkingDay(b.isWorkingDay());g.setAvailability(b.getIntervals());e.applyCalendarDay(g,a);e.refreshView();d.close()}}},{text:this.cancelText,handler:function(){d.close()}}]});d.show()},removeDay:function(){var c=this.getDayGrid(),d=c.getSelectionModel().getSelection(),a=c.getStore();if(d.length===0){return}var b=d[0];a.remove(b);this.refreshView()},refreshView:function(){var g=this.getDatePicker().getValue(),b=this.getCalendarDay(g),e=this.getWeekGrid(),a=this.getDayGrid(),d=this.dayOverridesCalendar.getOwnCalendarDay(g),j;var c;if(d){a.getSelectionModel().select([d],false,true);c=d.getName()}else{j=this.getWeekOverrideByDate(g);if(j){e.getSelectionModel().select([j],false,true);c=j.get("name")}}var h={name:c||b.getName(),date:Ext.Date.format(g,"M j, Y"),calendarName:this.calendar.name||this.calendar.calendarId,availability:b.getAvailability(true),override:Boolean(d||j),isWorkingDay:b.getIsWorkingDay()};this.dateInfoPanel.update(this.dateInfoTpl.apply(h));this.datePicker.refreshCssClasses()},onDayGridSelectionChange:function(b){if(b.getSelection().length===0){return}var a=b.getSelection()[0];this.getDatePicker().setValue(a.getDate());this.refreshView()},onDayGridEdit:function(b,a){if(a.field==="Date"){a.grid.getStore().clearCache();this.getDatePicker().setValue(a.value)}this.refreshView()},onDayGridValidateEdit:function(b,a){var c=this.getDayGrid().store;if(a.field===c.model.prototype.dateField&&c.getOwnCalendarDay(a.value)&&a.value!==a.originalValue){Ext.MessageBox.show({title:"Error",msg:this.overrideErrorText,icon:Ext.MessageBox.WARNING,buttons:Ext.MessageBox.OK});return false}},onDateSelect:function(b,a){this.refreshView()},getCalendarDay:function(b){var a=this.dayOverridesCalendar.getOwnCalendarDay(b);if(a){return a}a=this.getWeekOverrideDay(b);if(a){return a}return this.calendar.weekAvailability[b.getDay()]||this.calendar.defaultWeekAvailability[b.getDay()]},getWeekOverrideDay:function(d){var e=new Date(d),b=this.getWeekOverrideByDate(d),c=e.getDay();if(b==null){return null}var a=b.get("weekAvailability");if(!a){return null}return a[c]},getWeekOverrideByDate:function(a){var b=null;this.weekOverridesStore.each(function(c){if(Ext.Date.between(a,c.get("startDate"),c.get("endDate"))){b=c;return false}});return b},intersectsWithCurrentWeeks:function(b,d,c){var a=false;this.weekOverridesStore.each(function(g){if(g==c){return}var e=g.get("startDate");var h=g.get("endDate");if(e<=b&&b<h||e<d&&d<=h){a=true;return false}});return a},addWeek:function(){var c=this.weekOverridesStore;var a=this.getDatePicker().getValue();var g;for(var e=7;e>0;e--){g=Sch.util.Date.add(a,Sch.util.Date.DAY,e);if(!this.intersectsWithCurrentWeeks(a,g)){break}}if(!e){Ext.MessageBox.show({title:"Error",msg:"There's already week override on this date:"+Ext.Date.format("Y/m/d",a),icon:Ext.MessageBox.WARNING,buttons:Ext.MessageBox.OK});return}var d=new this.calendar.model;d.setType("WEEKDAYOVERRIDE");d.setName(this.newDayName);d.setOverrideStartDate(a);d.setOverrideEndDate(g);d.setWeekday(-1);var b=c.insert(0,{name:this.newDayName,startDate:a,endDate:g,weekAvailability:[],mainDay:d})[0];this.getWeekGrid().getSelectionModel().select([b],false,false)},editWeek:function(){var c=this.getWeekGrid().getSelectionModel().getSelection(),e=this;if(c.length===0){return}var b=c[0];var a=new Gnt.widget.calendar.WeekEditor({startDate:b.get("startDate"),endDate:b.get("endDate"),weekName:b.get("name"),weekAvailability:b.get("weekAvailability"),calendarWeekAvailability:this.calendar.weekAvailability,defaultWeekAvailability:this.calendar.defaultWeekAvailability});var d=Ext.create("Ext.window.Window",{title:this.weekOverridesText,modal:true,width:370,defaults:{border:false},layout:"fit",items:a,buttons:[{action:"ok",text:this.okText,handler:function(){if(a.applyChanges(b.get("weekAvailability"))){e.refreshView();d.close()}}},{text:this.cancelText,handler:function(){d.close()}}]});d.show()},removeWeek:function(){var a=this.getWeekGrid().getSelectionModel().getSelection(),b=this;if(a.length===0){return}this.weekOverridesStore.remove(a[0]);this.refreshView()},onWeekGridSelectionChange:function(a){var b=a.getSelection();if(b.length===0){return}this.getDatePicker().setValue(b[0].get("startDate"))},onWeekGridEdit:function(d,b){var c=b.record,a=c.get("startDate"),e=c.get("endDate");if(b.field=="startDate"||b.field=="endDate"){Ext.Array.each(c.get("weekAvailability").concat(c.get("mainDay")),function(g){if(g){g.setOverrideStartDate(a);g.setOverrideEndDate(e)}});this.getDatePicker().setValue(a)}if(b.field=="name"){Ext.Array.each(c.get("weekAvailability").concat(c.get("mainDay")),function(g){if(g){g.setName(c.get("name"))}})}this.refreshView()},onWeekGridValidateEdit:function(d,b){var c=b.record,a=b.field=="startDate"?b.value:c.get("startDate"),e=b.field=="endDate"?b.value:c.get("endDate");if(a>e){Ext.MessageBox.show({title:"Error",msg:"Start date should be less than end date",icon:Ext.MessageBox.ERROR,buttons:Ext.MessageBox.OK});setTimeout(function(){var g=Ext.MessageBox.getEl();if(g){g.setStyle("z-index",100000)}},100);return false}if(this.intersectsWithCurrentWeeks(a,e,c)){Ext.MessageBox.show({title:"Error",msg:"Week overrides should not intersect",icon:Ext.MessageBox.ERROR,buttons:Ext.MessageBox.OK});setTimeout(function(){var g=Ext.MessageBox.getEl();if(g){g.setStyle("z-index",100000)}},100);return false}},applyCalendarDay:function(d,c){c.beginEdit();c.setId(d.getId());c.setName(d.getName());c.setIsWorkingDay(d.getIsWorkingDay());c.setDate(d.getDate());c.setOverrideStartDate(d.getOverrideStartDate());c.setOverrideEndDate(d.getOverrideEndDate());var b=d.getAvailability(true);var a=c.getAvailability(true);if(b+""!=a+""){c.setAvailability(d.getAvailability())}c.endEdit()},applySingleDay:function(b,a){if(b.__COPYOF__){this.applyCalendarDay(b,this.calendar.getByInternalId(b.__COPYOF__))}else{b.unjoin(b.stores[0]);a.push(b)}},applyChanges:function(){var h=this;var j=this.calendar;var g=this.down('combobox[name="cmb_parentCalendar"]').getValue();j.suspendCacheUpdate++;j.setParent(g?Gnt.data.Calendar.getCalendar(g):null);j.proxy.extraParams.calendarId=j.calendarId;var b=this.dayOverridesCalendar;var c=[];var a=[];b.each(function(k){h.applySingleDay(k,c)});var d=this.copiesIndexByOriginalId;j.each(function(k){if(k.getType()=="DAY"&&k.getDate()){if(!b.getByInternalId(d[k.internalId])){a.push(k)}}});var e={};this.weekOverridesStore.each(function(k){Ext.Array.each(k.get("weekAvailability").concat(k.get("mainDay")),function(l){if(l){if(l.__COPYOF__){e[l.__COPYOF__]=true}h.applySingleDay(l,c)}})});j.forEachNonStandardWeek(function(k){Ext.Array.each(k.weekAvailability.concat(k.mainDay),function(l){if(l&&!e[l.internalId]){a.push(l)}})});j.add(c);j.remove(a);j.suspendCacheUpdate--;j.clearCache()}});Ext.define("Gnt.widget.calendar.CalendarWindow",{extend:"Ext.window.Window",requires:["Gnt.widget.calendar.Calendar"],alias:"widget.calendarwindow",calendarConfig:null,calendar:null,calendarWidget:null,initComponent:function(){Ext.apply(this,{width:600,layout:"fit",items:this.calendarWidget=new Gnt.widget.calendar.Calendar(Ext.apply({calendar:this.calendar},this.calendarConfig)),buttons:[{text:"Ok",handler:function(){this.applyChanges();this.close()},scope:this},{text:"Cancel",handler:this.close,scope:this}]});this.callParent(arguments)},applyChanges:function(){this.calendarWidget.applyChanges()}});Ext.define("FT.model.BaseTask",{extend:"Gnt.model.Task",isRemoteLoaded:false,lazyDataLoaded:false,TASK_TYPE_COLUMN_PREFIX:"taskcolumn_",TASK_TYPE_COLUMN_MAX_ROWS:10,MILESTONE_ID:"01decdd1-51cb-11e3-9d5b-20c9d0831e59",TASK_ID:"11c137c0-ee7e-4f9c-91c5-8c77cec22b2c",isMilestone:function(){return this.get("object_typeid")==this.MILESTONE_ID},convertToTask:function(){if(this.isMilestone()===false){return}this.set("object_typeid",this.TASK_ID);this.set("glyph","task")},getDataIndexFromTaskColumnIndex:function(c){var b=this.TASK_TYPE_COLUMN_PREFIX.length,d=36,a=b+d+1;return c.substring(a)},getTaskColumnEntityId:function(b){var a=b.split("_",2);newDataIndex=a.join("_");newDataIndex+="_entityId";return this.raw[newDataIndex]},afterUserEdit:function(c){var b,d,a,e;if(this.isTaskTypeColumn(c)){entityIds=this.getTaskColumnEntityId(c);realDataIndex=this.getDataIndexFromTaskColumnIndex(c);Ext.each(entityIds,function(h,g){record=this.store.getNodeById(h);if(record){record.set(realDataIndex,this.get(c)[g])}},this)}else{if(!this.canHaveChildren()){d=this.parentNode;a=this.TASK_TYPE_COLUMN_PREFIX+this.get("typeid")+"_entityId";e=this.TASK_TYPE_COLUMN_PREFIX+this.get("typeid")+"_"+c;Ext.each(d.raw[a],function(h,g){if(this.get("entityId")===h){var j=Ext.clone(d.get(e));if(Ext.isArray(j)){j[g]=this.get(c);d.set(e,j)}}},this)}}},getParentId:function(){if(this.get("parent_id")==""){return this.get("parentId")}return this.get("parent_id")},findPossibleChildren:function(){var b=[];var a=Ext.data.StoreManager.lookup("FT.store.ObjectType");a.each(function(c){if(this.canBeChildOf(this.get("object_typeid"),c.get("typeid"))){b.push(c)}},this);return b},isTaskTypeColumn:function(a){return Ext.String.startsWith(a,this.TASK_TYPE_COLUMN_PREFIX)},canHaveChildren:function(){return FT.util.canObjectTypeHaveChildren(this.get("object_typeid"))},isLeaf:function(){if(this.canHaveChildren()){return false}return this.callParent()},getEntityId:function(){var a=this.get("entityId");if(a){return a}return this.internalId},isValidBeforeAfter:function(a){var b=true;var c=this.getParent().get("object_typeid");Ext.each(a,function(d){if(!d.isValidDropOn(c)){b=false;return false}},this);return b},isValidAppend:function(a){var b=true;var c=this.get("object_typeid");Ext.each(a,function(d){if(!d.isValidDropOn(c)){b=false;return false}},this);return b},canReorder:function(){if(!this.isManualSort()){return false}var a=this.getEntityType();return["task"].indexOf(a)!=-1},isRemovable:function(){var d=this.getEntityType();var a=["task"];var c="ab77c654-df17-11e2-b2f3-20c9d0831e59";var b=this.get("object_typeid");if(b==c){return false}if(a.indexOf(d)!=-1){return true}return false},getStoreGroup:function(){var a=this.getTaskStore().getStoreGroup();return a},isManualSort:function(){var a;try{a=this.getTaskStore()}catch(b){return false}return a.isManualSort},isAutoBid:function(){var a=this.getTaskStore();var b=a.autoBid;return b},onUpdateTask:function(a){if(!Ext.isArray(a)){return}if(this.get("entityType")!=="task"){this.reject()}if(a.indexOf("bid")!=-1){if(this.isAutoBid()){this.setDurationFromBid()}}if(a.indexOf("EndDate")!=-1){if(this.isMilestone()){this.set("StartDate",this.getEndDate())}}},updateManualSortValues:function(){if(!this.isManualSort()){return}var b=this.getParent();var a=-1;Ext.each(b.childNodes,function(c,d){var e=c.get("sort");if(!Ext.isDefined(e)||e===null||e<=a){c.set("sort",a+1)}a=c.get("sort")})},isSameEntityType:function(a){var d=this.getEntityType();for(var b=0;b<a.length;b++){var c=a[b];if(c.get("entityType")!=d){return false}}return true},unscheduleItem:function(){Ext.each(this.childNodes,function(a){a.unscheduleItem()},this);this.setStartEndDate(null,null)},recalculateParents:function(){var b=new Date(9999,0,0),c=new Date(0),e=this.parentNode;var j,h;if(e&&!e.isRoot()&&e.childNodes.length>0){if(!e.isManuallyScheduled()){for(var d=0,a=e.childNodes.length;d<a;d++){var g=e.childNodes[d];b=Sch.util.Date.min(b,g.getStartDate()||b);c=Sch.util.Date.max(c,g.getEndDate()||c)}j=b-new Date(9999,0,0)!==0&&e.getStartDate()-b!==0;h=c-new Date(0)!==0&&e.getEndDate()-c!==0;if(j&&h){e.setStartEndDate(b,c,false)}else{if(j){e.setStartDate(b,h,false)}else{if(h){e.setEndDate(c,false,false)}else{if(b.getFullYear()==9998&&c.getFullYear()==1970){e.setStartEndDate(null,null,false)}}}}}if(!j&&!h){e.recalculateParents()}}},makeMilestone:function(){if(this.getEntityType()!="task"){return}if(this.getStartDate()==null&&this.getEndDate()==null){}else{this.setStartEndDate(this.getStartDate(),this.getStartDate())}},insertSubtask:function(a,b){this.insertChild(a,b);this.expand()},isOverBid:function(){return this.getPM()<0&&this.get("worked")>0},getPercentDone:function(){var a=this.getProgressValue();if(this.get("bid")==0){a=0}return a},renderEvent:function(){var e=this.getTaskStore().getOverlay();var a={percentDone:0};switch(e){case"pm":if(this.get("leaf")){if(this.isOverBid()){a.style="background-color: #d44040;"}a.percentDone=this.getPercentDone()}break;case"statusid":if(this.get("leaf")){var h=this.get("statusid");var c=Ext.data.StoreManager.lookup("FT.store.TaskStatus");var b=c.findRecord("statusid",h);a.style="background-color: "+b.get("color")+";"}break;case"typeid":if(this.get("leaf")){var d=this.get("typeid");var c=Ext.data.StoreManager.lookup("FT.store.TaskType");var g=c.findRecord("typeid",d);a.style="background-color: "+g.get("color")+";"}break}return a},getPM:function(){return this.get("bid")-this.get("worked")},getProgressValue:function(){var a=this.get("worked")/this.get("bid")*100;if(a>100){return 0}return a},getShowId:function(){var a=this.get("link");if(Ext.isDefined(a.show)){return a.show.id}return this.getTaskStore().getProxy().getReader().jsonData.data.showid},copy:function(d,c){var g=this,b=g.childNodes?g.childNodes.length:0,e;var h=Ext.clone(this.data);delete h.Id;delete h.parentId;h.children=[];var a=Ext.create("FT.model.Task",h);a.set("entityId",a.internalId);if(c){for(e=0;e<b;e++){a.appendChild(g.childNodes[e].copy(Ext.id(),true))}}return a},setInternalId:function(a){this.set("entityId",a);this.set("Id",a);Ext.each(this.childNodes,function(b){b.updateParent()},this)},isValidChild:function(a){var a=this.get("object_typeid");var b={task:["show","sequence","shot"],shot:["sequence"],sequence:["show"]};if(b[entityType]){if(b[entityType].indexOf(dropOnEntityType)!=-1){return true}}return false},canBeChildOf:function(c,g){var a=Ext.data.StoreManager.lookup("FT.store.ObjectType");var d="";var e="";var b=[];a.each(function(h){if(h.get("typeid")==c){d=h.get("name");b=h.get("children")}if(h.get("typeid")==g){e=h.get("name")}},this);if(b.indexOf(g)!=-1){log(e+" dropped on "+d);return true}log(e+" not dropped on "+d);return false},isValidDropOn:function(a){var b=this.get("object_typeid");return this.canBeChildOf(a,b)},getEntityType:function(){return this.get("entityType")},getEntity:function(){return{entityType:this.getEntityType(),entityId:this.get("Id")}},setDefaultName:function(){this.get("typeid")},setDefaultStatusId:function(){var a=this.defaultStatusIdLookup[this.get("object_typeid")];if(a){this.set("statusid",a)}},setDefaultTypeId:function(){var a=this.defaultTypeIdLookup[this.get("object_typeid")];if(a){this.set("typeid",a)}},addObject:function(c){var h=null;var a=null;var g=null;h=this.get("entityId");g=this;var d=c.get("name")+" name";d=this.getNonDuplicatedName(d);var a=this.get("showid");if(this.get("entityType")=="show"){a=this.get("entityId")}assert(h!=null);assert(a!=null);assert(g!=null);var b=Ext.create("FT.model.Task",{name:d,leaf:false,entityType:"task",parent_id:h,glyph:c.get("icon"),object_typeid:c.get("typeid"),showid:a,thumbid:null});b.set("entityId",b.internalId);b.set("leaf",!b.canHaveChildren());if(c.get("typeid")!==this.TASK_ID){if(c.get("isstatusable")){var j=this.defaultStatusIdLookup[b.get("object_typeid")];if(j){b.set("statusid",j)}else{FT.notifyError(Ext.String.format("Unable to create {0}. No default status was found, please update the workflow schema for {0}.",c.get("name")));return null}}if(c.get("istypeable")){var e=this.defaultTypeIdLookup[b.get("object_typeid")];if(e){b.set("typeid",e)}else{FT.notifyError(Ext.String.format("Unable to create {0}. No default type was found, please update the workflow schema for {0}.",c.get("name")));return null}}}g.insertSubtask(0,b);return b},getNonDuplicatedName:function(a){return a},getParent:function(){return this.parentNode},hasValidParent:function(){var a=this.getParent();return a&&!a.isRoot()},updateParentData:function(a){if(!this.hasValidParent()){return}var b=this.getParent();log(b.get("entityId"));log(b.get("entityType"));this.set("parent_id",b.get("entityId"));if(a){Ext.each(this.childNodes,function(c){c.updateParentData(true)},this)}},indent:function(){this.callParent();this.updateParent()},outdent:function(){this.callParent();this.updateParent()},flatten:function(){var a=[this];for(var b=0;b<this.childNodes.length;b++){a=a.concat(this.childNodes[b].flatten())}return a},onBeforeDragCreate:function(){var a=this.flatten();for(var b=0;b<a.length;b++){if(!a[b].canHaveChildren()){return true}}return false},onDragCreate:function(){var d=this.getTaskStore();var e=d.autoBid;var c=d.autoLink;if(this.get("object_typeid")===this.MILESTONE_ID){this.setDuration(0);return}if(this.isLeaf()){if(e){this.setDurationFromBid()}if(c){var a=this.parentNode.childNodes.indexOf(this);var b=[];var h=this.parentNode.childNodes.length;if(a>0){b.push(this.parentNode.childNodes[a-1])}b.push(this);if(h>a+1){var g=this.parentNode.childNodes[a+1];if(g.getEntityType()==this.getEntityType()){b.push(this.parentNode.childNodes[a+1])}}this.createDependencies(b)}return}FT.suspendGantt=true;this.rearrange(e,c);FT.suspendGantt=false;if(this.childNodes.length>0){this.setEndDate(this.childNodes[this.childNodes.length-1].getEndDate(),false)}this.getTaskStore().resumeEvents()},setDurationFromBid:function(){var a=Number(FT.Settings.get("TIME","workday_length"))/3600;if(this.getStartDate()==null||this.getEndDate()==null){return}var b=this.get("bid");if(!FT.util.isDays()){b=24*(b/a)}if(b==0){b=FT.util.isDays()?0.5:12}this.setDuration(b)},getTasksRecursive:function(a,e,b){var j=[];if(!a){return j}if(e.indexOf(a.getId())==-1){e.push(a.getId());j.push(a)}var h=a.getOutgoingDependencies();for(var d=0;d<h.length;d++){var g=h[d];if(b.indexOf(g.getId())!=-1){continue}b.push(g.getId());var c=g.getTargetTask();j=j.concat(this.getTasksRecursive(c,e,b))}h=a.getIncomingDependencies();for(var d=0;d<h.length;d++){var g=h[d];if(b.indexOf(g.getId())!=-1){continue}b.push(g.getId());var c=g.getSourceTask();j=j.concat(this.getTasksRecursive(c,e,b))}return j},getRelatedData:function(){var h=this.getTasksRecursive(this,[],[]);var g=[];for(var c=0;c<h.length;c++){var a=h[c];var b=a.get("userids");if(b!=""){var d=a.get("userids").split(", ");g=g.concat(d)}}var e={tasks:h,userids:Ext.Array.unique(g)};return e},createDependencies:function(b){function a(d,c){return d.get("tasktypesort")-c.get("tasktypesort")}b.sort(a);this.getDependencyStore().connectDependencies(b)},isScheduled:function(){if(this.getStartDate()!=null||this.getEndDate()!=null){return true}return false},rearrange:function(e,d){var c=this.getTaskStore();var b=this.getStartDate();var a=[];Ext.each(this.childNodes,function(g){g.beginEdit();if(g.isScheduled()&&g.isLeaf()){return true}if(e){g.setStartEndDate(b,b,false);g.setDurationFromBid();b=g.getEndDate()}else{g.setStartEndDate(b,this.getEndDate(),false)}if(!g.isLeaf()){g.rearrange(e,d);if(g.childNodes.length>0){g.setEndDate(g.childNodes[g.childNodes.length-1].getEndDate(),false)}}else{a.push(g)}g.endEdit()},this);if(d){this.createDependencies(a)}},adjustToBid:function(){if(this.get("leaf")){this.setDurationFromBid()}Ext.each(this.childNodes,function(a){a.adjustToBid()},this)},updateParent:function(){var b=this.parentNode;var c=b.get("entityId");if(b.get("id")=="root"){var a=b.getTaskStore();c=a.getProxy().extraParams.entityId}this.set("parent_id",c)},getColumnData:function(a){return this.columnDataLookup[a]},getColumnEntityType:function(a){assert(false,"do not use this anymore");var b=this.getColumnData(a);var c=b.entityType;if(Ext.isArray(c)){return c}return[c]},getColumnObjectTypeIds:function(b){var c=this.getColumnData(b);var a=c.objectTypeIds;if(Ext.isArray(a)){return a}return[a]},isEditable:function(b){if(this.get("entityId")==""&&this.phantom==false){return false}if(this.isTaskTypeColumn(b)&&!Ext.isDefined(this.getTaskColumnEntityId(b))){return false}var a=this.getColumnObjectTypeIds(b).indexOf(this.get("object_typeid"))!=-1;return a},isCellEditable:function(c){var b=false;if(this.isEditable(c)){var a=this.getColumnData(c)||{};if(a.editor){b=true}}return b},getSummaryRenderer:function(column){if(column.dataIndex!="statusid"){return this.getRenderer(column)}if(column.selectedSummaryRenderer){return column.selectedSummaryRenderer}if(column.renderName){var store=Ext.data.StoreManager.lookup("FT.store.Viewers");var renderer=null;store.each(function(item){if(item.get("ftype")==column.ftype&&item.get("renderName")==column.renderName){renderer=eval(item.get("summaryRenderer"))}},this);if(renderer){column.selectedSummaryRenderer=renderer;return renderer}}return null},getRenderer:function(column){if(column.selectedRenderer){return column.selectedRenderer}if(column.customRenderer){var renderer=eval(column.customRenderer);column.selectedRenderer=renderer;return renderer}if(column.renderName){var store=Ext.data.StoreManager.lookup("FT.store.Viewers");var renderer=null;store.each(function(item){if(item.get("ftype")==column.ftype&&item.get("renderName")==column.renderName){renderer=eval(item.get("renderer"))}},this);if(renderer){column.selectedRenderer=renderer;return renderer}}return this.standardViewers[column.ftype]},isMultiLine:function(a){var b=this.getColumnData(a);return a==="description"||a==="rollup_latest_version"||b&&a.startsWith("__")&&b.ftype==="string"},renderRecord:function(m,p,t,q,k,h,n){var d=n.getHeaderAtIndex(k);var B=d.dataIndex;var e=this.getColumnData(B);var w=this.getRenderer(d);var s=this.isCellEditable(B);var o=this.isTaskTypeColumn(B);if(s&&!o&&p&&Ext.isString(p.tdCls)){p.tdCls+=" cell--editable"}var C=this.isMultiLine(B);if(o){p.tdCls+=" cell--multi-row"}else{if(C){p.tdCls+=" cell--multi-line"}else{p.tdCls+=" cell--single-line"}}if(B=="statusid"&&this.canHaveChildren()&&this.getSummaryRenderer(d)||!this.isEditable(B)&&Ext.isDefined(e.summaryType)){var x=this.getSummaryRenderer(d);if(!x){return""}var l=this.renderSummary(B,e.summaryType,w);if(l==null){return""}return x(l,p,t,q,k,h,n)}else{if(d.summaryType==null&&!this.isEditable(B)){if(B!="typeid"){return""}var h=Ext.data.StoreManager.lookup("FT.store.ObjectType");typeRecord=h.findRecord("typeid",t.get("object_typeid"));if(typeRecord&&typeRecord.get("istypeable")==false){return w.apply(this,arguments)}}else{if(!this.isEditable(B)){return""}}}if(w){var z="";if(o){var c=s?"cell--editable":"";var A=n.panel.ownerCt.lockedOnly&&m.length;if(A){c+=" cell__inner-row"}var a=Ext.Array.map(m,function(F,E){var D=w.apply(this,[F,p,t,q,k,h,n]);return Ext.String.format('<div class="{0}"><div class="{1}" task-column-index="{2}">{3}</div></div>',c,"cell__inner-row-cell",E,D)},this);var u;var j;if(A){u=a.slice(this.TASK_TYPE_COLUMN_MAX_ROWS);j=a.slice(0,this.TASK_TYPE_COLUMN_MAX_ROWS).join("")}else{u=a.slice(1);j=a.slice(0,1).join("")}if(u.length){var b=true;if(k>0){var y=n.getHeaderAtIndex(k-1).dataIndex;if(this.isTaskTypeColumn(y)&&B.split("_")[1]===y.split("_")[1]){b=false}}if(b){var g=FT.i18n("There {number, plural, one {is # more task} other {are # more tasks}} hidden.",{values:{number:u.length}});if(!A){g+=" "+FT.i18n("Expand object or hide the schedule to see more.")}j=Ext.String.format('<span class="cell__overflow-indicator" data-qtip="{0}">+{1}</span>{2}',g,u.length,j)}}return j}if(s&&p&&p.tdCls){p.tdCls+=" cell--editable"}return z+w.apply(this,arguments)}else{return m}},getSummaryType:function(a){var b=this.getColumnData(a);return b.summaryType},renderSummary:function(c,e,d){var a="";var b=this.aggregate(true);if(b==null){return null}if(this.summaries[e]){a=this.summaries[e](b,null,c)}return a},aggregate:function(e){var b=[],c,d,a;if(!this.canHaveChildren()){b.push(this)}for(c=0;c<this.childNodes.length;c++){d=this.childNodes[c];if(e&&!d.data.loaded&&!d.isLeaf()){return null}a=d.aggregate(e);if(e&&a==null){return null}b=b.concat(a)}return b},getSortValue:function(dataIndex,summaryType){if(dataIndex=="link"){if(this.get("entityType")==="group"){var group=this.raw.groupField;if(this.get("name")==="NO_GROUP"){return null}if(this.sortersForValue[group]){return this.sortersForValue[group](this.get("name"))}var columnData=this.getColumnData(group);if(Ext.isString(columnData.renderer)){var renderer;if(columnData.renderer==="FTrack.grid.markdownRenderer"){renderer=FTrack.grid.StripHtmlRenderer}else{renderer=eval(columnData.renderer)}return renderer(this.get("name"))}return this.get("name")}return FTrack.grid.LinkRendererPrint(this.get("link"))}else{if(this.sortersForRecord[dataIndex]){return this.sortersForRecord[dataIndex](this,["task"])}else{if(summaryType){return this.getGroupValue(dataIndex,summaryType)}else{return this.get(dataIndex)}}}},getGroupValue:function(a,c){var b=this.summaries[c];if(!b){return this.get(a)}return b(this.aggregate(),["task"],a)},sortersForRecord:{typeid:function(a,e){var d=Ext.data.StoreManager.lookup("FT.store.TaskType"),c,b=0;c=d.findRecord("typeid",a.get("typeid"));if(c){b=c.get("sort")}return b},priorityid:function(a,e){var c=Ext.data.StoreManager.lookup("FT.store.PriorityType"),d,b=0;d=c.findRecord("priorityid",a.get("priorityid"));if(d){b=d.get("sort")}return b},statusid:function(b,j){var e=b.aggregate(),h=e.length,a=0,d=0,c=Ext.data.StoreManager.lookup("FT.store.TaskStatus"),g;if(h==0){return -1}for(;a<h;a++){if(!j||j.indexOf(e[a].get("entityType"))!=-1){g=c.findRecord("statusid",e[a].get("statusid"));if(g){d+=g.get("sort")}}}return d/h}},sortersForValue:{userids:function(c){var b=Ext.data.StoreManager.lookup("FT.store.User"),a=[];Ext.each(c.split(", "),function(d){var e=b.findRecord("userid",d);if(e){a.push(e.get("name"))}});return a.sort().join(",")},typeid:function(d){var c=Ext.data.StoreManager.lookup("FT.store.TaskType"),b,a=0;b=c.findRecord("typeid",d);if(b){a=b.get("sort")}return a},priorityid:function(c){var b=Ext.data.StoreManager.lookup("FT.store.PriorityType"),d,a=0;d=b.findRecord("priorityid",c);if(d){a=d.get("sort")}return a},statusid:function(d){var b=Ext.data.StoreManager.lookup("FT.store.TaskStatus"),c,a=0;c=b.findRecord("statusid",d);if(c){a=c.get("sort")}return a}},summaries:{sum:function(b,g,d){var a=0;for(var c=0;c<b.length;c++){var e=b[c];if(!g||g.indexOf(e.get("entityType"))!=-1){a+=e.get(d)}}return a},status:function(b,g,d){var a=[];for(var c=0;c<b.length;c++){var e=b[c];if(!g||g.indexOf(e.get("entityType"))!=-1){a.push(e.get(d))}}return a},max:function(b,h,d,g){var a=null;for(var c=0;c<b.length;c++){var e=b[c];if(!h||h.indexOf(e.get("entityType"))!=-1){if(e.get(d)>a){a=e.get(d)}}}return a},min:function(b,h,d,g){var a=null;for(var c=0;c<b.length;c++){var e=b[c];if(!h||h.indexOf(e.get("entityType"))!=-1){if(e.get(d)<a||a==null){if(e.get(d)!=null){a=e.get(d)}}}}return a}},set:function(){return this.callParent(arguments)},updateLag:function(){var a=this.getDependencyStore();a.suspendEvents();var b=this.getOutgoingDependencies();Ext.each(b,function(c){task=c.getTargetTask();var d=FT.util.days_between(task.getStartDate(),this.getEndDate());c.setLag(d);task.updateLag()},this);a.resumeEvents()},expand:function(a,c,b){if(!this.isLoaded()&&!this.isLeaf()&&!this.isRoot()){this.isRemoteLoaded=true}if(a&&this.isRemoteLoaded){FT.notifyError(FT.i18n("Cannot expand all rows. Please filter or expand manually."));return}this.callParent(arguments)}});Ext.define("FT.scheduler.TreeState",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},constructor:function(a){Ext.apply(this,a);this.nodeStateStorage=Ext.create("Ext.state.LocalStorageProvider",{prefix:"ft-treestate-"});if(this.store){this.bindStore(this.store)}this.mixins.observable.constructor.call(this);this.callParent(arguments)},bindStore:function(a){this.store=a;this.store.onProxyLoad=Ext.Function.createInterceptor(this.store.onProxyLoad,this.onProxyLoad,this);this.mon(this.store,{expand:this.onExpand,collapse:this.onCollapse,scope:this})},getNodeStateStorageKey:function(){var a=FT.app.location.getProjectId()||"no-project";return a},getNodeStates:function(){var a=this.nodeStateStorage.get(this.getNodeStateStorageKey());if(!Ext.isObject(a)){a={}}return a},setNodeState:function(c,b){if(c==="root"){return}var a=this.getNodeStates();a[c]=b;this.nodeStateStorage.set(this.getNodeStateStorageKey(),a)},onCollapse:function(a){this.setNodeState(a.internalId,false)},onExpand:function(a){this.setNodeState(a.internalId,true)},onProxyLoad:function(b){if(!b.wasSuccessful()){return}var a=b.getRecords();this._nodeStates=this.getNodeStates();for(var c=0;c<a.length;c++){if(a[c].raw){this.expandCollapse(a[c].raw)}if(a[c].data){this.expandCollapse(a[c].data)}}},expandCollapse:function(c){var b=this._nodeStates[c.Id];if(!c.children){return}if(typeof b!=="undefined"){c.expanded=b}for(var a=0;a<c.children.length;a++){this.expandCollapse(c.children[a])}}});Ext.define("FT.data.MirrorRecords",{constructor:function(a){Ext.apply(this,a);this.callParent(arguments);this.ignore=Ext.value(this.ignore,[]);this.byId=Ext.value(this.byId,"entityId");this.syncLock=false},syncRecords:function(b,a){if(this.syncLock){return}this.syncLock=true;b.each(function(c){if(c.internalId!=a.internalId&&c.get(this.byId)==a.get(this.byId)){c.beginEdit();Ext.iterate(a.data,function(d,e){if(this.ignore.indexOf(d)==-1){c.set(d,e)}},this);c.endEdit()}},this);this.syncLock=false}});Ext.define("FT.data.SyncAssignee",{constructor:function(a){Ext.apply(this,a);this.callParent(arguments);this.ignore=Ext.value(this.ignore,[]);this.byId=Ext.value(this.byId,"entityId");this.syncLock=false},syncRecords:function(d,a){var c=Ext.clone(a.getUsers());var b=a.get("taskid");d.each(function(e){if(e.get("taskid")==b){Ext.Array.remove(c,e.get("ResourceId"))}if(e.getUsers().indexOf(e.get("ResourceId"))==-1&&e.get("ResourceId")!=e.get("typeid")){e.set("ResourceId",e.get("typeid"))}},this);Ext.each(c,function(g,e,j){var k=Ext.clone(a.data);k.ResourceId=g;var h=d.add(k)[0];h.modified=Ext.clone(a.modified);h.dirty=a.dirty;h.phantom=true},this)}});Ext.define("FT.model.Dependency",{extend:"Gnt.model.Dependency",toField:"to_id",fromField:"from_id",lagField:"lag",typeField:"type",fields:[{name:"from_id"},{name:"to_id"},{name:"entityType",defaultValue:"dependency"},{name:"type",type:"int",defaultValue:2},{name:"lag",type:"int",defaultValue:0},{name:FT.data.UndoRedoHelperBase.removeGUID,defaultValue:false}]});Ext.define("FT.model.PlanningBoardEvent",{extend:"Sch.model.Event",fields:["type","bid","worked","statusid","typeid","entityId","entityType","link","userids",{name:"StartDate",type:"date",dateFormat:"c",mapping:"startdate"},{name:"EndDate",type:"date",dateFormat:"c",mapping:"enddate"}]});Ext.define("FT.model.PlanningBoardResource",{extend:"Sch.model.Resource",fields:["typeid","type","userids",{name:"Name",type:"auto"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.SchedulerTaskModel",fields:[],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getSchedulerTaskModel"},reader:{type:"json"}},listeners:{load:function(b){var c=b.getProxy().getReader().rawData;var a=[];Ext.each(c.columns,function(e){var d=FT.util.columnToField(e);if(e.dataIndex=="StartDate"){delete d.defaultValue;d.dateFormat="c";d.mapping="startdate"}if(e.dataIndex=="EndDate"){delete d.defaultValue;d.dateFormat="c";d.mapping="enddate"}a.push(d)},this);a.push({name:FT.data.UndoRedoHelperBase.removeGUID,defaultValue:false});a.push("type");b.createSchedulingModel(a)}},createSchedulingModel:function(a){Ext.define("FT.model.TaskEvent",{extend:"Sch.model.Event",fields:a,unAssign:function(){this.beginEdit();this.setUsers([]);this.endEdit()},adjustToBid:function(){var d=this.get("bid");if(!FT.util.isDays()){d=FT.util.hoursToDays(d)}var c=Ext.Date.clone(this.get("StartDate"));var b=Ext.Date.add(c,Ext.Date.DAY,d);this.set("EndDate",b)},getUsers:function(){var b=this.get("userids");return b!=""?b.split(", "):[]},setUsers:function(b){return this.set("userids",b.join(", "))},isMilestone:function(){var c=this.get("StartDate");var b=this.get("EndDate");return c&&b&&c.getTime()==b.getTime()},set:function(D,y){var u=this.get(D);this.callParent(arguments);if(!this.store||!this.store.mirrorRecords||this.store.mirrorLock||u==y||this.store.undoRedo&&this.store.undoRedo.isLocked()){return}var h=this;var l=this.store;this.store.mirrorLock=true;if(D=="ResourceId"){var b=Ext.data.StoreManager.lookup("FT.store.TaskType");var j=l.findRecord("typeid",y);if(!j){var e=this.getResource();var d=e.getEvents();var c=this.get("taskid");var g=false;for(var q=0;q<d.length;q++){if(d[q]!=this&&d[q].get("taskid")==c){g=d[q]}}if(g){l.undoRedo?l.undoRedo.remove(g):l.remove(g)}var s=Ext.clone(this.getUsers());s=Ext.Array.remove(s,u);s.push(y);s=Ext.Array.unique(s);this.setUsers(s)}}if(D=="userids"){var m=u!=""?u.split(", "):[];var o=y!=""?y.split(", "):[];var c=this.get("taskid");var C=Ext.Array.difference(m,o);var p=Ext.Array.difference(o,m);var z=p.length<C.length?p.length:C.length;var k=C.slice(0,z);var B=p.slice(0,z);C=C.slice(z,C.length);p=p.slice(z,p.length);var n=p.length-C.length;if(z>0){}for(var q=0;q<z;q++){var x=k[q];var t=l.findBy(function(E){return E.get("ResourceId")==x&&E.get("taskid")==c});var h=l.getAt(t);h.set("ResourceId",B[q])}if(n>0){if(m.length==0){var b=Ext.data.StoreManager.lookup("FT.store.TaskType");var j=l.findRecord("typeid",this.get("ResourceId"));if(!j){throw"This record should be on a type resource"}this.set("ResourceId",p[0]);p=p.slice(1,p.length)}Ext.each(p,function(F,E,H){var I=Ext.clone(h.data);I.ResourceId=F;var G=l.add(I)[0];G.modified=Ext.clone(h.modified);G.dirty=h.dirty;G.phantom=true},this)}if(n<0){var A=[];for(var q=0;q<C.length;q++){var x=C[q];var t=l.findBy(function(E){return E.get("ResourceId")==x&&E.get("taskid")==c});A.push(l.getAt(t))}if(o.length==0){A[0].set("ResourceId",A[0].get("typeid"));A=A.slice(1,A.length)}l.undoRedo?l.undoRedo.remove(A):l.remove(A)}}var w=l.ignoreMirror;var c=this.get("taskid");l.each(function(E){if(E!=this&&E.get("taskid")==c){E.beginEdit();Ext.iterate(h.data,function(F,G){if(w.indexOf(F)==-1){E.set(F,G)}},this);E.endEdit()}},this);delete l.mirrorLock},removeDuplicates:function(){var d={};var b=this.store.data.items;var c=b.length}})}});Ext.ns("FT.scheduler");Ext.define("FT.scheduler.ViewModel_v1",{extend:"FT.ViewModel",fields:[{name:"columns",type:"auto",defaultValue:"[]"},{name:"columnData",type:"auto",defaultValue:"{}"},{name:"entityId",type:"string"},{name:"filterData",type:"string",defaultValue:""},{name:"groupBy",type:"string",defaultValue:"link"},{name:"sortDataIndex",type:"string",defaultValue:""},{name:"sortDirection",type:"string",defaultValue:""},{name:"collapsedTaskColumns",type:"array",defaultValue:"[]"}],viewType:"gantt",setColumnData:function(a,c){var b=this.getAllColumnData();if(!Ext.isDefined(b[a])){b[a]={}}Ext.apply(b[a],c);this.set("columnData",Ext.encode(Ext.clone(b)))},getAllColumnData:function(){return Ext.clone(Ext.decode(this.get("columnData")))},getColumnData:function(a){var b=Ext.clone(Ext.decode(this.get("columnData")));if(!Ext.isDefined(b[a])){return{}}return b[a]},getColumns:function(){var a=this.get("columns");var c=[];try{c=Ext.decode(a)}catch(b){c=[]}if(!Ext.isArray(c)){return[]}return c},setColumns:function(a){if(a==null||!Ext.isDefined(a)){a=[]}if(Ext.isArray(a)){this.set("columns",Ext.encode(Ext.clone(a)))}},setGroup:function(a){return this.set("groupBy",a)},getGroup:function(){var a=this.get("groupBy");if(Ext.isEmpty(a)){return"link"}return a},setFilterData:function(a){if(a&&!a.length){this.set("filterData","")}else{this.set("filterData",a)}this.set("filterId","")},getFilterData:function(){var a=this.get("filterData"),b;if(Ext.isEmpty(a)){return[]}b=Ext.decode(a);Ext.each(b,function(c){Ext.applyIf(c,{presentation:"advanced"})});return b},setCollapsedColumn:function(b,a){var c=Ext.decode(this.get("collapsedTaskColumns"));if(a){c.push(b)}else{Ext.Array.remove(c,b)}this.set("collapsedTaskColumns",Ext.encode(Ext.Array.unique(c)))},getCollapsedColumn:function(a){return Ext.decode(this.get("collapsedTaskColumns")).indexOf(a)!==-1},setSort:function(a,b){this.set("sortDataIndex",a);this.set("sortDirection",b)},getSort:function(){var a=this.get("sortDataIndex");var b=this.get("sortDirection");if(a&&b){return{property:this.get("sortDataIndex"),direction:this.get("sortDirection")}}else{return null}}});Ext.create("FT.store.ViewsStore",{model:"FT.scheduler.ViewModel_v1",storeId:"FT.store.GanttViews",viewType:"gantt",title:FT.i18n("My Task views")});Ext.ns("FT.scheduler");Ext.define("FT.scheduler.GanttColumnHelper",{extend:"Ext.util.Observable",enableCreateAttribute:true,TASK_COLUMN_PREFIX:"taskcolumn_",LAZY_COLUMNS:["^lastnotes$","^lastnotes__","^taskcolumn_","^rollup_","^listids$","^thumbid$"],lazyColumnsRegExp:undefined,constructor:function(a){if(this.LAZY_COLUMNS.length){this.lazyColumnsRegExp=new RegExp(this.LAZY_COLUMNS.join("|"))}if(!Ext.isDefined(a.view)){Ext.Error.raise({msg:"You will need to supply a view!"})}this.extraGroups=[];this.mandatoryColumns=["rownumber","shortcut","name","showid"];this.forcedColumnOrder=["rownumber","thumbid","shortcut","name"];this.calculatedColumns=[{dataIndex:"rownumber",xtype:"rownumberer"},{dataIndex:"Duration",group:FT.i18n("Task"),text:FT.i18n("Duration (dates)"),entityType:"task",width:100}];this.overridenColumns=["StartDate","EndDate","Duration","rownumber","shortcut"];Ext.apply(this,a);this.createColumnSelector(this.view.getColumns());this.callParent(arguments);this.on("groupChanged",this.onGroupChanged,this)},onGroupChanged:function(a){if(this.groupSelector){this.groupSelector.select(a)}},getSelectedColumns:function(){var b=[];var c=[];this.columnSelectorStore.each(function(d){c.push(d.get("value"))},this);var a=Ext.clone(this.getView().getColumns());Ext.each(a,function(d){if(c.indexOf(d)!=-1){b.push(d)}},this);return b},getAllSelectionColumns:function(){var a=[];this.columnSelectorStore.each(function(b){a.push(b.get("value"))},this);return a},getView:function(){return this.view},getServerColumns:function(g){if(!Ext.isDefined(g)){g=false}var c=[];Ext.each(this.getColumns(),function(k,h,j){if(k.mandatoryStoreField||k.hidden){c.push(k.dataIndex)}if(Ext.isDefined(k.xtype)&&k.xtype=="ft-actioncolumn"&&Ext.isDefined(k.items)){k.renderer=undefined;Ext.each(k.items,function(n,l,m){if(Ext.isDefined(n.dataIndex)&&Ext.isDefined(n.innerRenderer)){c.push(n.dataIndex)}},this)}},this);var b=[];if(g){b=this.getAllSelectionColumns()}else{b=this.getSelectedColumns()}var d=Ext.Array.pluck(this.calculatedColumns,"dataIndex");for(var e=0;e<d.length;e++){var a=b.indexOf(d[e]);if(a!=-1){b=Ext.Array.erase(b,a,1)}}return Ext.Array.merge(b,c)},isLazyColumn:function(a){return this.lazyColumnsRegExp&&this.lazyColumnsRegExp.test(a)},getNonLazyServerColumns:function(a){var c=this.getServerColumns(a),b=[];Ext.each(c,function(g,d,e){if(!this.isLazyColumn(g)){b.push(g)}},this);return b},getLazyServerColumns:function(a){var c=this.getServerColumns(a),b=[];Ext.each(c,function(g,d,e){if(this.isLazyColumn(g)){b.push(g)}},this);return b},getRenderColumns:function(){return Ext.Array.merge(this.mandatoryColumns,this.getSelectedColumns())},getPermissions:function(){return this.data.permissions},getRenderColumnsData:function(){var c=[],a,d,b=this.getRenderColumns();this.mandatoryFields=[];Ext.each(this.getColumns(),function(h,e,g){e=b.indexOf(h.dataIndex);d=this.forcedColumnOrder.indexOf(h.dataIndex);if(e!=-1&&d!=-1){h.sort=d;c.push(h)}else{if(e!=-1){h.sort=e+10000;c.push(h)}}},this);return c},getColumnsFromServer:function(b,a,d,c){this.entity=b;Ext.Ajax.request({url:"/track/getGanttColumns",params:{entityId:b.entityId,entityType:b.entityType,showId:a},success:function(e){var h=Ext.decode(e.responseText);this.showId=h.showId;if(!h.isNewShow){d.apply(c,[this,false,h.showId]);return}this.data=h;var g=this.generateColumnStoreData(this.getColumns());this.columnSelectorStore.loadData(g);this.fireEvent("columnsLoaded",this.getColumns());d.apply(c,[this,true,h.showId])},scope:this})},generateColumnStoreData:function(a){var b=[];Ext.each(a,function(d){if(!d.hidden&&this.mandatoryColumns.indexOf(d.dataIndex)==-1){b.push({name:d.text,value:d.dataIndex,group:d.group})}},this);return b},createColumnSelector:function(b){if(!Ext.isDefined(b)||!Ext.isArray(b)){b=[]}this.columnSelectorStore=Ext.create("Ext.data.Store",{fields:["name","value","group"],mode:"local",proxy:{type:"memory",reader:{type:"json"}},sorters:[{property:"name",direction:"asc"}]});this.delayedReconfigure=new Ext.util.DelayedTask(function(){this.fireEvent("columnsChanged",Ext.clone(this.getSelectedColumns()))},this);var a=[];if(this.enableCreateAttribute){a=[{text:FT.i18n("Create attribute"),handler:function(){var c=FT.CreateAttributeFactory.create("gantt",this.entity);this.relayEvents(c,["createdField"])},scope:this},"-"]}this.columnSelector=Ext.create("FT.button.Selector",{cls:"ftrack-button-grey",text:FT.i18n("Attributes"),itemType:"checkbox",store:this.columnSelectorStore,displayField:"name",valueField:"value",selectAction:undefined,beforeItems:a,value:b,listeners:{selectionchanged:function(c){FT.util.sortArrayUsingArray(c,this.getView().getColumns());this.getView().setColumns(c);this.columnSelector.menu.on("hide",function(){this.delayedReconfigure.delay(10)},this)},scope:this}});return this.columnSelector},getColumnSelector:function(){return this.columnSelector},isCustomAttribute:function(a){return a.substr(0,2)==="__"},getTaskColumns:function(){var c=[];var d=[];var a=Ext.data.StoreManager.lookup("FT.store.ObjectType");var b=FT.i18n("Task columns");a.each(function(e){if(e.get("istaskable")){d.push(e.get("typeid"))}});Ext.each(this.data.columns,function(e){if(e.objectTypeIds.indexOf(FT.getTaskId())===-1||e.hidden||e.dataIndex=="typeid"){return true}if(!e.editor&&this.isCustomAttribute(e.dataIndex)===false){return true}Ext.each(this.data.taskTypes,function(g){var h=Ext.clone(e),j=h.dataIndex;h.mandatoryStoreField=false;h.group=[b,g.name];h.id="taskcolumn_"+g.typeid+"_"+h.dataIndex;h.dataIndex="taskcolumn_"+g.typeid+"_"+h.dataIndex;h.taskColumnGroup=g.name;h.taskColumnGroupId="taskcolumn_"+g.typeid;h.filter=false;h.groupable=false;h.objectTypeIds=d;h.lockable=false;h.isHeaderstats=false;delete h.summaryType;if(Ext.isDefined(h.editor)&&h.editor.editDataIndex===j){h.editor.editDataIndex=h.dataIndex}h.tdCls="ft-grid-tasktype-"+g.typeid+" bg";h.cls="ft-grid-tasktype-"+g.typeid+" bg";delete h.defaultValue;c.push(h)},this)},this);c.sort(function(g,e){return g.taskColumnGroup.localeCompare(e.taskColumnGroup)});return c},getColumns:function(){var a=Ext.clone(this.data.columns);a=Ext.Array.merge(a,this.calculatedColumns);a=Ext.Array.merge(a,this.getTaskColumns());return a},getModelFields:function(){var a=[];var b=this.getSelectedColumns();Ext.each(this.getColumns(),function(e){if(this.overridenColumns.indexOf(e.dataIndex)!=-1){return}if(e.id&&e.id.startsWith("taskcolumn_")&&b.indexOf(e.id)==-1){return}var d=FT.util.columnToField(e);if(e.taskColumnGroup){d.useNull=true;d.type="auto"}a.push(d)},this);a.push({name:"tasktypesort",type:"int"});return a},createGridColumns:function(){var dateColumnsFtype="date",dateColumnsEditorXtype="datefield";if(FT.Settings.get("TIME","display_task_dates_as_time")){dateColumnsFtype="time";dateColumnsEditorXtype="datetimefield"}var renderer=function(v,meta,r,ri,ci,store,view){try{var group=r.getStoreGroup();var column=view.getHeaderAtIndex(ci);var linkRend=r.getRenderer(column);if(!r.isLeaf()&&group!="link"&&group!="shots_only"){column=r.getColumnData(group);var renderer;if(Ext.isString(column.renderer)){if(column.renderer==="FTrack.grid.markdownRenderer"){renderer=FTrack.grid.StripHtmlRenderer}else{renderer=eval(column.renderer)}}else{renderer=r.standardViewers[column?column.ftype:"string"]}var value=r.get("name");if(value==="NO_GROUP"){return Ext.String.format('<span class="cell__group-header text-faded">{0}</span>',FT.i18n("Other"))}else{var renderedGroupValue=renderer(r.get("name"));var groupClassName=renderedGroupValue&&renderedGroupValue.charAt(0)==="<"?"cell__group-header cell__group-header-block":"cell__group-header";return Ext.String.format('<span class="{0}">{1}</span>',groupClassName,renderedGroupValue)}}if(ri!=0||group=="link"&&r.get("entityType")!="show"){meta.tdCls+=" cell--editable"}if(group!="link"){if(r.get("link")==""){return r.get("name")}return linkRend(r.get("link"),meta,r,ri,ci,store,view)}var entityType=r.get("entityType");if(entityType==="show"){fakeLink=r.get("link")}else{fakeLink=[{name:r.get("name"),id:r.get("entityId"),type:entityType}]}meta.style="margin-right:20px;";return linkRend(fakeLink,meta,r,ri,ci,store,view)}catch(e){return"Ooops, sorry!"}};var customFunction=function(v,meta,r,ri,ci,store,view){try{return r.renderRecord.apply(r,arguments)}catch(e){log(view.getGridColumns());log(view.getHeaderAtIndex(ci));return"Ooops, sorry!"}};var objectTypeIds=[];var store=Ext.data.StoreManager.lookup("FT.store.ObjectType");store.each(function(r){objectTypeIds.push(r.get("typeid"))},this);var ganttColumnOverrides={thumbid:{itemId:"thumbnail",dataIndex:"thumbid",width:50,sortable:false,draggable:false,hideable:false,renderer:function(value,meta,record){if(record.lazyDataLoaded===false&&record.getEntityType()==="task"){return""}return FTrack.grid.IconRendererFit.apply(null,arguments)},resizable:false},rownumber:{xtype:"rownumberer",width:50,align:"center",renderer:function(value,metaData,record,rowIdx,colIdx,store){metaData.tdCls="text-faded";return rowIdx+1}},shortcut:{dataIndex:"shortcut",xtype:"glyphactioncolumn",width:30,menuDisabled:true,sortable:false,draggable:false,resizable:false,items:[{glyph:"note",getClass:function(field,metadata,record,row,column,store){if(record.raw.notes){return"icon--actioncolumn-visible"}else{return""}},handler:FT.action.fn.viewNotesHandler}]},name:{ftype:"ftrack_link",xtype:"treecolumnglyph",header:FT.i18n("Tasks"),sortable:true,dataIndex:"name",sortable:true,width:200,attributeid:"name",draggable:false,hideable:false,renderer:renderer,tdCls:"ft-tasks-grid ft-gnt-col-editor",editor:{xtype:"textfield",selectOnFocus:true},objectTypeIds:objectTypeIds},Duration:{xtype:"durationcolumn",dataIndex:"Duration",text:FT.i18n("Duration"),group:"Task",sortable:true,width:100},StartDate:{text:FT.i18n("Start date"),dataIndex:"StartDate",ftype:dateColumnsFtype,renderer:customFunction,attributeid:"StartDate",tdCls:"ft-gnt-col-editor",summaryType:null,xtype:"startdatecolumnoverride",format:FT.Settings.get("FORMAT","date"),editorFormat:"Y-m-d H:i:s",sortable:true,field:{startDay:Number(FT.Settings.get("TIME","week_startday")),xtype:dateColumnsEditorXtype,format:FT.Settings.get("FORMAT","date")}},EndDate:{text:FT.i18n("Due date"),dataIndex:"EndDate",attributeid:"EndDate",ftype:dateColumnsFtype,renderer:customFunction,summaryType:null,xtype:"enddatecolumn",tdCls:"ft-gnt-col-editor",format:FT.Settings.get("FORMAT","date"),editorFormat:"Y-m-d H:i:s",sortable:true,field:{startDay:Number(FT.Settings.get("TIME","week_startday")),xtype:dateColumnsEditorXtype,format:FT.Settings.get("FORMAT","date")}}};var columns=this.getRenderColumnsData();var finalColumns=[];var groupColumns={};Ext.each(columns,function(c,idx,all){if(Ext.isDefined(ganttColumnOverrides[c.dataIndex])){var colOverrride=ganttColumnOverrides[c.dataIndex];colOverrride.sort=c.sort;Ext.apply(colOverrride,this.getView().getColumnData(c.dataIndex));finalColumns.push(colOverrride);return}if(c.renderer){c.customRenderer=c.renderer}c.renderer=customFunction;if(Ext.isDefined(c.editor)&&Ext.isDefined(c.editor.validator)){c.editor.validator=eval(c.editor.validator)}if(Ext.isDefined(c.printRenderer)){c.printRenderer=eval(c.printRenderer)}if(Ext.isDefined(c.summaryRenderer)){c.summaryRenderer=eval(c.summaryRenderer)}if(Ext.isDefined(c.summaryTypeFn)){c.summaryType=eval(c.summaryTypeFn)}if(Ext.isDefined(c.handler)){c.handler=eval(c.handler)}c.itemId=Ext.isDefined(c.id)?c.id:c.dataIndex;c.headerId=Ext.isDefined(c.id)?c.id:c.dataIndex;delete c.id;var existingTdCls=c.tdCls?c.tdCls:"";c.tdCls=c.editor?existingTdCls+" ft-gnt-col-editor":existingTdCls;c.renderName="Standard";Ext.apply(c,this.getView().getColumnData(c.dataIndex));if(c.text){c.text=FT.util.string.cleanAttributeName(c.text)}var view=this.getView();if(c.taskColumnGroup){var group=groupColumns[c.taskColumnGroup];if(!group){group={sealed:true,text:c.taskColumnGroup,taskColumnGroupId:c.taskColumnGroupId,isTaskColumnGroup:true,columns:[],sort:c.sort};finalColumns.push(group)}group.columns.push(c);groupColumns[c.taskColumnGroup]=group;function sortfunc(a,b){return a.sort-b.sort}group.columns.sort(sortfunc);if(view.getCollapsedColumn(group.taskColumnGroupId)){Ext.each(group.columns,function(column,index){column.hidden=index>0})}}else{finalColumns.push(c)}},this);function sortfunc(a,b){return a.sort-b.sort}finalColumns.sort(sortfunc);return finalColumns},reorderColumns:function(c){var b=this.getSelectedColumns();function a(e,d){var h=c.indexOf(e);var g=c.indexOf(d);return h-g}b.sort(a);this.getView().setColumns(b);this.fireEvent("columnsMoved",this.getSelectedColumns())},setColumnWidth:function(b,a){this.getView().setColumnData(b,{width:a})},setColumnRenderer:function(b,a){this.getView().setColumnData(b,{renderName:a})},getStandardViewers:function(){var viewers=Ext.clone(this.data.viewers);var standardViewers=[];Ext.each(viewers,function(v){if(v.renderName=="Standard"){standardViewers[v.ftype]=eval(v.renderer)}},this);return standardViewers},setView:function(a){this.view=a;this.columnSelector.select(a.getColumns());this.groupSelector.select(this.getGroup())},getFilterColumns:function(){var d=this.getColumns(),g=[],h,b,j=this.data.filterOptions,a=Ext.data.StoreManager.lookup("FT.store.ObjectType"),c,e;Ext.each(d,function(k){if(!k.filter){return}if(Ext.isDefined(k.filter.extra)&&k.filter.extra.hierarchical===true){h=Ext.clone(k.filter);h.field=k.dataIndex;h.label=k.text;g.push(h)}else{if(k.dataIndex.substring(0,2)=="__"){h=Ext.clone(k.filter);h.field=k.dataIndex;h.label=k.text;h.group=k.group;g.push(h)}else{a.each(function(l){e=l.get("typeid");c=k.dataIndex;if(!this.isValidObjectTypeId(e)){return true}b=Ext.isArray(k.objectTypeIds)&&k.objectTypeIds.indexOf(e)!=-1;if(!b){return}h=Ext.clone(k.filter);if(e!=FT.getTaskId()){h.field=Ext.String.format("{0}_{1}",c,e)}else{h.field=c}h.label=k.text;h.enableAny=e==FT.getTaskId();if(!Ext.isDefined(h.group)){h.group=[l.get("name")]}if(j[e]&&j[e][c]){h.config=Ext.value(h.config,{});h.config.options=j[e][c]}if(h.type=="api-query"){h.config=h.config||{};Ext.apply(h.config,{entityType:l.get("name")})}g.push(h)},this)}}},this);return g},createGroupSelector:function(){this.groupSelectorStore=Ext.create("Ext.data.Store",{fields:["name","value"],mode:"local",proxy:{type:"memory",reader:{type:"json"}}});this.groupSelector=Ext.create("FT.button.Selector",{ui:"default",text:FT.i18n("None"),setTextToName:true,itemType:"radio",store:this.groupSelectorStore,displayField:"name",valueField:"value",selectAction:undefined,value:"link",beforeItems:[{text:FT.i18n("None"),handler:function(){this.setGroup("link")},scope:this},"-"],listeners:{selectionchanged:function(a){this.setGroup(a)},scope:this}});this.on("columnsLoaded",function(c){var a=[];var d=[];Ext.each(this.getGroupColumns(),function(g){var e=g.text;var h={name:e,value:g.dataIndex};if(this.isCustomAttribute(g.dataIndex)){d.push(h)}else{a.push(h)}},this);var b=function(g,e){if(g.name>e.name){return 1}if(e.name>g.name){return -1}return 0};a.sort(b);d.sort(b);if(d.length){a.push({name:"-"});a=a.concat(d)}this.groupSelectorStore.loadData(a);this.groupSelectorStore.insert(0,Ext.clone(this.extraGroups));this.groupSelector.select(this.getGroup())},this);return this.groupSelector},getGroupSelector:function(){return this.groupSelector},getGroupColumns:function(){var a=[];Ext.each(this.getColumns(),function(b){if(b.groupable){a.push(b)}},this);return a},setGroup:function(a){this.getView().setGroup(a);this.fireEvent("groupChanged",a)},includeShotsGroup:function(){var c="bad911de-3bd6-47b9-8b46-3476e237cb36",b="Shot",d=Ext.data.StoreManager.lookup("FT.store.ObjectType"),a=d.findRecord("typeid",c);if(this.isValidObjectTypeId(c)&&a&&a.get("name")===b){return true}else{return false}},getGroup:function(){var b=this.getView().getGroup(),a=["tasks_only"];if(this.includeShotsGroup()){a.push("shots_only")}Ext.each(this.getGroupColumns(),function(c){a.push(c.dataIndex)},this);return a.indexOf(b)!==-1?b:"link"},getDefaultStatusIdLookup:function(){return this.data.defaultStatusIds},getDefaultTypeIdLookup:function(){return this.data.defaultTypeIds},getValidObjectTypeIds:function(){return this.data.validObjectTypeIds},isValidObjectTypeId:function(a){return this.data.validObjectTypeIds.indexOf(a)!==-1},createModel:function(){var a=this.getModelFields();a.push({name:FT.data.UndoRedoHelperBase.removeGUID,defaultValue:false});a.push("glyph");a.push({name:"taskid",mapping:"Id"});a.push({name:"pipeline"});a.push({name:"DurationUnit",type:"string",defaultValue:FT.util.isDays()?"d":"h",convert:function(d){return d||(FT.util.isDays()?"d":"h")}});var c={};var b=this.getColumns();Ext.each(b,function(d){c[d.dataIndex]=d},this);Ext.define("FT.model.Task",{extend:"FT.model.BaseTask",fields:a,nameField:"name",serverColumns:this.getServerColumns(),standardViewers:this.getStandardViewers(),columnDataLookup:c,columnData:modelColumnData={columns:this.getColumns()},defaultStatusIdLookup:this.getDefaultStatusIdLookup(),defaultTypeIdLookup:this.getDefaultTypeIdLookup()})},ensureModel:function(){if(!FT.model.Task){this.createModel();return}var a=[];Ext.each(FT.model.Task.getFields(),function(c){if(c.name.startsWith("taskcolumn_")){a.push(c.name)}});var b=Ext.Array.some(this.getSelectedColumns(),function(c){return c.startsWith("taskcolumn_")&&a.indexOf(c)===-1});if(b){this.createModel()}},hasTaskColumns:function(){var b=this.getRenderColumns(),a;for(a=0;a<b.length;a++){if(b[a].indexOf(this.TASK_COLUMN_PREFIX)===0){return true}}return false}});Ext.ns("FT.scheduler");FT.scheduler.generateViewPreset=function(a){a=Ext.value(a,"ft-generatedpreset-"+Ext.id());Sch.preset.Manager.registerPreset(a,{timeColumnWidth:70,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d H:i",shiftUnit:"MONTH",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"HOUR",increment:12},headerConfig:{bottom:{unit:"DAY",increment:1,renderer:function(b){return b.getDate()}},middle:{unit:"WEEK",dateFormat:"d M Y",align:"left"}}});return a};Ext.define("FT.scheduler.SchedulingHelper",{extend:"Ext.util.Observable",projectDatePrefix:"projectdates-",prefix:"",constructor:function(a){if(!Ext.isDefined(FT.scheduler.LocalModel)){Ext.define("FT.scheduler.LocalModel",{fields:["id","key","value"],extend:"Ext.data.Model",proxy:{type:FT.localstorage()?"localstorage":"sessionstorage",id:"ft-"+FT.getUserId()}})}this.localStore=Ext.create("Ext.data.Store",{model:"FT.scheduler.LocalModel"});this.localStore.load();this.listeners=a.listeners;this.callParent(arguments)},getTimespan:function(b,c){var b=moment(b),c=moment(c),d=moment(),a=moment();if(d>=b&&d<=c){d.subtract(7,"days");a.add(30,"days")}else{if(d<b){d=b;a=moment(b).add(30,"days")}else{d=moment(c).subtract(30,"days");a=c}}return[new Date(d),new Date(a)]},handleUnsavedChanges:function(b,a){if(b.unsavedChanges()){if(b.enableAutosave===true){b.on("aftersync",function(){a.delayedViewChange()},c,{single:true});b.autosave()}else{var c=Ext.create("FT.window.CancelSave",{discardHandler:function(e){b.cancelChanges(true);var d=new Ext.util.DelayedTask(function(){a.delayedViewChange()},c);d.delay(50);c.close()},cancelHandler:function(d){c.close()},saveHandler:function(d){b.syncChanges();b.on("aftersync",function(){a.delayedViewChange();this.close()},c,{single:true})}})}return false}},setVariable:function(b,d){b=this.prefix+b;var a=this.localStore.findExact("key",b);var c=null;if(a!=-1){c=this.localStore.getAt(a)}else{c=Ext.create("FT.scheduler.LocalModel",{key:b});this.localStore.add(c)}c.set("value",d);this.localStore.sync()},getVariable:function(c,b){c=this.prefix+c;var a=this.localStore.findExact("key",c);if(a!=-1){var d=this.localStore.getAt(a);return d.get("value")}return b},setupButtonInteractions:function(c,b,a){if(this.buttonsInteraction){this.buttonsInteraction.destroy()}this.buttonsInteraction=Ext.create("FT.data.UndoRedoButtonInteraction",{undoRedoHelper:c,buttons:b,notificationEvent:a?a:"changesupdated"})}});Sch.preset.Manager.registerPreset("planningboard-ftrack",{timeColumnWidth:140,displayDateFormat:"Y-m-d",shiftUnit:"MONTH",shiftIncrement:1,rowHeight:30,defaultSpan:10,timeResolution:{unit:"HOUR",increment:6},headerConfig:{middle:{unit:"WEEK",increment:1,renderer:function(){return Sch.util.HeaderRenderers.dayLetter.apply(this,arguments)}},top:{unit:"MONTH",dateFormat:"d M Y",align:"left"}}});Ext.define("FT.scheduler.ProjectOverview",{alias:["widget.ft-projectsoverview"],extend:"Sch.panel.SchedulerTree",enableAnimations:false,viewPreset:"planningboard-ftrack",columnLines:true,readOnly:true,bodyCls:"paddinghack",mode:"project_tasktype",initComponent:function(){if(Ext.isDefined(this.widget.mode)){this.mode=this.convertModeType(this.widget.mode)}var a=[];if(this.widget.mode=="users"){a=[{text:FT.i18n("User/TaskType"),type:"user_tasktype"}]}else{if(this.widget.mode=="projects"){a=[{text:FT.i18n("Project/Tasktype"),type:"project_tasktype"},{text:FT.i18n("Project/User"),type:"project_user"},{text:FT.i18n("Project/Shot"),type:"project_shot"}]}}this.viewConfig={forceFit:false,loadingText:"Loading "+this.widget.mode+"..."};this.updateFiltersTask=new Ext.util.DelayedTask(this.updateFilters,this);this.tbar={ui:"ft-toolbar",padding:"5 0",items:[this.viewSelector=Ext.create("FT.button.Selector",{itemType:"radio",forceSelection:true,icon:"view",iconType:"wide",style:{marginRight:"10px"},store:{fields:["text","type"],data:a},value:this.mode,displayField:"text",valueField:"type"}),this.startDatePicker=Ext.widget("ft-datefield",{value:new Date,editable:false})," - ",this.endDatePicker=Ext.widget("ft-datefield",{value:new Date,editable:false}),"->",this.showSelector=Ext.create("FT.ui.ProjectEditor",{width:300,stacked:false,emptyText:FT.i18n("All projects"),hidden:this.mode=="user_tasktype",filters:{status:[{equals:"active"}]}}),this.userSelector=Ext.create("FT.ui.UserEditor",{width:400,stacked:false,emptyText:FT.i18n("All users"),hidden:this.mode!="user_tasktype"})]};this.startDatePicker.on("select",this.datesSelected,this);this.endDatePicker.on("select",this.datesSelected,this);this.showSelector.on("select",this.updateFilters,this);this.userSelector.on("select",Ext.bind(this.updateFiltersTask.delay,this,[1000]),this);this.viewSelector.on("select",function(e,c,d){var b=c[0];this.changeMode(b.get("type"))},this);this.schedulerConfig={header:false,region:"center"};this.lockedGridConfig={header:false,collapsible:true,width:300,region:"west",collapsible:false};this.columns=[{xtype:"treecolumn",text:FT.i18n("Name"),width:300,sortable:true,renderer:function(b){if(Ext.isArray(b)){return FTrack.grid.LinkRenderer(b)}return b},dataIndex:"Name"}];this.resourceStore=Ext.create("Ext.data.TreeStore",{model:"FT.model.PlanningBoardResource",proxy:{type:"memory"},sorters:["Name"],folderSort:true});this.eventStore=Ext.create("Sch.data.EventStore",{model:"FT.model.PlanningBoardEvent",proxy:{url:"/track/getProjectOverview",type:"ajax",reader:{type:"json",root:"allEvents"},extraParams:{mode:this.mode}}});this.eventStore.on({scope:this,load:this.onEventStoreLoad});this.eventStore.load();this.eventRenderer=Ext.bind(this.onEventRenderer,this);this.dayStore=new Ext.data.Store({fields:[{name:"Date",type:"date"},"Text",{name:"Cls",defaultValue:"ft-markedDateLine"}]});this.plugins=[Ext.create("Sch.plugin.Lines",{store:this.dayStore,template:new Ext.XTemplate('<tpl for=".">','<div data-qtip="{[this.getTipText(values)]}" class="sch-timeline {uniquecls} {Cls}" style="left:{left}px;top:{top}px;height:{height}px;width:{width}px"></div>',"</tpl>",{getTipText:function(b){return"<i>"+FTrack.grid.dateRenderer(b.Date)+"</i><br />"+(b.Text||"")}})}),Ext.create("Gnt.feature.WorkingTime",{calendar:new Gnt.data.Calendar({data:[]})})];this.eventBodyTemplate=new Ext.XTemplate('<div style="width:100%;height:100%;{style}"><div style="width:100%;margin-top:2px;display:inline-block;overflow:hidden;" class="ft-overview-inner"></div><span style="{labelStyle}">{label}</span></div>');this.callParent(arguments);this.lockedGrid.on("itemcontextmenu",function(g,b,h,c,j,d){if(b.isExpanded()){b.collapse(true)}else{b.expand(true)}j.preventDefault()},this);this.normalGrid.getView().on({itemupdate:this.onItemUpdate,scope:this});this.first=true;this.module.on("configchanged",function(b){if(this.first||b.mode!="projects"&&b.mode!="users"){this.first=false;return}var c=this.convertModeType(b.mode);this.changeMode(c)},this)},convertModeType:function(a){return a=="users"?"user_tasktype":"project_tasktype"},renderAllShowNamesOnEvent:function(){this.getEventStore().each(function(a){this.renderShowName(a)},this)},onItemUpdate:function(a){if(a.get("type")=="ShowResource"){Ext.each(a.getEvents(),this.renderShowName,this)}},renderShowName:function(a){var g=this.getSchedulingView();var c=a.getResource();if(Ext.isDefined(c)&&c.get("type")=="ShowResource"){var b=g.getElementFromEventRecord(a);var j=c.get("Name")+Ext.String.repeat("&#160;",48);if(b!=null){var k=b.query("div.ft-overview-inner");if(k.length>0){k=k[0];var h=b.dom.clientWidth;var e=Ext.util.TextMetrics.measure(k,j).width;var d=Math.ceil(h/e);j=Ext.String.repeat(j,d);k.innerHTML=j}}}},changeMode:function(a){this.mode=a;this.viewSelector.select(a);Ext.apply(this.eventStore.getProxy().extraParams,{mode:this.mode});if(this.mode=="user_tasktype"){this.showSelector.hide();this.userSelector.show()}else{this.showSelector.show();this.userSelector.hide()}this.refresh()},onEventStoreLoad:function(){var c=this.eventStore.getProxy().getReader().rawData;var b=c.milestones;this.dayStore.loadData(b);var d=Ext.Date.parse(c.startdate,"c");var a=Ext.Date.parse(c.enddate,"c");this.setTimeSpan(d,a);this.resourceStore.setRootNode(c.scheduledResources);if(this.filterShowids){this.showSelector.setValue(this.filterShowids.join(", "))}this.resourceStore.suspendEvents(true);Ext.iterate(this.resourceStore.tree.nodeHash,function(h,e){if(e.get("type")=="TaskResource"&&Ext.isObject(e.get("Name"))){var g=Ext.clone(e.get("Name"));if(this.mode!="user_tasktype"){delete g.show}g=FTrack.grid.LinkRenderer(g);e.set("Name",g);e.commit()}},this);this.resourceStore.resumeEvents();this.renderAllShowNamesOnEvent()},setTimeSpan:function(b,a){this.startDatePicker.setValue(b);this.endDatePicker.setValue(a);this.callParent(arguments)},updateFilters:function(){var b=this.showSelector.getValue();this.filterShowids=Ext.isEmpty(b)?[]:b.split(", ");var a=this.userSelector.getValue();a=Ext.isEmpty(a)?[]:a.split(", ");Ext.apply(this.eventStore.getProxy().extraParams,{filters:Ext.encode({showids:this.filterShowids,userids:a})});this.refresh()},onEventRenderer:function(e,g,h){var d;if(e.get("type")=="show"){d="#212121"}else{if(e.get("type")=="user"||e.get("type")=="shot"){d="#CFCF11"}else{var c=Ext.data.StoreManager.lookup("FT.store.TaskType");var b=c.findRecord("typeid",e.get("typeid"));d=b.get("color")}}h.style="background-color:"+d+";";var a={};if(g.data.type=="TaskResource"){Ext.apply(a,{label:FTrack.grid.UserRenderer(e.get("userids")),labelStyle:"margin-left:20px;font-weight:bold;",style:"overflow: visible !important;"})}return a},datesSelected:function(){start=this.startDatePicker.getValue();end=this.endDatePicker.getValue();Ext.apply(this.eventStore.getProxy().extraParams,{startdate:start,enddate:end});this.refresh()},refresh:function(){this.eventStore.load()}});Ext.define("FT.scheduler.plugins.ForceRefreshOnDrop",{scheduler:null,constructor:function(a){Ext.apply(this,a)},init:function(a){this.scheduler=a;this.scheduler.on({scope:this,eventdrop:this.onEventDrop})},onEventDrop:function(a,b){this.scheduler.refreshView()}});FT.scheduler.generateViewPreset("ftrack-scheduler");Ext.define("FT.scheduler.Scheduler",{extend:"Sch.panel.SchedulerGrid",enableAnimations:false,columnLines:false,readOnly:false,rowHeight:50,lockedGridDependsOnSchedule:true,cls:"ft-scheduler",alias:"widget.ftscheduler",initComponent:function(){this.weekStartDay=Number(FT.Settings.get("TIME","week_startday"));if(Ext.getScrollbarSize().height>0){this.bodyCls="paddinghack"}this.resourceCfg=Ext.value(this.resourceCfg,["user"]);this.eventCfg=Ext.value(this.eventCfg,"task");this.schedulerTools=Ext.value(this.schedulerTools,[]);this.snapToIncrement=true;this.highlightTasks=false;this.mon(this.eventStore,"datachanged",function(){this.getSchedulingView().refreshKeepingScroll()},this);this.addEvents("beforecommand","beforescheduledate");this.validatorFnScope=this;this.eventRenderer=Ext.bind(this.onEventRenderer,this);this.createConfig={showHoverTip:false};this.eventBodyTemplate=new Ext.XTemplate('<div style="width:100%;height:'+(this.rowHeight-20)+'px;{style}"></div>{text}');this.tooltipTpl=new Ext.XTemplate('<span style="font-weight:bold;">{[FTrack.grid.LinkRenderer(values.link)]} - {[FTrack.grid.TaskTypeRenderer(values.typeid)]}</span>','<div>Bid: {[Ext.util.Format.number(values.bid, "0.00")]} Worked: {[Ext.util.Format.number(values.worked, "0.00")]}</div>',"<div>{[FTrack.grid.SummaryProgressRenderer(values.statusid)]}</div>");this.tipCfg={cls:"ft-tooltip",showDelay:100,hideDelay:0,autoHide:true,anchor:"b"};this.enableDragCreation=true;this.layout="border";var a={autoWidth:false,forceFit:false};this.viewConfig=Ext.value(this.viewConfig,{});Ext.applyIf(this.viewConfig,a);this.schedulerConfig={header:false,region:"center"};this.lockedGridConfig={header:false,width:160,region:"west",collapsible:false};this.columns=[{text:FT.i18n("Name"),flex:1,editor:{xtype:"usereditor",allowBlank:false},sortable:true,dataIndex:"Name",editDataIndex:"userids"}];var b=new Ext.XTemplate('<tpl for=".">','<div class="sch-zone {uniquecls} {Cls}" style="left:{left}px;top:{top}px;height:{height}px;width:{width}px"></div>','<div style="z-index: 0; position:absolute; left:{[this.calcLeft(values.width,values.left,3)]}px;top:{top}px;height:{height}px;width:{width}px; border-right: 1px solid #eaeaea;"></div>','<div style="z-index: 0; position:absolute; left:{[this.calcLeft(values.width,values.left,4)]}px;top:{top}px;height:{height}px;width:{width}px; border-right: 1px solid #eaeaea;"></div>','<div style="z-index: 0; position:absolute; left:{[this.calcLeft(values.width,values.left,5)]}px;top:{top}px;height:{height}px;width:{width}px; border-right: 1px solid #eaeaea;"></div>','<div style="z-index: 0; position:absolute; left:{[this.calcLeft(values.width,values.left,6)]}px;top:{top}px;height:{height}px;width:{width}px; border-right: 1px solid #eaeaea;"></div>',"</tpl>",{calcLeft:function(d,e,g){var c=d/2;return e-c*g*0.97}});this.plugins=Ext.value(this.plugins,[]);this.plugins=this.plugins.concat([Ext.create("Gnt.feature.WorkingTime",{calendar:new Gnt.data.Calendar({data:[]})}),Ext.create("FT.plugin.Pan",{})]);this.callParent();this.on({scope:this,beforeeventdrag:this.onBeforeEventChange,beforeeventresize:this.onBeforeEventResize,beforedragcreate:this.onBeforeDragCreate,eventdblclick:this.onEventDblClick,eventcontextmenu:this.onEventContextMenu,eventdrop:this.onEventDrop,schedulecontextmenu:this.onContextMenu,eventclick:this.onEventClick})},onContextMenu:function(b,m,j,c,d,g){d.preventDefault();if(!this.contextMenu){this.contextMenuStore=Ext.create("Ext.data.Store",{fields:["link","name","entityId"],proxy:{type:"direct",directFn:FTApi.TeamCalendar.getUnscheduledTasks}});this.contextMenu=Ext.create("FT.button.Selector",{store:this.contextMenuStore,displayField:"name",valueField:"entityId",emptyText:"<center>"+FT.i18n("No tasks available.")+"</center>",btnTpl:new Ext.XTemplate("{[this.renderName(values)]}",{renderName:function(n){var o=Ext.pluck(n.link,"name"),e=o.pop();return Ext.String.format('<div class="entity-parent">{0}</div><div class="entity-path">{1}</div>',e,o.join(" / "))}})});this.contextMenu.menu.setWidth(250);this.contextMenu.menu.setTitle("Un-scheduled tasks")}var l=this.getResourceStore().getAt(j).getEvents();var a=l.length;var h=[];for(var k=0;k<a;k++){if(!l[k].get("StartDate")||!l[k].get("EndDate")){h.push(Ext.clone(l[k].data))}}this.contextMenuStore.removeAll(true);this.contextMenuStore.loadData(h);this.contextMenu.on("select",function(n,e){this.scheduleDate(m,e[0].get("entityId"))},this,{single:true});this.contextMenu.menu.showAt(d.xy[0],d.xy[1])},scheduleDate:function(d,g){var b=this.eventStore.getById(g);var e={date:d,eventRecord:b};this.fireEvent("beforescheduledate",e);b=e.eventRecord;d=e.date;var d=Ext.clone(d);var c=b.get("StartDate");var a=b.get("EndDate");b.beginEdit();b.set("StartDate",d);b.set("EndDate",Ext.Date.add(d,Ext.Date.DAY,1));if(Ext.isNumber(b.get("bid"))&&b.get("bid")>0){b.adjustToBid()}b.endEdit()},onEventContextMenu:function(h,b,k,g){k.preventDefault();if(!this.eventContextMenu){var a=this.schedulerTools;Ext.each(this.commands,function(e){if(e.ctype=="rightclick"){a.push(e)}},this);var d=[];Ext.each(a,function(e){var l={text:e.text,handler:function(n){var m=n.parentMenu.rightClickRecords;e.handler.call(e.scope||this,this,m)},scope:this};d.push(l)},this);this.eventContextMenu=Ext.create("Ext.menu.Menu",{items:d,plain:true})}var j=this.getEventSelectionModel().getSelection();var c=[];if(b.get("type")!="otherproject"){c.push(b)}Ext.each(j,function(l,e,m){if(l!=b&&l.get("type")!="otherproject"){c.push(l)}},this);this.eventContextMenu.rightClickRecords=c;this.eventContextMenu.showAt(k.xy[0],k.xy[1])},assignUsers:function(c,d){var e=c.get("taskid");var a=this.eventStore.findExact("taskid",e);if(a>-1){var b=this.eventStore.getAt(a);b.setUsers(d)}},createNewModel:function(a){return Ext.ModelManager.create(a,"FT.model.PlanningBoardEvent")},updateEntity:function(a){this.entity=a},selectFromTaskid:function(e){var d=[];var c=this.getEventStore().data.items;var g=c.length;for(var b=0;b<g;b++){if(c[b].get("taskid")==e){d.push(c[b])}}var a=this.getEventSelectionModel().select(d)},onEventRenderer:function(b,e,p){var o="";var c="";p.style="border:0px;background-color:transparent;";var n=b.get("worked")/b.get("bid")*100;if(b.isMilestone()){p.style="height:16px!important;width:16px!important;";p.cls="ft-scheduler-milestone leaf";return}var j=[];var m=Ext.data.StoreManager.lookup("FT.store.TaskType");var h=m.findRecord("typeid",b.get("typeid"));p.cls="leaf";if(h==null){return}var d=Ext.clone(b.get("link"));d=d.splice(1);o=FTrack.grid.LinkRenderer(d);var k=b.get("link");var l="";var g=h.get("color");var a=Ext.pluck(k,"id");if(a.indexOf(this.entity.entityId)==-1){l="opacity:0.4;"}if(this.highlightTasks&&this.highlightTasks.indexOf(b.get("taskid"))==-1){l="opacity:0.4;"}if(b.get("type")=="otherproject"){l+="background-image: url(/resources/icons/graytexture.png);";o=""}c="-webkit-border-radius:2px;-moz-border-radius:2px;background-color:"+g+";"+l;var g="#404040;";if(n>100){g="#D44040;";n=0}return{style:c,text:o}},onBeforeDragCreate:function(){return false},setHighlightTasks:function(a){this.highlightTasks=Ext.clone(a)},onUpdateTaskTypeFilter:function(){},onEventDrop:function(b,c,a,d){Ext.each(c,function(k){var j=this.dragedFrom[k.internalId];var g=k.getResource().get("Id");var h=Ext.clone(k.getUsers());h=Ext.Array.remove(h,j);h.push(g);h=Ext.Array.unique(h);k.setUsers(h)},this);var e=Ext.pluck(c,"previous")},dndValidatorFn:function(b,a,c,g,d){this.dragedFrom={};Ext.each(b,function(e){this.dragedFrom[e.internalId]=e.get("ResourceId")},this);return true},onBeforeEventChange:function(c,a,d,b){return a.get("type")!="otherproject"},onBeforeEventResize:function(b,a){return a.get("type")!="otherproject"&&this.allowResize},onEventClick:function(c,a,d,b){Ext.each(this.commands,function(g){if(g.ctype=="click"){var e={scheduler:c,eventRecord:a,e:d};if(this.fireEvent("beforecommand",e)===false){return}g.handler.call(g.scope||this,e.scheduler,e.eventRecord,e.e,b)}},this)},onEventDblClick:function(c,a,d,b){Ext.each(this.commands,function(g){if(g.ctype=="dblclick"){var e={scheduler:c,eventRecord:a,e:d};if(this.fireEvent("beforecommand",e)===false){return}g.handler.call(g.scope||this,e.scheduler,e.eventRecord,e.e,b)}},this)},calculateSnaping:function(a){a=Ext.value(a,Sch.preset.Manager.getPreset(this.viewPreset).timeColumnWidth);if(a<278&&Sch.preset.Manager.getPreset(this.viewPreset).timeResolution.increment>1){this.getSchedulingView().setSnapEnabled(false)}else{this.getSchedulingView().setSnapEnabled(true)}},setTimeColumnWidth:function(a){this.calculateSnaping(a);this.callParent(arguments)}});FT.suspendGantt=false;Ext.override(Gnt.data.Calendar,{calculateDuration:function(a,d,b){var c=0;this.forEachAvailabilityInterval({startDate:a,endDate:d},function(g,e){c+=e-g});return this.convertMSDurationToUnit(c,b)}});Ext.override(Gnt.model.Task,{addTaskBelow:function(a){this.callParent(arguments);this.taskStore.fireEvent("manualappend",this.store,[a])},addSubtask:function(a){this.callParent(arguments);this.taskStore.fireEvent("manualappend",this.store,[a])},insertChild:function(a,b){this.callParent(arguments);this.taskStore.fireEvent("manualappend",this.store,[b])}});Ext.apply(Ext.dd.ScrollManager,{vthresh:10,hthresh:50,increment:50,frequency:50,animate:false,animDuration:0});Ext.define("FT.plugin.Pan",{alias:"plugin.pan2",extend:"Sch.plugin.Pan",onMouseDown:function(b,a){if(b.button!=1){return}if(b.getTarget("."+this.view.timeCellCls)&&!b.getTarget(this.view.eventSelector)){this.mouseX=b.getPageX();this.mouseY=b.getPageY();Ext.getBody().on("mousemove",this.onMouseMove,this);Ext.getDoc().on("mouseup",this.onMouseUp,this)}}});Ext.override(Ext.tree.ViewDropZone,{isValidDropPoint:function(b,j,n,k,g){if(!b||!g.item){return false}var o=this.view,l=o.getRecord(b),d=g.records,a=d.length,m=d.length,c,h;if(!(l&&j&&a)){return false}for(c=0;c<m;c++){h=d[c];if(h.isNode&&h.contains(l)){return false}}if(j==="append"&&l.get("allowDrop")===false){return false}else{if(j!="append"&&l.parentNode.get("allowDrop")===false){return false}}if(Ext.Array.contains(d,l)){return false}return o.fireEvent("validateDrop",b,g,l,j)},getPosition:function(g,b){var k=this.view,c=k.getRecord(b),h=g.getPageY(),l=c.isLeaf(),a=false,j=Ext.fly(b).getRegion(),d;if(c.isRoot()){return"append"}if(c.canReorder&&!c.canReorder()){return l?false:"append"}if(this.appendOnly||c.canReorder&&!c.canReorder()){return l?false:"append"}if(!this.allowParentInsert){a=c.hasChildNodes()&&c.isExpanded()}d=(j.bottom-j.top)/(l?2:3);if(h>=j.top&&h<j.top+d){return"before"}else{if(!a&&(l||h>=j.bottom-d&&h<=j.bottom)){return"after"}else{return"append"}}}});Ext.define("FT.selection.TreeModel",{extend:"Ext.selection.TreeModel",initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a,ignoreInputFields:true,eventName:"itemkeydown",processEvent:function(d,c,h,e,g){g.record=c;g.recordIndex=e;return g},up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,pageDown:b.onKeyPageDown,pageUp:b.onKeyPageUp,home:b.onKeyHome,end:b.onKeyEnd,space:b.onKeySpace,enter:b.onKeyEnter,scope:b})},doDelayedSelect:function(c,b,a){if(!this.deselectTask){this.deselectTask=new Ext.util.DelayedTask(function(g,e,d){this.doSelect(g,e,d)},this);this.view.on("itemdblclick",function(){this.deselectTask.cancel()},this)}this.deselectTask.delay(250,this.doSelect,this,[c,b,a])},selectWithEvent:function(a,g,d){var c=this,b=c.isSelected(a);switch(c.selectionMode){case"MULTI":if(g.shiftKey&&c.selectionStart){c.selectRange(c.selectionStart,a,g.ctrlKey)}else{if(g.ctrlKey&&b){c.doDeselect(a,false)}else{if(g.ctrlKey){c.doSelect(a,true,false)}else{if(b&&!g.shiftKey&&!g.ctrlKey&&c.selected.getCount()>1){c.doDelayedSelect(a,d,false)}else{if(!b){c.doSelect(a,false)}}}}}break;case"SIMPLE":if(b){c.doDeselect(a)}else{c.doSelect(a,true)}break;case"SINGLE":if(c.allowDeselect&&b){c.doDeselect(a)}else{c.doSelect(a,false)}break}if(!g.shiftKey){if(c.isSelected(a)){c.selectionStart=a}else{c.selectionStart=null}}}});Ext.define("Gnt.column.StartDateOverride",{extend:"Ext.grid.column.Date",alias:"widget.startdatecolumnoverride",text:FT.i18n("Start"),width:100,align:"left",editorFormat:null,constructor:function(a){a=a||{};var b=a.field||a.editor;delete a.field;delete a.editor;this.field=Ext.create("Ext.grid.CellEditor",{ignoreNoChange:true,autoSize:{width:"field",height:"boundEl"},field:b||{xtype:"datefield",format:a.format||this.format||Ext.Date.defaultFormat}});this.callParent([a]);this.editorFormat=this.editorFormat||this.format},beforeRender:function(){var a=this.up("treepanel");if(!this.dataIndex){this.dataIndex=a.store.model.prototype.startDateField}this.callParent(arguments);a.on({edit:this.onTreeEdit,beforeedit:this.onBeforeTreeEdit,scope:this})},onBeforeTreeEdit:function(c){if(c.column==this){c.doNotUpdateRecord=true;var b=c.record;if(!b.isEditable(this.dataIndex)){return false}var a=c.value;if(a){c.value=Ext.Date.parse(Ext.Date.format(a,this.editorFormat),this.editorFormat)}}},onTreeEdit:function(c,b){var a=b.record;var d=b.value;if(b.column==this&&d&&d-b.originalValue!==0){a.setStartDate(d,true,a.getTaskStore().skipWeekendsDuringDragDrop)}}});Ext.override(Gnt.column.EndDate,{onBeforeEditComplete:function(b,c,a){if(this.task&&c==null){this.task.setStartEndDate(c)}else{if(this.task&&c<this.task.getStartDate()){this.task.setStartDate(c)}}}});Ext.override(Gnt.feature.TaskDragDrop,{cleanUp:function(){if(this.tip){this.tip.destroy()}this.destroy()}});Ext.override(Ext.grid.CellEditor,{realign:function(d){var j=this,g=j.boundEl,h=g.first(),b=h.dom.childNodes,e=b.length,c=Ext.Array.clone(j.offsets),k,a;a=g.getWidth();if(d===true){j.field.setWidth(a)}j.alignTo(g,j.alignment,c)}});Ext.define("Ext.grid.plugin.BufferedRenderer2",{extend:"Ext.grid.plugin.BufferedRenderer",alias:"plugin.bufferedrenderer2",init:function(b){this.recordsToLazyLoad=[];this.callParent([b.lockedGrid]);this.delayedLoadRecords=new Ext.util.DelayedTask(this.lazyLoadRecords,this);var a=b.view;Ext.Function.interceptAfter(a.lockedView,"renderRows",this._interceptRenderRows,this);b.normalGrid.on("expand",this._handleGanttExpand,this)},_handleGanttExpand:function(){this.recordsToLazyLoad=this.recordsToLazyLoad.concat(this.getViewRange());this.delayedLoadRecords.delay(100,undefined,undefined)},_interceptRenderRows:function(c,b,a){if(!c){return}this.recordsToLazyLoad=this.recordsToLazyLoad.concat(c);this.delayedLoadRecords.delay(100,undefined,undefined)},lazyLoadRecords:function(){var a=Ext.Array.unique(this.recordsToLazyLoad);this.recordsToLazyLoad=[];this.store.treeStore.lazyLoadRecords(a,{ganttIsClosed:this.cmp.lockedOnly})}});Ext.override(Ext.grid.plugin.BufferedRenderer,{stretchView:function(b,a){var e=this,d=e.store.buffered?e.store.getTotalCount():e.store.getCount();if(e.stretcher){e.stretcher.dom.style.marginTop=a-1+"px"}else{var c=b.el;if(!Ext.isDefined(c)){return}if(b.refreshCounter){b.fixedNodes++}if(d&&e.view.all.endIndex===d-1){a=e.bodyTop+b.body.dom.offsetHeight}this.stretcher=c.createChild({style:{width:"1px",height:"1px",marginTop:a-1+"px",left:0,position:"absolute"}},c.dom.firstChild)}},doAttemptLoad:function(b,a){if(!Ext.isNumber(b)||!Ext.isNumber(a)){return}this.callParent(arguments)}});Ext.override(Ext.view.NodeCache,{scroll:function(e,l,c){var k=this,a=k.elements,n=e.length,h,d,b,g,j=k.view.getNodeContainer(),m=document.createDocumentFragment();if(l==-1){for(h=k.endIndex-c+1;h<=k.endIndex;h++){d=a[h];if(d){delete a[h];d.parentNode.removeChild(d)}}k.endIndex-=c;g=k.view.bufferRender(e,k.startIndex-=n);for(h=0;h<n;h++){a[k.startIndex+h]=g[h];m.appendChild(g[h])}j.insertBefore(m,j.firstChild)}else{b=k.startIndex+c;for(h=k.startIndex;h<b;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}k.startIndex=h;g=k.view.bufferRender(e,k.endIndex+1);for(h=0;h<n;h++){a[k.endIndex+=1]=g[h];m.appendChild(g[h])}j.appendChild(m)}k.count=k.endIndex-k.startIndex+1}});Ext.override(Ext.view.AbstractView,{doAdd:function(c,d){var j=this,b=j.bufferRender(c,d,true),g=j.all,h=g.getCount(),e,a;if(g.startIndex){h+=g.startIndex}if(h===0){for(e=0,a=b.length;e<a;e++){this.getNodeContainer().appendChild(b[e])}}else{if(d<h){if(d===0){g.item(d).insertSibling(b,"before",true)}else{g.item(d-1).insertSibling(b,"after",true)}}else{g.last().insertSibling(b,"after",true)}}g.insert(d,b);return b}});Ext.override(Ext.tree.View,{onFillComplete:function(e,d,b){var c=this,a=c.store,g=a.indexOf(b[0]);a.resumeEvents();if(this.allowSuspend){if(!FT.suspendGantt){d.triggerUIUpdate()}}else{d.triggerUIUpdate()}if(!b.length||g===-1){return}c.onAdd(c.store,b,g);if(this.allowSuspend){if(!FT.suspendGantt){c.refreshPartner()}}else{c.refreshPartner()}}});Ext.override(Sch.eventlayout.Horizontal,{getNumberOfBands:function(b,c){var a=this.callParent(arguments);if(this.view.addExtraRow&&this.view.addExtraRow(b)&&b.getEvents().length>0){a+=1}return a}});Ext.override(Gnt.panel.Gantt,{syncLockedWidth:function(){var e=this,b=e.lockedGrid,d=b.view,c=d.el.dom,h=e.normalGrid,g=b.headerCt.getVisibleGridColumns().length,a=h.headerCt.getVisibleGridColumns().length;Ext.suspendLayouts();if(a){h.show();if(g){if(!b.headerCt.forceFit){delete b.flex;if(this.lockedOnly){b.setWidth(this.getWidth()-Ext.getScrollbarSize().width-5)}}b.addCls(e.lockedGridCls);b.show()}else{b.getView().refresh();b.hide()}d.el.setStyle(d.getOverflowStyle());e.ignoreMousewheel=d.scrollFlags.y}else{h.hide();c.style.borderBottomWidth="0";b.flex=1;delete b.width;b.removeCls(e.lockedGridCls);b.show();d.el.setStyle(h.view.getOverflowStyle());e.ignoreMousewheel=true}Ext.resumeLayouts(true);return[g,a]}});Ext.define("Ext.tree.ColumnGlyph",{extend:"Ext.tree.Column",alias:"widget.treecolumnglyph",treeRenderer:function(p,s,c,b,o,e,n){var y=this,x=[],l,k,u=Ext.String.format,A=c.getDepth(),w=y.treePrefix,d=y.elbowPrefix,q=y.expanderCls,j=y.imgText,B=y.checkboxText,h=y.origRenderer.apply(y.origScope,arguments),g=Ext.BLANK_IMAGE_URL,t=c.get("href"),z=c.get("hrefTarget"),a=c.get("cls"),m=y.getChildCls?y.getChildCls()+" ":"";while(c){if(!c.isRoot()||c.isRoot()&&n.rootVisible){if(c.getDepth()===A){l=c.get("glyph");if(!l){k=c.get("object_typeid");if(k){l=FT.getObjectTypeIcon(k)}}if(l){glyphCls=m+"icon--tree-glyph "+w+"icon";x.unshift(FT.glyphIcon(l,{cls:glyphCls}))}if(c.get("checked")!==null){x.unshift(u(B,m+(w+"checkbox")+(c.get("checked")?" "+w+"checkbox-checked":""),c.get("checked")?'aria-checked="true"':""));if(c.get("checked")){s.tdCls+=" "+w+"checked"}}if(c.isLast()){if(c.isExpandable()){x.unshift(u(j,m+d+"end-plus "+q,g))}else{x.unshift(u(j,m+d+"end",g))}}else{if(c.isExpandable()){x.unshift(u(j,m+d+"plus "+q,g))}else{x.unshift(u(j,m+w+"elbow",g))}}}else{if(c.isLast()||c.getDepth()===0){x.unshift(u(j,m+d+"empty",g))}else{if(c.getDepth()!==0){x.unshift(u(j,m+d+"line",g))}}}}c=c.parentNode}if(t){x.push('<a class="'+Ext.baseCSSPrefix+'tree-node-text" href="',t,'" target="',z,'">')}else{x.push('<span class="'+Ext.baseCSSPrefix+'tree-node-text">')}x.push(h);if(t){x.push("</a>")}else{x.push("</span>")}if(a){s.tdCls+=" "+a}return x.join("")}});Ext.override(Sch.view.model.TimeAxis,{getSnapPixelAmount:function(){var a=this.callParent();return a<1?1:a}});Ext.override(Gnt.view.Dependency,{renderAllDependencies:function(){if(!this.containerEl.dom){return}if(this.ganttView.isVisible(true)==false){return}this.callParent()}});Ext.override(Sch.panel.TimelineTreePanel,{_normalizeWheel:function(g){var j=0,h=0,c=0,b=0;var a=10;var e=40;var d=800;if("detail" in g){h=g.detail}if("wheelDelta" in g){h=-g.wheelDelta/120}if("wheelDeltaY" in g){h=-g.wheelDeltaY/120}if("wheelDeltaX" in g){j=-g.wheelDeltaX/120}if("axis" in g&&g.axis===g.HORIZONTAL_AXIS){j=h;h=0}c=j*a;b=h*a;if("deltaY" in g){b=g.deltaY}if("deltaX" in g){c=g.deltaX}if((c||b)&&g.deltaMode){if(g.deltaMode==1){c*=e;b*=e}else{c*=d;b*=d}}if(c&&!j){j=c<1?-1:1}if(b&&!h){h=b<1?-1:1}return{spinX:j,spinY:h,pixelX:c,pixelY:b}},onLockedViewMouseWheel:function(h){var d=this,b=d.lockedGrid.getView().el.dom,c,g,a=d._normalizeWheel(h.browserEvent).pixelY;if(!d.ignoreMousewheel){if(b){c=b.scrollTop!==b.scrollHeight-b.clientHeight;g=b.scrollTop!==0}if(a<0&&g||a>0&&c){b.scrollTop+=a;d.normalGrid.getView().el.dom.scrollTop=b.scrollTop}}},onLockedViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(this.triggeredScroll){this.triggeredScroll=false;return}if(h.scrollTop!==g.scrollTop){h.scrollTop=g.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);a.style.position="absolute";a.style.top=b.style.top}}},onNormalViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){this.triggeredScroll=true;g.scrollTop=h.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute";b.style.top=a.style.top}}}});Ext.override(Sch.data.TimeAxis,{generateTicks:function(a,d,h,k){var j=[],g,b=Sch.util.Date,e=0;h=h||this.unit;k=k||this.increment;if(this.autoAdjust){a=this.floorDate(a||this.getStart(),false);d=this.ceilDate(d||b.add(a,this.mainUnit,this.defaultSpan),false)}while(a<d){g=this.getNext(a,h,k);if(h===b.HOUR&&k>=1&&j.length>0&&e===0){var c=j[j.length-1];e=(c.start.getHours()+k)%24-c.end.getHours();if(e!==0){g=b.add(g,b.HOUR,e)}}j.push({start:a,end:g});a=g}return j}});Ext.override(Sch.view.model.TimeAxis,{createHeaderRow:function(a,d){var c=[],e=this,h,g=d.align,b=Ext.Date.clearTime(new Date);e.timeAxis.forEachInterval(a,function(l,j,k){h={align:g,start:l,end:j,headerCls:""};if(d.renderer){h.header=d.renderer.call(d.scope||e,l,j,h,k)}else{h.header=Ext.Date.format(l,d.dateFormat)}if(d.unit===Sch.util.Date.DAY&&(!d.increment||d.increment===1)){if(FT.util.isWeekend(l.getDay())){h.headerCls+=" sch-dayheadercell-"+0}else{h.headerCls+=" sch-dayheadercell-"+1}if(Ext.Date.clearTime(l,true)-b===0){h.headerCls+=" sch-dayheadercell-today"}}c.push(h)});return c}});Ext.override(Gnt.plugin.DependencyEditor,{collapse:function(b,a){return this.callParent([b,this.animCollapse])}});Ext.define("FT.ColumnState",{extend:"Ext.AbstractPlugin",init:function(a){this.item=a;a.on("show",this.setState,this);a.on("hide",this.setState,this)},setState:function(){this.helper.setVariable(this.item.dataIndex,this.item.isVisible())}});Ext.define("FT.scheduler.GanttBase",{alias:"widget.ftgantt",extend:"Gnt.panel.Gantt",loadMask:false,enableAnimations:false,highlightWeekends:true,allowParentTaskMove:true,enableProgressBarResize:false,tip:null,rowHeight:40,snapToIncrement:true,enableBaseline:true,baselineVisible:false,showId:null,readOnly:false,showTodayLine:true,startDate:new Date(2016,1,1),endDate:new Date(2016,1,2),ignoreResize:false,initComponent:function(){this.weekStartDay=Number(FT.Settings.get("TIME","week_startday"));this.selModel=new FT.selection.TreeModel({pruneRemoved:true,onKeyEnter:function(g,d){var c=this.getSelection();this.view.panel.ownerCt.startEditRecord(c[0],"name")},ignoreRightMouseSelection:false,mode:"MULTI"});this.schedulerConfig={loadMask:false,collapsible:true,collapsed:this.lockedOnly,preventHeader:true,placeholder:{width:0},trackOver:false};this.viewConfig={loadMask:false,levelOnDragCreate:true,dependenciesOnDragCreate:this.permissions.linkObject,onLoad:Ext.emptyFn,dragDropConfig:{useTooltip:false},isMarkdownSupported:false,preserveScrollOnRefresh:true};var a=[];if(this.permissions.move===true){a.push({ptype:"treeviewdragdrop",ddGroup:"selDD"})}this.lockedViewConfig={loadMask:false,allowSuspend:true,trackOver:false,toggleOnDblClick:false,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("Empty spreadsheet")+"</div>",plugins:a,listeners:{validateDrop:function(d,g,e,c){if(c=="append"){return e.isValidAppend(g.records)}else{return e.isValidBeforeAfter(g.records)}return true},beforedrop:function(e,h,l,m,c,j){if(l.phantom){FT.notifyError(FT.i18n("You need to save before moving items here"));return false}if(h.records.length&&!h.records[0].isSameEntityType(h.records)){FT.notifyError(FT.i18n("You can only drop items of the same type."));return false}var g=false;if(m=="append"){g=l.isValidAppend(h.records)}else{g=l.isValidBeforeAfter(h.records)}if(!g){return false}if(Ext.Array.every(h.records,function(o){return o.phantom})){return}if(Ext.Array.every(h.records,function(o){return m=="append"&&o.get("parent_id")===l.get("entityId")||m!="append"&&o.get("parent_id")===l.get("parent_id")})){return}var k=l.get("name");var n=FT.i18n('Are you sure you want to move {number} objects to "{newName}"?',{values:{number:h.records.length,newName:k}});if(h.records.length===1){n=FT.i18n('Are you sure you want to move "{name}" to "{newName}"?',{values:{name:h.records[0].get("name"),newName:k}})}c.wait=true;var d=Ext.create("FT.window.CancelSave",{title:FT.i18n("Confirm move"),message:n,saveText:FT.i18n("Move"),saveHandler:function(){d.close();c.processDrop()},cancelHandler:function(){d.close();c.cancelDrop()},scope:this})},drop:function(h,g,e,d){var c=g.records;if(d=="append"){Ext.each(c,function(j){j.set("parent_id",e.get("entityId"))},this)}else{Ext.each(c,function(j){j.updateParentData()},this)}if(c.length>0){c[0].updateManualSortValues()}},itemcontextmenu:this.onItemContextMenu,scope:this},getRowClass:function(c,k,g,d){var j;if(c.isLeaf()){j=["index"]}else{j=["index","StartDate","EndDate","Duration"]}var h=!!Ext.Array.findBy(Object.keys(c.modified),function(l){return j.indexOf(l)===-1});var e=h?"row-dirty":"row-clean";if(c.phantom){e="row-new"}if(c.get(FT.data.UndoRedoHelperBase.removeGUID)){e="row-delete"}return e}};if(Ext.getScrollbarSize().width==0||this.lockedOnly){this.lockedViewConfig.cls="lockedScroll"}this.eventRenderer=function(c){return c.renderEvent()};this.callParent();this.getSchedulingView().on("beforedragcreate",function(d,c){return c.onBeforeDragCreate()});this.on("beforedependencydrag",function(){var c=this.permissions.linkObject;if(!c){FT.notifyError(FT.i18n("Permission denied."))}return c},this);this.getSchedulingView().on("dragcreateend",function(d,c){c.onDragCreate()},this);var b=Ext.Function.createThrottled(function(){FT.util.intercom("USED-GANTT-CHART")},60000);this.getSchedulingView().on("afterdragcreate",b);this.getSchedulingView().on("aftertaskdrop",b);this.getSchedulingView().on("aftertaskresize",b);this.on("resize",function(c,d){if(!this.lockedOnly&&this.lockedGrid){if(this.lockedGrid.getWidth()>=d){this.lockedGrid.setWidth(d-100)}}else{if(this.lockedOnly){this.lockedGrid.setWidth(d-5)}}},this);this.lockedGrid.on("resize",function(c,d){if(!this.lockedOnly&&this.ignoreResize===false){FT.setVar("lockedWidth",this.lockedGrid.getWidth())}},this);this.on("partialtaskresize",function(d,g,j,c,h){h.update(Ext.util.Format.round(g.calculateDuration(j,c,"d"),1)+" days")},this)},onItemContextMenu:function(){this.contextMenu.onItemContextMenu.apply(this.contextMenu,arguments)},isParentInList:function(b,a){var c=false;var d=b.getParentId();Ext.each(a,function(e){if(d==e.get("entityId")){c=true;return false}},this);return c},copyItems:function(){if(!this.canAdd()){return}var a=this.getSelectionModel().selected.items;if(a.length==0){FT.notifyError(FT.i18n("You have to select at least one item."));return}if(a[0].getEntityType()=="show"){FT.notifyError(FT.i18n("You cannot copy a project."))}if(!a[0].isSameEntityType(a)){FT.notifyError(FT.i18n("You can only copy items of the same type."))}FT.ganttCopiedItems=[];var b=[];Ext.each(a,function(c){if(this.isParentInList(c,a)){return true}if(!c.phantom){b.push({entityId:c.get("entityId"),entityType:c.getEntityType()})}else{FT.ganttCopiedItems.push(c.copy(Ext.id(),true))}},this);Ext.Ajax.request({url:"/track/getGanttData",params:{columns:Ext.encode(this.allServerColumns),data:Ext.encode(b),group:""},success:function(c){var d=Ext.decode(c.responseText);Ext.each(d.entities,function(g){var j=function(m){if(!Ext.isDefined(m)){return[]}var l=[m];for(var k=0;k<m.childNodes.length;k++){l=l.concat(j(m.childNodes[k]))}return l};var e=Ext.create("Gnt.data.TaskStore",{model:"FT.model.Task",autoLoad:false,proxy:"memory",sorters:[{property:"index",direction:"asc"},{property:"leaf",direction:"desc"},{property:"tasktypesort"},{property:"name"},{property:"StartDate"}]});e.proxy.data=g;e.load();var h=j(e.getRootNode().childNodes[0]);Ext.each(h,function(m){var k=this.taskStore.getById(m.get("entityId"));Ext.Object.each(m.data,function(n,o){if(Ext.String.startsWith(n,"__")&&!m.isEditable(n)){delete m.data[n]}});if(k){var l=k.getChanges();m.set(l)}},this);FT.ganttCopiedItems.push(e.getRootNode().childNodes[0].copy(Ext.id(),true))},this)},scope:this})},pasteItems:function(){if(!this.canAdd()){return}var a=this.getSelectionModel().selected.items;if(a.length==0){FT.notifyError(FT.i18n("You must select where to paste items."));return}if(Ext.isDefined(FT.ganttCopiedItems)){this.lockedGrid.getView().blockRefresh=true;Ext.each(a,function(c){var d=[];Ext.each(FT.ganttCopiedItems,function(e){d.push(e.copy(Ext.id(),true))},this);if(c.get("object_typeid")===FT.getTaskId()||c.get("object_typeid")===FT.getMilestoneId()){c=c.parentNode}function b(g,e){return e.get("index")-g.get("index")}d.sort(b);Ext.each(d,function(e){if(e.isValidDropOn(c.get("object_typeid"))){this.addChildrenCopies(c,[e])}},this)},this);this.lockedGrid.getView().blockRefresh=false;this.lockedGrid.getView().refresh()}},addChildrenCopies:function(g,e){var b=Ext.data.StoreManager.lookup("FT.store.ObjectType"),a,h,d,j,c;if(e.length!==0){for(c=0;c<e.length;c++){j=e[c];a=b.findRecord("typeid",j.get("object_typeid"));d=g.addObject(a);h={};Ext.each(this.allServerColumns,function(k){if(j.data[k]){h[k]=j.data[k]}},this);delete h.parent_id;delete h.taskid;delete h.entityId;d.set(h);this.addChildrenCopies(d,j.childNodes)}d.updateManualSortValues()}},addTask:function(c,b){var a=Ext.data.StoreManager.lookup("FT.store.ObjectType");var d=a.findRecord("typeid","11c137c0-ee7e-4f9c-91c5-8c77cec22b2c");if(d&&c){return this.addObject(c,d,b)}else{if(d){return this.addObject(null,d,b)}}},getSelectedRecord:function(){var a=this.getSelectionModel().selected.items;if(a.length==0){FT.notifyError(FT.i18n("You have to select at least one item."));return null}if(a.length>1){FT.notifyError(FT.i18n("You cannot have several items selected."));return null}return a[0]},getAppropriateParentForAddingObjects:function(a){if(!a){a=this.getSelectedRecord()}if(a&&a.get("object_typeid")===FT.getTaskId()){a=a.getParent()}return a},addObject:function(e,d,b){e=this.getAppropriateParentForAddingObjects(e);if(!e){return}if(!this.canAdd(e)){return}if(!d){var c=e.findPossibleChildren();if(c.length>0){d=c[0]}}if(!d){FT.notifyError(FT.i18n("This operation is not possible."));return}assert(e,"A record must be defined");assert(d,"A type record must be defined");if(!e.canBeChildOf(e.get("object_typeid"),d.get("typeid"))){FT.notifyError(FT.i18n("This operation is not possible."));return}var a=e.addObject(d);if(!a){return}a.updateManualSortValues();if(b===false){return a}this.lockedGrid.getView().refresh();this.getSelectionModel().select(a);if(!a.canHaveChildren()&&this.isColumnVisible("typeid")){this.startEditRecord(a,"typeid")}else{this.startEditRecord(a,"name")}return a},isColumnVisible:function(a){var b=false;Ext.each(this.columns,function(c){if(c.dataIndex==a){b=true;return false}},this);return b},addFromTemplate:function(b,a){if(b.length===0){FT.notifyError(FT.i18n("The template doesn't contain any items."));return}b=b.reverse();this.lockedGrid.getView().blockRefresh=true;Ext.each(a,function(c){Ext.each(b,function(e){var d=this.addTask(c,false);if(d){d.set(e)}},this)},this);this.lockedGrid.getView().blockRefresh=false;this.lockedGrid.getView().refresh()},moveItems:function(){var a=this.getSelectionModel().selected.items;if(a.length==0){FT.notifyError(FT.i18n("You have to select at least one item."));return}var d=a[0].get("object_typeid");var e=[];for(var b=0;b<a.length;b++){var c=a[b];if(c.get("object_typeid")!=d){FT.notifyError(FT.i18n("You can only move items of the same type."));return}if(c.phantom){FT.notifyError(FT.i18n("You cannot move unsaved items."));return}e.push({link:Ext.clone(c.get("link")),entityType:c.get("entityType"),entityId:c.get("entityId")})}FT.action.open("moveEntity",e,function(){},this)},isHierarchical:function(){return this.getTaskStore().getProxy().extraParams.group=="link"},smartCollapse:function(){var a=this.taskStore.getRootNode();var b=a.childNodes.length;this.collapseAll();if(b==1){a.childNodes[0].expand()}else{this.refreshViews()}},removeItems:function(){if(this.permissions["delete"]==false){FT.notifyError(FT.i18n("Permission denied."));return false}var a=this.getSelectionModel().selected.items;if(a.length==0){FT.notifyError(FT.i18n("You have to select at least one item."));return}for(var c=0;c<a.length;c++){var d=a[c];if(!d.isRemovable()){FT.notifyError(FT.i18n("One of the selected items cannot be removed."));return}}var e=this.undoRedo;var b=function(h){for(var g=0;g<h.length;g++){b(h[g].childNodes)}e.remove(h)};b(a)},unscheduleItems:function(b){var a=this.getSelectionModel().selected.items;Ext.each(a,function(c){c.unscheduleItem()},this);if(b){b.unscheduleItem()}},selectAll:function(){this.getSelectionModel().selectAll()},canAddToRecord:function(a){if(a.get("entityType")!="task"){return false}if(a.get("object_typeid")=="11c137c0-ee7e-4f9c-91c5-8c77cec22b2c"){return true}return false},canAdd:function(a){if(this.permissions.create==false){FT.notifyError(FT.i18n("Permission denied."));return false}if(a&&this.canAddToRecord(a)){return true}if(a&&a.get("entityType")=="list"){FT.notifyError(FT.i18n("Cannot add object to list."));return false}var b=this.getTaskStore().getProxy().extraParams.group;var c=["link","shots_only"];if(c.indexOf(b)==-1){FT.notifyError(FT.i18n("This cannot be done when grouping is active."));return false}return true},createMenuItem:function(b){var a={text:b.text,glyph:b.glyph,handler:function(){b.handler.apply(b.scope||this,[this.grid,this.rec])},scope:this};return a},guaranteeSelection:function(){var b=this.getSelectionModel().selected.items;if(b.length==0){var d=this.getStore().getRootNode();if(d&&d.firstChild){var c=this.getView().lockedView.getEl();c.scrollTo("top",0);var a=this.getSelectionModel();a.select([d.firstChild])}}},generateAddMenu:function(b,k,m,n){var c=[],j,e,d,l={},a;l[FT.getTaskId()]=" (Alt+T)";if(!Ext.isDefined(b)||b==null){var g=this.getSelectionModel().selected.items;if(g.length>0){b=g[0]}}var h=Ext.data.StoreManager.lookup("FT.store.ObjectType");h.each(function(o){var p=FT.glyph(FT.getObjectTypeIcon(o.get("typeid")));if(!this.columnHelper.isValidObjectTypeId(o.get("typeid"))){return true}d=n&&o.get("iscreatable")||b&&b.canBeChildOf(b.get("object_typeid"),o.get("typeid"));e={text:o.get("name"),glyph:p,scope:this,handler:function(){if(k){k.apply(m,[b,o.get("typeid")])}else{this.addObject(b,o)}}};a=l[o.get("typeid")];if(a){e.text+='<span style="color:#A0A0A0;">'+a+"</span>"}if(!d){e.disabled=true;e.qtip={text:o.get("name")+" cannot be added to selected object",align:"right"}}if(d){c.push(e)}},this);if(c.length===0){c.push({text:FT.i18n("No objects can be created on this level."),disabled:true})}return c},lazyReloadRecords:function(e,d){var c=[],b,a;if(this.columnHelper.hasTaskColumns()){for(b=0;b<e.length;b++){a=this.taskStore.getById(e[b].entityId);if(a){a.lazyDataLoaded=false;c.push(a)}}this.taskStore.lazyLoadRecords(c,d)}},reloadRecordsFromServer:function(d){var c=[],b,a;for(b=0;b<d.length;b++){a=this.taskStore.getById(d[b].entityId);if(a){c.push(d[b])}}if(!Ext.isArray(c)||c.length===0){return}Ext.Ajax.request({url:"/track/getGanttData",params:{columns:Ext.encode(this.allServerColumns),data:Ext.encode(c),group:""},success:function(e){var g=Ext.decode(e.responseText);Ext.each(g.entities,function(k){var l=k.children[0];var h=this.taskStore.getById(l.entityId);if(h==null){return true}Ext.iterate(h.modified,function(n,m){l[n]=h.data[n]});Ext.apply(h.data,Ext.clone(l));var j=Ext.clone(h.modified);this.undoRedoSyncer.lockAll();h.beginEdit();h.set(Ext.clone(l));h.modified=j;h.endEdit();this.undoRedoSyncer.unLockAll()},this)},scope:this})},setTimeSpan:function(a,b){a=a||new Date;b=b||new Date;a=this.getValidStartDate(a,b);b=this.getValidEndDate(a,b);return this.callParent([a,b])},getValidStartDate:function(b,a){if(this.projectStart>b){b=this.projectStart}return b},getValidEndDate:function(e,a){if(this.projectEnd<a){a=this.projectEnd}var d=this.getCurrentPresent();var c=Sch.preset.Manager.getPreset(d);if(c.maxSpan){var b=Ext.Date.add(e,Ext.Date.DAY,c.maxSpan);if(a>b){a=b}}return a},addEntities:function(a){Ext.Ajax.request({url:"/track/getGanttData",params:{columns:Ext.encode(this.allServerColumns),data:Ext.encode(a),group:""},success:function(b){var c=Ext.decode(b.responseText);Ext.each(c.entities,function(j){var d=j.children[0],g=this.taskStore.getById(d.parent_id),h=[],k=g,e;if(!g){return true}while(k){if(!k.isModified()){h.push(k)}k=k.parentNode}this.undoRedoSyncer.lockAll();this._addEntity(g,d);for(e=0;e<h.length;e++){h[e].reject()}this.undoRedoSyncer.unLockAll()},this);this.updateSorting();this.lockedGrid.getView().bufferedRenderer.handleViewScroll()},scope:this})},_addEntity:function(c,a){var b=a.children;a.children=[];c.insertChild(0,a);Ext.each(b,function(d){this._addEntity(c.childNodes[0],d)},this);c.childNodes[0].reject()}});Ext.define("FT.scheduler.Gantt",{extend:"FT.scheduler.GanttBase",showId:null,lockedOnly:true,getCurrentPresent:function(){var a=FT.getVar("gantt-zoom",3);if(a>9||a<1){a=3}return"gantt-zoom-"+a},setPreset:function(c){FT.setVar("gantt-zoom",c);var e=this.getStartDate();var b=this.getEndDate();var d=this.getValidStartDate(e,b);var a=this.getValidEndDate(d,b);this.switchViewPreset(this.getCurrentPresent(),d,a)},initComponent:function(){this.undoStack=[];this.redoStack=[];this.readOnly=false;var a=0.5;if(FT.util.isDays()){a=12}this.viewPreset=this.getCurrentPresent();this.startDate=new Date(2016,1,1);this.endDate=new Date(2016,1,2);this.lockedGridConfig={columnLines:false,bodyCls:"row-border-selection",rowHeight:50,collapsible:false,preventHeader:true};if(!this.lockedOnly){this.lockedGridConfig.width=FT.getVar("lockedWidth",500)}var g=this;var d=this.sorters||this.getDefaultSorters(null,this.schedulingHelper.getVariable("isManualSort2",false));this.taskStore=Ext.create("FT.scheduler.TaskStore",{overlay:this.taskOverlay,autoLink:this.schedulingHelper.getVariable("ganttAutoLink",false),autoBid:this.schedulingHelper.getVariable("ganttAutoBid",false),recalculateParents:true,remoteSort:false,isManualSort:this.schedulingHelper.getVariable("isManualSort2",false),sorters:d,lazyServerColumns:this.lazyServerColumns,doSort:function(j){Gnt.data.TaskStore.prototype.doSort.call(this,j)},applyLazyDependencies:function(j){g.dependencyStore.getProxy().data=j;g.dependencyStore.load({addRecords:true})},sort:function(o,n,j,m){if(Ext.isArray(o)&&o.length==1){o={direction:o[0].direction,property:o[0].property}}this.fireEvent("beforesorthack",o);if(!Ext.isArray(o)&&this.isManualSort){this.setManualSort(false,true)}var k=o.property,p,l;if(k=="name"&&this.getStoreGroup()!="link"){k="link"}if(k=="name"){o=g.getDefaultSorters(o.direction,this.isManualSort)}else{if(!Ext.isArray(k)){l=this.getProxy().getModel().prototype.columnDataLookup[k];if(l){o.sorterFn=function(u,t){var s=u.getSortValue(k,l.summaryType);var q=t.getSortValue(k,l.summaryType);if(s===null){return 1}if(q===null){return -1}if(s===q){return 0}return s<q?-1:1};o.sort=o.sorterFn}if(k!=="link"&&!Ext.isArray(o)){o=[o,{sorterFn:function(u,s){var t=u.getSortValue("link"),q=s.getSortValue("link");if(t===q){return 0}return t<q?-1:1},direction:"ASC"}]}}}Gnt.data.TaskStore.prototype.sort.call(this,o,n,j,m)},model:"FT.model.Task",autoLoad:false,proxy:{type:"ajax",actionMethods:{create:"POST",read:"POST",update:"POST",destroy:"POST"},url:"/track/getGanttTasks",reader:{type:"json",root:"children"},extraParams:{entityId:this.entity.entityId,entityType:this.entity.entityType,columns:Ext.encode(this.serverColumns),lazyColumns:Ext.encode(this.lazyServerColumns),group:this.defaultGroup,filters:this.filters,filterField:this.filterField,inList:this.inList}},groupBy:function(j){this.getProxy().extraParams.group=j},setInList:function(j,k){if(!Ext.isDefined(k)){k=false}this.getProxy().extraParams.inList=j;if(!k){this.load()}},setAutoBid:function(j){this.autoBid=j},setManualSort:function(k,j){if(this.isManualSort===k){return}var l;this.isManualSort=k;l=g.getDefaultSorters("ASC",this.isManualSort);if(j!==true){this.sort(l)}this.fireEvent("manualsortchanged",k)},setAutoLink:function(j){this.autoLink=j},getOverlay:function(){return this.overlay},getStoreGroup:function(){return this.getProxy().extraParams.group},isRemoteLoaded:function(){var j=false;Ext.each(this.tree.flatten(),function(k){if(k.isRemoteLoaded){j=true;return false}},this);return j}});this.taskStore.on("beforebulkremove",function(){var j=this.store.getRootNode();this.store.treeStore.nodeStore.onNodeCollapse(j,j.childNodes,true)},this);this.taskStore.on("read",function(j){Ext.suspendLayouts();this.updateSorting();Ext.resumeLayouts()},this);this.mon(this.taskStore,"lazyloadedrecords",function(j){Ext.each(j,function(k,l,m){this.lockedGrid.getView().onUpdate(this.taskStore,k)},this)},this);if(this.treeState){this.treeState.bindStore(this.taskStore)}this.taskStore.on("beforeload",this.onTaskStoreBeforeLoad,this);this.taskStore.on("load",this.onTaskStoreLoad,this);this.dependencyStore=Ext.create("Gnt.data.DependencyStore",{autoLoad:false,model:"FT.model.Dependency",proxy:{type:"memory",reader:{type:"json",idProperty:"Id"}},connectDependencies:function(j){if(j.length<2){return}Ext.each(j,function(t,s,n){if(s>=n.length-1){return}if(t.getStartDate()==null||t.getEndDate()==null){return}if(n[s+1].getStartDate()==null||n[s+1].getEndDate()==null){return}var p=t.getId()||t.internalId;var q=n[s+1].getId()||n[s+1].internalId;if(!this.isValidDependency(p,q,this.model.Type.EndToStart)){return}var m=t.getOutgoingDependencies();for(var l=0;l<m.length;l++){var o=m[l];if(o.getSourceId()==p&&o.getTargetId()==q&&o.getType()==this.model.Type.EndToStart){return}}var k=new this.model;k.setSourceId(p);k.setTargetId(q);k.setType(this.model.Type.EndToStart);this.add(k)},this)}});this.undoRedo2=Ext.create("FT.data.UndoRedoHelper",{syncField:"Id",isConfirmCancel:false,store:this.dependencyStore,contentType:"dep",remapBeforeSync:true,reloadAfterCommit:false,saveMaskTarget:this.loadMaskTarget,leaveRemovedInStore:false,pushToken:this.parent.getView().getPushToken()});this.undoRedo=Ext.create("FT.data.UndoRedoHelperTree",{syncField:"entityId",store:this.taskStore,contentType:"task",remapBeforeSync:true,reloadAfterCommit:false,saveMaskTarget:this.loadMaskTarget,undoRedo2:this.undoRedo2,partnerHelper:this.undoRedo2,enableAutosave:this.schedulingHelper.getVariable("gantt-autosave",false),extraDataCallback:function(){var k=Ext.clone(this.undoRedo2.stack[this.undoRedo2.position]);var j=this.undoRedo2.getDataToSave(k);if(j.add.length==0&&j.update.length==0&&j.remove.length==0){return null}return j},unsavedChanges:function(){try{return FT.data.UndoRedoHelperBase.prototype.unsavedChanges.apply(this)||this.undoRedo2.unsavedChanges()}catch(j){log(j)}return false},canRedo:function(){try{return FT.data.UndoRedoHelperBase.prototype.canRedo.apply(this)||this.undoRedo2.canRedo()}catch(j){log(j)}return false},canUndo:function(){try{return FT.data.UndoRedoHelperBase.prototype.canUndo.apply(this)||this.undoRedo2.canUndo()}catch(j){log(j)}return false},extraDataCallbackScope:this,pushToken:this.parent.getView().getPushToken()});this.undoRedoSyncer=Ext.create("FT.data.UndoRedoSyncer",{helpers:[this.undoRedo,this.undoRedo2]});this.taskStore.on("update",function(l,j,k,n,m){if(Ext.data.Model.EDIT!=k){return}j.onUpdateTask(n)},this);this.undoRedo.on("cancelchanges",function(){this.undoRedo2.internalCancelChanges()},this);this.undoRedo.on("beforeCancelSync",function(){return false},this);this.undoRedo.on("beforeaftersync",function(o){var l={};this.undoRedoSyncer.lockAll();this.taskStore.each(function(p){if(p.phantom){Ext.each(o.changes,function(q){if(p.internalId==q.extId){l[q.extId]=q.entityId;p.setInternalId(q.entityId)}},this)}},this);if(Ext.isDefined(o["new"])&&Ext.isDefined(o["new"].dependency)&&o["new"].dependency.length>0){var k=Ext.create("Ext.data.reader.Json",{model:"FT.model.Dependency"});var j=k.read(o["new"].dependency);this.dependencyStore.add(j.records)}var n=[];this.dependencyStore.each(function(p){if(p.phantom){n.push(p)}else{p.commit(true)}},this);for(var m=0;m<n.length;m++){this.dependencyStore.remove(n[m])}this.undoRedoSyncer.unLockAll();this.undoRedo2.initialize();this.undoRedo2.saveChanges(true)},this);this.cellEditing=Ext.create("Sch.plugin.TreeCellEditing",{clicksToEdit:2,onCellClick:function(n,p,k,l,s,j,m){this.taskColumnIndex=null;if(m.target){var o=Ext.fly(m.target).is(".cell--editable")&&Ext.fly(m.target)||Ext.fly(m.target).up(".cell--editable");var q=o&&o.first();if(q&&q.getAttribute("task-column-index")){this.taskColumnIndex=parseInt(q.getAttribute("task-column-index"))}}return Sch.plugin.TreeCellEditing.superclass.onCellClick.apply(this,arguments)},listeners:{beforeedit:function(l,k){if(k.field.startsWith("taskcolumn_")){if(Ext.isNumber(l.taskColumnIndex)){k.value=k.record.get(k.field)[l.taskColumnIndex]}else{return false}}if(k.field==""){return false}var j=k.record.isEditable(k.field);return j},scope:this},getEditor:function(j,m){if(!j.isEditable(m.dataIndex)){return null}var l=Sch.plugin.TreeCellEditing.superclass.getEditor.apply(this,arguments);if(FT.util.canEditWithEditor(l)==false){return null}if(Ext.isDefined(l.field)&&Ext.isFunction(l.field.editRecord)){if(!j.isTaskTypeColumn(m.dataIndex)){l.field.editRecord(j,j.getShowId())}else{var k=Ext.isNumber(this.taskColumnIndex)&&j.getTaskColumnEntityId(m.dataIndex)[this.taskColumnIndex];if(l.field.editId){l.field.editId(k,"task")}else{if(l.field.editRecord){l.field.editRecord(j)}}}}return l},onEditComplete:function(p,s,m){var q=this,j=q.grid,k=q.getActiveColumn(),n=j.getSelectionModel(),l=q.context,o;if(k){o=l.record;q.setActiveEditor(null);q.setActiveColumn(null);q.setActiveRecord(null);l.value=s;if(!q.validateEdit()){return}if(Ext.isNumber(this.taskColumnIndex)){var t=Ext.Array.clone(o.get(k.dataIndex));t[this.taskColumnIndex]=s;l.value=t;if(!o.isEqual(s,m)){o.set(k.dataIndex,t)}}else{if(!o.isEqual(s,m)){o.set(k.dataIndex,s)}}if(n.setCurrentPosition){n.setCurrentPosition(n.getCurrentPosition())}else{j.getView().focus()}q.fireEvent("edit",q,l);q.editing=false}},getCell:function(k,l){var j=Sch.plugin.TreeCellEditing.superclass.getCell.apply(this,arguments);if(Ext.isNumber(this.taskColumnIndex)&&j){return j.down('[task-column-index="'+this.taskColumnIndex+'"]').parent()}return j},checkReadOnly:function(){return true}});var e=new Ext.XTemplate('<tpl for=".">','<div class="sch-zone {uniquecls} {Cls}" style="left:{left}px;top:{top}px;height:{height}px;width:{width}px"></div>','<div style="z-index: 0; position:absolute; left:{[this.calcLeft(values.width,values.left,3)]}px;top:{top}px;height:{height}px;width:{width}px; border-right: 1px solid #eaeaea;"></div>','<div style="z-index: 0; position:absolute; left:{[this.calcLeft(values.width,values.left,4)]}px;top:{top}px;height:{height}px;width:{width}px; border-right: 1px solid #eaeaea;"></div>','<div style="z-index: 0; position:absolute; left:{[this.calcLeft(values.width,values.left,5)]}px;top:{top}px;height:{height}px;width:{width}px; border-right: 1px solid #eaeaea;"></div>','<div style="z-index: 0; position:absolute; left:{[this.calcLeft(values.width,values.left,6)]}px;top:{top}px;height:{height}px;width:{width}px; border-right: 1px solid #eaeaea;"></div>',"</tpl>",{calcLeft:function(k,l,m){var j=k/2;return l-j*m*0.97}});var h=[];Ext.each(this.commands,function(j){if(j.ctype=="rightclick"){h.push(j)}});var c=["bufferedrenderer2"];this.depEditor=new Gnt.plugin.DependencyEditor({width:350,height:225,cls:"ft-gantt-dependencyeditor",bodyPadding:10,animCollapse:false,showLag:true,constrain:true,grid:this,buttons:[{text:FT.i18n("Delete"),cls:"button-danger",scope:this,handler:function(){var j=this.depEditor,k=this.depEditor.dependencyRecord;k.store.undoRedo.remove(k);j.collapse()}},"->",{text:FT.i18n("Cancel"),scope:this,handler:function(){this.depEditor.collapse()}},{text:FT.i18n("OK"),scope:this,cls:"button-primary",handler:function(){var j=this.depEditor;j.getForm().updateRecord(j.dependencyRecord);this.depEditor.collapse()}}]});c.push(this.cellEditing);this.contextMenu=Ext.create("FT.scheduler.FullContextMenu",{commands:h,listHelper:this.listHelper,taskTemplateHelper:this.taskTemplateHelper,permissions:this.permissions});c.push(this.contextMenu);if(this.permissions.linkObject){c.push(this.depEditor)}var b={leftLabelField:{dataIndex:"link",renderer:function(j,l){if(j===""){return""}var k=Ext.clone(j);delete k.show;delete k.task;text=FTrack.grid.NoLinkRenderer(k);return text}},rightLabelField:{dataIndex:"userids",renderer:function(){var j=FTrack.grid.UserRendererPrint.apply(this,arguments);if(j!=""){return"<div style='position:relative; padding-left:1px;padding-right:1px;'><div style='position: absolute;width:100%;background-color:#f5f5f5;top:7px;height:4px;z-index:-1;'></div>"+j+"</div>"}}},plugins:c,listeners:{taskdblclick:function(k,j){Ext.each(this.commands,function(l){if(l.ctype=="dblclick"){l.handler.call(l.scope||this,this,j)}},this)},taskclick:this.handleSingleClickCommand,beforetaskdrag:this.onGanttBeforeTaskDragDrop,taskdrop:this.onGanttTaskDragDrop,scope:this}};Ext.apply(this,b);this.taskStore.remoteSort=true;this.callParent();this.taskStore.remoteSort=false;this.renderSelector=Ext.create("FT.grid.RenderSelector",{grid:this.lockedGrid,getRenderer:function(k,j){k.selectedRenderer=null;k.selectedSummaryRenderer=null;return k.renderer}});this.renderSelector.on("rendererselected",function(k,j,l){this.lockedGrid.fireEvent("rendererselected",k,j,l)},this);this.lockedGrid.on("beforeedit",function(l,m,k){var j=this.lockedGrid.getSelectionModel();j.cachedSelection=[];j.selected.each(function(n){j.cachedSelection.push(n)},this);j.cachedSelection.push(m.record)},this);this.lockedGrid.on("edit",function(q,s,t){var k=s.grid;var w=s.value;var m=s.column;var x=s.originalValue;var u=Ext.value(m.editDataIndex,s.field);var j=s.record;var n=j.getEntityType();var l=j.get("object_typeid");var p=k.getSelectionModel();if(Ext.isDefined(FT.data.editOperators[n])){var o=FT.data.editOperators[n][u]}if(p.cachedSelection&&p.cachedSelection.indexOf(s.record)!==-1&&s.record.isModified(u)){Ext.each(p.cachedSelection,function(z,y,A){var B=z.get(u);if(j==z){B=x}if(Ext.isDefined(o)){o.call(this,z,w,B)}if(z.isEditable(u)&&z.get("object_typeid")==l){z.set(u,w)}},this)}Ext.each(p.cachedSelection,function(y){y.afterUserEdit(u)})},this);this.lockedGrid.on("edit",function(k,m,j){var l=m.record;if(l.canHaveChildren()){return}if(!l.parentNode){return}if(["4be63b64-5010-42fb-bf1f-428af9d638f0","bad911de-3bd6-47b9-8b46-3476e237cb36"].indexOf(l.parentNode.get("object_typeid"))==-1){return}m.grid.getView().onUpdate(this.store,l.parentNode)},this);this.lockedGrid.on("itemclick",this.handleSingleClickCommand,this);this.on("shortcut",this.handleShortcuts,this)},isCustomGroup:function(a){return a!=="link"&&a!=="shots_only"&&a!=="tasks_only"},getDefaultSorters:function(e,a){var d=this.taskStore&&this.taskStore.getStoreGroup()||this.defaultGroup;if(!a&&this.isCustomGroup(d)){return{property:"name",direction:"ASC"}}e=Ext.value(e,"ASC");var b=e==="ASC";var c=[{property:"leaf",direction:b?"desc":"asc"},{property:"tasktypesort",direction:b?"asc":"desc"},{property:"name",direction:b?"asc":"desc"},{property:"StartDate",direction:b?"asc":"desc"}];if(a){Ext.Array.insert(c,0,[{property:"sort",direction:b?"asc":"desc"}])}return c},handleSingleClickCommand:function(b,a){Ext.each(this.commands,function(c){if(c.ctype=="click"){c.handler.call(c.scope||this,this,a)}},this)},hasUnsavedChanges:function(){return this.undoRedo.unsavedChanges()},handleUnsavedChanges:function(){if(this.undoRedo.unsavedChanges()){this.undoRedo.cancelChanges();return false}},handleShortcuts:function(a){if(a=="save"){this.undoRedo.syncChanges()}else{if(a=="undo"){this.undo()}else{if(a=="redo"){this.redo()}}}},undo:function(){this.lockedGrid.getView().blockRefresh=true;this.undoRedoSyncer.undo();this.lockedGrid.getView().blockRefresh=false;this.refreshViews();this.onLockedViewScroll();if(this.taskStore.isManualSort){this.updateSorting()}},redo:function(){this.lockedGrid.getView().blockRefresh=true;this.undoRedoSyncer.redo();this.lockedGrid.getView().blockRefresh=false;this.refreshViews();this.onLockedViewScroll();if(this.taskStore.isManualSort){this.updateSorting()}},setEntity:function(a){this.undoRedo.forceSaveChanges();this.entity=a;var c=this.lockedGrid.getView();var b=this.normalGrid.getView();b.saveScrollState();this.undoRedo.lock();this.taskStore.getProxy().extraParams.entityId=this.entity.entityId;this.taskStore.getProxy().extraParams.entityType=this.entity.entityType;this.taskStore.load();this.undoRedo.unLock()},setProjectDates:function(a,b){this.projectStart=a;this.projectEnd=b;this.parent.fireEvent("projectdateschanged",this.projectStart,this.projectEnd)},updateTimeFromServer:function(b){var a=moment(b.projectstart);var d=moment(b.projectend);if(this.showId!=b.showid){this.setProjectDates(new Date(a),new Date(d));this.showId=b.showid;var c=this.schedulingHelper.getTimespan(a,d);this.setTimeSpan(c[0],c[1])}},reloadView:function(a){this.setTimeSpan(a.startdate,a.enddate)},onTaskStoreLoad:function(c,g,b,j){var e=this.lockedGrid.getView();var d=this.normalGrid.getView();Ext.suspendLayouts();if(j!==false){var h=c.getProxy().getReader().jsonData.data;this.updateTimeFromServer(h)}c.fireEvent("afterfirstload");FT.suspendGantt=false;this.parent.getView().disableLoadMask();Ext.resumeLayouts(true);this.undoRedoSyncer.unLockAll();this.getSelectionModel().select([]);var a=new Ext.util.DelayedTask(function(){this.parent.isReconfigure=false},this);a.delay(500);if(g.internalId!=="root"){Ext.Function.defer(this.lockedGrid.getView().bufferedRenderer.handleViewScroll,1,this.lockedGrid.getView().bufferedRenderer,[1]);this.restoreScrollState()}},scrollToTask:function(a){if(a.getStartDate()==null){return}var b=a.getStartDate();if(b<this.getStart()&&this.projectStart<b){this.setTimeSpan(b,this.getEnd())}else{if(b>this.getEnd()&&this.projectEnd>b){this.setTimeSpan(this.getStart(),b)}else{if(b<this.projectStart||b>this.projectEnd){FT.notifyError(FT.i18n("Task is outside of project start/end dates."))}}}b=Sch.util.Date.add(a.getStartDate(),Sch.util.Date.DAY,-4);if(b<this.getStart()){b=a.getStartDate()}this.scrollToDate(b)},setLockedOnly:function(a){this.lockedOnly=a;if(a){this.normalGrid.collapse();if(Ext.getScrollbarSize().width==0||this.lockedOnly){this.lockedGrid.getView().addCls("lockedScroll")}}else{this.ignoreResize=true;this.normalGrid.expand();this.ignoreResize=false;this.updateLockedWidth()}},updateLockedWidth:function(){if(this.lockedOnly){this.lockedGrid.getView().addCls("lockedScroll")}else{this.lockedGrid.setWidth(this.getOptimalLockedWith());this.lockedGrid.getView().removeCls("lockedScroll")}if(Ext.getScrollbarSize().width==0){this.lockedGrid.getView().addCls("lockedScroll")}},getOptimalLockedWith:function(){if(this.lockedOnly){return 200}var b=0;Ext.each(this.columns,function(c){if(c.forceWidth){b+=c.forceWidth}else{if(c.width){b+=c.width}}},this);var a=FT.getVar("lockedWidth",Math.min(this.getWidth()/2,b));return Math.min(this.getWidth()-100,a)},startEditRecord:function(c,b){var a=null;Ext.each(this.lockedGrid.columns,function(d){if(d.dataIndex==b){a=d;return false}},this);if(a==null){return}Ext.Function.defer(function(){this.cellEditing.startEdit(c,a)},100,this)},onTaskStoreBeforeLoad:function(b,a){this.saveScrollState();this.undoRedoSyncer.lockAll();return true},updateSorting:function(){if(!this.taskStore.sorters||!this.taskStore.sorters.isMixedCollection){return}var a=this.taskStore.sorters.items;if(this.taskStore.getStoreGroup()!=="link"&&a.length===5){a={property:"name",direction:"ASC"}}this.taskStore.sort(a)},saveScrollState:function(){var a;if(this.lockedGrid){a=this.lockedGrid.getView();if(a&&a.rendered){if(!a.ftrackScrollState){a.ftrackScrollState={}}a.ftrackScrollState.left=a.el.dom.scrollLeft;a.ftrackScrollState.top=a.el.dom.scrollTop}}},restoreScrollState:function(){var a;if(this.lockedGrid){a=this.lockedGrid.getView();if(a&&a.rendered&&a.ftrackScrollState){a.el.dom.scrollLeft=a.ftrackScrollState.left;a.el.dom.scrollTop=a.ftrackScrollState.top;delete a.ftrackScrollState}}},isBatchMove:function(b,a){return a.getCount()>1||b.isLeaf()===false},onGanttBeforeTaskDragDrop:function(e,b,d){var a=e.getSelectionModel();var c=false;if(d.ctrlKey){c=true}if(c&&this.isBatchMove(b,a)){c=false}this.setCascadeChanges(c);b.oldStart=b.get("StartDate")},onGanttTaskDragDrop:function(a,g,j){var b=a.getSelectionModel();var c=g.get("StartDate").getTime()-g.oldStart.getTime();this.setCascadeChanges(false);if(this.isBatchMove(g,b)){g.store.suspendEvents();var h=[];if(g.isLeaf()){h.push(g)}var k=g.get("StartDate")<g.oldStart;var e=g.getCalendar();var d=e.calculateDuration(k?g.get("StartDate"):g.oldStart,k?g.oldStart:g.get("StartDate"),Sch.util.Date.SECOND);b.selected.each(function(l){if(l.isLeaf()===false&&l.isScheduled()===false){return}this.shiftRecordDates(l,d,k,h)},this);g.store.resumeEvents();g.recalculateParents();this.refreshViews();if(h.length>1){FT.notifySuccess(Ext.String.format("{0} objects were rescheduled sucessfully.",h.length))}}},shiftRecordDates:function(b,g,c,d){if(d.indexOf(b)!==-1){return}if(b.isLeaf()===false){Ext.each(b.childNodes,function(h){this.shiftRecordDates(h,g,c,d)},this);return}if(b.getStartDate()===null||b.getStartDate()===null){return}var e=b.getCalendar();if(c){var a=e.calculateStartDate(b.getStartDate(),g,Sch.util.Date.SECOND)}else{var a=e.calculateEndDate(b.getStartDate(),g,Sch.util.Date.SECOND)}b.setStartDate(a,true,true);b.recalculateParents();d.push(b)},resyncHeaderWithHorizontalScroll:function(){this.lockedGrid.scrollByDeltaX(1);this.lockedGrid.scrollByDeltaX(-1)}});Ext.define("FT.scheduler.BaseContextMenu",{extend:"Gnt.plugin.TaskContextMenu",initComponent:function(){this.callParent();this.on("beforeshow",this.onBeforeShow,this)},onBeforeShow:function(){var a=this.rec;if(a==null){this.setDisabled(true);return false}this.setDisabled(false);this.prepareMenu(a)},prepareMenu:function(a){},createItem:function(b){var a={text:b.text,icon:b.icon,handler:function(){b.handler.apply(b.scope||this,[this.grid,this.rec])},scope:this};return a},generateMenu:function(){return[]},createMenuItems:function(){var c=this.generateMenu();var b=[],a=0;Ext.each(c,function(d){if(d=="-"&&a>0){b.push(d);a=0}else{if(d!="-"){b.push(d);a++}}});return b},getCollapseExpandSection:function(){var b=[];b.push({text:FT.i18n("Collapse all"),scope:this,handler:function(c,d){c.smartCollapse()}},{text:FT.i18n("Expand all"),scope:this,handler:function(c,d){c.expandAll();c.refreshViews()}});var a=[];Ext.each(b,function(c){a.push({text:c.text,handler:function(){c.handler.apply(c.scope||this,[this.grid,this.rec])},scope:this})},this);return a}});Ext.define("FT.scheduler.FullContextMenu",{extend:"FT.scheduler.BaseContextMenu",prepareMenu:function(a){if(this.depMenu){this.depMenu.setDisabled(a.getAllDependencies().length==0)}this.unscheduleButton.setDisabled(a.getStartDate()==null&&a.getEndDate()==null);if(a.isMilestone()){this.convertToTask.show()}else{this.convertToTask.hide()}},generateMenu:function(){var d=[];d.push({text:FT.i18n("Add"),requiresTask:true,menu:{plain:true,listeners:{beforeshow:this.populateAddMenu,scope:this}}});if(this.permissions.linkObject===true){var b=[];b.push({text:FT.i18n("Incoming"),handler:function(){var g=this.grid.getSelectionModel().selected.items,e=[];Ext.each(g,function(h){e.push({entityId:h.get("entityId"),entityType:h.get("entityType")})},this);FT.util.actions.createDependencies(e,"incoming")},scope:this});b.push({text:FT.i18n("Outgoing"),handler:function(){var g=this.grid.getSelectionModel().selected.items,e=[];Ext.each(g,function(h){e.push({entityId:h.get("entityId"),entityType:h.get("entityType")})},this);FT.util.actions.createDependencies(e,"outgoing")},scope:this});d.push({text:FT.i18n("Create links"),requiresTask:true,menu:{plain:true,items:b}});d.push(this.depMenu=Ext.widget({xtype:"menuitem",text:FT.i18n("Edit links"),requiresTask:true,menu:{plain:true,listeners:{beforeshow:this.populateDependencyMenu,mouseover:this.onDependencyMouseOver,mouseleave:this.onDependencyMouseOut,scope:this}}}))}d.push(this.convertToTask=Ext.widget({xtype:"menuitem",text:FT.i18n("Convert to task"),handler:function(){var e=this.grid.getSelectionModel().selected.items;Ext.each(e,function(g){g.convertToTask()},this)},scope:this}));d.push(this.unscheduleButton=Ext.widget({xtype:"menuitem",text:FT.i18n("Unschedule selected"),handler:function(){this.grid.unscheduleItems(this.rec)},scope:this}));d.push("-");d.push(this.listHelper.getEntityMenu());if(this.taskTemplateHelper){d.push(this.taskTemplateHelper.getEntityMenu())}if(this.permissions.move===true){d.push(this.moveButton=Ext.widget({xtype:"menuitem",text:FT.i18n("Move (Ctrl+M)"),handler:function(){this.grid.moveItems()},scope:this}))}if(this.permissions["delete"]===true){d.push("-");d.push(Ext.create("Ext.menu.Item",{text:FT.i18n("Delete"),handler:function(){this.grid.removeItems()},scope:this}))}if(this.commands.length>0){d.push("-")}Ext.each(this.commands,function(e){d.push({text:e.text,handler:function(){e.handler.apply(e.scope||this,[this.grid,this.rec])},scope:this})},this);d.push("-");d=d.concat(this.getCollapseExpandSection());d=d.concat(this.getGanttSection());var c=this;this.pluginInfo={grid:function(){return c.grid},contentType:"task"};var a=FT.plugin.Manager.getMenus(this);if(a.length>0){d.push("-");d=d.concat(a)}return d},populateDependencyMenu:function(g){if(!this.depMenu){return}var d=this.grid,b=d.getTaskStore(),e=this.rec.getAllDependencies(),a=d.dependencyStore;g.removeAll();if(e.length==0){return false}this.depMenu.setDisabled(false);var c=this.rec.getId()||this.rec.internalId;Ext.each(e,function(k){var j=k.getSourceId(),h=b.getById(j==c?k.getTargetId():j);if(h){g.add({depId:k.internalId,text:Ext.util.Format.ellipsis(h.getName(),30),scope:this,handler:function(m){var l;a.each(function(n){if(n.internalId==m.depId){l=n;return false}});this.onDependencyDblClick(this.grid.depEditor,l)}})}},this)},onDependencyDblClick:function(b,a){if(b.lagField){b.lagField.name=a.lagField}if(b.typeField){b.typeField.name=a.typeField}if(a!=b.dependencyRecord){b.show(a)}},populateAddMenu:function(g){var c=this.grid,b=c.getTaskStore(),e=this.rec.getAllDependencies(),a=c.dependencyStore,d=this.rec;g.removeAll();g.add(c.generateAddMenu(d))},getGanttSection:function(){var b=[];b.push({text:FT.i18n("Scroll to"),scope:this,handler:function(c,d){c.scrollToTask(d)}},{text:FT.i18n("Adjust to bid"),scope:this,handler:function(c,e){var d=c.getSelectionModel().selected.items;Ext.each(d,function(g){g.adjustToBid()},this)}});var a=[];Ext.each(b,function(c){a.push({text:c.text,handler:function(){c.handler.apply(c.scope||this,[this.grid,this.rec])},scope:this})},this);return a}});Ext.define("FT.scheduler.BasicContextMenu",{extend:"FT.scheduler.BaseContextMenu",activateMenu:function(c,b){b.stopEvent();this.rec=c;var a=this.query("[requiresTask]");Ext.each(a,function(d){d.setDisabled(!c)});this.showAt(b.getXY())},generateMenu:function(){menu=this.getCollapseExpandSection();return menu}});Sch.preset.Manager.registerPreset("gantt-zoom-1",{timeColumnWidth:200,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"YEAR",shiftIncrement:1,defaultSpan:1,timeResolution:{unit:"HOUR",increment:12},headerConfig:{middle:{unit:"QUARTER",align:"center",renderer:function(c,b,a){return Ext.String.format("{0}{1}",Sch.util.Date.getShortNameOfUnit("QUARTER").toUpperCase(),Math.floor(c.getMonth()/3)+1)}},top:{unit:"YEAR",align:"center",renderer:function(a){return FT.intl.formatDateTime(a,{year:"numeric"})}}}});Sch.preset.Manager.registerPreset("gantt-zoom-2",{timeColumnWidth:200,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftIncrement:3,shiftUnit:"MONTH",defaultSpan:12,timeResolution:{unit:"HOUR",increment:12},headerConfig:{middle:{unit:"MONTH",align:"center",renderer:function(a){return FT.intl.formatDateTime(a,{year:"numeric",month:"short"})}},top:{unit:"YEAR",align:"center",renderer:function(a){return FT.intl.formatDateTime(a,{year:"numeric"})}}}});Sch.preset.Manager.registerPreset("gantt-zoom-3",{timeColumnWidth:20,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"HOUR",increment:12},headerConfig:{middle:{unit:"DAY",align:"center",renderer:function(a){return FT.intl.formatDateTime(a,{weekday:"narrow"})}},top:{unit:"WEEK",renderer:function(a){return FT.intl.formatDateTime(a,{year:"numeric",month:"short",day:"numeric",weekday:"short"})}}},maxSpan:120});Sch.preset.Manager.registerPreset("gantt-zoom-4",{timeColumnWidth:30,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"HOUR",increment:12},headerConfig:{middle:{unit:"DAY",align:"center",renderer:function(a){return FT.intl.formatDateTime(a,{weekday:"narrow"})}},top:{unit:"WEEK",renderer:function(a){return FT.intl.formatDateTime(a,{year:"numeric",month:"short",day:"numeric",weekday:"short"})}}},maxSpan:120});Sch.preset.Manager.registerPreset("gantt-zoom-5",{timeColumnWidth:40,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"HOUR",increment:12},headerConfig:{middle:{unit:"DAY",align:"center",renderer:function(a){return FT.intl.formatDateTime(a,{weekday:"narrow"})}},top:{unit:"WEEK",renderer:function(a){return FT.intl.formatDateTime(a,{year:"numeric",month:"short",day:"numeric",weekday:"short"})}}},maxSpan:120});Sch.preset.Manager.registerPreset("gantt-zoom-6",{timeColumnWidth:50,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:1,timeResolution:{unit:"HOUR",increment:1},headerConfig:{middle:{unit:"DAY",align:"center",increment:1,renderer:function(a){return FT.intl.formatDateTime(a,{month:"numeric",day:"numeric"})}},top:{unit:"WEEK",renderer:function(a){return FT.intl.formatDateTime(a,{month:"long",day:"numeric",weekday:"long"})}}},maxSpan:60});Sch.preset.Manager.registerPreset("gantt-zoom-7",{timeColumnWidth:100,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"G:i",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:1,timeResolution:{unit:"MINUTE",increment:30},headerConfig:{middle:{unit:"DAY",align:"center",increment:1,renderer:function(a){return FT.intl.formatDateTime(a,{month:"short",day:"numeric"})}},top:{unit:"WEEK",renderer:function(a){return FT.intl.formatDateTime(a,{month:"long",day:"numeric",weekday:"long"})}}},maxSpan:60});Sch.preset.Manager.registerPreset("gantt-zoom-8",{timeColumnWidth:150,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"G:i",shiftUnit:"WEEK",shiftIncrement:1,defaultSpan:1,timeResolution:{unit:"MINUTE",increment:15},headerConfig:{middle:{unit:"DAY",align:"center",increment:1,renderer:function(a){return FT.intl.formatDateTime(a,{month:"short",day:"numeric"})}},top:{unit:"WEEK",renderer:function(a){return FT.intl.formatDateTime(a,{month:"long",day:"numeric",weekday:"long"})}}},maxSpan:60});Sch.preset.Manager.registerPreset("gantt-zoom-9",{timeColumnWidth:15,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"G:i",shiftIncrement:1,shiftUnit:"DAY",defaultSpan:24,timeResolution:{unit:"MINUTE",increment:15},headerConfig:{middle:{increment:1,unit:"HOUR",align:"center",renderer:function(a){return FT.intl.formatDateTime(a,{hour:"2-digit",hour12:false})}},top:{unit:"DAY",align:"center",renderer:function(a){return FT.intl.formatDateTime(a,{month:"long",day:"numeric",weekday:"long"})}}},maxSpan:15});Ext.define("FT.scheduler.TaskStore",{extend:"Gnt.data.TaskStore",lazyServerColumns:null,applyLazyTasks:function(c){var a,d,b,e=["EndDate","StartDate"];Ext.each(c,function(h,g,j){a=this.getById(h.entityId);if(a){Ext.iterate(h,function(l,k){if(l.startsWith("taskcolumn_")){d=l.split("_");if(d.length===3&&e.indexOf(d[2])!==-1){h[l]=k.map(Ext.data.Types.DATE.convert)}}});Ext.apply(a.data,h);Ext.apply(a.raw,h)}},this)},applyLazyDependencies:Ext.emptyFn,lazyLoadRecords:function(b,c){var e=[],g=[],d=this.lazyServerColumns,a=c&&c.ganttIsClosed;if(!d.length&&a){return}Ext.each(b,function(h,j,k){if(!h.lazyDataLoaded&&h.get("entityType")=="task"){e.push({entityId:h.get("entityId"),entityType:h.get("entityType")});h.lazyDataLoaded=true;g.push(h)}});if(!e.length){return}this.fireEvent("beforelazyloadedrecords",g);Ext.Ajax.request({url:"/track/getLazyGanttData",params:{data:Ext.encode(e),columns:Ext.encode(d)},success:function(h){var j=Ext.decode(h.responseText);this.applyLazyTasks(j.tasks);this.applyLazyDependencies(j.dependencies);this.fireEvent("lazyloadedrecords",g)},scope:this})}});Ext.ns("FT.list");Ext.define("FT.list.ListContextMenu",{extend:"Ext.menu.Item",text:FT.i18n("my menu"),url:"/lists/getLists",beforeItems:null,hideOnClick:false,initComponent:function(){this.extraParams=Ext.value(this.extraParams,{});this.addListStore=Ext.create("Ext.data.Store",{autoLoad:false,fields:["name","value","disabled"],mode:"remote",proxy:{actionMethods:"POST",type:"ajax",url:this.url,reader:{type:"json"},extraParams:this.extraParams},sorters:[{property:"name",direction:"asc"}]});this.addListSelector=Ext.create("FT.button.Selector",{cls:"ftrack-button-grey",text:FT.i18n("Group"),hideOnClick:true,lazyLoad:false,store:this.addListStore,displayField:"name",valueField:"value",qtip:FT.tip(16),selectAction:undefined,disableIfEmpty:false,menu:{maxHeight:FT.fancyViewport.getHeight(),setVerticalPositionModified:function(){var g=this,j,h=g.el.getY(),k=h,m=g.getHeight(),d=FT.fancyViewport.getHeight(),e=Ext.fly(g.el.getScopeParent()),c=d,l=g.getPosition(true)[1];e=null;if(g.floating){j=g.maxHeight?g.maxHeight:c-l;if(m>c){k=h-l}else{if(j<m){k=h-(m-j)}else{if(h+m>d){k=d-m}}}}g.el.setY(k)}},beforeItems:[{text:"",hidden:true}]});this.addListStore.on("load",function(c){if(c.getCount()==1&&c.first().get("value")=="nolists"){var d=this.addListSelector.menu.items.getAt(1);if(Ext.isDefined(d)){d.disable()}}},this);this.addListStore.on("datachanged",function(c){if(c.getCount()==1&&c.first().get("value")=="loading"){var d=this.addListSelector.menu.items.getAt(1);if(Ext.isDefined(d)){d.disable()}}},this);this.addListSelector.menu.on("beforeshow",function(d){var c={params:{typeid:d.parentItem.typeid}};this.fireEvent("beforeload",c);this.addListStore.load(c)},this);var b=FT.util.copyStore("FT.store.ListType");b.sort([{property:"name"}]);var a=[];if(this.beforeItems){a=this.beforeItems}b.each(function(c){a.push({text:c.get("name"),typeid:c.get("typeid"),menu:this.addListSelector.menu,hideOnClick:false})},this);this.addListSelector.on("selectionchanged",function(c){this.fireEvent("selectionchanged",c)},this);this.menu={items:a};this.callParent(arguments);this.relayEvents(this.menu,["beforeshow"],"menu")},empty:function(a){this.addListStore.loadData(Ext.isDefined(a)?a:[])}});Ext.ns("FT.list");Ext.define("FT.list.ListMenu",{extend:"Ext.button.Button",glyph:FT.glyph("list"),showId:null,initComponent:function(){this.lists=Ext.create("FT.list.ListContextMenu",{text:FT.i18n("View list"),url:"/lists/getListsFromShow",extraParams:{entityTypes:Ext.encode(this.entityTypes||[]),objectTypes:Ext.encode(this.objectTypes||[])},beforeItems:[{text:FT.i18n("No list"),handler:function(){this.fireEvent("selectlist",null)},scope:this}]});this.lists.on("selectionchanged",function(a){this.fireEvent("selectlist",a)},this);this.lists.on("beforeload",function(a){a.params.showid=this.showId},this);this.menu={xtype:"menu",items:[]};this.callParent(arguments);this.listHelper.on("activelistchanged",this.onActiveListChanged,this)},onActiveListChanged:function(a){this.setActiveList(a)},setActiveList:function(a){this.setListName(a);if(a!==null){this.removeButtonCls("ftrack-button-grey");this.setButtonCls("toolbar-button-highlight")}else{this.setButtonCls("ftrack-button-grey");this.removeButtonCls("toolbar-button-highlight")}},setListName:function(a){if(!a){this.setText("");return}Ext.Ajax.request({url:"/lists/getListName",params:{listid:a},success:function(b){b=Ext.decode(b.responseText);var c=b.listName;this.setText(c)},scope:this})},setText:function(b){if(!b){this.callParent([""]);return}this.setTooltip(b);var a=b.length,c=25;if(a>c){b=b.substr(0,c);b+="..."}this.callParent([b])},setShowId:function(a){this.showId=a}});Ext.ns("FT.list");FT.list.encode=function(a){return FT.encode64(Ext.encode(a))};FT.list.decode=function(a){return Ext.decode(FT.decode64(a))};FT.list.open=function(e){var d,c=e.get("entity"),g=e.get("showid"),b=null,a={};a.entityId=e.get("listid");a.entityType="list";FT.app.open("projects",a)};Ext.define("FT.list.ListHelper",{extend:"Ext.util.Observable",enableCreateAttribute:true,selectionModel:null,listid:null,enableCreate:true,constructor:function(a){Ext.apply(this,a);this.entityTypes=Ext.value(this.entityTypes,[]);this.objectTypes=Ext.value(this.objectTypes,[]);this.addEvents(["selectlist","activelistchanged"]);this.entityMenu=null;this.selectedItems=[];this.entityType=null;this.callParent(arguments);this.on("selectlist",this.onSelectList,this)},getEntityMenu:function(){if(this.entityMenu){return this.entityMenu}this.entityMenu=this.createEntityMenuItem();this.entityMenu.on("destroy",function(){delete this.entityMenu},this);return this.entityMenu},setActiveList:function(a){this.listid=a;this.fireEvent("activelistchanged",a)},clearActiveList:function(){this.listid=null},getActiveList:function(){var a=FT.app.getCfg();if(a.entityType=="list"){return a.entityId}return null},getMenuItems:function(){var a=[];if(this.enableCreate){a.push(this.generateCreateMenu())}a.push(this.generateAddMenu());a.push(this.generateRemoveMenu());a.push(this.generateMoveMenu());return a},createEntityMenuItem:function(){var a=Ext.widget({xtype:"menuitem",text:FT.i18n("Lists"),menu:{plain:true,items:this.getMenuItems()}});return a},onBeforeLoad:function(a,b){a.empty([{name:FT.i18n("Loading..."),value:"loading",disabled:true}]);b.params.entityType=this.entityType;b.params.items=Ext.encode(this.getSelectedItems())},generateCreateMenu:function(){this.createMenuItem=Ext.widget({xtype:"menuitem",text:FT.i18n("Create from selected"),handler:function(){var b={entityId:this.showId,entityType:"show"};assert(this.showId,"project id must be defined");var a=this.getSelectedItems();FT.configure.createList(b,this.entityType,function(c){this.addItemsToList(a,c)},this)},scope:this});return this.createMenuItem},generateAddMenu:function(){this.addMenuItem=Ext.create("FT.list.ListContextMenu",{text:FT.i18n("Add selected to"),listeners:{menubeforeshow:this.onBeforeAddMenuShow,scope:this}});this.addMenuItem.on("selectionchanged",function(a){this.addItemsToList(this.getSelectedItems(),a)},this);this.addMenuItem.on("beforeload",Ext.pass(this.onBeforeLoad,[this.addMenuItem]),this);return this.addMenuItem},generateMoveMenu:function(){this.moveMenuItem=Ext.create("FT.list.ListContextMenu",{text:FT.i18n("Move selected to")});this.moveMenuItem.on("selectionchanged",function(a){if(this.getActiveList()===null){FT.notifyError(FT.i18n("You must go to a list to be able to move objects from it."));return}this.moveItemsToList(this.getSelectedItems(),a,this.getActiveList())},this);this.moveMenuItem.on("beforeload",Ext.pass(this.onBeforeLoad,[this.moveMenuItem]),this);return this.moveMenuItem},generateRemoveMenu:function(){this.removeMenuItem=Ext.create("FT.list.ListContextMenu",{text:FT.i18n("Remove selected from"),url:"/lists/getListsRemove"});this.removeMenuItem.on("selectionchanged",function(a){this.removeItemsFromList(this.getSelectedItems(),a)},this);this.removeMenuItem.on("beforeload",Ext.pass(this.onBeforeLoad,[this.removeMenuItem]),this);return this.removeMenuItem},getSelectedItems:function(){if(this.selectionModel){var a=this.selectionModel.selected.items;var b=[];Ext.each(a,function(c){b.push({entityType:c.get("entityType"),entityId:c.get("entityId")})},this);return b}return this.selectedItems},setSelectedItems:function(a){this.selectedItems=a;if(a.length>0){this.entityType=a[0].entityType}},moveItemsToList:function(b,c,a){Ext.Ajax.request({url:"/lists/moveItems",params:{items:Ext.encode(b),tolist:c,fromlist:a},success:function(d){var e=d.responseText;if(e=="success"){FT.notifySuccess(FT.i18n("Items moved to list"))}}})},addItemsToList:function(b,a){Ext.Ajax.request({url:"/lists/addItems",params:{items:Ext.encode(b),listid:a},success:function(c){var d=c.responseText;if(d=="success"){FT.notifySuccess(FT.i18n("Items added to list"))}}})},removeItemsFromList:function(b,a){Ext.Ajax.request({url:"/lists/removeItems",params:{items:Ext.encode(b),listid:a,showid:this.showId},success:function(c){var d=c.responseText;if(d=="success"){FT.notifySuccess(FT.i18n("Items removed from list"))}}})},getListMenu:function(){if(!Ext.isDefined(this.listMenu)){this.listMenu=Ext.create("FT.list.ListMenu",{entityTypes:this.entityTypes,objectTypes:this.objectTypes,showId:this.showId,listHelper:this,qtip:FT.tip("toolbar-button-lists"),overflowText:FT.i18n("Lists"),tourId:"projects-lists"});this.listMenu.menu.add(this.getMenuItems());this.relayEvents(this.listMenu,["selectlist"])}return this.listMenu},setShowId:function(a){if(this.showId!=a){this.clearActiveList()}this.showId=a;if(this.listMenu){this.listMenu.setShowId(a)}},onBeforeAddMenuShow:function(g){if(!this.selectionModel){return}var e=false,b=this.selectionModel.getSelection(),a=0,d=b.length,c=g.items;for(;a<d;a++){e=e||b[a].phantom}c.each(function(h){e?h.disable():h.enable()},this);if(e){FT.notifyError(FT.i18n("Un-saved items cannot be added to list."))}},onSelectionChanged:function(b,a){var c=a[0];if(c){this.entityType=c.get("entityType")}},setSelectionModel:function(a){this.selectionModel=a;if(this.selectionModel){this.mon(this.selectionModel,"selectionchange",this.onSelectionChanged,this)}},onSelectList:function(a){this.setActiveList(a,true)}});Ext.define("FT.list.LinkListHelper",{mixins:{observable:"Ext.util.Observable"},constructor:function(a){this.mixins.observable.constructor.call(this);Ext.apply(this,a);this.addEvents(["itemslinkedtolist"]);this.callParent(arguments)},setSelectionModel:function(a){this.selModel=a},getLinkListMenu:function(){return[{text:FT.i18n("Link to existing task"),handler:Ext.bind(this.linkExistingTask,this)},{text:FT.i18n("Link to new task"),handler:Ext.bind(this.linkNewTask,this)},{text:FT.i18n("Un-link list from task"),menu:{listeners:{beforeshow:this.onBeforeUnLinkMenuShow,scope:this},items:[]}}]},onBeforeUnLinkMenuShow:function(b){var a=this.getSelectedListid();b.removeAll(true);b.add({text:FT.i18n("Loading...")});Ext.Ajax.request({url:"/lists/getLinkedTasks",params:{listid:a},success:function(c){var d=Ext.decode(c.responseText);if(d.success){this.populateUnlinkMenu(b,d.tasks)}},scope:this})},populateUnlinkMenu:function(e,g){var c=this.getSelectedListid();var a=0,d=g.length,b=[];if(d==0){b.push({text:FT.i18n("No tasks")})}e.removeAll(true);for(;a<d;a++){b.push({text:g[a].name,handler:Ext.bind(this.unlinkItemsFromList,this,[[g[a]],c])})}e.add(b)},linkItemsToList:function(b,a){Ext.Ajax.request({url:"/lists/linkItems",params:{items:Ext.encode(b),listid:a},success:function(c){var d=c.responseText;if(d=="success"){FT.notifySuccess(FT.i18n("Items linked to list"))}this.fireEvent("itemslinkedtolist",a,b)},scope:this})},unlinkItemsFromList:function(b,a){Ext.Ajax.request({url:"/lists/unlinkItems",params:{items:Ext.encode(b),listid:a},success:function(c){var d=c.responseText;if(d=="success"){FT.notifySuccess(FT.i18n("Items un-linked from list"))}this.fireEvent("itemsunlinked",a,b)},scope:this})},getSelection:function(){assert(this.selModel,"Selection model is set");var a=this.selModel.getSelection();assert(a.length>0,"Records are selected");return a[0]},getSelectedListid:function(){var a=this.getSelection(),b=a.get("listid");return b},linkNewTask:function(){var b=this.getSelectedListid();var a=function(c){this.linkItemsToList([{entityId:c.entityId,entityType:c.entityType}],b)};FT.create("11c137c0-ee7e-4f9c-91c5-8c77cec22b2c",null,null,Ext.bind(a,this))},linkExistingTask:function(){var a=this,b=Ext.create("FT.Window",{title:FT.i18n("Select entity"),width:480,height:640,bodyPadding:"0 20 20 20",layout:"fit",items:[Ext.create("FT.tree.EntitySelector",{cls:"ft-entityselector ft-entityselector-open",entity:a.entity,selectionTypes:["11c137c0-ee7e-4f9c-91c5-8c77cec22b2c"],infoText:FT.i18n("Select a task"),listeners:{entityselected:function(){this.onEntitySelected.apply(this,arguments);b.close()},scope:this}})],autoShow:true})},onEntitySelected:function(c,b){var a=this.getSelectedListid();assert(a,"Right click context has listid");assert(b,"Task selection gives record");this.linkItemsToList([{entityId:b.get("entityId"),entityType:b.get("entityType")}],a)},updateEntity:function(a){this.entity=a}});Ext.define("FT.menu.RemoteContextMenu",{alternateClassName:["FT.ContextMenu"],extend:"Ext.menu.Item",emptyText:FT.i18n("Nothing..."),text:FT.i18n("my menu"),url:"/lists/getLists",beforeItems:null,hideOnClick:false,getSelectedEntities:Ext.emptyFn,getExtraParams:null,proxy:null,displayField:"name",valueField:"value",initComponent:function(){this.extraParams=Ext.value(this.extraParams,{});this.proxy=Ext.valueFrom(this.proxy,{type:"ajax",url:this.url,extraParams:this.extraParams});this.addListStore=Ext.create("Ext.data.Store",{autoLoad:false,fields:["name","value","disabled"],proxy:this.proxy,sorters:[{property:"name",direction:"asc"}]});this.addListSelector=Ext.create("FT.button.Selector",{cls:"ftrack-button-grey",text:FT.i18n("Group"),hideOnClick:true,lazyLoad:false,store:this.addListStore,displayField:this.displayField,valueField:this.valueField,qtip:FT.tip(16),selectAction:undefined,disableIfEmpty:false,disabledField:"disabled",menu:{setVerticalPositionModified:function(){var e=this,h,g=e.el.getY(),j=g,l=e.getHeight(),c=Ext.getBody().getHeight(),d=Ext.fly(e.el.getScopeParent()),b=c,k=e.getPosition(true)[1];d=null;if(e.floating){h=e.maxHeight?e.maxHeight:b-k;if(l>b){j=g-k}else{if(h<l){j=g-(l-h)}else{if(g+l>c){j=c-l}}}}e.el.setY(j)}},beforeItems:[{text:"",hidden:true}]});this.addListStore.on("load",function(c,b){if(!b||b.length===0){this.menu.add('<div style="opacity:0.5;padding:6px 10px 3px 27px;cursor:default;">'+this.emptyText+"</div>")}},this);this.addListSelector.menu.on("beforeshow",function(d){var c={},b;if(this.getExtraParams){c.params=this.getExtraParams()}else{c.params={data:Ext.encode(this.getSelectedEntities())}}this.addListStore.load(c);this.addListStore.removeAll();this.menu.add('<div style="opacity:0.5;padding:6px 10px 3px 27px;cursor:default;">Loading...</div>')},this);var a=[];if(this.beforeItems){a=this.beforeItems}this.addListSelector.on("selectionchanged",function(b){this.fireEvent("selectionchanged",b)},this);this.menu=this.addListSelector.menu;this.callParent(arguments)},empty:function(a){this.addListStore.loadData(Ext.isDefined(a)?a:[])}});Ext.define("FT.tasktemplate.TaskTemplateHelper",{extend:"Ext.util.Observable",selectionModel:null,constructor:function(a){Ext.apply(this,a);this.addEvents("templateselected");this.callParent(arguments);this.store=Ext.create("Ext.data.Store",{fields:["templateid","name"],proxy:{type:"direct",directFn:FTApi.TaskTemplate.getTemplates}})},getMenuItems:function(){this.store.load();this._selector=Ext.create("FT.button.Selector",{valueField:"templateid",displayField:"name",store:this.store,emptyText:FT.i18n("No templates")});this._selector.on("select",this.onTemplateSelect,this);return this._selector.menu},onTemplateSelect:function(b){var a=this._sm.getSelection();FTApi.TaskTemplate.applyTemplate({templateid:b},function(c){this.fireEvent("templateselected",b,c,a)},this)},setSelectionModel:function(a){this._sm=a},getEntityMenu:function(){var a=Ext.widget({xtype:"menuitem",text:FT.i18n("Task templates"),menu:this.getMenuItems(),listeners:{afterrender:function(){if(this._selector.store.getCount()==0){a.setDisabled(true)}},destroy:function(){this._selector.destroy;delete this._selector},scope:this}});return a},setShowId:function(a){this._showid=a;Ext.apply(this.store.proxy.extraParams,{showid:a})}});Ext.define("FT.window.Thumbnail",{extend:"FT.Window",title:FT.i18n("Change thumbnails"),width:820,height:650,padding:10,overflowY:"auto",modal:true,cls:"ft-thumbnail-upload-window",reserveScrollbar:true,initComponent:function(){var b=this;this.bbar=["->",{xtype:"button",text:FT.i18n("Done"),handler:function(){b.close()}}];this.callParent();var a=[];Ext.Array.each(this.selected,function(e,c,d){a.push({entityId:e.get("entityId"),entityType:e.get("entityType")})});this.store=Ext.create("Ext.data.Store",{fields:["entityId","path","thumbnail","entityType"],autoLoad:true,proxy:{type:"ajax",url:"/upload/getEntityInfo",extraParams:{selected:Ext.encode(a)}}});this.store.on("beforeload",this.onBeforeLoad,this);this.store.on("load",this.createContent,this);FT.app.on("beforeunload",this.stopUnload);this.on("beforedestroy",function(){this.cleanUp()},this)},onBeforeLoad:function(){this.loadingMask=new Ext.LoadMask(this.el,{msg:"Loading..."});this.loadingMask.show()},stopUnload:function(){return false},cleanUp:function(){FT.app.un("beforeunload",this.stopUnload)},_getImageHtml:function(a){return FTrack.grid.IconRendererFit({thumbUrl:FT.util.getThumbnailUrl(a),size:{x:250,y:135}})},createContent:function(){var a=this;this.containers=[];this.dropZones=[];this.thumbnails=[];this.store.each(function(g,l,k){var c=Ext.create("Ext.Container",{index:l,width:260,height:160,cls:"ft-thumbnail-dropzone"});var j=Ext.create("Ext.Component",{html:'<span data-qtip="'+g.get("path")+'">'+g.get("path")+"</span>",cls:"ft-thumbnail-dropzone-label"});var h=g.get("thumbnail");var b=Ext.create("Ext.Component",{width:250,height:135,attachmentId:h,style:"clear: both",html:a._getImageHtml(h)});var d=Ext.create("FT.attachment.DropZoneComponent",{entityId:g.get("entityId"),entityType:g.get("entityType"),index:l,width:240,height:120});var e=Ext.create("FT.button.Button",{entityId:g.get("entityId"),entityType:g.get("entityType"),ui:"plain-toolbar",glyph:FT.glyph("remove"),cls:"ft-thumbnail-remove tool",qtip:{text:"Remove",align:"right"},handler:function(){d.show();b.hide();this.hide();Ext.Ajax.request({url:"/attachment/setThumbnail",params:{attachmentId:null,entityId:this.entityId,entityType:this.entityType},success:function(){FT.notifySuccess(FT.i18n("Removed thumbnail"))},failure:function(){FT.notifySuccess(FT.i18n("Failed to remove thumbnail"))}})}});d.on("attachmentadd",function(){this.hide();var m=this.getAttachmentId();b.getEl().setHTML(a._getImageHtml(m));b.attachmentId=m;b.show();e.show();d.resetInterface();Ext.Ajax.request({url:"/attachment/setThumbnail",params:{attachmentId:m,entityId:this.entityId,entityType:this.entityType},success:function(n){FT.notifySuccess(FT.i18n("Updated thumbnail"));this.attachments=[]},scope:this})});if(h===null){b.hide();e.hide()}else{d.hide()}c.add([e,j,b,d]);a.containers.push(c)});this.add(this.containers);this.loadingMask.hide()}},function(){FT.plugin.Manager.registerMenuFn(function(a){if("list"===a.pluginInfo.contentType){return null}else{return{xtype:"menuitem",text:FT.i18n("Change thumbnails"),listeners:{click:function(){var b;if(Ext.isFunction(a.pluginInfo.grid)){b=a.pluginInfo.grid().getSelectionModel()}else{b=a.pluginInfo.grid.getSelectionModel()}win=Ext.create("FT.window.Thumbnail",{selected:b.getSelection()}).show()}}}}})});Ext.define("FT.window.Actions",{extend:"FT.window.Window",title:FT.i18n("Actions"),modal:true,minWidth:400,minHeight:400,width:700,height:640,layout:"fit",initComponent:function(){this.callParent();var b=this,a;a=Ext.create("FT.actions.ActionsContainer",{selection:this.selection});a.on("action-launched",function(){this.close()},this);this.add(a)}});Ext.ns("FT.data");FT.data.editOperators={};FT.data.editOperators.task={typeid:function(c,h,k){var j=Ext.data.StoreManager.lookup("FT.store.TaskType");var e=j.findRecord("typeid",h);if(!e){return}var a=Ext.util.Format.lowercase(e.get("name"));var b=j.findRecord("typeid",k);if(!b){return}var d=Ext.util.Format.lowercase(b.get("name"));var l=Ext.util.Format.lowercase(c.get("name"));log(d);log(l);if(l!=a&&[d,"task name"].indexOf(l)!=-1){c.set("name",a);var g=c.get("link");g=Ext.clone(g);if(g&&g.length>0){length=g.length;if(g[length-1].name!=a){g[length-1].name=a;c.set("link",g)}}}},name:function(b,e,a){var d=b.get("link"),c;d=Ext.clone(d);if(d&&d.length>0){c=d.length;if(d[c-1].name!=e){d[c-1].name=e;b.set("link",d)}}}};FT.data.editOperators.shot={name:function(b,d,a){var c=b.get("link");c=Ext.clone(c);if(c&&c[c.length-1].name!=d){c[c.length-1].name=d;b.set("link",c)}}};FT.data.editOperators.show={fullname:function(b,d,a){var c=b.get("name");if(c==""||c==FT.util.string2Code(a)){b.set("name",FT.util.string2Code(d))}}};FT.data.addOperators={};FT.data.addOperators.task={typeid:function(a){var e=a.get("typeid");var b=Ext.data.StoreManager.lookup("FT.store.TaskType");type=b.findRecord("typeid",e);if(!type){return}var c=a.get("name");if(Ext.isEmpty(c)){c=Ext.util.Format.lowercase(type.get("name"));a.set("name",c)}var d=a.get("link");d=Ext.clone(d);Ext.apply(d,{task:{name:c,id:""}});a.set("link",d)},shot:function(a){var b=Ext.clone(a.get("link"));delete b.task;a.set("shot",Ext.clone(b));delete b.shot;a.set("sequence",Ext.clone(b));delete b.sequence;a.set("show",Ext.clone(b))}};FT.data.addOperators.shot={link:function(a){var c=a.get("link");var b=Ext.isEmpty(a.get("name"))?"name":a.get("name");a.set("name",b);var c=a.get("link");c=Ext.clone(c);c.push({name:b,id:"",objectType:FT.getShotId(),type:"task"});a.set("link",c)}};Ext.define("FT.window.ResourceSelector",{extend:"FT.Window",width:450,height:450,bodyPadding:15,autoShow:true,title:FT.i18n("Select resources"),autoScroll:true,centerOnResize:true,layout:"fit",saveText:FT.i18n("Save"),modal:true,emptyText:FT.i18n("Nothing to select."),criteria:null,saveHandler:Ext.emptyFn,initComponent:function(){var a=true;var b=true;if(this.criteria){if(this.criteria.resource_type=="user"){a=false}else{if(this.criteria.resource_type=="group"){b=false}}}this.value=[];this.resourceSelector=Ext.create("FT.spark.Component",{component:"ResourceSelector",props:{value:null,className:"ftrack-spark-root",users:b,groups:a,multi:true,messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onChange:Ext.bind(this._onChange,this)}});this.items=[this.resourceSelector];this.cancelButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Cancel"),handler:this.close,scope:this});this.saveButton=Ext.widget("button",{disabled:true,xtype:"button",cls:"button-primary",text:this.saveText,handler:this._handler,scope:this});this.bbar=["->",this.cancelButton,this.saveButton];this.callParent(arguments)},_onChange:function(a){this.value=a;this.resourceSelector.setProps({value:this.value});if(this.value.length===0){this.saveButton.disable()}else{this.saveButton.enable()}},_handler:function(){this.saveHandler(this.value);this.close()}});function openResourceSelectorWindow(a){if(FT.isLegacyResourceSelectorEnabled){Ext.create("FT.window.ResourceSelectorLegacy",a)}else{Ext.create("FT.window.ResourceSelector",a)}}Ext.define("FT.window.ResourceSelectorLegacy",{extend:"FT.Window",width:450,height:250,bodyPadding:10,autoShow:true,title:FT.i18n("Select resources"),autoScroll:true,centerOnResize:true,layout:"fit",saveText:FT.i18n("Save"),modal:true,emptyText:FT.i18n("Nothing to select."),criteria:null,saveHandler:Ext.emptyFn,initComponent:function(){this.resourceSelector=Ext.create("FT.form.field.ResourceEditorLegacy",{autoLoad:false,growMin:120});this.resourceSelector.store.on("load",this._onLoad,this,{single:true});this.resourceSelector.on("change",this._onChange,this);if(this.criteria!==null){this.resourceSelector.store.load({params:{criteria:this.criteria}})}else{this.resourceSelector.store.load()}this.items=[];this.cancelButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Cancel"),handler:this.close,scope:this});this.saveButton=Ext.widget("button",{hidden:true,disabled:true,xtype:"button",cls:"button-primary",text:this.saveText,handler:this._handler,scope:this});this.bbar=["->",this.cancelButton,this.saveButton];this.callParent(arguments)},_onChange:function(a){if(this.resourceSelector.lastSelection.length===0){this.saveButton.disable()}else{this.saveButton.enable()}},_onLoad:function(a){if(a.getCount()===0){this.add({xtype:"container",html:Ext.String.format('<p class="ft-grid-emptytext-small" style="text-align: center; margin-top: 50px;">{0}</p>',this.emptyText)});this.cancelButton.setText(FT.i18n("Close"))}else{this.add(this.resourceSelector);this.saveButton.show()}},_handler:function(a){this.saveHandler(Ext.Array.map(this.resourceSelector.lastSelection,function(b){return b.get("id")}));this.close()}});Ext.define("FT.window.Message",{extend:"Ext.window.Window",header:false,modal:true,maskUi:"ft-dark",autoShow:true,closable:false,width:600,height:400,loading:true,loadingText:FT.i18n("Loading..."),layout:{type:"vbox",align:"center",constrainAlign:true},defaults:{margin:40},initComponent:function(){if(this.loading){this.on("show",function(){this.setLoading(this.loadingText)},this)}this.callParent(arguments)},setMessage:function(b){b=Ext.apply({message:null,details:null,scope:this,handler:Ext.emptyFn,buttonText:FT.i18n("Close"),success:false,error:false,showButton:true},b);if(b.success){b.buttonCls="button-primary"}else{if(b.error){b.buttonCls="button-danger"}}var d=Ext.create("Ext.Component",{tpl:['<h2 class="messagewindow__message {cls}">',"{message}","</h2>",'<p class="text-faded">',"{details}","</p>"].join("")});d.update({details:b.details,message:b.message,cls:b.messageCls});var a=[d];if(b.showButton){var c=Ext.create("Ext.button.Button",{scale:"large",cls:b.buttonCls,text:b.buttonText,handler:function(){b.handler.apply(b.scope||this);this.close()},scope:this});a.push(c)}this.setLoading(false);this.removeAll();this.add(a)},setError:function(b,a){a=Ext.apply({error:true,message:b},a);this.setMessage(a)},setSuccess:function(b,a){a=Ext.apply({success:true,message:b},a);this.setMessage(a)}});Ext.ns("FT.util.actions");FT.util.actions.selfAssign=function(a){if(FT.isDemo()){FT.notifySuccess("You cannot self assign in demo mode.");return}Ext.Ajax.request({url:"/main/claimTask",params:{data:Ext.encode({msg:"",id:a})},success:function(b){var b=Ext.decode(b.responseText),d=b.success,c=b.message;if(d){FT.notifySuccess(c)}else{FT.notifyError(c)}}})};Ext.define("FT.DependencyCreator",{extend:"FT.Window",width:480,height:640,layout:"fit",autoShow:true,callback:null,callbackScope:null,initComponent:function(){var a=[],b;if(this.dependencyType==="incoming"){this.title="Create incoming link"}else{this.title="Create outgoing link"}b=Ext.data.StoreManager.lookup("FT.store.ObjectType");b.each(function(c){if(c.get("entityType")==="task"){a.push(c.get("typeid"))}},this);this.selector=Ext.create("FT.tree.MultiEntitySelector",{bodyStyle:"border-width:1px 0;",cls:"ft-entityselector ft-entityselector-open",entity:this.objects[0],selectionTypes:a,infoText:"",tbarCfg:{padding:"0 15 10 15",cls:"background-default"},listeners:{entityselected:this._onEntitySelected,scope:this}});this.items=[this.selector];this.callParent()},_onEntitySelected:function(b,a){var c=[];Ext.each(a,function(d){c.push({entityId:d.get("entityId"),entityType:d.get("entityType")})},this);this.linkObjects(c)},linkObjects:function(a){var b={};if(this.dependencyType==="incoming"){b.to=this.objects;b.from=a}else{b.from=this.objects;b.to=a}Ext.Ajax.request({url:"/asset/linkObjects",params:{data:Ext.encode(b)},success:function(d){var c=Ext.decode(d.responseText);if(c.success===true){FT.notifySuccess(FT.i18n("Objects were linked correctly."));if(this.callback&&this.callbackScope){this.callback.apply(this.callbackScope)}this.close();FT.util.intercom("LINKED-OBJECTS")}else{FT.notifyError(FT.i18n("Objects were not linked correctly."));this.close()}},scope:this})}});FT.util.actions.createDependencies=function(c,b,e,a){var d;if(!Ext.isArray(c)||c.length==0){FT.notifyError(FT.i18n("Please select the obects to link."));return}d=Ext.create("FT.DependencyCreator",{objects:c,dependencyType:b,callback:e,callbackScope:a})};Ext.ns("FT.util.templates");FT.util.templates.getMilestoneTemplate=function(){return new Ext.XTemplate('<tpl for=".">','<div class="ftrack-widget-milestone <tpl if="xindex!=xcount">border-lighter</tpl>" style="padding:8px 3px;<tpl if="xindex!=xcount">border-width:0;border-bottom-width:2px;</tpl>">','<div class="{[this.getDateBoxClass(values)]}">','<span class="ft-calendar-month">{month}</span>','<span class="ft-calendar-day">{day}</span>',"</div>",'<tpl if="progress &gt; -1">','<div style="width:50px;float:right;padding-top:10px;">',"{[FTrack.grid.ProgressBarRenderer(values.progress)]}","</div>","</tpl>",'<div style="overflow: hidden;">','<div class="toolbar-text-color" style="overflow: hidden;white-space:nowrap;text-overflow:ellipsis;">{[FTrack.grid.LinkRenderer(values.link)]}</div>','<div class="toolbar-text-color" style="overflow: hidden;white-space:nowrap;text-overflow:ellipsis;">{description}</div>',"</div>",'<div style="clear:both;"></div>',"</div>","</tpl>",{getDateBoxClass:function(a){return a.highlight?"ft-calendar-box ft-calendar-box--highlight":"ft-calendar-box"}})};Ext.define("Ext.ux.grid.column.ActionButtonColumn",{extend:"Ext.grid.column.Column",alias:["widget.actionbuttoncolumn"],alternateClassName:"Ext.grid.ActionButtonColumn",header:"&#160;",sortable:false,constructor:function(d){var h=this,b=Ext.apply({},d),c=b.items||[h],a=c.length,e,g;delete b.items;h.callParent([b]);h.items=c;h.renderer=function(s,w,k,n,q,p,o){s=Ext.isFunction(b.renderer)?b.renderer.apply(this,arguments)||"":"";w.tdCls+=" "+Ext.baseCSSPrefix+"action-col-cell";for(e=0;e<a;e++){g=c[e];var j=Ext.id();var u=Ext.baseCSSPrefix+"action-col-button "+Ext.baseCSSPrefix+"action-col-button-"+String(e);var t=g.iconIndex?k.data[g.iconIndex]:g.iconCls?g.iconCls:"";var m=Ext.bind(g.handler,h,[o,n,q]);var l=k.data[g.hideIndex];Ext.Function.defer(h.createGridButton,100,h,[g.text,j,k,u,m,l,t]);s+='<div id="'+j+'">&#160;</div>'}return s}},createGridButton:function(g,h,b,a,e,d,c){(new Ext.Button({text:g,cls:a,iconCls:c,hidden:d,handler:e})).render(Ext.getBody(),h);Ext.get(h).remove()},destroy:function(){delete this.items;delete this.renderer;return this.callParent(arguments)},cascade:function(b,a){b.call(a||this,this)},getRefItems:function(){return[]}});Ext.define("Ext.ux.form.field.BoxSelect",{extend:"Ext.form.field.ComboBox",alias:["widget.comboboxselect","widget.boxselect"],requires:["Ext.selection.Model","Ext.data.Store"],multiSelect:true,forceSelection:true,createNewOnEnter:false,createNewOnBlur:false,encodeSubmitValue:false,triggerOnClick:true,stacked:false,pinList:true,filterPickList:false,selectOnFocus:true,grow:true,growMin:false,growMax:false,fieldSubTpl:['<div id="{cmpId}-listWrapper" class="x-boxselect {fieldCls} {typeCls}">','<ul id="{cmpId}-itemList" class="x-boxselect-list">','<li id="{cmpId}-inputElCt" class="x-boxselect-input">','<div id="{cmpId}-emptyEl" class="{emptyCls}">{emptyText}</div>','<input id="{cmpId}-inputEl" type="{type}" ','<tpl if="name">name="{name}" </tpl>','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="size">size="{size}" </tpl>','<tpl if="tabIdx">tabIndex="{tabIdx}" </tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','class="x-boxselect-input-field {inputElCls}" autocomplete="off">',"</li>","</ul>","</div>",{compiled:true,disableFormats:true}],childEls:["listWrapper","itemList","inputEl","inputElCt","emptyEl"],componentLayout:"boxselectfield",emptyInputCls:"x-boxselect-emptyinput",initComponent:function(){var b=this,a=b.typeAhead;if(a&&!b.editable){Ext.Error.raise("If typeAhead is enabled the combo must be editable: true -- please change one of those settings.")}Ext.apply(b,{typeAhead:false});b.callParent();b.typeAhead=a;b.selectionModel=new Ext.selection.Model({store:b.valueStore,mode:"MULTI",lastFocused:null,onSelectChange:function(c,e,d,g){g()}});if(!Ext.isEmpty(b.delimiter)&&b.multiSelect){b.delimiterRegexp=new RegExp(String(b.delimiter).replace(/[$%()*+.?\[\\\]{|}]/g,"\\$&"))}},initEvents:function(){var a=this;a.callParent(arguments);if(!a.enableKeyEvents){a.mon(a.inputEl,"keydown",a.onKeyDown,a)}a.mon(a.inputEl,"paste",a.onPaste,a);a.mon(a.listWrapper,"click",a.onItemListClick,a);a.mon(a.selectionModel,{selectionchange:function(b,c){a.applyMultiselectItemMarkup();a.fireEvent("valueselectionchange",a,c)},focuschange:function(b,d,c){a.fireEvent("valuefocuschange",a,d,c)},scope:a})},onBindStore:function(a,b){var c=this;if(a){c.valueStore=new Ext.data.Store({model:a.model,proxy:{type:"memory"}});c.mon(c.valueStore,"datachanged",c.applyMultiselectItemMarkup,c);if(c.selectionModel){c.selectionModel.bindStore(c.valueStore)}}},onUnbindStore:function(a){var b=this,c=b.valueStore;if(c){if(b.selectionModel){b.selectionModel.setLastFocused(null);b.selectionModel.deselectAll();b.selectionModel.bindStore(null)}b.mun(c,"datachanged",b.applyMultiselectItemMarkup,b);c.destroy();b.valueStore=null}b.callParent(arguments)},createPicker:function(){var b=this,a=b.callParent(arguments);b.mon(a,{beforerefresh:b.onBeforeListRefresh,scope:b});if(b.filterPickList){a.addCls("x-boxselect-hideselections")}return a},onDestroy:function(){var a=this;Ext.destroyMembers(a,"valueStore","selectionModel");a.callParent(arguments)},getSubTplData:function(){var a=this,b=a.callParent(),c=a.emptyText&&b.value.length<1;b.value="";if(c){b.emptyText=a.emptyText;b.emptyCls=a.emptyCls;b.inputElCls=a.emptyInputCls}else{b.emptyText="";b.emptyCls=a.emptyInputCls;b.inputElCls=""}return b},afterRender:function(){var a=this;if(Ext.supports.Placeholder&&a.inputEl&&a.emptyText){delete a.inputEl.dom.placeholder}a.bodyEl.applyStyles("vertical-align:top");if(a.grow){if(Ext.isNumber(a.growMin)&&a.growMin>0){a.listWrapper.applyStyles("min-height:"+a.growMin+"px")}if(Ext.isNumber(a.growMax)&&a.growMax>0){a.listWrapper.applyStyles("max-height:"+a.growMax+"px")}}if(a.stacked===true){a.itemList.addCls("x-boxselect-stacked")}if(!a.multiSelect){a.itemList.addCls("x-boxselect-singleselect")}a.applyMultiselectItemMarkup();a.callParent(arguments)},findRecord:function(d,c){var b=this.store,a;if(!b){return false}a=b.queryBy(function(e,g){return e.isEqual(e.get(d),c)});return a.getCount()>0?a.first():false},onLoad:function(){var b=this,a=b.valueField,c=b.valueStore,d=false;if(c){if(!Ext.isEmpty(b.value)&&c.getCount()==0){b.setValue(b.value,false,true)}c.suspendEvents();c.each(function(h){var g=b.findRecord(a,h.get(a)),e=g?c.indexOf(h):-1;if(e>=0){c.removeAt(e);c.insert(e,g);d=true}});c.resumeEvents();if(d){c.fireEvent("datachanged",c)}}b.callParent(arguments)},isFilteredRecord:function(a){var c=this,b=c.valueField,d=a.get(b);return c.store.findExact(b,d)===-1&&c.valueStore.findExact(b,d)!==-1},doRawQuery:function(){var a=this,b=a.inputEl.dom.value;if(a.multiSelect){b=b.split(a.delimiter).pop()}this.doQuery(b,false,true)},onBeforeListRefresh:function(){this.ignoreSelection++},onListRefresh:function(){this.callParent(arguments);if(this.ignoreSelection>0){--this.ignoreSelection}},onListSelectionChange:function(c,g){var b=this,d=b.valueStore,e=[],a;if(b.ignoreSelection<=0&&b.isExpanded){d.each(function(h){if(Ext.Array.contains(g,h)||b.isFilteredRecord(h)){e.push(h)}});e=Ext.Array.merge(e,g);a=Ext.Array.intersect(e,d.getRange()).length;if(a!=e.length||a!=b.valueStore.getCount()){b.setValue(e,false);if(!b.multiSelect||!b.pinList){Ext.defer(b.collapse,1,b)}if(d.getCount()>0){b.fireEvent("select",b,d.getRange())}}b.inputEl.focus();if(!b.pinList){b.inputEl.dom.value=""}if(b.selectOnFocus){b.inputEl.dom.select()}}},syncSelection:function(){var g=this,d=g.picker,c=g.valueField,a,e,b;if(d){a=d.store;e=[];if(g.valueStore){g.valueStore.each(function(j){var h=a.findExact(c,j.get(c));if(h>=0){e.push(a.getAt(h))}})}g.ignoreSelection++;b=d.getSelectionModel();b.deselectAll();if(e.length>0){b.select(e)}if(g.ignoreSelection>0){--g.ignoreSelection}}},doAlign:function(){var d=this,c=d.picker,a="-above",b;d.picker.alignTo(d.listWrapper,d.pickerAlign,d.pickerOffset);b=c.el.getY()<d.inputEl.getY();d.bodyEl[b?"addCls":"removeCls"](d.openCls+a);c[b?"addCls":"removeCls"](c.baseCls+a)},alignPicker:function(){var c=this,b=c.picker,a=b.getTargetEl().dom.scrollTop;c.callParent(arguments);if(c.isExpanded){if(c.matchFieldWidth){b.setWidth(c.listWrapper.getWidth())}b.getTargetEl().dom.scrollTop=a}},getCursorPosition:function(){var a;if(Ext.isIE){a=document.selection.createRange();a.collapse(true);a.moveStart("character",-this.inputEl.dom.value.length);a=a.text.length}else{a=this.inputEl.dom.selectionStart}return a},hasSelectedText:function(){var b,a;if(Ext.isIE){b=document.selection;a=b.createRange();return a.parentElement()==this.inputEl.dom}else{return this.inputEl.dom.selectionStart!=this.inputEl.dom.selectionEnd}},onKeyDown:function(d,k){var g=this,j=d.getKey(),b=g.inputEl.dom.value,l=g.valueStore,c=g.selectionModel,a=false;if(g.readOnly||g.disabled||!g.editable){return}if(g.isExpanded&&j==d.A&&d.ctrlKey){g.select(g.getStore().getRange());c.setLastFocused(null);c.deselectAll();g.collapse();g.inputEl.focus();a=true}else{if(l.getCount()>0&&(b==""||g.getCursorPosition()===0&&!g.hasSelectedText())){var h=c.getCount()>0?l.indexOf(c.getLastSelected()||c.getLastFocused()):-1;if(j==d.BACKSPACE||j==d.DELETE){if(h>-1){if(c.getCount()>1){h=-1}g.valueStore.remove(c.getSelection())}else{g.valueStore.remove(g.valueStore.last())}c.clearSelections();g.setValue(g.valueStore.getRange());if(h>0){c.select(h-1)}a=true}else{if(j==d.RIGHT||j==d.LEFT){if(h==-1&&j==d.LEFT){c.select(l.last());a=true}else{if(h>-1){if(j==d.RIGHT){if(h<l.getCount()-1){c.select(h+1,d.shiftKey);a=true}else{if(!d.shiftKey){c.setLastFocused(null);c.deselectAll();a=true}}}else{if(j==d.LEFT&&h>0){c.select(h-1,d.shiftKey);a=true}}}}}else{if(j==d.A&&d.ctrlKey){c.selectAll();a=d.A}}}g.inputEl.focus()}}if(a){g.preventKeyUpEvent=a;d.stopEvent();return}if(g.isExpanded&&j==d.ENTER&&g.picker.highlightedItem){g.preventKeyUpEvent=true}if(g.enableKeyEvents){g.callParent(arguments)}if(!d.isSpecialKey()&&!d.hasModifier()){g.selectionModel.setLastFocused(null);g.selectionModel.deselectAll();g.inputEl.focus()}},onKeyUp:function(d,a){var b=this,c=b.inputEl.dom.value;if(b.preventKeyUpEvent){d.stopEvent();if(b.preventKeyUpEvent===true||d.getKey()===b.preventKeyUpEvent){delete b.preventKeyUpEvent}return}if(b.multiSelect&&b.delimiterRegexp&&b.delimiterRegexp.test(c)||b.createNewOnEnter===true&&d.getKey()==d.ENTER){c=Ext.Array.clean(c.split(b.delimiterRegexp));b.inputEl.dom.value="";b.setValue(b.valueStore.getRange().concat(c));b.inputEl.focus()}b.callParent([d,a])},onPaste:function(g,a){var b=this,d=b.inputEl.dom.value,c=g&&g.browserEvent&&g.browserEvent.clipboardData?g.browserEvent.clipboardData:false;if(b.multiSelect&&b.delimiterRegexp&&b.delimiterRegexp.test(d)){if(c&&c.getData){if(/text\/plain/.test(c.types)){d=c.getData("text/plain")}else{if(/text\/html/.test(c.types)){d=c.getData("text/html")}}}d=Ext.Array.clean(d.split(b.delimiterRegexp));b.inputEl.dom.value="";b.setValue(b.valueStore.getRange().concat(d));b.inputEl.focus()}},onExpand:function(){var b=this,a=b.listKeyNav;b.callParent(arguments);if(a||!b.filterPickList){return}a=b.listKeyNav;a.highlightAt=function(e){var d=this.boundList,g=d.all.item(e),c=d.all.getCount(),h;if(g&&g.hasCls("x-boundlist-selected")){if(e==0||!d.highlightedItem||d.indexOf(d.highlightedItem)<e){h=1}else{h=-1}do{e=e+h;g=d.all.item(e)}while(e>0&&e<c&&g.hasCls("x-boundlist-selected"));if(g.hasCls("x-boundlist-selected")){return}}if(g){g=g.dom;d.highlightItem(g);d.getTargetEl().scrollChildIntoView(g,false)}}},onTypeAhead:function(){var g=this,e=g.displayField,j=g.inputEl.dom,l=g.valueStore,k=g.getPicker(),c,a,d,b;if(g.filterPickList){var h=this.createFilterFn(e,j.value);c=g.store.findBy(function(m){return l.indexOfId(m.getId())===-1&&h(m)});c=c===-1?false:g.store.getAt(c)}else{c=g.store.findRecord(e,j.value)}if(c){a=c.get(e);d=a.length;b=j.value.length;k.highlightItem(k.getNode(c));if(b!==0&&b!==d){j.value=a;g.selectText(b,a.length)}}},onItemListClick:function(a,c,e){var d=this,b=a.getTarget(".x-boxselect-item"),g=b?a.getTarget(".x-boxselect-item-close"):false;if(d.readOnly||d.disabled){return}a.stopPropagation();if(b){if(g){d.removeByListItemNode(b);if(d.valueStore.getCount()>0){d.fireEvent("select",d,d.valueStore.getRange())}}else{d.toggleSelectionByListItemNode(b,a.shiftKey)}d.inputEl.focus()}else{if(d.selectionModel.getCount()>0){d.selectionModel.setLastFocused(null);d.selectionModel.deselectAll()}if(d.triggerOnClick){d.onTriggerClick()}}},getMultiSelectItemMarkup:function(){var a=this;if(!a.multiSelectItemTpl){if(!a.labelTpl){a.labelTpl=Ext.create("Ext.XTemplate","{[values."+a.displayField+"]}")}else{if(Ext.isString(a.labelTpl)||Ext.isArray(a.labelTpl)){a.labelTpl=Ext.create("Ext.XTemplate",a.labelTpl)}}a.multiSelectItemTpl=['<tpl for=".">','<li class="x-tab-default x-boxselect-item ','<tpl if="this.isSelected(values.'+a.valueField+')">'," selected","</tpl>",'" qtip="{[typeof values === "string" ? values : values.'+a.displayField+']}">','<div class="x-boxselect-item-text">{[typeof values === "string" ? values : this.getItemLabel(values)]}</div>','<div class="x-tab-close-btn x-boxselect-item-close"></div>',"</li>","</tpl>",{compile:true,disableFormats:true,isSelected:function(c){var b=a.valueStore.findExact(a.valueField,c);if(b>=0){return a.selectionModel.isSelected(a.valueStore.getAt(b))}return false},getItemLabel:function(b){return a.getTpl("labelTpl").apply(b)}}]}return this.getTpl("multiSelectItemTpl").apply(Ext.Array.pluck(this.valueStore.getRange(),"data"))},applyMultiselectItemMarkup:function(){var c=this,a=c.itemList,b;if(a){while((b=c.inputElCt.prev())!=null){b.remove()}c.inputElCt.insertHtml("beforeBegin",c.getMultiSelectItemMarkup())}Ext.Function.defer(function(){if(c.picker&&c.isExpanded){c.alignPicker()}if(c.hasFocus&&c.inputElCt&&c.listWrapper){c.inputElCt.scrollIntoView(c.listWrapper)}},15)},getRecordByListItemNode:function(b){var d=this,c=0,a=d.itemList.dom.firstChild;while(a&&a.nextSibling){if(a==b){break}c++;a=a.nextSibling}c=a==b?c:false;if(c===false){return false}return d.valueStore.getAt(c)},toggleSelectionByListItemNode:function(b,d){var c=this,e=c.getRecordByListItemNode(b),a=c.selectionModel;if(e){if(a.isSelected(e)){if(a.isFocused(e)){a.setLastFocused(null)}a.deselect(e)}else{a.select(e,d)}}},removeByListItemNode:function(a){var b=this,c=b.getRecordByListItemNode(a);if(c){b.valueStore.remove(c);b.setValue(b.valueStore.getRange())}},getRawValue:function(){var b=this,c=b.inputEl,a;b.inputEl=false;a=b.callParent(arguments);b.inputEl=c;return a},setRawValue:function(c){var b=this,d=b.inputEl,a;b.inputEl=false;a=b.callParent([c]);b.inputEl=d;return a},addValue:function(b){var a=this;if(b){a.setValue(Ext.Array.merge(a.value,Ext.Array.from(b)))}},removeValue:function(b){var a=this;if(b){a.setValue(Ext.Array.difference(a.value,Ext.Array.from(b)))}},setValue:function(m,b,n){var l=this,p=l.valueStore,o=l.valueField,g,j,d,a,e,k=[];if(Ext.isEmpty(m)){m=null}if(Ext.isString(m)&&l.multiSelect){m=m.split(l.delimiter)}m=Ext.Array.from(m,true);for(d=0,j=m.length;d<j;d++){g=m[d];if(!g||!g.isModel){a=p.findExact(o,g);if(a>=0){m[d]=p.getAt(a)}else{a=l.findRecord(o,g);if(!a){if(l.forceSelection){k.push(g)}else{a={};a[l.valueField]=g;a[l.displayField]=g;a=new l.valueStore.model(a)}}if(a){m[d]=a}}}}if(n!==true&&k.length>0&&l.queryMode==="remote"){var c={};c[l.valueParam||l.valueField]=k.join(l.delimiter);l.store.load({params:c,callback:function(){if(l.itemList){l.itemList.unmask()}l.setValue(m,b,true);l.autoSize();l.lastQuery=false}});return false}if(!l.multiSelect&&m.length>0){for(d=m.length-1;d>=0;d--){if(m[d].isModel){m=m[d];break}}if(Ext.isArray(m)){m=m[m.length-1]}}return l.callParent([m,b])},getValueRecords:function(){return this.valueStore.getRange()},getSubmitData:function(){var a=this,b=a.callParent(arguments);if(a.multiSelect&&a.encodeSubmitValue&&b&&b[a.name]){b[a.name]=Ext.encode(b[a.name])}return b},mimicBlur:function(){var a=this;if(a.selectOnTab&&a.picker&&a.picker.highlightedItem){a.inputEl.dom.value=""}a.callParent(arguments)},assertValue:function(){var a=this,c=a.inputEl.dom.value,d=!Ext.isEmpty(c)?a.findRecordByDisplay(c):false,b=false;if(!d&&!a.forceSelection&&a.createNewOnBlur&&!Ext.isEmpty(c)){b=c}else{if(d){b=d}}if(b){a.addValue(b)}a.inputEl.dom.value="";a.collapse()},checkChange:function(){if(!this.suspendCheckChange&&!this.isDestroyed){var c=this,g=c.valueStore,b=c.lastValue||"",a=c.valueField,e=Ext.Array.map(Ext.Array.from(c.value),function(h){if(h.isModel){return h.get(a)}return h},this).join(this.delimiter),d=c.isEqual(e,b);if(!d||e.length>0&&g.getCount()<e.length){g.suspendEvents();g.removeAll();if(Ext.isArray(c.valueModels)){g.add(c.valueModels)}g.resumeEvents();g.fireEvent("datachanged",g);if(!d){c.lastValue=e;c.fireEvent("change",c,e,b);c.onChange(e,b)}}}},isEqual:function(j,h){var b=Ext.Array.from,c=this.valueField,d,a,g,e;j=b(j);h=b(h);a=j.length;if(a!==h.length){return false}for(d=0;d<a;d++){g=j[d].isModel?j[d].get(c):j[d];e=h[d].isModel?h[d].get(c):h[d];if(g!==e){return false}}return true},applyEmptyText:function(){var b=this,a=b.emptyText,c,d;if(b.rendered&&a){d=Ext.isEmpty(b.value)&&!b.hasFocus;c=b.inputEl;if(d){c.dom.value="";b.emptyEl.update(a);b.emptyEl.addCls(b.emptyCls);b.emptyEl.removeCls(b.emptyInputCls);b.listWrapper.addCls(b.emptyCls);b.inputEl.addCls(b.emptyInputCls)}else{b.emptyEl.addCls(b.emptyInputCls);b.emptyEl.removeCls(b.emptyCls);b.listWrapper.removeCls(b.emptyCls);b.inputEl.removeCls(b.emptyInputCls)}b.autoSize()}},preFocus:function(){var b=this,c=b.inputEl,a=b.emptyText,d=c.dom.value=="";b.emptyEl.addCls(b.emptyInputCls);b.emptyEl.removeCls(b.emptyCls);b.listWrapper.removeCls(b.emptyCls);b.inputEl.removeCls(b.emptyInputCls);if(b.selectOnFocus||d){c.dom.select()}},onFocus:function(){var c=this,b=c.focusCls,a=c.itemList;if(b&&a){a.addCls(b)}c.callParent(arguments)},onBlur:function(){var c=this,b=c.focusCls,a=c.itemList;if(b&&a){a.removeCls(b)}c.callParent(arguments)},renderActiveError:function(){var d=this,c=d.invalidCls,b=d.itemList,a=d.hasActiveError();if(c&&b){b[a?"addCls":"removeCls"](d.invalidCls+"-field")}d.callParent(arguments)},autoSize:function(){var b=this,a;if(b.grow&&b.rendered){b.autoSizing=true;b.updateLayout()}return b},afterComponentLayout:function(){var b=this,a;if(b.autoSizing){height=b.getHeight();if(height!==b.lastInputHeight){if(b.isExpanded){b.alignPicker()}b.fireEvent("autosize",b,height);b.lastInputHeight=height;delete b.autoSizing}}}});Ext.define("Ext.ux.layout.component.field.BoxSelectField",{alias:["layout.boxselectfield"],extend:"Ext.layout.component.field.Trigger",type:"boxselectfield",waitForOuterWidthInDom:true,beginLayout:function(c){var b=this,a=b.owner;b.callParent(arguments);c.inputElCtContext=c.getEl("inputElCt");a.inputElCt.setStyle("width","");b.skipInputGrowth=!a.grow||!a.multiSelect},beginLayoutFixed:function(d,b,e){var c=this,a=d.target;a.triggerEl.setStyle("height","24px");c.callParent(arguments);if(d.heightModel.fixed&&d.lastBox){a.listWrapper.setStyle("height",d.lastBox.height+"px");a.itemList.setStyle("height","100%")}},publishInnerWidth:function(e){var d=this,a=d.owner,c=a.itemList.getWidth(true)-10,b=a.inputElCt.prev(null,true);if(b&&!a.stacked){b=Ext.fly(b);c=c-b.getOffsetsTo(b.up(""))[0]-b.getWidth()}if(!d.skipInputGrowth&&c<35){c=c-10}else{if(c<1){c=1}}e.inputElCtContext.setWidth(c)}});Ext.ns("FT.help");var helpWindow;Ext.ns("FT.help.helpContent");FT.help.showHelpPane=function(c){if(c==="expressionHelp"){window.open("https://help.ftrack.com/administering-ftrack/advanced/using-custom-attributes","_blank");return}if(Ext.isString(c)&&FT.help.helpContent[c]){var a=FT.help.helpContent[c];c=[{html:'<iframe class="ft-help-iframe" src="/UserDocs/help/'+a+'" />'}]}assert(Ext.isArray(c),"Help content is an array of items");if(!Ext.isDefined(helpWindow)){var b=500;helpWindow=Ext.create("Ext.window.Window",{cls:"ft-helppane",width:b,height:Ext.getBody().getHeight(),title:FT.i18n("Help"),closeAction:"hide",autoScroll:true,draggable:false,layout:"fit",items:Ext.isDefined(c)?c:[],resizable:{handles:"w"}});helpWindow.showAt(Ext.getBody().getWidth()-b,0)}else{if(Ext.isDefined(c)){helpWindow.removeAll();helpWindow.add(c);helpWindow.show()}else{if(helpWindow.isVisible()){helpWindow.removeAll();helpWindow.hide()}else{helpWindow.show()}}}};Ext.define("FT.help.HelpContextButton",{extend:"Ext.button.Button",text:"?",initComponent:function(){this.callParent();this.on({click:function(){FT.help.showHelpPane()}})}});Ext.define("FT.tip.SummaryTooltip",{singleton:true,tooltipTpl:new Ext.XTemplate('<div class="ft-summary-tooltip">','<tpl if="tasks">',"<dl {statusId:this.format.blockedCls}>",'<tpl for="tasks">','<dt class="text-ellipsis">{name:this.format.capitalize}</dt>',"<dd>{statusId:this.format.status}</dd>","</tpl>","</dl>","</tpl>",'<tpl if="summary">',"<dl>",'<tpl for="summary">',"<dt>{name:this.format.capitalize}</dt>",'<dd>{count} <span class="fade-text">({percent})</span></dd>',"</tpl>","</dl>","</tpl>",'<tpl if="dueDate">',"<p>{dueDate:this.format.dueDate}</p>","</tpl>",'<tpl if="statusId">',"{statusId:this.format.status}","</tpl>","</div>",{format:{capitalize:FT.util.Format.capitalize,status:FTrack.grid.StatusRenderer,blockedCls:function(a){return a?'class="is-blocked"':""},dueDate:function(a){if(a===0){return"Due today"}else{if(a<0){return"Past due date"}}return"Due in "+Ext.util.Format.plural(a,"day")}}}),constructor:function(){this.callParent()},getTooltip:function(b,d){var a=this.tooltipTpl.apply(d);var c=new Opentip(b,a,{target:true,group:"summary"});return c}});Ext.define("FT.tree.SummaryTooltipPlugin",{alias:"plugin.ft-summary-tooltip-plugin",extend:"Ext.AbstractPlugin",init:function(a){this.callParent();this.enable()},destroy:function(){this.disable();this.callParent()},enable:function(){this.callParent();var a=this.getCmp();if(a){this.itemMouseEnterListener=a.on("itemmouseenter",this.onItemMouseEnter)}},disable:function(){this.callParent();Ext.destroy(this.itemMouseEnterListener)},onItemMouseEnter:function(k,d,m,g,h,j){var l=h.getTarget(".ft-summary-trigger");if(!l){return}if(!l.getAttribute("data-tooltip")){l.setAttribute("data-tooltip","true");var b=d.get("entityType"),c=d.get("entityId"),a=d.get("progress");if(!b||!c||!a){return}FTApi.Summary.entityTooltip({entityType:b,entityId:c},{callback:function(p,s,q){if(q){var t=Ext.fly(m);var n=t&&t.down(".ft-summary-trigger");var e=n&&n.dom;if(!e){return}var o=FT.tip.SummaryTooltip.getTooltip(e,p)}}})}}});Ext.define("FT.tree.ShotTree",{extend:"Ext.tree.Panel",url:"/track/getEntityTree",animate:false,assignedOnly:false,loadLists:true,allShots:true,updateSelectionRemote:false,mode:"prod",expandRoot:true,hideHeaders:true,rootVisible:false,useArrows:true,hideProject:false,_minimized:false,showProgressColumn:true,useActionColumn:false,initComponent:function(){var e=this,b,d,c,a;b={BLOCKED:"red",NOT_STARTED:"#FF6600",IN_PROGRESS:"orange",DONE:"#4696bf"};this.selModel=Ext.value(this.selModel,{});this.selModel.ignoreRightMouseSelection=true;this.viewConfig=Ext.value(this.viewConfig,{trackOver:false,cls:"fastrowover",plugins:{ptype:"treeviewdragdrop",enableDrag:false,enableDrop:true,ddGroup:"selDD"}});Ext.apply(this.viewConfig,{getRowClass:function(g,k,j,h){if(g.get("entityType")==="listtype"&&g.isLeaf()){return"x-hide-display"}if(g.get("entityType")==="list"&&!g.get("isopen")){if(e.isDisplayClosedListsEnabled()){return"list-closed"}return"x-hide-display"}return g.get("rowClass")}});this.addEvents("nodeselect");c=function(h,j,g){if(g.get("progress")===null){j.tdCls=j.tdCls+" ft-progress-hide";return h}return FTrack.grid.SummaryProgressRenderer_new.apply(this,arguments)};a=FT.Function.append(c,true);this.progressColumn=Ext.create("Ext.grid.column.Column",{tdCls:"ft-summary-trigger",flex:FT.Settings.get("currentuser","minifiedProgress")?0:0.65,maxWidth:FT.Settings.get("currentuser","minifiedProgress")?15:140,minWidth:FT.Settings.get("currentuser","minifiedProgress")?15:30,height:"100%",dataIndex:"progress",renderer:FT.Function.append(c,[FT.Settings.get("currentuser","minifiedProgress")])});this.columns=[{xtype:"treecolumnglyph",dataIndex:"text",flex:1,renderer:function(q,l,g){var k=g.get("stateshort"),n,o="",m,h=g.get("progress"),j;if(!Ext.isEmpty(k)){j="";if(k==="BLOCKED"){j=" tree-cell-disabled";l.tdCls="tree-row-disabled"}n='<span class="ft-treerenderer'+j+'">'+q+"</span>"}else{n=q}if(h===null){l.tdAttr="colspan=2"}if(e.isMinimized()&&h!==null){arguments[0]=h;o=a.apply(this,arguments)+"&#160;"}if(g.get("entityType")==="lists"){m=FT.glyphIcon(e.isDisplayClosedListsEnabled()?"visibility":"visibility-off",{size:"medium",cls:"text-faded ft-ignore-click shottree__toggle-hidden",tooltip:FT.i18n("Toggle display of closed lists")});n=['<span class="shottree__name_wrapper">',m,n,"</span>"].join("")}return o+n}}];if(this.showProgressColumn){this.columns.push(this.progressColumn)}if(this.useActionColumn){this.columns.push({xtype:"actioncolumn",width:25,tdCls:"ft-ignore-click shottree__menuicon",handler:function(g,m,n,o,l,k,p){var j={entityType:k.get("entityType"),entityId:k.get("entityId"),objectType:k.get("object_typeid")};var h=FT.getContextMenu("leftMenu",j);h.showBy(l.target)}})}this.on("resize",this.onTreeResize,this);this.on("afterrender",this._attachEvents,this);this.extraParams={loadFull:1,assignedOnly:this.assignedOnly,mode:this.mode,hideProject:Ext.encode(this.hideProject),loadLists:this.loadLists,allShots:this.allShots};if(this.level){this.extraParams.level=this.level}if(this.entity){Ext.apply(this.extraParams,{entityId:this.entity.entityId,entityType:this.entity.entityType})}this.store=Ext.create("Ext.data.TreeStore",{fields:["text","glyph","colors","entityId","object_typeid","entityType",{name:"sort",defaultValue:1},{name:"disabled",defaultValue:false},"stateshort","progress","rowClass","openEntity","isopen"],autoLoad:false,proxy:{type:"ajax",url:this.url,extraParams:this.extraParams,reader:{type:"json"}},idProperty:"entityId",sorters:[{property:"sort",direction:"ASC"},{property:"text",direction:"ASC"}]});this.projectId=FT.app.location.getProjectId();this.callParent();this.getSelectionModel().on("beforeselect",this.onBeforeNodeSelect,this);this.getSelectionModel().on("select",this.onSelect,this);Ext.Function.interceptBefore(this.getView(),"expand",this.onViewExpand,this);this.on({load:this.onLoad,beforeitemclick:this.onBeforeItemClick,beforeitemmousedown:this._onBeforeItemMouseDown,scope:this});this.getView().on("validateDrop",this.onValidateDrop,this);this.getView().on("beforedrop",this.onBeforeDrop,this);this.getView().on("itemcontextmenu",this.onItemContextMenu,this)},isDisplayClosedListsEnabled:function(){return FT.getVar("display-closed-lists",false)},_attachEvents:function(){this.getEl().on({click:this._handleElementClicked,scope:this})},_onBeforeItemMouseDown:function(a,b,g,c,h,d){return h.getTarget(".ft-ignore-click")===null},onBeforeItemClick:function(a,b,g,c,h,d){return h.getTarget(".ft-ignore-click")===null},onBeforeNodeSelect:function(a,b,g,c,h,d){return b.get("disabled")!==true},_handleElementClicked:function(a){if(a.getTarget(".shottree__toggle-hidden")){FT.setVar("display-closed-lists",!this.isDisplayClosedListsEnabled());this.getView().refresh();a.stopEvent();a.stopPropagation();return}},sortNode:function(b){var c=this.store.sorters.items,a;a=function(g,e){var d=c[0].sort(g,e),j=c.length,h;for(h=1;h<j;h++){d=d||c[h].sort.call(this,g,e)}return d};b.sort(a)},onItemContextMenu:function(a,g,d,b,h,c){entity={entityType:g.get("entityType"),entityId:g.get("entityId"),objectType:g.get("object_typeid")};menu=FT.getContextMenu("leftMenu",entity);menu.showBy(h.target);h.preventDefault()},onBeforeDrop:function(b,d,h,j,g){if(h.get("entityType")=="list"){var e=[];Ext.each(d.records,function(l){e.push({entityId:l.get("entityId"),entityType:l.get("entityType")})},this);Ext.Ajax.request({url:"/lists/addItems",params:{items:Ext.encode(e),listid:h.get("entityId")},success:function(l){var m=l.responseText;if(m=="success"){FT.notifySuccess(FT.i18n("Items added to list"))}}});return false}if(h.get("entityType")=="reviewsession"){var c=h.get("entityId"),k=[],a=[];Ext.each(d.records,function(l){k.push(l.get("entityId"))});FT.action.AddIgnoreToReviewSession(c,k)}return false},onValidateDrop:function(b,c,e,a){if(e.get("entityType")=="list"){return true}if(e.get("entityType")=="reviewsession"){var d=true;Ext.each(c.records,function(g){if(g.get("entityType")!="assetversion"){d=false}});return d}return false},onTreeResize:function(c,d,a,b,e){this.setMinimized(d<180)},setMinimized:function(a){if(this._minimized!=a){if(a){this.progressColumn.hide();this.body.addCls("ft-tree-minimized")}else{this.body.removeCls("ft-tree-minimized");this.progressColumn.show()}this._minimized=a;this.getView().refresh()}},isMinimized:function(){return this._minimized},onViewExpand:function(e,a,g,c){var b=Ext.isDefined(e.raw)?e.raw.entityId:e.get("entityId"),d=Ext.isDefined(e.raw)?e.raw.entityType:e.get("entityType");this.store.getProxy().extraParams.entityId=b;this.store.getProxy().extraParams.entityType=d;this.store.getProxy().extraParams.loadFull=0},onSelect:function(a,b){if(b.get("disabled")!==true){this.fireEvent("nodeselect",b)}},onLoad:function(){this.loadingRemote=false;if(Ext.isDefined(this.entity)){this.updateSelection(this.entity)}},getSelection:function(){var b=null;if(this.updateSelectionRemote){b=this.store.getProxy().getReader().jsonData.selection}else{b=this.entity.entityId}var a=this.getNodeByEntityId(b);return a},updateSelection:function(){var a=this.getSelection(),c=this.getDockedItems()[0];if(Ext.isDefined(a)){this.getSelectionModel().select(a,this,true);c.removeCls("shottree-background-color-selected");if(this.assignedOnly){var b=a.getPath();this.expandPath(b)}}else{a=this.getNodeByEntityId(this.entity.view);if(a){this.getSelectionModel().select(a,this,true);c.removeCls("shottree-background-color-selected")}else{this.getSelectionModel().deselectAll(true);c.addCls("shottree-background-color-selected")}}},getNodeByEntityId:function(b){var a;Ext.iterate(this.store.tree.nodeHash,function(d,c){if(c.get("entityId")==b){a=c;return false}},this);return a},getExpanded:function(){var a=[];Ext.iterate(this.store.tree.nodeHash,function(c,b){if(b.get("expanded")&&b.get("entityType")=="task"){a.push({entityId:b.get("entityId"),entityType:b.get("entityType")})}},this);return a},_preserveScrollOnStoreLoad:function(){var c=this.view&&this.view.el,a=c&&c.dom||{},b=a.scrollTop||0;if(b){this.store.on("load",function(){c.scrollTo("top",b)},this,{single:true})}},updateTree:function(c,h){var d,a,g,e,b;h=Ext.value(h,false);if(this.loadingRemote){return}this.entity=c;d=FT.app.location.getProjectId();e=this.getNodeByEntityId(c.entityId);g=this.projectId&&d!==this.projectId;a=c.entityType!=="show"&&!Ext.isDefined(e);this.projectId=d;if(h||g||a){this.store.getProxy().extraParams.entityId=c.entityId;this.store.getProxy().extraParams.entityType=c.entityType;this.store.getProxy().extraParams.loadFull=1;this.loadingRemote=true;if(h){this._preserveScrollOnStoreLoad();this.store.load({params:{expanded:Ext.encode(this.getExpanded())}})}else{this.store.load()}}else{this.updateSelection(c)}},setAssignedOnly:function(a){if(!a){delete this.store.getProxy().extraParams.entityId;delete this.store.getProxy().extraParams.entityType;this.store.getProxy().extraParams.loadFull=1}else{this.store.getProxy().extraParams.entityId="user";this.store.getProxy().extraParams.entityType="user";this.store.getProxy().extraParams.loadFull=1}this.store.load()},setLoadFull:function(a){this.store.getProxy().extraParams.loadFull=a?1:0},_addTaskNode:function(e,d,g,a){var h,j,c,b;c=Ext.data.StoreManager.lookup("FT.store.ObjectType");b=c.findRecord("typeid",g);if(!b){return}if(b.get("istaskable")===false){return}h={text:e,glyph:FT.getObjectTypeIcon(g),entityId:d,entityType:"task",parent_id:a.getId(),disabled:false,expanded:false,leaf:false};j=a.appendChild(h);j.set("loaded",false);this.sortNode(a)},addEntity:function(e){var a,d=Ext.data.StoreManager.lookup("FT.store.ObjectType"),c,g,b=this.projectId,h,j;if(e.entityType==="task"){g=e.changes.object_typeid["new"];if(e.parentId===b){a=this.getRootNode()}else{a=this.getNodeByEntityId(e.parentId)}if(a&&a.isLoaded()){this._addTaskNode(e.changes.name["new"],e.entityId,g,a)}}else{if(e.entityType==="reviewsession"){j=b+"__reviews";a=this.getNodeByEntityId(j);if(a&&a.isLoaded()&&e.changes&&e.changes.is_moderated["new"]){h={text:e.changes.name["new"],glyph:"reviewsession",entityId:e.entityId,entityType:e.entityType,parent_id:j,progress:null,disabled:false,expanded:true,leaf:true};a.appendChild(h);this.sortNode(a)}}else{if(e.entityType==="list"){j=b+"__"+e.changes.typeid["new"];a=this.getNodeByEntityId(j);if(a&&a.isLoaded()){h={text:e.changes.name["new"],isopen:e.changes.isopen&&e.changes.isopen["new"],glyph:"list",entityId:e.entityId,entityType:e.entityType,parent_id:j,progress:null,disabled:false,expanded:true,leaf:true};a.appendChild(h);this.sortNode(a)}else{if(a){a.set("loaded",false);a.set("leaf",false)}}}}}},updateProgress:function(g,d,b){var a=g.get("progress"),e,c;if(!a){a=[]}Ext.each(a,function(h){if(h.statusid===d){e=h}if(h.statusid===b){c=h}});if(d){if(e){e.count+=1}else{a.push({statusid:d,count:1})}}if(b&&c){c.count-=1}g.set("progress",a);g.commit()},moveEntity:function(a,b){var d=this.getNodeByEntityId(a),c=this.getNodeByEntityId(b);if(d&&c&&c.isLoaded()){c.appendChild(d);this.sortNode(c)}else{if(d){d.remove(true)}else{if(c&&c.isLoaded()){FTApi.Task.get({id:a},Ext.bind(this._onMoveResponse,this))}}}},_onMoveResponse:function(b){var c,a;if(b&&b.success){if(b.data.length===1){c=b.data[0];a=this.getNodeByEntityId(c.parent_id);if(a){this._addTaskNode(c.name,c.id,c.object_typeid,a)}}}}});Ext.define("FT.tree.ProjectLocatorPlugin",{alias:"plugin.ft-projectlocator-plugin",extend:"Ext.AbstractPlugin",collapseSize:125,init:function(b){var c=this.defaultSize,a;a=Ext.create("Ext.Button",{width:16,margin:"0 10 0 0",cls:"expand-collapse-arrow",handler:function(){var d=this.isExpanded();b.setWidth(d?this.collapseSize:c);this.toolbar.getComponent("home").setVisible(!d)},scope:this});this.projectlocator=Ext.widget({xtype:"ft-projectlocator",scale:"large",flex:1});this.toolbar=Ext.create("Ext.toolbar.Toolbar",{dock:"top",cls:"shottree__toolbar",defaultButtonUI:"toolbar-plain",height:60,padding:"6 0 6 15",items:[{xtype:"component",width:20,itemId:"home",html:FT.glyphIcon("project",{size:"x-large"})},this.projectlocator,a]});b.on("resize",this.onCmpResize,this);b.insertDocked(0,this.toolbar);this.cmp=b;this.expandCollapse=a;this.setClsByExpand(b)},isExpanded:function(){return this.getCmpWidth()>this.collapseSize},getCmpWidth:function(){return this.cmp.rendered?this.cmp.getWidth():this.cmp.width},onCmpResize:function(b,a){this.setClsByExpand(b)},setClsByExpand:function(a){var b=this.isExpanded();if(!b){a.addCls("tree-collapsed")}else{a.removeCls("tree-collapsed")}this.toolbar.getComponent("home").setVisible(b)}});Ext.define("FT.tree.ProjectLocator",{alias:"widget.ft-projectlocator",extend:"Ext.toolbar.TextItem",cls:"shottree__projectlocator",initComponent:function(){this.updateProjectText();FT.app.location.on("projectchanged",this.updateProjectText,this);this.callParent(arguments);this.on("afterrender",this._attachEvents,this)},_attachEvents:function(){this.getEl().on("click",this.onElementClicked,this);this.getEl().on("contextmenu",this.onContextMenu,this)},getEntity:function(){var a=FT.app.location.getLocation();return{entityType:"show",entityId:a[0].id}},onContextMenu:function(c,b,a){var d=d=FT.getContextMenu("leftMenu",this.getEntity());d.showBy(c.target);c.preventDefault()},onElementClicked:function(){var a=Ext.clone(this.getEntity());var b=FT.app.getCfg();if(b.entityId==a.entityId){a.slideEntityId=a.entityId;a.slideEntityType=a.entityType}else{if(b.entityId&&b.slideEntityId&&b.entityId==b.slideEntityId){a.slideEntityId=a.entityId;a.slideEntityType=a.entityType}}FT.app.open("projects",a)},updateProjectText:function(){var a=FT.app.location.getLocation(),b;if(a&&a.length>0){b=a[0].name}else{return}this.setProjectName(b)},setProjectName:function(a){if(!this.rendered){this.text=a}else{this.setText(a)}}});Ext.define("FT.tree.EntitySelector",{extend:"Ext.tree.Panel",animate:false,infoText:FT.i18n("Select an entity"),cls:"background-default",forceRoot:"show",searchable:true,isEnableCheckboxes:false,enableSelect:true,initComponent:function(){var a={layout:"hbox",items:[this.searchField=Ext.widget("textfield",{height:30,emptyText:FT.i18n("Type to search..."),flex:1}),{xtype:"tool",style:{marginLeft:5},type:"help",cls:"icon--small",qtip:FT.i18n("Use spaces between search terms.")}]};Ext.apply(a,this.tbarCfg);Ext.apply(this.viewConfig,{preserveScrollOnRefresh:true});this.addEvents(["entityselected"]);this.delayedSearchTask=new Ext.util.DelayedTask(this.doSearch,this);if(this.searchable){this.tbar=a}if(this.enableSelect){this.saveButton=Ext.widget("ftrack-button",{text:FT.i18n("Select"),cls:"button-primary",disabled:true,action:"save",handler:Ext.bind(this.onSelect,this),margin:0});var b={padding:10,items:[this.infoText,"->",this.saveButton]};Ext.apply(b,this.bBarCfg);this.bbar=b}assert(this.entity,"Entity is defined");this.rootVisible=false;this.store=Ext.create("Ext.data.TreeStore",{clearRemovedOnLoad:true,fields:["entityId","entityType","link","text","object_typeid"],proxy:{type:"ajax",url:"/browse/get",extraParams:{entity:Ext.encode(this.entity),selectionTypes:Ext.encode(this.selectionTypes),forceRoot:this.forceRoot,isEnableCheckboxes:this.isEnableCheckboxes},reader:{type:"json",root:"children"}}});this.store.on("beforeload",function(){if(this.saveButton){this.saveButton.disable()}},this);this.store.load();this.callParent();this.on({afteritemexpand:this.onAfterItemExpand,itemclick:this.onItemClick,scope:this});Ext.Function.interceptBefore(this.getView(),"expand",this.onViewExpand,this);if(this.searchable){this.searchField.on("change",function(){this.delayedSearchTask.delay(500)},this)}},onViewExpand:function(e,a,g,c){var b=Ext.isDefined(e.raw)?e.raw.entityId:e.get("entityId"),d=Ext.isDefined(e.raw)?e.raw.entityType:e.get("entityType");this.store.getProxy().extraParams.entityId=b;this.store.getProxy().extraParams.entityType=d},onItemClick:function(h,a,g,b,j,c){if(!this.saveButton){return}var d=a.get("object_typeid");if(!this.selectionTypes||this.selectionTypes.indexOf(d)!=-1){this.saveButton.enable()}else{this.saveButton.disable()}},onBeforeItemExpand:function(a){this.store.getProxy().extraParams.entityId=Ext.isDefined(a.raw)?a.raw.entityId:a.get("entityId");this.store.getProxy().extraParams.entityType=Ext.isDefined(a.raw)?a.raw.entityType:a.get("entityType")},onAfterItemExpand:function(){delete this.store.getProxy().extraParams.entityId;delete this.store.getProxy().extraParams.entityType},doSearch:function(){if(this.store.isLoading()){this.delayedSearchTask.delay(500);return}Ext.apply(this.store.getProxy().extraParams,{search:this.searchField.getValue()});if(!this.loadingMask){this.loadingMask=new Ext.LoadMask({msg:"Searching",target:this.getView()});this.store.on("load",function(){this.loadingMask.hide()},this);this.on("destroy",function(){this.loadingMask.destroy()},this)}this.loadingMask.show();this.store.load()},onSelect:function(){var a=this.getSelectionModel();records=a.getSelection(),r=null;if(records.length>0){r=records[0]}assert(r!=null,"Valid selection in EntitySelector");this.fireEvent("entityselected",this,r)}});Ext.define("FT.tree.MultiEntitySelector",{extend:"FT.tree.EntitySelector",isEnableCheckboxes:true,initComponent:function(){this.callParent();this.on({checkchange:this.onCheckChange,scope:this})},onItemClick:function(g,a,d,b,h,c){},onCheckChange:function(){var a=this.getChecked();if(a.length>0){this.saveButton.enable()}else{this.saveButton.disable()}},onSelect:function(){var a=this.getChecked();assert(a.length>0,"Valid selection in EntitySelector");this.fireEvent("entityselected",this,a)}});Ext.define("Ext.ux.CheckColumn",{extend:"Ext.grid.column.Column",alias:"widget.checkcolumn",constructor:function(){this.addEvents("checkchange");this.callParent(arguments)},processEvent:function(d,h,l,a,g,c){if(d=="mousedown"||d=="keydown"&&(c.getKey()==c.ENTER||c.getKey()==c.SPACE)){var b=h.panel.store.getAt(a),j=this.dataIndex,k=!b.get(j);b.set(j,k);this.fireEvent("checkchange",this,a,k);return false}else{return this.callParent(arguments)}},renderer:function(b){var c=Ext.baseCSSPrefix,a=[c+"grid-checkheader"];if(b){a.push(c+"grid-checkheader-checked")}return'<div class="'+a.join(" ")+'">&#160;</div>'}});Ext.define("Ext.ux.CheckColumnGantt",{extend:"Ext.ux.CheckColumn",alias:"widget.checkcolumngantt",constructor:function(){this.addEvents("checkchange");this.callParent(arguments)},processEvent:function(g,j,m,b,h,d){if(g=="mousedown"||g=="keydown"&&(d.getKey()==d.ENTER||d.getKey()==d.SPACE)){var a=null;Ext.each(j.panel.ownerCt.taskStore.tree.flatten(),function(e){if(e.get("index")==b){a=e}},this);var c=a,k=this.dataIndex,l=!c.get(k);c.set(k,l);this.fireEvent("checkchange",this,b,l);return false}else{return this.callParent(arguments)}},renderer:function(b){var c=Ext.baseCSSPrefix,a=[c+"grid-checkheader"];if(b){a.push(c+"grid-checkheader-checked")}return'<div class="'+a.join(" ")+'">&#160;</div>'}});Ext.define("FT.ui.ColorField",{extend:"Ext.form.field.Picker",alias:"widget.colorfield",isPrefixSubmit:false,matchFieldWidth:false,cls:"ft-colorfield",triggerCls:"ft-form-trigger",triggerWidth:23,allowReselect:false,createPicker:function(){var a=this;return Ext.create("Ext.picker.Color",{pickerField:a,ownerCt:a.ownerCt,renderTo:document.body,floating:true,hidden:true,focusOnShow:true,allowReselect:this.allowReselect,listeners:{scope:a,select:a.onSelect},keyNavConfig:{esc:function(){a.collapse()}}})},onSelect:function(a,c){var b=this;b.setValue(c);b.fireEvent("select",b,c);b.collapse()},onExpand:function(){var a=this,b=a.getValue()},setValue:function(a){if(a&&a[0]=="#"){a=a.substring(1,a.length)}arguments[0]=a;this.callParent(arguments);this.setColor(a)},setColor:function(b){var a;if(!Ext.isDefined(b)){a="transparent"}else{a="#"+b}FT.ui.ColorField.superclass.setFieldStyle.call(this,{"background-color":a,"background-image":"none",color:Ext.isDefined(b)?FT.util.hexInverse(a.replace("#","")):"#000"})},getValue:function(){var a="";if(this.isPrefixSubmit){a="#"}return a+this.callParent(arguments)},onCollapse:function(){this.focus(false,60)},beforeBlur:function(){var c=this,a=c.getRawValue(),b=c.focusTask;if(b){b.cancel()}if(a){c.setValue(a)}}});Ext.define("FT.ui.EditorRecordCombobox",{extend:"Ext.form.field.ComboBox",queryCaching:true,forceSelection:true,allowBlank:false,selectOnFocus:true,typeAhead:true,typeAheadDelay:0,initComponent:function(){var a=this.value;this.callParent();this.on("beforequery",function(b){b.forceAll=true;this.lastQuery=b.query},this);if(a&&this.store.getCount()===0){this.store.on("load",function(){this.setValue(a)},this,{single:true})}},editRecord:function(){FT.util.Exception("Abstract class instansiated or editRecord not implemented in subclass.")},doEditRecord:function(a){Ext.apply(this.store.getProxy().extraParams,{data:Ext.encode(a)});this.store.load()}});Ext.define("FT.ui.StatusEditor",{extend:"FT.ui.EditorRecordCombobox",alias:"widget.ft-statusfield",statusType:"task",typeidIndex:"typeid",editable:false,selectOnFocus:false,isRemote:true,initComponent:function(){var a=this;a.store=Ext.create("Ext.data.Store",{fields:["name","color","sort","statusid"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getValidStatuses"},reader:{root:"data",totalProperty:"total"}},sorters:[{property:"sort",direction:"DESC"},{property:"name",direction:"ASC"}]});a.callParent(arguments);a.on("afterrender",function(){if(Ext.isDefined(a.findParentByType("editor"))){a.on("focus",function(){a.expand()})}})},editRecord:function(e){var a=this.objectType||e.get("objectType")||e.get("object_typeid"),b=this.typeIdName||"typeid",c=this.typeId||e.get(b),d=this.entityType||e.get("entityType");assert(Ext.isString(e.get("showid")),"showid must be defined");assert(e.get("showid")!="","showid must be defined");assert(Ext.isString(d),"entityType must be defined");assert(d!="task"||a,"If entityType is task, objectType must be defined");this.doEditRecord({showid:e.get("showid"),objectType:a,typeid:c,entityType:d})},editId:function(b,c,a){this.doEditRecord({entityId:b,entityType:c,statusType:this.statusType})}});Ext.define("FT.ui.TypeEditor",{extend:"FT.ui.EditorRecordCombobox",alias:"widget.ft-typefield",editable:false,statusType:"task",typeidIndex:"typeid",selectOnFocus:false,isRemote:true,initComponent:function(){var a=this;a.store=Ext.create("Ext.data.Store",{fields:["name","color","sort","typeid"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getValidTypes"},reader:{root:"data",totalProperty:"total"}},sorters:[{property:"sort",direction:"ASC"},{property:"name",direction:"ASC"}]});a.callParent(arguments);a.on("afterrender",function(){if(Ext.isDefined(a.findParentByType("editor"))){a.on("focus",function(){a.expand()})}})},editRecord:function(c){var a=this.objectType||c.get("objectType")||c.get("object_typeid"),b=this.entityType||c.get("entityType");assert(Ext.isString(c.get("showid")),"showid must be defined");assert(Ext.isString(b),"entityType must be defined");assert(b!="task"||a,"If entityType is task, objectType must be defined");this.doEditRecord({showid:c.get("showid"),objectType:a,entityType:b})},editId:function(a){this.doEditRecord({entityId:a})}});Ext.define("FT.ui.PriorityEditor",{extend:"Ext.form.field.ComboBox",alias:"widget.ft-priorityfield",selectOnFocus:false,editable:false,queryMode:"local",initComponent:function(){var a=this;this.store=FT.util.copyStore("FT.store.PriorityType");this.store.sort("sort","ASC");this.callParent();a.on({beforequery:function(b){a.lastQuery=b.query},afterrender:function(){if(Ext.isDefined(a.findParentByType("editor"))){a.on("focus",function(){a.expand()})}}})}});Ext.define("FT.ui.TaskStatusRendererEditor",{setEntity:function(a){this.entity=a},setStatusType:function(a){this.statusType=a},getStatusRenderer:function(a){return'<div class="statusrenderer">'+FTrack.grid.StatusRenderer(a)+"</div>"},getEditor:function(g,c,d){var b=this,a;var e=Ext.create("widget.ft-statusfield",{entity:b.entity,width:140,displayField:"name",valueField:"statusid",statusType:this.statusType||"task",listConfig:{getInnerTpl:function(){return'<span style="padding-left:2px;-moz-border-radius:2px;-webkit-border-radius:2px;color:#ABABAB;height:14px;background-color:{color};width:14px;">&#160;&#160;&#160;&#160;</span> {name}'}},forceSelection:true,allowBlank:false,listeners:{select:function(j,h){this.onEditorSelect(g,j,h,c,d)},focus:function(){e.expand()},scope:this},scope:this});a=new Ext.Editor({field:e,hideEl:false,autoSize:{width:"boundEl"},listeners:{show:function(){e.editRecord(c)},scope:this}});return a},onEditorSelect:function(g,e,a,b,d){var c=a[0].get("statusid");if(typeof g.setDirty=="function"){g.setDirty(true,{statusid:c})}else{Ext.Ajax.request({url:"/track/setStatusId",params:{data:Ext.encode({statusid:c,entity:{entityId:b.get("entityId"),entityType:b.get("entityType")}})},success:function(h){FT.notifySuccess(FT.i18n("Status updated."));b.beginEdit();b.set("statusid",c);b.endEdit()},scope:this})}log(g);g.editor.completeEdit();g.selectedValue=c}});Ext.define("FT.ui.AssetTypeEditor",{extend:"Ext.form.ComboBox",valueField:"typeid",displayField:"name",alias:"widget.ft-assettypefield",queryMode:"local",initComponent:function(){this.callParent();this.store=FT.util.copyStore("FT.store.AssetType")}});Ext.define("FT.ui.TaskTemplateEditor",{extend:"Ext.form.ComboBox",valueField:"templateid",displayField:"name",alias:"widget.ft-tasktemplatefield",queryMode:"remote",forceSelection:true,allowBlank:true,initComponent:function(){var a=this;this.store={fields:["templateid","name"],proxy:{type:"direct",directFn:FTApi.TaskTemplate.getTemplates}};this.callParent();this.store.on("load",function(c,b,e,d){if(b&&!b.length){a.emptyText=FT.i18n("No task templates available");a.applyEmptyText()}else{this.insert(0,{name:"None",templateid:null})}})},editRecord:function(a){Ext.apply(this.store.getProxy().extraParams,{showid:a.get("showid")})}});Ext.define("FT.ui.ShotTypeEditor",{alias:"widget.ft-shottypeeditor",extend:"Ext.form.field.ComboBox",queryCaching:true,forceSelection:true,allowBlank:false,selectOnFocus:true,typeAhead:true,typeAheadDelay:0,displayField:"name",valueField:"typeid",initComponent:function(){this.store=FT.util.copyStore("FT.store.ObjectType");this.callParent(arguments)}});Ext.define("FT.ui.DateEditor",{extend:"Ext.form.field.Date",alias:"widget.ft-datefield",submitFormat:"Y-m-d H:i:s",selectOnFocus:false,initComponent:function(){var a=this;this.format=FT.Settings.get("FORMAT","date");this.startDay=Number(FT.Settings.get("TIME","week_startday"));if(Ext.isString(this.value)){this.value=Ext.Date.parse(this.value,this.submitFormat)}this.callParent();a.on("afterrender",function(){if(Ext.isDefined(a.findParentByType("window"))){a.on("focus",function(){a.expand()})}})}});Ext.define("FT.ui.LabelEditor",{extend:"Ext.ux.form.field.BoxSelect",alias:"widget.ft-labeleditor",store:null,queryMode:"local",selectOnTab:false,submitType:"string",cls:"ft-labeleditor ft-combobox",initComponent:function(){this.emptyText=null;this.callParent(arguments)},getValue:function(){var a=this.callParent(arguments);if(Ext.isArray(a)&&this.submitType=="string"){return a.join(this.delimiter)}else{return a}},onKeyDown:function(d,b){var c=this,a=d.getKey();this.callParent(arguments);if(a==d.ENTER){Ext.defer(this.collapse,10,this)}}});Ext.define("FT.ui.NoteCategoryEditor",{extend:"FT.ui.LabelEditor",alias:"widget.notecategoryeditor",displayField:"name",valueField:"categoryid",fieldLabel:FT.i18n("Label"),labelWidth:62,editable:false,queryMode:"local",allowBlank:true,emptyText:FT.i18n("None"),width:200,setDefaultValue:true,initComponent:function(){this.store=FT.util.copyStore("FT.store.NoteCategory");this.callParent();if(this.setDefaultValue){this._setDefault()}},_setDefault:function(){var a=this.store.find("categoryid",FT.Settings.get("DEFAULT","note_category"));if(a!==-1){this.setValue(FT.Settings.get("DEFAULT","note_category"),true)}},listeners:{select:function(b,a,c){if(!b.getValue()){b.setValue(null)}}}});Ext.define("FT.ui.TaskTypeEditor",{extend:"FT.ui.LabelEditor",alias:"widget.tasktypeeditor",queryMode:"local",displayField:"name",valueField:"typeid",stacked:false,selectOnTab:false,initComponent:function(){if(this.store==null){this.store=FT.util.copyStore("FT.store.TaskType")}this.callParent()}});Ext.define("FT.ui.UserEditor",{extend:"FT.ui.LabelEditor",alias:"widget.usereditor",queryMode:"local",displayField:"name",valueField:"userid",stacked:false,enableKeyEvents:true,store:null,initComponent:function(){this.listConfig={minWidth:150};if(!this.store){this.store=FT.util.copyStore("FT.store.ActiveUser")}this.callParent();this.mon(FT.app,"ftrackKeyEvent",this.handleEvents,this)},handleEvents:function(a,b){if(b.target.id!=this.id+"-inputEl"){return}if(a=="copy"){FT.userEditorCopyValue=this.getValue();return false}else{if(a=="paste"){if(Ext.isDefined(FT.userEditorCopyValue)){this.setValue(FT.userEditorCopyValue);return false}}}}});Ext.define("FT.ui.ProjectEditor",{extend:"FT.ui.LabelEditor",alias:"widget.projecteditor",queryMode:"local",displayField:"fullname",valueField:"showid",stacked:false,filters:{},initComponent:function(){var a=this;this.store=Ext.create("Ext.data.Store",{fields:["fullname","showid","status","private"],proxy:{type:"ajax",url:"/main/dal_query",extraParams:{data:Ext.encode({source:"dal_show",all:true,fields:["fullname","showid","status","private"],filters:a.filters})}},sorters:["fullname"],autoLoad:true});this.callParent();this.addCls(" ft-labeleditor ft-combobox")}});Ext.define("FT.ui.AutoIncrement",{extend:"Ext.form.field.Text",alias:"widget.ft-autoincrement",validator:function(a){var b=a.split("-");if(b.length==2&&Ext.isNumeric(b[1])){return true}return'Must be on the form "PREFIX-INITIALNUMBER". Example: FT-1'},initComponent:function(){this.callParent()}});Ext.define("FT.ui.EnumeratorField",{extend:"FT.ui.LabelEditor",alias:"widget.enumeratorfield",queryMode:"local",displayField:"menu",valueField:"value",stacked:false,selectOnTab:false,multiSelect:false,value:"",initComponent:function(){if(!Ext.isDefined(this.data)){this.data=[]}this.store=Ext.create("Ext.data.Store",{fields:["menu","value"],data:Ext.decode(this.data)});this.callParent()},getValue:function(){var a=this.callParent(arguments);if(a==null){a=""}return a}});Ext.define("FT.form.field.HTMLPicker",{extend:"Ext.form.field.Trigger",alias:"widget.htmlpicker",cls:"ft-htmlpicker",triggerCls:"ft-form-trigger-wide",triggerWidth:23,editDataIndex:null,editRecord:function(a){this.record=a},onTriggerClick:function(){var a=Ext.create("FT.window.HtmlEditorWindow",{});a.openWindow(this.getValue(),this.editDataIndex,this.record,function(b,c){if(Ext.isFunction(b.afterUserEdit)){b.afterUserEdit(c)}},this)}});Ext.define("FT.component.HoursField",{extend:"Ext.form.field.Number",emptyText:"hh:mm",alias:["widget.ft-hoursfield"],decimalSeparator:".:",decimalPrecision:2,step:0.25,minValue:0,allowDecimals:true,maxLength:5,enforceMaxLength:true,isValid:function(){return this.rawToValue(this.rawValue)>=0&&this.rawToValue(this.rawValue)<=24},setValue:function(a){this.callParent(arguments)},beforeBlur:Ext.emptyFn,parseValue:function(a){a=parseFloat(String(a).replace(":","."));return isNaN(a)?null:a},rawToValue:function(b){b=FT.util.Format.timeToFloat(b);var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return a},valueToRaw:function(c){if(!c){return c}var b=this,a=b.decimalSeparator;c=b.parseValue(c);c=b.fixPrecision(c);c=Ext.isNumber(c)?c:parseFloat(String(c).replace(a,"."));c=isNaN(c)?"":String(c).replace(".",".");c=FT.util.Format.floatToTime(c);return c}});Ext.define("FT.component.QuickLogTime",{extend:"Ext.container.Container",width:"100%",initComponent:function(){this.store=Ext.create("Ext.data.Store",{fields:["hoursTotal","hoursTask",{name:"date",type:"date",dateFormat:"c"}],proxy:{type:"direct",extraParams:{},directFn:FTApi.Timelog.getWeekSummary,reader:{type:"json",root:"data"}}});var c=this.store,d;d=this.getTplString();d=d.join("");this.loadData();var b=new Date;var a=Ext.create("Ext.view.View",{loadMask:false,store:this.store,itemSelector:"div.ft-weekdata-day",style:"color:gray;",tpl:new Ext.XTemplate(d,{renderTime:function(e){if(e==0){return"-"}return FT.util.Format.floatToTime(e)},renderDate:function(e){var g=Ext.Date.format(e,"D");if(b.getYear()==e.getYear()&&b.getMonth()==e.getMonth()&&b.getDate()==e.getDate()){return"<b>"+g+"</b>"}return g},getTotal:function(e){var g=c.getProxy().getReader().rawData.totalHours;return FT.util.Format.floatToTime(g)}})});this.items=[a];this.view=a;this.callParent(arguments)},getTplString:function(){var a=['<tpl for=".">','<div class="ft-dashboard-top-box-outer">','<div class="ft-dashboard-top-box" style="min-width:60px;">',"<h2>{[this.renderTime(values.hoursTotal)]}</h2>",'<span class="ft-dashboard-top-box-title">{[this.renderDate(values.date)]}</span>',"</div>","</div>","</tpl>"];return a},loadData:function(){this.store.load()}});Ext.define("FT.ui.Thumbnail",{extend:"Ext.Component",space:10,alias:"widget.ft-thumbnail",style:{marginTop:"10px"},width:30,initComponent:function(){var a={size:{y:20},thumbUrl:FT.util.getThumbnailUrl(this.thumbid)};this.html=FTrack.grid.IconRendererFit(a);this.callParent(arguments)}});Ext.define("FT.module.Overview",{extend:"FT.AbstractRAWModule",itemId:"overview",enableBookmark:true,verticalDashboardMenu:false,enableSlideIn:true,getTopMenuItems:function(){return[{xtype:"button",itemId:"overview",text:FT.i18n("Overview"),handler:function(){this.app.open(this,{})},scope:this}]}});Ext.define("FT.module.Home",{extend:"FT.AbstractRAWModule",itemId:"home",preRequests:[],enableBookmark:true,verticalDashboardMenu:false,enableSlideIn:true,getTopMenuItems:function(){return["-",{xtype:"button",itemId:"home",text:FT.i18n("My Tasks"),tourId:"mytasks",handler:function(){this.app.open(this,{})},scope:this}]}});Ext.define("FT.module.Manager",{extend:"FT.AbstractRAWModule",itemId:"manager",preRequests:[],enableBookmark:true,verticalDashboardMenu:false,enableSlideIn:true,constructor:function(a){this.hideDashboardMenu=FT.Settings.get("ftrack","hide-manager-dashboard-menu");Ext.apply(this,a);this.callParent(arguments)},getTopMenuItems:function(){return[{xtype:"button",rightAlign:false,itemId:"manager",text:FT.i18n("Project Manager"),tourId:"projectmanager",handler:function(){this.app.open(this,{})},scope:this}]}});Ext.define("FT.module.Planning",{extend:"FT.AbstractRAWModule",itemId:"planning",preRequests:[],enableBookmark:true,verticalDashboardMenu:false,enableSlideIn:true,getTopMenuItems:function(){return[{xtype:"button",itemId:"planning",text:FT.i18n("Planning"),tourId:"planning",handler:function(){this.app.open(this,{})},scope:this}]}});Ext.define("FT.module.Report",{extend:"FT.AbstractRAWModule",itemId:"report",preRequests:[],enableBookmark:false,includeThumbnail:false,hideDashboardMenu:false,loadOnInit:false,dashboardCls:"panel",autoloadDashboard:false,emptyText:FT.i18n("Let's crunch some numbers!")+"<br/>"+FT.i18n("Select a report to run")+"<br/><br/>"+FT.glyphIcon("bars",{size:70})+'<br/><br/><a href="https://help.ftrack.com/using-ftrack/the-basics/reporting" target="_blank">'+FT.i18n("Learn more about reports")+"</a>",saveDashboardState:false,getTopMenuItems:function(){return[{xtype:"button",itemId:"report",text:FT.i18n("Reports"),tourId:"reports",handler:function(){this.app.open(this,{})},scope:this}]},update:function(b,a){this.callParent();if(a.view){FT.util.intercom("USED-REPORT-"+a.view.toUpperCase())}}});Ext.define("FT._ITEP",{extend:"Ext.util.Observable",constructor:function(){},run:function(g){var a=g.id;var e=g.autoRun||false;var d=g.exporter;var c=g.params;var b=Ext.value(g.scope,this);if(g.fileDownload){Ext.create("Ext.form.Panel",{url:"/social/export",standardSubmit:true,isUpload:true}).submit({params:{itepid:a,exporter:d,params:Ext.encode(c),autoRun:e}})}else{Ext.Ajax.request({url:"/itep/init",params:{itepid:a,exporter:d,params:Ext.encode(c),autoRun:e},scope:this,success:function(h){var k=Ext.decode(h.responseText);var j=null;Ext.each(k,function(l){Ext.iterate(l,function(m,n){if(m==g.exporter){j=n;return false}},this);return false},this);if(j.error!=null){log("Error: "+j.error)}oldParams=j.params;j.id=a;j.autoRun=e;j.params=c;j.exporter=d;Ext.each(j.params,function(l){Ext.each(oldParams,function(m){if(l.property==m.property&&l.label==""){l.label=m.label}},this)},this);g.callback.call(b,j)}})}return{getParams:function(){return Ext.encode(g.params)}}},createPresenter:function(b){var a=Ext.create("FT.ui.Presenters",{itepId:b.data["id"],autoRun:b.data["autoRun"],params:b.data["params"]});a.setExporter(b.data["exporter"]);a.setType(b.type);a.setData(b.data);a.setPresenterSettings(b.settings);a.load();return a},getPresenters:function(){}});FT.ITEP=Ext.create("FT._ITEP");Ext.define("RAW.ITEPWidget",{extend:"RAW.Widget"});Ext.define("FT.ui.Importers",{extend:"Ext.container.Container",initComponent:function(){this.nodeStore=null;this.nodeSettingsStore=null;this.nodeTypes=null;this.importer=null;this.importerSettings=null;this.callParent(arguments)},setStores:function(){this.nodeStore=arguments[0];this.nodeSettingsStore=arguments[1]},setNodeTypes:function(a){this.nodeTypes=a},setReportsInst:function(a){this.reportsInst=a},setAvailNodeSettingsStore:function(a){this.availNodeSettingsStore=a},load:function(){this.importer=this.nodeStore.findRecord("type","importer");var a=this.importer.get("nodeClass");Ext.Ajax.request({url:"/itep/getImporterSettings",params:{id:a},success:function(b){this.createFieldSet(b.responseText,this.nodeTypes.findRecord("id",this.importer.get("nodeClass")).get("nodeName"))},scope:this})},createFieldSet:function(a,c){var a=Ext.decode(a);if(this.nodeSettingsStore.findRecord("setting","input")==null){this.nodeSettingsStore.add({setting:"input",nodeId:"1",value:{type:"ft-textarea",value:"tomt",label:"label",width:350}})}if(this.reportsInst.itepId){Ext.each(a,function(h){var g=this.nodeSettingsStore.findRecord("setting",h.setting);if(h.setting=="input"){h.value=g.get("value")["value"]}},this)}this.importerSettings=new Ext.create("FT.ui.ImporterAndTransformerSettings",a);this.importerSettings.setNodeSettingsStore(this.nodeSettingsStore);this.availNodeSettingsStore.filter([{property:"nodeClass",value:this.nodeStore.findRecord("type","importer").get("nodeClass")}]);this.availNodeSettingsStore.each(function(g){Ext.each(g.get("settings"),function(h){if(this.nodeSettingsStore.findRecord("setting",h.property)==null){this.nodeSettingsStore.add({setting:h.property,nodeId:"1",value:h.value})}},this)},this);this.availNodeSettingsStore.clearFilter();var b=new Ext.create("Ext.container.Container");Ext.each(this.importerSettings.renderSettings(),function(h){var g=this.nodeSettingsStore.findRecord("setting",h.setting);if(g!=null&&g.get("setting")=="input"){g.set("value",{type:"ft-textarea",value:h.value,label:h.label,width:350})}h.setRecordFromStore(g);b.add(h.renderSettings())},this);var e=this;this.importersRadiogroup=new Ext.create("Ext.form.RadioGroup",{layout:"auto"});this.populateRadioGroup(this.reportsInst.base.loadedImporters,a,c);var d=Ext.create("Ext.form.FieldSet",{title:"Import",width:600,autoHeight:true,layout:{type:"table",columns:2,tdAttrs:{style:{verticalAlign:"top"}}},defaults:{width:200},items:[{xtype:"label",text:"Importers:"},{xtype:"label",text:"Importer settings:"},this.importersRadiogroup,b]});this.add(d)},populateRadioGroup:function(c,a,b){Ext.iterate(c,function(g,d,e){this.importersRadiogroup.add({xtype:"radio",name:"importer"+this.importersRadiogroup.id,boxLabel:this.nodeTypes.findRecord("nodeName",g).get("label"),checked:g==b,scope:this,listeners:{change:function(h,j){container=this.importersRadiogroup.up("fieldset").items.get(3);container.removeAll();if(j){this.showImporterSettings(container,h);this.nodeStore.findRecord("type","importer").set("nodeClass",this.nodeTypes.findRecord("label",h.boxLabel).get("id"))}},scope:this}})},this)},showImporterSettings:function(a,c){var d=this.nodeTypes.findRecord("label",c.boxLabel).get("id");var b=null;Ext.Ajax.request({url:"/itep/getImporterSettings",params:{id:d},scope:this,success:function(e){e=Ext.decode(e.responseText);this.addImporterSettings(e,a,c)}})},addImporterSettings:function(c,a,d){var e=this.nodeSettingsStore.findRecord("setting","input");if(e!=null){this.nodeSettingsStore.filterBy(function(h){return h.get("nodeId")==e.get("nodeId")&&h.get("setting")!="prev"&&h.get("setting")!="skip"},this);this.nodeSettingsStore.each(function(h){this.nodeSettingsStore.remove(h)},this);this.nodeSettingsStore.clearFilter()}this.availNodeSettingsStore.filterBy(function(h){return h.get("setting")=="prev"&&h.get("value")==""},this);var g=this.nodeSettingsStore.getAt(0).get("nodeId");this.availNodeSettingsStore.clearFilter();this.availNodeSettingsStore.filterBy(function(h){return h.get("nodeClass")==id},this);this.availNodeSettingsStore.each(function(h){Ext.each(h.get("settings"),function(j){this.nodeSettingsStore.add({setting:j.property,nodeId:g,value:j.value})},this)},this);this.availNodeSettingsStore.clearFilter();var b=new Ext.create("FT.ui.ImporterAndTransformerSettings",c);b.setNodeSettingsStore(this.nodeSettingsStore);this.importerSettings=b;Ext.each(b.renderSettings(),function(h){record=this.nodeSettingsStore.findRecord("setting",h.setting);h.setRecordFromStore(record);a.add(h.renderSettings())},this)},getImporterId:function(){return this.nodeStore.findRecord("type","importer").get("id")}});Ext.define("FT.ui.Transformers",{extend:"Ext.container.Container",initComponent:function(){this.nodeStore=null;this.nodeSettingsStore=null;this.nodeTypes=null;this.transformersFieldSet=null;this.transformersContainer=null;this.importerId=null;this.exporterId=null;this.lastTransformerId=null;this.infoToNodeStatus=null;this.nodeBeforeRemoved=null;this.transformerIds=new Array;this.callParent()},setStores:function(){this.nodeStore=arguments[0];this.nodeSettingsStore=arguments[1]},setNodeTypes:function(a){this.nodeTypes=a},setAvailNodeSettingsStore:function(a){this.availNodeSettingsStore=a},setReportsInst:function(a){this.reportsInst=a},load:function(){this.transformersFieldSet=Ext.create("Ext.form.FieldSet",{title:"Transform",width:600});var a=Ext.create("Ext.form.ComboBox",{fieldLabel:"Add transformer",displayField:"label",valueField:"nodeClass",store:this.reportsInst.base.transformerNodes,editable:false,width:300,scope:this});var c=Ext.create("Ext.button.Button",{text:"Add",scope:this,width:50,padding:3,style:{marginLeft:3},handler:function(){if(a.getValue()==null){log("Error: no transformer selected.")}else{this.addTransformerToContainer(new Node({id:"-1",nodeClass:a.getValue(),type:"transformer"}),false)}}});this.transformersFieldSet.add(new Ext.create("Ext.container.Container",{layout:{type:"table",columns:2},name:"comboBoxAndBtn",items:[a,c]}));this.transformersContainer=new Ext.create("Ext.container.Container");this.transformersFieldSet.add(this.transformersContainer);this.infoToNodeStatus=new Array;var g=this.nodeStore.queryBy(function(h,j){this.nodeSettingsStore.filterBy(function(k){return k.get("setting")=="prev"&&k.get("value")==this.importerId},this);this.firstTransformNodeId=this.nodeSettingsStore.getAt(0).get("nodeId");this.nodeSettingsStore.clearFilter();if(h.get("id")==this.firstTransformNodeId){this.firstTransform=h}return h.get("type")=="transformer"},this);var b=this.firstTransform;this.lastTransformerId=this.importerId;var d=0;var e=null;this.transformersContainer.suspendLayout=true;while(g.getCount()>0){this.addTransformerToContainer(b,true);g.remove(b);this.nodeSettingsStore.filter([{property:"value",value:new RegExp("^"+b.get("id")+"$")},{property:"setting",value:"prev"}]);b=this.nodeSettingsStore.getAt(0);this.nodeSettingsStore.clearFilter();if(b!=undefined){e=b.get("value");log("prev");log(e)}else{log("Error: Prev ID Error, i = "+d)}if(b!=undefined){b=this.nodeStore.findRecord("id",new RegExp("^"+b.get("nodeId")+"$"))}d++}this.transformersContainer.suspendLayout=false;this.transformersContainer.doLayout();this.add(this.transformersFieldSet)},addTransformerToContainer:function(t,c){var m=new Array;var b=-1;Ext.each(this.transformerIds,function(u){if(u>=b){b=parseInt(u)+1}},this);log("ID: "+b);if(!c){var d=this.nodeStore.findRecord("type","exporter");var k=d.get("id");d.set("id",b+1);this.exporterId=b+1;this.nodeSettingsStore.filter([{property:"nodeId",value:new RegExp("^"+k+"$")},{property:"setting",value:"prev"}]);this.nodeSettingsStore.getAt(0).set("value",b);this.nodeSettingsStore.getAt(0).set("nodeId",b+1);this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"nodeId",value:new RegExp("^"+k+"$")}]);this.nodeSettingsStore.getAt(0).set("nodeId",b+1);this.nodeSettingsStore.clearFilter();var a=this.nodeStore.findRecord("id",this.lastTransformerId);if(this.nodeStore.findRecord("id",t.get("id"))==null){this.availNodeSettingsStore.filter([{property:"nodeClass",value:t.get("nodeClass")}]);this.availNodeSettingsStore.each(function(x){var u=x.get("settings");if(u!=undefined){var w=b;Ext.each(u,function(y){this.nodeStore.filter([{property:"id",value:w},{property:"nodeClass",value:x.get("nodeClass")},{property:"type",value:x.get("type")}]);if(this.nodeStore.getAt(0)==undefined){this.nodeSettingsStore.add({setting:y.property,nodeId:b,value:y.value});this.nodeSettingsStore.add({setting:"prev",nodeId:b,value:a!=null?this.lastTransformerId:this.nodeBeforeRemoved});this.nodeSettingsStore.add({setting:"skip",nodeId:b,value:0});this.nodeStore.add({id:b,nodeClass:x.get("nodeClass"),type:x.get("type")})}else{this.nodeSettingsStore.add({setting:y.property,nodeId:b,value:y.value})}this.nodeStore.clearFilter()},this)}},this);this.availNodeSettingsStore.clearFilter()}}this.nodeSettingsStore.filter([{property:"setting",value:"skip"},{property:"nodeId",value:new RegExp("^"+t.get("id")+"$")}]);var p=this.nodeSettingsStore.getAt(0)!=undefined&&this.nodeSettingsStore.getAt(0).get("value")==1?false:true;this.nodeSettingsStore.clearFilter();var l=Ext.create("Ext.form.field.Checkbox",{checked:p,boxLabel:this.nodeTypes.findRecord("id",t.get("nodeClass")).get("label"),name:"transformer",listeners:{mouseenter:{element:"el",fn:function(){log("Node ID: "+t.get("id"))}},scope:this},handler:function(w,u){this.toggleSkipSetting(t.get("id"))},scope:this});var q=new Array;log(this.nodeSettingsStore);this.nodeSettingsStore.filter([{property:"nodeId",value:new RegExp('^["]?'+(c?t.get("id"):b)+'["]?$')},{filterFn:function(u){return u.get("setting")!="prev"&&u.get("setting")!="skip"}}]);var h=null;this.nodeSettingsStore.each(function(w){log(w);var u=this.nodeSettingsStore.findRecord("setting",w.get("setting"));var x=typeof w.get("value")==="object"?w.get("value"):Ext.decode(w.get("value"));x.setting=u;h=new Ext.create("FT.ui.ImporterAndTransformerSettings",x);Ext.each(h.renderSettings(),function(y){q.push(y.renderSettings())},this)},this);this.nodeSettingsStore.clearFilter();var h=Ext.create("Ext.container.Container",{style:{marginLeft:"17px"},items:q});m.push(h);var s=Ext.create("Ext.button.Button",{text:"x",width:20,margin:"0 0 3 5",scope:this,handler:function(w){var x=w.findParentByType("container").findParentByType("container");var y=w.findParentByType("container").findParentByType("container").findParentByType("container");y.remove(x.id);this.nodeSettingsStore.filter([{property:"nodeId",value:new RegExp("^"+x.transformerId+"$")},{property:"setting",value:"prev"}]);var z=this.nodeSettingsStore.getAt(0).get("value");this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"value",value:x.transformerId},{property:"setting",value:"prev"}]);this.nodeSettingsStore.getAt(0).set("value",z);this.nodeSettingsStore.clearFilter();this.nodeBeforeRemoved=z;var u=this.nodeStore.findRecord("id",x.transformerId);this.nodeStore.remove(u);this.nodeSettingsStore.filter([{property:"nodeId",value:new RegExp("^"+x.transformerId+"$")}]);this.nodeSettingsStore.each(function(A){this.nodeSettingsStore.remove(A)},this);this.nodeSettingsStore.clearFilter();this.updateMoveBtnsState()}});var o=Ext.create("Ext.button.Button",{text:"Up",style:{marginLeft:10},scope:this,width:40,handler:function(u){this.moveTransformer(t.get("id")==-1?b:t.get("id"),"up",u)}});var j=Ext.create("Ext.button.Button",{text:"Down",style:{marginLeft:5},scope:this,width:40,handler:function(u){this.moveTransformer(t.get("id")==-1?b:t.get("id"),"down",u)}});var g=Ext.create("Ext.container.Container",{width:200,items:[s,o,j]});var e=Ext.create("Ext.container.Container",{items:m});var n=Ext.create("Ext.container.Container",{transformerId:t.get("id")==-1?b:t.get("id"),items:[l,g,e,{}],layout:{type:"table",columns:2}});this.transformersContainer.add(n);if(!c){t.set("id",b)}this.updateMoveBtnsState();this.lastTransformerId=t.get("id");this.transformerIds.push(t.get("id"))},updateMoveBtnsState:function(){Ext.each(this.transformersContainer.items.items,function(b,a){b.down("button[text='Up']").setDisabled(a==0);b.down("button[text='Down']").setDisabled(a==this.transformersContainer.items.items.length-1)},this)},moveTransformer:function(c,m,k){var e=false;if(m=="up"){this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp('^(["])?'+c+'(["])?$')}]);e=this.nodeSettingsStore.getAt(0).get("value")!=this.importerId;this.nodeSettingsStore.clearFilter()}else{this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp('^(["])?'+this.exporterId+'(["])?$')}]);e=this.nodeSettingsStore.getAt(0).get("value")!=c;this.nodeSettingsStore.clearFilter()}if(e){if(m=="up"){var l=null;var b=null;this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp("^"+c+"$")}]);l=this.nodeSettingsStore.getAt(0).get("value");this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp("^"+l+"$")}]);b=this.nodeSettingsStore.getAt(0).get("value");this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"value",value:new RegExp("^"+c+"$")}]);this.nodeSettingsStore.getAt(0).set("value",l);this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp("^"+c+"$")}]);nodeToSwitchWith2=this.nodeSettingsStore.getAt(0).get("value");this.nodeSettingsStore.getAt(0).set("value",b);this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp("^"+l+"$")}]);this.nodeSettingsStore.getAt(0).set("value",c);this.nodeSettingsStore.clearFilter()}else{var d=null;var j=null;var h=null;this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp("^"+c+"$")}]);d=this.nodeSettingsStore.getAt(0).get("value");this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"value",value:c}]);nextNodeId=this.nodeSettingsStore.getAt(0).get("nodeId");this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"value",value:new RegExp("^"+nextNodeId+"$")}]);h=this.nodeSettingsStore.getAt(0).get("nodeId");this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"value",value:c}]);this.nodeSettingsStore.getAt(0).set("value",d);this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp("^"+c+"$")}]);this.nodeSettingsStore.getAt(0).set("value",nextNodeId);this.nodeSettingsStore.clearFilter();this.nodeSettingsStore.filter([{property:"setting",value:"prev"},{property:"nodeId",value:new RegExp("^"+h+"$")}]);this.nodeSettingsStore.getAt(0).set("value",c);this.nodeSettingsStore.clearFilter()}var n=k.findParentByType("container").findParentByType("container").findParentByType("container");var g=k.findParentByType("container").findParentByType("container");var a=new Object;Ext.each(n.items.items,function(p,o){a[p.transformerId]=p;if(k.findParentByType("container").findParentByType("container")==p){newIndex=o}});newIndex=m=="up"?newIndex-1:newIndex+1;n.insert(newIndex,a[g.transformerId]);this.updateMoveBtnsState()}else{log("Error: not possible to move.")}},getNodeStatus:function(){this.infoToNodeStatus=new Array;this.nodeSettingsStore.filter([{property:"nodeId",value:new RegExp("^"+this.exporterId+"$")},{property:"setting",value:"prev"}]);var a=this.nodeSettingsStore.getAt(0).get("value");this.nodeSettingsStore.clearFilter();i=0;while(a!=this.importerId){this.nodeSettingsStore.filter([{property:"nodeId",value:new RegExp("^"+a+"$")},{property:"setting",value:"prev"}]);a=this.nodeSettingsStore.getAt(0).get("value");this.infoToNodeStatus.push({id:this.nodeSettingsStore.getAt(0).get("nodeId"),prev:a});this.nodeSettingsStore.clearFilter();i++;if(i>25){break}}return this.infoToNodeStatus},toggleSkipSetting:function(b){this.nodeSettingsStore.filter([{property:"nodeId",value:new RegExp("^"+b+"$")},{property:"setting",value:"skip"}]);var a=this.nodeSettingsStore.getAt(0);a.set("value",a.get("value")==0?1:0);this.nodeSettingsStore.clearFilter()}});Ext.define("FT.ui.DataView",{extend:"Ext.container.Container",initComponent:function(){this.columnModel=Ext.define("View",{extend:"Ext.data.Model"});this.dataViewStore=new Ext.data.Store({model:"View"});this.view=new Ext.grid.Panel({title:"Data View",width:800,height:300,style:"margin-bottom:10px;",store:this.dataViewStore,columns:[]});this.view.getStore().on("datachanged",function(){this.view.setTitle("Data View ("+this.view.getStore().count()+" items)")},this);this.callParent();this.add(this.view)},refresh:function(a,b){this.columns=a;this.columnModel.fields=a;this.dataViewStore.loadData(b);Ext.each(a,function(e,c,d){d[c]={text:e,dataIndex:e}},this);this.view.reconfigure(this.dataViewStore,a)}});Ext.define("FT.ui.Presenters",{extend:"Ext.container.Container",initComponent:function(){this.colStore=new Array;this.nodeStore=null;this.nodeSettingsStore=null;this.xAxis=null;this.yAxis=null;this.presenters=Ext.create("Ext.container.Container",{});this.presenterInputData=null;this.presenterSettings=null;this.importer=null;this.exporter=null;this.data=null;this.reportsInst=null;this.type=null;this.callParent();this.add(this.presenters)},setStores:function(){this.nodeStore=arguments[0];this.nodeSettingsStore=arguments[1]},setImporterRep:function(a){this.importer=a},setReportsInst:function(a){this.reportsInst=a},inputRequested:function(){return Ext.value(this.data.params,[])},updateColComboboxes:function(a){this.columns=new Array;Ext.each(a,function(b){this.columns.push(b)},this)},setExporter:function(a){this.exporter=a},setType:function(a){this.type=a},setData:function(a){this.data=a},setPresenterSettings:function(a){this.presenterSettings=a},getParams:function(){return Ext.encode(this.params)},load:function(){if(this.presenters.getComponent("presenterArea")!=undefined){this.presenters.getComponent("presenterArea").removeAll()}if(FT.app.getCfg().itemId=="reports"){this.presenters.removeAll()}if(this.inputRequested().length>0&&!this.autoRun){var j=this.inputRequested();var d=null;var a=Ext.create("Ext.form.Panel",{bodyPadding:"15 0 25 25",ui:"ft-presenter-run-settings",bodyCls:"panel"});this.presenters.add(a);var k=new Array;var b=new Array;var e=new Date;var g=new Date(e.getFullYear(),e.getMonth(),1);var c=new Date(e.getFullYear(),e.getMonth()+1,0);g=Ext.Date.format(g,"Y-m-d");c=Ext.Date.format(c,"Y-m-d");this.defaultFromDate=g;this.defaultToDate=c;Ext.each(j,function(l){if(l.type=="date"){d="date";a.add({xtype:"datefield",width:400,margin:"10 0 0 0",fieldLabel:l.label,name:l.property,emptyText:l.property=="fromDate"?g:c,value:l.value,editable:false,startDay:1,itemId:l.property,format:"Y-m-d",listeners:{change:function(){if(l.property=="fromDate"){a.getComponent("toDate").setValue(a.getComponent("fromDate").getValue());a.getComponent("toDate").setMinValue(a.getComponent("fromDate").getValue())}},scope:this},scope:this})}else{if(l.type=="user"){d="user";var n=Ext.create("FT.ui.UserEditor",{name:"User",fieldLabel:l.label,width:400,emptyText:"All users",margin:"10 0 0 0",store:FT.util.copyStore("FT.store.User")});a.add(n)}else{if(l.type=="combo"){d="combo";if(l.property=="projects"){var m=Ext.create("FT.ui.ProjectEditor",{name:"projects",fieldLabel:l.label,width:400,emptyText:"All projects",margin:"10 0 0 0"})}else{if(l.property=="tasktype"){var m=Ext.create("FT.ui.TaskTypeEditor",{name:"tasktype",fieldLabel:l.label,valueField:"name",width:400,emptyText:"All task types",margin:"10 0 0 0"})}}a.add(m)}else{d="string";a.add({xtype:"textfield",fieldLabel:l.label,name:l.property,value:l.defaultValue})}}}k.push(d);b.push(l.label)},this);a.down("textfield").focus();a.addDocked(Ext.create("Ext.toolbar.Toolbar",{dock:"bottom",items:[{cls:"button-primary",action:"save",text:"Run",margin:"0 0 0 370",handler:function(){this.showBtnClick(a,k,b)},scope:this}]}))}else{var h=Ext.create("Ext.container.Container",{width:590,colspan:2});this.presenters.add({xtype:"container",layout:this.presenterSettings.layout||"fit",itemId:"presenterArea",scope:this});this.createPresenterStore();this.createPresenter()}},createPresenter:function(){switch(this.type){case"bar-chart":case"line-chart":case"pie-chart":this.createChart();break;case"grid":this.createGrid();break;case"shot-status":this.createShotStatusBoxes();break;case"time-report":this.createTimeReport();break}},settingsApply:function(a){Ext.iterate(a,function(b,c){if(this.presenterSettings[b]){if(Ext.isArray(c)){Ext.each(c,function(e,d){Ext.apply(this.presenterSettings[b][d],e)},this)}else{this.presenterSettings[b]=c}}else{this.presenterSettings[b]=c}},this);return this.presenterSettings},getMaxValue:function(){return this.presenterStore.max(this.presenterSettings.axes[0]["fields"])},createChart:function(){var d;switch(this.type){case"bar-chart":var b=["#4696bf"];Ext.chart.theme.barColors=Ext.extend(Ext.chart.theme.Base,{constructor:function(g){Ext.chart.theme.Base.prototype.constructor.call(this,Ext.apply({colors:b},g))}});var e=this;var a={store:this.presenterStore,theme:"barColors:gradients",axes:[{minimum:0,grid:true}],series:[{onPlaceLabel:function(){Ext.chart.series.Bar.prototype.onPlaceLabel.apply(this,arguments);var g=arguments[0];if(g.isOutside){g.setAttributes({fill:"#000"});g.redraw()}}}],listeners:{beforerender:function(){this.setHeight(e.presenterStore.getCount()*25+150)}}};d=Ext.create("FT.chart.Chart",this.settingsApply(a));break;case"line-chart":d=Ext.create("FT.chart.Chart",Ext.apply(this.presenterSettings,{store:this.presenterStore}));break;case"pie-chart":var c=new Array;this.presenterStore.each(function(g,h){c.push(g.get("TaskStatus_color"))},this);d=Ext.create("FT.chart.Chart",Ext.apply(this.presenterSettings,{store:this.presenterStore,series:[{type:"pie",angleField:"tasktype",showInLegend:true,colorSet:c,highlight:{segment:{margin:10}},label:{field:"TaskStatus_name",display:"rotate",contrast:true,font:"12px Arial"}}]}));break}this.presenters.getComponent("presenterArea").add(d)},createGrid:function(){var b=this.presenterStore.model.prototype.fields.keys;var c=new Array;Ext.each(this.presenterSettings.showCols,function(d){if(b.indexOf(d)!=-1){c.push({header:d,dataIndex:d})}},this);var a=new Ext.grid.Panel({title:"Data View",width:500,height:200,store:this.presenterStore,columns:c,preventHeader:true});this.presenters.getComponent(0).getComponent(2).add(a)},createTimeReport:function(){var b=this.presenterStore.model.prototype.fields.keys;var o=new Array;var j=0;var d=null;this.presenterStore.data.each(function(z){j+=z.get("Hours");d=z.get("User_name")},this);Ext.each(this.presenterSettings.showCols,function(A,z,C){var B={header:A,dataIndex:A,menuDisabled:true};if(z==2){B.flex=1}else{B.width=150;B.flex=0}if(A=="Hours"){B.summaryType="sum";B.summaryRenderer=function(F,D,E){return"<b>"+Ext.util.Format.number(F,"0.00")+"</b>"},B.renderer=function(F,D,E){return Ext.util.Format.number(F,"0.00")}}o.push(B)},this);var m=new Ext.Component({width:400,cls:"panel",padding:10,margin:25,style:{textAlign:"center",color:"#666",border:"1px solid #dadada"},html:'<span style="font-size:36pt;font-weight:bold;">'+Ext.util.Format.round(j,2)+"</span><br />Total hours"});var s=Ext.create("Ext.grid.feature.GroupingSummary",{groupHeaderTpl:"{name} ({rows.length})",enableGroupingMenu:false,startCollapsed:this.presenterStore.getCount()>100});var a=new Ext.grid.Panel({margin:10,title:"Data View",store:this.presenterStore,columns:o,features:[s],preventHeader:true,disableSelection:true,viewConfig:{stripeRows:false}});var t=new Ext.LoadMask(a,{msg:"Loading...",floating:{shadow:false}});a.getView().on("groupexpand",function(z){a.doLayout()});a.getView().on("groupcollapse",function(z){a.doLayout()});this.presenterStore.group("Date");this.presenterStore.on("datachanged",function(){t.hide()},this);var w=this.presenters.down("form").getValues();var e=Ext.create("FT.button.Selector",{text:"Group",cls:"ftrack-button-grey",store:{fields:["name","type"],data:[{name:"Date",type:"Date"},{name:"Project",type:"Project"},{name:"User",type:"User"},{name:"Task Type",type:"Task Type"}]},valueField:"type",displayField:"name",itemType:"radio",value:"Date",selectHandler:function(A){g.groupBy=A;var z=this;t.show();setTimeout(function(){var B=new Array;Ext.each(a.columns,function(D,C){if(D.isVisible()){B.push(D)}},z);B[0].setWidth(150);B[0].flex=0;B[1].flex=1;B[2].setWidth(150);B[2].flex=0;z.presenterStore.group(A)},500)},scope:this});var q=this.presenters.down("form").getForm().findField("fromDate");q=q.getValue()==null?q.emptyText:q.getRawValue();var u=this.presenters.down("form").getForm().findField("toDate");u=u.getValue()==null?u.emptyText:u.getRawValue();w.fromDate=w.fromDate?w.fromDate:this.defaultFromDate;w.toDate=w.toDate?w.toDate:this.defaultToDate;var x=this.presenters.down("form").getForm().findField("User");var n=new Array;Ext.each(x.valueStore.data.items,function(z){n.push(z.get("name"))},this);n=n.join(", ");var h=this.presenters.down("form").getForm().findField("projects");var l=new Array;Ext.each(h.valueStore.data.items,function(z){l.push(z.get("fullname"))},this);l=l.join(", ");var k="<table>";k+="<tr>";k+="<td style='width:15%;'>Date Range</td>";k+="<td style='width:35%;'>"+q+" - "+u+"</td>";k+="<td style='width:15%;'>Users</td>";k+="<td>"+(w.User!=""?n:"All Users")+"</td>";k+="</tr>";k+="<tr>";k+="<td>Total Hours</td>";k+="<td>"+j+" h</td>";k+="<td>Projects</td>";k+="<td>"+(w.projects!=""?l:"All Projects")+"</td>";k+="</tr>";k+="<tr>";k+="<td></td>";k+="<td></td>";k+="<td>Task Types</td>";k+="<td>"+(w.tasktype!=""?w.tasktype:"All Task Types")+"</td>";k+="</tr>";k+="</table>";var g={};g.fromDate=q;g.toDate=u;g.users=x.getValue();g.projects=h.getValue();g.selectedProjects=l;g.tasktype=this.presenters.down("form").getForm().findField("tasktype").getValue();g.groupBy=e.getValue();var y=this;var c=Ext.create("FT.button.Button",{glyph:FT.glyph("export"),style:{marginLeft:"5px"},disabled:this.presenterStore.getCount()==0,menu:[{text:"Excel",handler:function(){this.showExportDialog("Excel",g)},scope:this},{text:"PDF",handler:function(){this.showExportDialog("PDF",g)},scope:this}]});var p=Ext.create("Ext.toolbar.Toolbar",{items:[e,c]});this.presenters.getComponent("presenterArea").add([m,p,a])},showExportDialog:function(l,q){log(q.groupBy);var p="Projects: "+(q.projects!=""?q.selectedProjects:"All projects");var h="Users: "+(q.users!=""?FTrack.grid.UserRendererPrint(q.users):"All users");var k="Date range: "+q.fromDate+" to "+q.toDate;var s="Task types: "+(q.tasktype?q.tasktype:"All task types");var m=Ext.create("Ext.Component",{html:'<div class="ft-property-groupheader" style="padding-left:15px;">Filters</div><div style="padding-left:15px;line-height:1.8em;">'+k+"<br />"+h+"<br />"+p+"<br />"+s+'</div><div class="ft-property-groupheader" style="margin-top:20px;padding-left:15px;">Export options</div>'});var t=Ext.create("Ext.data.Store",{fields:["value","name"],data:[{value:"model.TaskWorkedHours.date",name:"Date"},{value:"model.Show.id",name:"Project"},{value:"model.TaskWorkedHours.userid",name:"User"},{value:"model.Task.id",name:"Task"},{value:"model.TaskType.typeid",name:"Task type"}],autoLoad:true});var d=FT.util.copyStore(t);var b=Ext.create("Ext.data.Store",{fields:["value","name"],data:[{value:"model.TaskWorkedHours.date",name:"Date"},{value:"model.Show.fullname",name:"Project"},{value:"model.User.username",name:"User"},{value:"model.Task.name",name:"Task"},{value:"model.TaskType.name",name:"Task type"},{value:"model.TaskWorkedHours.notes",name:"Note"}],autoLoad:true});var g=Ext.create("Ext.data.Store",{fields:["value","name"],data:[{value:"Date",name:"Date"},{value:"Project",name:"Project"},{value:"User",name:"User"},{value:"Task Type",name:"Task Type"}],autoLoad:true});var n=Ext.create("Ext.form.field.ComboBox",{queryMode:"local",displayField:"name",valueField:"value",stacked:false,name:"group",editable:false,fieldLabel:"Split page on",anchor:"100%",afterLabelTextTpl:FT.util.getHelp("Select which field to perform page split on. If page split is inactive the tables will still be separated by this value."),labelWidth:125,margin:"0 15 10 15",emptyText:"Default",multiSelect:false,store:g,value:g.getAt(g.find("value",q.groupBy))});var a=Ext.create("FT.ui.LabelEditor",{queryMode:"local",displayField:"name",valueField:"value",stacked:false,name:"values",fieldLabel:"Select result",anchor:"100%",labelWidth:125,afterLabelTextTpl:FT.util.getHelp("Select which fields to return in the result.<br><br><b>Notice:</b> When summarizing is active the data is grouped together. Result field is therefore inactive since it might show invalid data."),margin:"0 15 10 15",emptyText:"Default",multiSelect:true,store:b,listeners:{afterrender:function(){this.setValue(["model.TaskWorkedHours.date","model.Show.fullname","model.Task.name","model.User.username"])}}});var o=Ext.create("FT.ui.LabelEditor",{queryMode:"local",displayField:"name",valueField:"value",stacked:false,name:"sum",fieldLabel:"Summarize on",anchor:"100%",afterLabelTextTpl:FT.util.getHelp("Select which field to perform sum on."),labelWidth:125,margin:"0 15 10 15",listeners:{change:function(){var u=this.getValue().split(",");var w=new Array;Ext.Array.each(u,function(x){log(x.trim())});Ext.Array.each(u,function(y){var x=d.findRecord("value",y.trim());if(x){x=x.get("name");w.push(b.findRecord("name",x))}});if(w.length==0){a.setDisabled(false)}else{a.setDisabled(true)}a.setValue(w)}},emptyText:"Default",multiSelect:true,store:t});var c={xtype:"radiogroup",fieldLabel:"Split page",defaultType:"radiofield",margin:"0 15 0 15",labelWidth:125,anchor:"75%",afterLabelTextTpl:FT.util.getHelp("Split pages on the group value."),items:[{boxLabel:"Yes",name:"split",inputValue:"y",id:"yes",fieldStyle:"border:0;",checked:true},{boxLabel:"No",name:"split",inputValue:"n",id:"no",fieldStyle:"border:0;"}]};var j=[m,n,o,a,c];if(l=="PDF"){j.push({xtype:"radiogroup",fieldLabel:"Layout",defaultType:"radiofield",margin:"0 15",labelWidth:125,anchor:"75%",afterLabelTextTpl:FT.util.getHelp("Select portrait or landscape mode."),items:[{boxLabel:"Portrait",name:"layout",inputValue:"p",id:"portrait",fieldStyle:"border:0;",checked:true},{boxLabel:"Landscape",name:"layout",inputValue:"l",id:"landscape",fieldStyle:"border:0;"}]})}var e=Ext.create("FT.ModalWindow",{width:500,minHeight:400,title:l+" export options",layout:"anchor",items:j,modal:true,bodyPadding:"0 0 25 0",bbar:Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"ftrack-button",action:"cancel",handler:function(){e.close()},style:{marginRight:"10px"}},{xtype:"button",cls:"button-primary",text:"Export",handler:function(u){q.exportType=l;q.groupBy=e.items.items[1].getValue();q.sumOn=e.items.items[2].getValue();q.resultField=e.items.items[3].getValue();q.splitPage=e.items.items[4].getValue().split;q.layout=l=="PDF"?e.items.items[5].getValue().layout:"";Ext.create("Ext.form.Panel",{url:"/social/timereport",standardSubmit:true,isUpload:true}).submit({params:q})}}]}),autoShow:true})},createShotStatusBoxes:function(){var b=new Object;Ext.each(this.data.rows,function(c){b[c.ShotState]=c.count},this);var a=new Ext.container.Container({width:700,height:125,layout:"hbox",defaults:{xtype:"container",width:"25%",height:75,margin:10}});if(!b["not started"]){b["not started"]=0}if(!b["in progress"]){b["in progress"]=0}if(!b.done){b.done=0}a.add({style:{textAlign:"center",backgroundColor:"#d19f9e",paddingTop:"10px",color:"#9b494b"},html:'<span style="font-size:25pt;font-weight:bold;">'+b["not started"]+"</span><br />shots not started"});a.add({style:{textAlign:"center",backgroundColor:"#c5d9e2",paddingTop:"10px",color:"#5297b6"},html:'<span style="font-size:25pt;font-weight:bold;">'+b["in progress"]+"</span><br />shots in progress"});a.add({style:{textAlign:"center",backgroundColor:"#ccdeb6",paddingTop:"10px",color:"#70995d"},html:'<span style="font-size:25pt;font-weight:bold;">'+b.done+"</span><br />shots done"});this.presenters.getComponent("presenterArea").add(a)},createPresenterStore:function(){Ext.define("ChartModel",{extend:"Ext.data.Model",fields:this.data.columns});this.presenterStore=Ext.create("Ext.data.Store",{model:"ChartModel",data:this.data.rows})},setPresenterInputData:function(a){this.presenterInputData=a},showBtnClick:function(a,g,j){var d=a.getForm().getValues();var h=new Array;var e=this.reportsInst!=null?this.reportsInst.itepId:this.itepId;log("ITEP ID: "+e);var b=0;Ext.iterate(d,function(k,l){h.push({property:k,value:l,type:g[b],label:j[b]});b++});this.params=h;params=Ext.encode(h);var c=null;if(e){c={itepid:e,params:params,autoRun:true,exporters:[]};if(this.reportsInst!=null){c.data=this.reportsInst.getPresenterInputData()[1];c.sheetName=this.reportsInst.getPresenterInputData()[2]}}else{c={data:this.reportsInst.getPresenterInputData()[1],params:params,sheetName:this.reportsInst.getPresenterInputData()[2]}}this.fireEvent("beforeitepsubmit");if(this.loadMask){this.loadMask.destroy();delete this.loadMask}this.loadMask=new Ext.LoadMask(a.getEl(),{msg:"Creating report..."});this.loadMask.show();Ext.Ajax.request({url:"/itep/init",params:c,scope:this,timeout:900000,success:function(k){this.loadMask.hide();var l=Ext.decode(k.responseText);if(l instanceof Array){l=l[0]["JsonExporterNode"]}else{l=l.JsonExporterNode}var m=new Array;if(l.error!=null){log("Error: "+l.error)}this.setData(l);this.data.params=[];if(FT.app.getCfg().itemId!="reports"){this.load()}this.fireEvent("afteritepsubmit",l)}})},showChart:function(){var a=Ext.isDefined(this.itepId)?this.itepId:this.reportsInst.itepId;if(a==false){this.showChartHelper(this.nodeSettingsStore.findRecord("setting","input").get("value")["value"])}else{Ext.Ajax.request({url:"/itep/getReportData",params:{itepid:a},success:function(b){var c=Ext.decode(b.responseText)["sheets"];Ext.iterate(c,function(e){if(e.indexOf("Main Sheet")!=-1){var d=c[e]["settings"];Ext.each(d,function(g){if(g.setting=="input"){this.showChartHelper(g.value["value"])}},this)}},this)},scope:this})}},showChartHelper:function(b){var a=new Array;this.createPresenterStore();Ext.each(a,function(d,c,e){if(d instanceof Array){e[c]=d[0]}});switch(b){case"UC1":this.chart=Ext.create("Ext.chart.Chart",{width:500,height:400,store:this.presenterStore,axes:[{type:"Numeric",position:"left",fields:"hours",title:"Hours"},{type:"Category",position:"bottom",fields:"date",title:"Date"}],series:[{type:"line",xField:"date",yField:"hours"},{type:"line",xField:"date",yField:"bid"}]});this.presenters.getComponent(0).getComponent(2).add(this.chart);break;case"UC2":this.chart=Ext.create("Ext.chart.Chart",{width:500,height:300,store:this.presenterStore,legend:{position:"right"},series:[{type:"pie",angleField:"bid",showInLegend:true,colorSet:a,highlight:{segment:{margin:10}},label:{field:"status",display:"rotate",contrast:true,font:"12px Arial"}}]});this.presenters.getComponent(0).getComponent(2).add(this.chart);break;case"UC4":this.chart=Ext.create("Ext.chart.Chart",{width:600,height:400,store:this.presenterStore,legend:{position:"right"},animate:true,axes:[{type:"Numeric",position:"bottom",fields:["worked","bid"],minimum:0,grid:true,title:"Worked Hours"},{type:"Category",position:"left",fields:["tasktype"],title:"Task Type"}],series:[{type:"bar",axis:"bottom",xField:"tasktype",yField:["worked","bid"],label:{display:"insideEnd",field:"bid",renderer:Ext.util.Format.numberRenderer("0.00"),orientation:"horizontal",color:"#333","text-anchor":"middle"}}]});this.presenters.getComponent(0).getComponent(2).add(this.chart);break;default:log("No UC selected.")}}});Ext.define("FT.module.ReportsInterface",{extend:"Ext.container.Container",initComponent:function(){this.nodeStore=null;this.nodeSettingsStore=null;this.importers=null;this.transformers=null;this.dataView=null;this.presenter=null;this.nodeTypes=null;this.nodeStatus=null;this.columns=null;this.itepId=false;this.sheets=null;this.availNodeSettingsStore=null;this.base=null;Ext.define("Node",{extend:"Ext.data.Model",fields:["id","nodeClass","type"]});Ext.define("NodeSettings",{extend:"Ext.data.Model",fields:["setting","nodeId","value"]});this.nodeStore=new Ext.data.Store({model:"Node",proxy:null});this.nodeSettingsStore=new Ext.data.Store({model:"NodeSettings",proxy:null});this.callParent(arguments)},newReport:function(a){this.nodeStore.removeAll();this.nodeSettingsStore.removeAll();this.nodeSettingsStore.add({setting:"prev",nodeId:"1",value:""});this.nodeSettingsStore.add({setting:"skip",nodeId:"1",value:0});this.nodeStore.add({id:"1",nodeClass:"5e4132c2-3530-11e1-b48d-0019bb49847a",type:"importer"});this.nodeSettingsStore.add({setting:"prev",nodeId:"2",value:"1"});this.nodeSettingsStore.add({setting:"skip",nodeId:"2",value:0});this.nodeStore.add({id:"2",nodeClass:"5db67b2e-3610-11e1-b48d-0019bb49847a",type:"exporter"});this.itepId=false;return this.buildInterface(a)},buildInterface:function(a){this.nodeTypes=a;this.importers=Ext.create("FT.ui.Importers");this.importers.setStores(this.nodeStore,this.nodeSettingsStore);this.importers.setNodeTypes(this.nodeTypes);this.importers.setReportsInst(this);this.importers.setAvailNodeSettingsStore(this.availNodeSettingsStore);this.importers.load();this.transformers=Ext.create("FT.ui.Transformers");this.transformers.setStores(this.nodeStore,this.nodeSettingsStore);this.transformers.setNodeTypes(this.nodeTypes);this.transformers.setReportsInst(this);this.transformers.setAvailNodeSettingsStore(this.availNodeSettingsStore);this.transformers.importerId=this.importers.getImporterId();this.transformers.exporterId=this.getExporterData()["id"];this.transformers.load();this.dataView=Ext.create("FT.ui.DataView");this.dataView.dataViewStore.addListener("datachanged",function(){this.presenter.updateColComboboxes(this.columns)},this);this.presenter=Ext.create("FT.ui.Presenters");this.presenter.setStores(this.nodeStore,this.nodeSettingsStore);this.presenter.setImporterRep(this.importers);this.presenter.setReportsInst(this);this.presenter.on("beforeitepsubmit",function(e){},this);this.presenter.on("afteritepsubmit",function(e){this.dataView.refresh(e.columns,e.rows)},this);var b=Ext.create("Ext.button.Button",{text:"Run",width:100,height:25,scope:this,handler:this.run});var c=Ext.create("Ext.button.Button",{text:"View nodeSettingsStore",width:200,height:25,scope:this,handler:function(){log("THIS.nodeSettingsStore");log(this.nodeSettingsStore)}});var d=new Ext.create("Ext.container.Container",{cls:"bodyscrollhack",style:{backgroundColor:"white"},layout:{type:"table",columns:2,tdAttrs:{style:{padding:10,verticalAlign:"top"}}},items:[new Ext.create("Ext.container.Container",{items:[this.importers,this.transformers,b,c,this.nodeStatus=new Ext.create("Ext.panel.Panel",{width:600,style:"margin-top:50px;",collapsible:true,collapsed:true,title:"Nodes"})]}),new Ext.create("Ext.container.Container",{items:[this.dataView,this.presenter]})]});return d},setSheets:function(a){this.sheets=a},setBase:function(a){this.base=a},setAvailNodeSettingsStore:function(a){this.availNodeSettingsStore=a},getExporterData:function(){var b=this.nodeStore.findRecord("type","exporter");this.nodeSettingsStore.filterBy(function(c){return c.get("setting")=="prev"&&c.get("nodeId")==b.get("id")},this);var a=this.nodeSettingsStore.getAt(0).get("value");this.nodeSettingsStore.clearFilter();return{id:b.get("id"),prev:a}},run:function(){this.updateNodeStatus();var b=this.getPresenterInputData();this.presenter.setPresenterInputData(b);var a={rep:b[0],data:b[1],sheetName:b[2]};if(!this.itepId){a.itepId=this.itepId}this.presenter.fireEvent("beforeitepsubmit");Ext.Ajax.request({url:"/itep/init",params:a,scope:this,timeout:900000,success:function(c){var e=Ext.decode(c.responseText);var d=null;Ext.each(e,function(g){Ext.iterate(g,function(h,j){if(h=="JsonExporterNode"){d=j;return false}},this);return false},this);if(d.error!=null){log("Error: "+d.error)}this.presenter.setExporter("JsonExporterNode");this.presenter.setType("line-chart");this.presenter.setData(d);this.presenter.setPresenterSettings({width:500,height:400,axes:[{type:"Numeric",position:"left",fields:"hours",title:"Hours"},{type:"Category",position:"bottom",fields:"date",title:"Date"}],series:[{type:"line",xField:"date",yField:"hours"},{type:"line",xField:"date",yField:"bid"}]});this.presenter.load();this.presenter.fireEvent("afteritepsubmit",d)}})},getPresenterInputData:function(){var a=this.sheets.findIndexBy(function(h,g){return h==this},this);var c=new Ext.util.MixedCollection;var d=new Object;var b=null;var e=null;this.sheets.each(function(j,g,h){if(a==g){e=this.sheets.items[g].sheets.keys[g]}var k=Ext.clone(Ext.pluck(j.nodeSettingsStore.data.items,"data"));Ext.each(k,function(l){if(l.value&&l.value.setting){delete l.value.setting}});d[this.sheets.items[g].sheets.keys[g]]={nodes:Ext.pluck(j.nodeStore.data.items,"data"),settings:k};if(this.sheets.items[g].sheets.keys[g].indexOf("Main Sheet")!=-1){b=this.sheets.items[g].sheets.keys[g]}},this);d=Ext.encode(d);return new Array("input",d,e)},updateNodeStatus:function(){this.nodeStatus.removeAll();this.nodeStatus.insert(this.nodeStatus.items.length,new Ext.create("Ext.container.Container",{padding:"5 0 0 5",defaults:{width:100},layout:{type:"table",columns:2},items:[{html:"Importer: "},{html:"ID: "+this.importers.getImporterId()}]}));var a=this.transformers.getNodeStatus();Ext.each(a,function(b){this.nodeStatus.insert(1,new Ext.create("Ext.container.Container",{padding:"5 0 0 5",layout:{type:"table",columns:3},items:[{html:"Transformer: ",width:100},{html:"ID: "+b.id,width:50},{html:"Prev ID: "+b.prev}]}))},this);this.nodeStatus.insert(this.nodeStatus.items.length,new Ext.create("Ext.container.Container",{padding:"5 0 0 5",layout:{type:"table",columns:3},items:[{html:"Exporter: ",width:100},{html:"ID: "+this.getExporterData()["id"],width:50},{html:"Prev ID: "+this.getExporterData()["prev"]}]}))}});Ext.define("FT.module.Reports",{extend:"FT.AbstractModule",itemId:"reports",init:function(a){this.panel=Ext.create("Ext.container.Container",{layout:"fit"});this.sheets=new Ext.util.MixedCollection;this.report=null;this.presenter=null;this.loadedImporters=null;Ext.Ajax.request({url:"/itep/getItepRequestsResults",scope:this,autoLoad:true,success:function(b){var b=Ext.decode(b.responseText);this.nodeTypes=Ext.create("Ext.data.Store",{fields:["id","name","nodeName","label"],data:Ext.decode(b.nodeTypes)});this.availNodeSettingsStore=Ext.create("Ext.data.Store",{fields:["nodeClass","settings","type"],data:Ext.decode(b.availNodeSettings)});this.transformerNodes=Ext.create("Ext.data.Store",{fields:["type","label","nodeClass"],data:Ext.decode(b.transformerNodes)});this.loadedImporters=Ext.decode(b.importers)}});this.tabs=Ext.create("Ext.tab.Panel",{layout:"fit",bodyCls:"xremove30pxtop"});this.panel.add(this.tabs);return this.panel},constructor:function(a){Ext.apply(this,a)},newReport:function(){this.tabs.removeAll();this.newSheet()},newSheet:function(){var a=Ext.create("FT.module.ReportsInterface");a.setSheets(this.sheets);a.setAvailNodeSettingsStore(this.availNodeSettingsStore);a.setBase(this);var b=this.tabs.items.length==0?"Main Sheet - Untitled":"Sheet"+this.tabs.items.length;this.tabs.add({title:b,layout:"fit",items:[a.newReport(this.nodeTypes)]});this.tabs.setActiveTab(this.tabs.items.length-1);this.sheets.add(b,a)},openAsReport:function(){this.tabs.removeAll();this.openAsSheet()},openAsSheet:function(){var c=this;var b=Ext.create("Ext.data.Store",{fields:["itepid","name"],proxy:{type:"ajax",url:"/itep/getSavedReports",reader:{type:"json"}},autoLoad:true});var a=new Ext.create("Ext.view.View",{store:b,itemSelector:"div.row",tpl:['<tpl for=".">','<div class="row" onclick="this.style.backgroundColor=\'white\';">{name}</div>',"</tpl>"]});var d=Ext.create("Ext.window.Window",{title:"Open Report",width:300,height:450,items:[a,{xtype:"button",text:"Select",scope:this,handler:function(){c.loadReport(a.getSelectionModel().getSelection()[0]);d.hide()}}]}).show()},loadReport:function(a){var b=this;this.sheets=new Ext.util.MixedCollection;Ext.Ajax.request({url:"/itep/getReportData",params:{itepid:a.get("itepid")},success:function(c){var c=Ext.decode(c.responseText)["sheets"];var d=0;Ext.iterate(c,function(h,j){var g=Ext.create("FT.module.ReportsInterface");g.setSheets(this.sheets);g.setAvailNodeSettingsStore(this.availNodeSettingsStore);g.setBase(b);var e=new Ext.data.proxy.Memory({data:j,reader:{type:"json",root:"nodes"}});g.nodeStore.setProxy(e);var k=new Ext.data.proxy.Memory({data:j,reader:{type:"json",root:"settings"}});g.nodeSettingsStore.setProxy(k);g.nodeSettingsStore.storeId=h+".nodeSettingsStore";g.nodeSettingsStore.load();g.nodeStore.load({scope:this,callback:function(){this.tabs.add({title:h,layout:"fit",items:[g.buildInterface(this.nodeTypes)]})}});g.itepId=a.get("itepid");this.sheets.add(h,g);d++},this);this.tabs.setActiveTab(d>1?0:this.tabs.items.length-1)},scope:this})},saveReportAs:function(){this.sheets.items[0].itepId=false;this.saveReport()},saveReport:function(){var a=Ext.create("Ext.window.Window",{title:"Save Report"+(this.sheets.items[0].itepId?"":" As"),width:300,height:200,items:[{xtype:"textfield",value:!this.sheets.items[0].itepId?"New Report":""},{xtype:"button",text:"Save",scope:this,handler:function(){this.saveReportData(null,a)}}]});if(!this.sheets.items[0].itepId){a.show();a.down("textfield").focus(true)}else{this.saveReportData(this.sheets.items[0].itepId,a)}},saveReportData:function(c,d){var b=new Ext.util.MixedCollection;var a=d.down("textfield")["value"]==""?this.tabs.items.items[0].title:d.down("textfield")["value"];if(c==null){this.tabs.items.items[0].setTitle("Main Sheet - "+a)}else{this.tabs.items.items[0].setTitle(this.tabs.items.items[0].title.replace("Untitled",a))}this.sheets.each(function(h,e,g){var j=Ext.clone(Ext.pluck(h.nodeSettingsStore.data.items,"data"));Ext.each(j,function(k){if(k.value.setting){delete k.value.setting}});b.add(this.tabs.items.items[e].title,{nodes:Ext.pluck(h.nodeStore.data.items,"data"),settings:j})},this);Ext.Ajax.request({url:"/itep/saveReportData",params:{itepid:c==null?"":c,name:d.down("textfield")["value"],data:Ext.encode(b.map)},scope:this,success:function(e){this.itepId=e.responseText;d.hide();d.destroy()}})},removeReport:function(){log("YEY!")},getExporterData:function(){var b=this.nodeStore.findRecord("type","exporter");this.nodeSettingsStore.filterBy(function(c){return c.get("setting")=="prev"&&c.get("nodeId")==b.get("id")},this);var a=this.nodeSettingsStore.getAt(0).get("value");this.nodeSettingsStore.clearFilter();return{id:b.get("id"),prev:a}},getTopMenuItems:function(){return[{xtype:"button",text:"Reports",menu:[{text:"New",scope:this,menu:[{text:"Report",handler:this.newReport,scope:this},{text:"Sheet",handler:this.newSheet,scope:this}]},{text:"Open",scope:this,menu:[{text:"as New Report",handler:this.openAsReport,scope:this},{text:"as New Sheet",handler:this.openAsSheet,scope:this}]},{xtype:"menuseparator"},{text:"Save Report",handler:this.saveReport,scope:this},{text:"Save Report As...",handler:this.saveReportAs,scope:this},{xtype:"menuseparator"},{text:"Remove Report",handler:this.removeReport,scope:this}],scope:this}]}});Ext.define("FT.itep.presenters.BurnDown",{extend:"Ext.container.Container",alias:"widget.itep_presenters_burndown",savedFields:[],reportId:"f144b0b4-410e-11e1-ae17-0019bb49847a",report:null,view:"",initComponent:function(){this.callParent(arguments);this.run()},updateEntity:function(){this.run()},run:function(){if(this.presenter!=undefined){this.presenter.down("chart").setLoading("Loading chart...")}this.report=Ext.Ajax.request({url:"/track/burndown",params:{entityId:this.widget.getEntity().entityId,entityType:this.widget.getEntity().entityType},success:function(a){var e=Ext.decode(a.responseText);var b=0;Ext.each(e.rows,function(h){if(h["Bid days left"]<b){b=h["Bid days left"]}if(h["Bid days left"]==null){h["Bid days left"]=0}},this);b=b>0?0:b;if(b<-5){Ext.each(e.rows,function(h){h["ft-zeroline"]=0},this)}if(this.presenter==undefined){this.html="";var d=e.rows[0]!=undefined?new Date(e.rows[0]["date"]*1000):new Date;var g=e.rows[e.rows.length-1]!=undefined?new Date(e.rows[e.rows.length-1]["date"]*1000):new Date;this.presenter=FT.ITEP.createPresenter({type:"line-chart",data:e,settings:{width:400,height:300,shadow:false,legend:{position:"bottom",labelColor:"#bbb",boxStroke:"#bbb"},axes:[{type:"Numeric",position:"left",fields:"Actual burndown",maximum:100,minimum:b},{type:"Category",position:"bottom",fields:"date",label:{renderer:function(j){var h=0;return function(l){var k=new Date(l*1000);h++;return h%3==0?Ext.Date.format(k,"M j"):""}}()}}],series:[{type:"line",axis:"left",fill:true,xField:"date",yField:"Actual burndown",showMarkers:false,style:{opacity:0.5,lineWidth:1,stroke:"#7c9fc7",fill:"#c5d9e4"},tips:{trackMouse:true,width:100,height:30,renderer:function(j,h){this.update(Ext.Date.format(new Date(j.get("date")*1000),"M j")+": "+Ext.util.Format.number(j.get("Actual burndown"),"0.00")+" %")}}},{type:"line",axis:"left",xField:"date",yField:"Bid days left",showMarkers:false,style:{lineWidth:1,stroke:"#f7b13f"},tips:{trackMouse:true,renderer:function(j,h){this.update(Ext.Date.format(new Date(j.get("date")*1000),"M j")+": "+Ext.util.Format.number(j.get("Bid days left"),"0.00")+" %")}}}]}});this.add(this.presenter);if(b<-5){this.presenter.down("chart").series.add({type:"line",axis:"left",xField:"date",yField:"ft-zeroline",showMarkers:false,showInLegend:false,style:{lineWidth:1,stroke:"#aaa","stroke-dasharray":5}});this.presenter.down("chart").refresh()}}else{var c=this.presenter.down("chart");c.axes.get(0).minimum=b;if(c.rendered){if(c.series.items.length==3){c.series.getAt(2).hideAll()}if(b<-5){if(c.series.items.length==3){c.series.getAt(2).showAll()}c.refresh()}}c.store.loadData(e.rows);if(c.rendered){c.redraw()}c.setLoading(false)}},scope:this})}});Ext.define("FT.itep.presenters.ShotStatus",{extend:"Ext.container.Container",alias:"widget.itep_presenters_shot_status",savedFields:[],reportId:"0ffd6576-467a-11e1-8e61-0019bb49847a",report:null,height:120,initComponent:function(){this.callParent(arguments);this.run()},updateEntity:function(){this.run()},run:function(){var a=this;this.removeAll(true);this.add({xtype:"label",text:"Loading..."});this.report=FT.ITEP.run({id:this.reportId,exporter:"JsonExporterNode",params:[{property:"id",value:this.widget.getEntity().entityId,type:"string",label:""},{property:"type",value:this.widget.getEntity().entityType,type:"string",label:""}],autoRun:true,callback:function(c){a.html="";a.removeAll(true);var b=FT.ITEP.createPresenter({type:"shot-status",data:c});this.add(b)},scope:this})}});Ext.define("FT.itep.presenters.ProjectsOverview",{extend:"Ext.container.Container",alias:"widget.itep_presenters_projects_overview",savedFields:[],reportId:"3ee245b2-47f3-11e1-85fd-0019bb49847a",report:null,view:"",padding:"0 25 0 0",initComponent:function(){this.callParent(arguments);this.run()},updateEntity:function(){this.run()},run:function(){Ext.Ajax.request({url:"/track/tasksNotDone",params:{entityId:this.widget.getEntity().entityId,entityType:this.widget.getEntity().entityType},success:function(b){this.html="";var d=Ext.decode(b.responseText);if(this.presenter==undefined){this.presenter=FT.ITEP.createPresenter({type:"bar-chart",data:d,settings:{height:300,shadow:false,legend:{position:"bottom",labelColor:"#bbb",boxStroke:"#bbb"},axes:[{type:"Numeric",position:"bottom",fields:"count",minimum:0,maximum:100,grid:{odd:{fill:"#eee",stroke:"#eee","stroke-width":1}}},{type:"Category",position:"left",fields:"tasktype"}],series:[{title:"Tasks not done (count and bid)",type:"bar",axis:"bottom",xField:"tasktype",yField:"count",label:{display:"insideEnd",field:"TaskStatus_state","text-anchor":"middle"},style:{fill:"#4696bf"},renderer:function(k,e,h,j,g){h.height=25;return h}}]}});this.add(this.presenter)}else{Ext.define("ChartModel",{extend:"Ext.data.Model",fields:d.columns});var a=Ext.create("Ext.data.Store",{model:"ChartModel",data:d.rows});var c=this.presenter.down("chart");c.bindStore(a);if(c.rendered){c.redraw()}this.presenter.down("chart").setLoading(false)}},scope:this})}});Ext.define("FT.itep.presenters.Timereports",{extend:"Ext.container.Container",alias:"widget.itep_presenters_timereport",savedFields:[],reportId:"3d2c20f2-41fa-11e1-b3a5-0019bb49847a",report:null,initComponent:function(){this.widget.header=false;this.callParent(arguments);this.run()},updateEntity:function(){this.run()},run:function(){this.removeAll(true);this.report=FT.ITEP.run({id:this.reportId,exporter:"JsonExporterNode",params:[{property:"fromDate",value:"",type:"date",label:""},{property:"toDate",value:"",type:"date",label:""},{property:"User",value:"",type:"user",label:""},{property:"projects",value:"",type:"combo",label:""},{property:"tasktype",value:"",type:"combo",label:""}],callback:function(g){var a=null;var e=null;var c=new Array;var b=0;Ext.each(g.rows,function(h){Ext.each(h.hours,function(j){b=0;if(j!=""){b+=j}},this);if(h.Trac_status_id!=""&&b!=0){c.push(h)}if(b!=0){a=b}if(h.Trac_status_id==""){h.Trac_status_id=100}h.hours=b==0?a:b},this);var d=FT.ITEP.createPresenter({type:"time-report",data:g,settings:{width:500,layout:"auto",showCols:["Date","Project","User","Hours","Task Type","Notes"]}});this.add(d)},scope:this})}});Ext.define("FT.module.Projects",{extend:"FT.AbstractRAWModule",itemId:"projects",splitItems:{},lastEntityId:null,enableBookmark:true,enableEdit:true,verticalDashboardMenu:false,enableSlideIn:true,dashboardCls:"panel",hideDashboardMenu:false,menuClass:"FT.core.DashboardMenuProjects",widgetCls:"",beforeUpdate:function(a){this.entity=a;this.view=a.view},update:function(b,a){if(b){this.updateDashboard();this.menu.updateMenu(this.entity);this.app.on("ftrackKeyEvent",function(c){if(this.isActiveModule()){if(c=="navigate-left"){}else{if(c=="navigate-right"){}}}},this)}else{this.updateDashboard();this.menu.updateMenu(this.entity);this.updateEntityTree(this.entity)}this.lastEntityId=this.entity.entityId;this.fireEvent("configchanged",a)},reloadTree:function(c,b){if(!this.treeReloader){this.treeReloader=new Ext.util.DelayedTask(function(){this.updateEntityTree(this.entity,true)},this)}var a=(new Date).getTime()/1000;if(b){this.treeReloader.delay(1000)}else{if(c.clientToken!=FT.clientToken&&this.lastTreeReloadInSeconds&&a<this.lastTreeReloadInSeconds+10){this.treeReloader.delay(10000)}else{this.updateEntityTree(this.entity,true)}}this.lastTreeReloadInSeconds=a},constructor:function(a){Ext.apply(this,a);this.addEvents("editmodechanged","beforeeditmodechanged");this.callParent(arguments);this.projectMenu=Ext.create("FT.view.ProjectMenu");this.app.location.on("projectchanged",this.onProjectChanged,this);this.app.on("pushevent",this._handleUpdates,this);this.objectTypeStore=Ext.data.StoreManager.lookup("FT.store.ObjectType");this.statusStore=Ext.data.StoreManager.lookup("FT.store.TaskStatus")},_handleUpdates:function(b,a){if(Ext.isDefined(this.tree)){this._handleTreeUpdates(b,a)}if(FT.util.verifyEventScope(b,["show"],["fullname","status"],["remove"])){this.projectMenu.setDirty(true)}else{if(FT.util.verifyEventScope(b,["show"],null,["remove"])){this.projectMenu.setDirty(true)}else{if(FT.util.verifyEventScope(b,["task"],["userids"],["update"])){if(FT.util.verifyParentId(b,[FT.Settings.get("currentuser","userid")])){this.projectMenu.setDirty(true)}}else{if(FT.util.verifyEventScope(b,["show"],["scopeids"],["update"])){this.projectMenu.setDirty(true)}}}}},_handleTreeUpdates:function(n,b){var e=FT.app.location.getProjectId(),o=["show","task","list","reviewsession"],a=["name","statusid","fullname","isopen"],p=FT.util.getDeletedIdsFromEvent(n),h,k,d,l,j,c,g,m;if(p.indexOf(e)!==-1){return}if(FT.util.verifyEventScope(n,o,a)||FT.util.verifyEventScope(n,["task"],null,"move")){for(j=0;j<n.entities.length;j++){h=n.entities[j];k=h.entityId;d=this.tree.getNodeByEntityId(k);if(o.indexOf(h.entityType)===-1){continue}if(h.parents[h.parents.length-1].entityId!==e){continue}if(d&&h.action==="remove"){d.remove(true)}else{if(h.action==="move"){if(h.keys.indexOf("parent_id")!==-1){m=h.changes.parent_id["new"];this.tree.moveEntity(k,m)}}else{if(h.action==="add"){this.tree.addEntity(h)}else{if(d&&h.action==="update"){if(h.keys.indexOf("name")!==-1){d.set("text",h.changes.name["new"]);d.commit();if(d.parentNode){this.tree.sortNode(d.parentNode)}}if(h.keys.indexOf("isopen")!==-1){d.set("isopen",h.changes.isopen["new"]);d.commit()}}else{if(h.entityType==="show"&&h.keys.indexOf("fullname")!==-1){this.projectLocatorPlugin.projectlocator.setProjectName(h.changes.fullname["new"])}}}}}if(h.entityType!=="task"){continue}if(h.keys.indexOf("statusid")!==-1&&h.objectTypeId===FT.getTaskId()){Ext.each(h.parents,function(q){l=this.tree.getNodeByEntityId(q.entityId);if(l){this.tree.updateProgress(l,h.changes.statusid["new"],h.changes.statusid["old"])}},this)}if(d&&h.keys.indexOf("statusid")!==-1&&h.objectTypeId!==FT.getTaskId()){c=this.objectTypeStore.findRecord("typeid",h.objectTypeId,0,false,true,true);if(c&&c.get("isstatusable")===true){g=this.statusStore.findRecord("statusid",h.changes.statusid["new"]);if(g){d.set("stateshort",g.get("state_short"))}}}}}},invalidateAll:function(){this.callParent(arguments);this.updateEntityTree(this.entity,true)},createLeftFloater:function(){this.tree=this.createEntityTree();return this.tree},generateColumnMenu:function(g,h){var j=g.length;var e=h;var b=Math.ceil(j/e);var m=[];for(var d=0;d<b;d++){var l=d*e;var k=l+e;if(k>=j){k=j}var c=g.slice(l,k);var a={xtype:"menu",floating:false,showSeparator:false,items:c};m.push(a)}return m},getTopMenuItems:function(){return[this.projectMenu.getTopMenuButton()]},createEntityTree:function(){var a=230;this.projectLocatorPlugin=Ext.create("FT.tree.ProjectLocatorPlugin",{defaultSize:a});this.tree=Ext.create("FT.tree.ShotTree",{useActionColumn:true,layout:"fit",cls:"shottree",entity:Ext.clone(this.entity),animate:false,expandRoot:Ext.isDefined(this.entity.entityId),region:"west",width:FT.getVar("project-tree",a),split:true,hideProject:true,tourId:"projects-tree",plugins:["ft-summary-tooltip-plugin",this.projectLocatorPlugin],listeners:{nodeselect:this.onTreeClicked,beforeitemmousedown:this.onBeforeItemMouseDown,beforerender:function(){this.tree.splitter.setWidth(1);this.tree.splitter.addCls("splitter splitter-large-target")},resize:function(c,b){FT.setVar("project-tree",b)},scope:this}});return this.tree},onBeforeItemMouseDown:function(a,b){var c=FT.app.getCfg();if(c.entityId==b.get("entityId")&&["task","list"].indexOf(b.get("entityType"))!=-1){this.app.open(this,{entityId:b.get("entityId"),entityType:b.get("entityType"),slideEntityId:b.get("entityId"),slideEntityType:b.get("entityType")})}},onTreeClicked:function(a){var b=FT.app.getCfg();var c=null;if(a.get("openEntity")){var c=a.get("openEntity")}else{if(Ext.isDefined(a.get("entityId"))){c={entityId:a.get("entityId"),entityType:a.get("entityType")};if(a.raw.listentity&&a.raw.listentity=="assetversion"&&b.view=="tasks"){c.view="versions_v1"}}else{c={entityId:a.raw.entityId,entityType:a.raw.entityType}}}if(c){if(b.slideEntityId){if(b.slideEntityId==b.entityId){c.slideEntityId=c.entityId;c.slideEntityType=c.entityType}}this.app.open(this,c)}},updateEntityTree:function(a,b){if(!Ext.isDefined(this.tree)){return}if(Ext.isDefined(a)&&Ext.isDefined(a.entityId)){this.tree.show();this.tree.updateTree(a,b)}else{this.tree.hide()}},getExtraConfig:function(d,a){var c={},b;if(!this.dashboardManager){return this.callParent(arguments)||{}}b=this.dashboardManager.getDashboardConfig(d.view);if(!b||!b.isStateless){c=this.callParent(arguments)||{}}return c},getExtraTools:function(){return null},onProjectChanged:function(b,e){var a=5,d,c;if(!b||b===e){return}c=FT.getVar("recent-projects",[]);d=c.indexOf(b);if(d!==-1){c.splice(d,1,b)}c.unshift(b);c=c.slice(0,a);FT.setVar("recent-projects",c);this.projectMenu.setRecentProjectsChanged(true)}});FT.editCurrentThumb=function(){var a=Ext.create("FT.ModalWindow",{autoShow:true,width:600,height:600,title:FT.i18n("Change Thumbnail"),fitHeight:false});a.show()};Ext.define("FT.module.Standalone",{extend:"FT.AbstractModule",itemId:"standalone",name:"unknown",init:function(a){this.hider.ownerCt.ownerCt.hide();this.entity={entityId:a.entityId,entityType:a.entityType};if(!Ext.isDefined(this.dashboardInstance)){var b={instanceid:a.dashboard,globalConfig:{isEditor:false,entity:Ext.clone(this.entity)},isWidget:false,layout:"fit"};this.dashboardInstance=Ext.create("RAW.Widget",b)}else{this.dashboardInstance.reloadIf(a.dashboard,Ext.clone(this.entity))}return this.dashboardInstance},constructor:function(a){Ext.apply(this,a)},getTopMenuItems:function(){this.hider=Ext.create("Ext.toolbar.TextItem",{hidden:true});return[this.hider]}});Ext.define("FT.search.SearchWindow",{extend:"FT.ModalWindow",y:100,closable:false,header:false,autoScroll:true,width:600,closeOnClick:true,shadow:"frame",shadowOffset:100,lastCategory:null,layout:{align:"stretch",type:"vbox"},bottomText:'<span style="color:#999;">'+FT.i18n("Click outside window or press Esc to close")+"</span>",initComponent:function(){var a=this,b;a.maxHeight=Ext.getBody().getHeight()-100;a.store=Ext.create("Ext.data.Store",{fields:["name","link","type","thumbnail","entityId","entityType"],pageSize:10,proxy:{type:"ajax",url:"/browse/search",reader:{type:"json",root:"results"}},listeners:{beforeload:function(d,c,e){a.lastCategory=null}}});this.store.on({load:this.onLoad,scope:this});this.bbar=b=Ext.create("Ext.toolbar.Paging",{items:["->",this.bottomLabel=Ext.widget({xtype:"tbtext",text:this.bottomText})],store:this.store,getPagingItems:function(){var d=Ext.toolbar.Paging.prototype.getPagingItems.apply(this,arguments),c=[];Ext.each(d,function(e){if(e.itemId!="prev"&&e.itemId!="next"){e.hidden=true}if(Ext.isObject(e)){c.push(e)}});return c}});this.items=[this.searchField=Ext.widget({xtype:"combo",store:this.store,padding:"25 25 10 25",listConfig:{maxHeight:Ext.getBody().getHeight()-300},pageSize:this.store.pageSize,minChars:0,emptyText:FT.i18n("Type to search..."),hideTrigger:true,tpl:Ext.create("Ext.XTemplate",'<tpl for=".">',"{[this.getCategory(values)]}",'<div class="x-boundlist-item" style="padding: 3px 0;clear:both;">','<div style="width:30px;margin:0 10px 0 25px;float:left;">{[FTrack.grid.IconRendererFit(values.thumbnail)]}</div>','<div style="width:'+(a.width-125)+'px;" class="text-ellipsis">{[FTrack.grid.LinkRenderer(values.link)]}</div>',"</div>","</tpl>",{getCategory:function(c){var d=c.type,e,g="";if(a.lastCategory!=d){e=FT.util.capitaliseFirstLetter(d);g='<div style="padding:5px 25px;text-transform:uppercase;">'+FT.getIcon(e.toLowerCase())+e+"</div>";a.lastCategory=d}return g}}),collapse:function(){return},triggerBlur:function(){return},listeners:{select:function(c,d){var c,e=d[0];if(Ext.isDefined(e)&&e!=null){c=e.get("entityType")=="user"?"user":"projects";FT.app.open(null,{slideEntityId:e.get("entityId"),slideEntityType:e.get("entityType")})}Ext.Function.defer(function(){this.close()},15,this)},specialkey:function(d,c){if(c.getKey()==c.ESC){a.close()}},afterrender:function(c){c.focus(false,200)},scope:this},doQuery:function(){if(!this.store){return}return Ext.form.field.ComboBox.prototype.doQuery.apply(this,arguments)},createPicker:function(){var e=this,d,c=Ext.apply({xtype:"boundlist",margin:"0 0 25 0",pickerField:e,selModel:{mode:e.multiSelect?"SIMPLE":"SINGLE"},setZIndex:Ext.emptyFn,store:e.store,displayField:e.displayField,focusOnToFront:false,tpl:e.tpl},e.listConfig,e.defaultListConfig);d=e.picker=Ext.widget(c);b.on("beforechange",e.onPageChange,e);e.mon(d,{itemclick:e.onItemClick,refresh:e.onListRefresh,scope:e});e.mon(d.getSelectionModel(),{beforeselect:e.onBeforeSelect,beforedeselect:e.onBeforeDeselect,selectionchange:e.onListSelectionChange,scope:e});return d}}),{xtype:"component",style:{height:10}},this.picker=this.searchField.createPicker()];this.callParent(arguments)},onLoad:function(b){var c=b.getCount();var a=FT.i18n("{count, plural, =0 {} one {one result} other {# results}}",{values:{count:c}});if(c){a+='&nbsp;<span style="color:#999;">|</span>&nbsp;'}this.bottomLabel.setText(a+this.bottomText)},getHeader:function(a){a=a-1;var c=this.store.getAt(a),b;if(a>0){b=this.store.getAt(a-1);if(b.get("type")==c.get("type")){c=null}}if(c){return'<div style="display:inline-block;float:left;margin:10px;width:200px;"><div style="font-size:15px;">'+FT.util.capitaliseFirstLetter(c.get("type"))+"</div><table>"}return""},getFooter:function(a){a=a-1;var c=this.store.getAt(a),b;b=this.store.getAt(a+1);if(b&&b.get("type")!=c.get("type")){return"</table></div>"}return""}});Ext.define("FT.module.Search",{extend:"FT.AbstractModule",itemId:"search",showSearch:function(){if(this.searchWindow){return}this.searchWindow=Ext.create("FT.search.SearchWindow",{autoShow:true,listeners:{close:function(){delete this.searchWindow},scope:this}})},constructor:function(a){Ext.apply(this,a);this.app.on("moduleactivated",function(){if(Ext.isDefined(this.searchMenu)&&this.searchMenu.hasVisibleMenu()){this.searchMenu.hideMenu()}},this);this.app.on("ftrackKeyEvent",function(b,c){if(b=="search"){this.showSearch()}},this);this.app.on("ftrackKeyEvent",function(b,c){if(b=="cancel"&&this.searchWindow){this.searchWindow.close()}},this)},getTopMenuItems:function(){return{glyph:FT.glyph("search"),scale:"large",handler:this.showSearch,tourId:"search",overflowText:FT.i18n("Search"),tooltip:FT.tip("button-search"),scope:this}}});Ext.define("FT.module.NewConfigure",{extend:"FT.AbstractRAWModule",itemId:"newconfigure",preRequests:[],configureIsActive:false,reloadFTrackOnExitModule:true,groupMenuItems:true,dashboardCls:"",hideDashboardMenu:false,constructor:function(a){Ext.apply(this,a);this.callParent(arguments)},beforeUpdate:function(a){this.entity={entityId:a.view,view:a.view,entityType:"configure"}},update:function(a){if(a){}this.updateThumbnail({});this.updateDashboard();this.menu.updateMenu(this.entity)},getTopMenuItems:function(){return[]}});Ext.define("FT.module.configure.ProjectWorkflow",{extend:"Ext.util.Observable",name:"",constructor:function(a){this.listeners=a.listeners;this.callParent(arguments);this.workflows=[]},load:function(a){this.schemeId=a;Ext.Ajax.request({url:"/configure/getWorkflowData",params:{schemeid:a},success:function(b){var c=Ext.decode(b.responseText);this.setupWorkflow(c);this.setName(c.name);this.fireEvent("load")},scope:this})},validate:function(){var b=[];var c=[];var a=null;Ext.each(this.workflows,function(e){if(e.getType()=="version"){return true}var d=e.getTypes();d.each(function(g){if(g.isUsed()){b.push(g.getId())}},this);if(e.getUsedTypes()>0&&e.getUsedStatuses()==0){a="No statuses selected for "+e.getType();return false}if(e.getType()=="shot"&&e.getUsedStatuses()==0){a="No statuses selected for Shot/Asset build";return false}},this);if(b.length==0){return"No task types selected"}if(a!=null){return a}return""},createWorkflow:function(a){var b=Ext.create("FT.module.configure.WorkflowBase",{data:a,statuses:this.allStatuses,types:this.allTypes});return b},setupWorkflow:function(a){a=Ext.clone(a);this.allStatuses=a.statuses;this.allTypes=a.types;this.workflows=[];Ext.each(a.workflows,function(b){var c=this.createWorkflow(b);this.workflows.push(c)},this)},save:function(){var a=[];Ext.each(this.workflows,function(b){a.push(b.getData())},this);Ext.Ajax.request({url:"/configure/setWorkflowData",params:{schemeid:this.schemeId,name:this.name,workflows:Ext.encode(a)},success:function(b){this.fireEvent("save")},scope:this})},getWorkflowByType:function(a){var b=null;Ext.each(this.workflows,function(c){log(c.getType());if(c.getType()==a){b=c}},this);return b},getWorkflowById:function(b){var a=null;Ext.each(this.workflows,function(c){if(c.getWorkflowId()==b){a=c}},this);return a},selectTaskTypes:function(a){Ext.each(this.workflows,function(c){c.getTypes().each(function(d){if(a.indexOf(d.getId())==-1){d.setIsUsed(false)}},this)},this);var b=[];Ext.each(this.workflows,function(c){if(c.getType()=="task"||c.getType()=="version"){return true}c.getTypes().each(function(d){if(d.isUsed()){b.push(d.getId())}},this)},this);this.getWorkflowByType("task").getTypes().each(function(c){if(a.indexOf(c.getId())!=-1){if(b.indexOf(c.getId())==-1){c.setIsUsed(true)}}},this)},setName:function(a){this.name=a},getName:function(){return this.name},getWorkflows:function(){return this.workflows},addOverride:function(){var a={type:"override",statuses:[],types:[]};var b=this.createWorkflow(a);this.workflows.push(b)}});Ext.define("FT.module.configure.WorkflowModel",{extend:"Ext.data.Model",fields:[{name:"id",type:"string"},{name:"name",type:"string"},{name:"color",type:"string"},{name:"isUsed",type:"bool",defaultValue:false},{name:"sort",type:"int"}],getName:function(){return this.get("name")},getId:function(){return this.get("id")},getColor:function(){return this.get("color")},getSort:function(){return this.get("sort")},isUsed:function(){return this.get("isUsed")},setIsUsed:function(a){this.set("isUsed",a)}});Ext.define("FT.module.configure.WorkflowBase",{extend:"Ext.util.Observable",workflowType:null,constructor:function(a){this.workflowId=Ext.id();this.listeners=a.listeners;this.callParent(arguments);this.createStores();this.addDataToStores(a.data,a.statuses,a.types);this.workflowType=a.data.type},setType:function(a){this.workflowType=a},getType:function(){return this.workflowType},getWorkflowId:function(){return this.workflowId},createStores:function(){this.types=Ext.create("Ext.data.Store",{model:"FT.module.configure.WorkflowModel"});this.statuses=Ext.create("Ext.data.Store",{model:"FT.module.configure.WorkflowModel"})},addDataToStores:function(c,b,a){Ext.each(b,function(d){this.statuses.add(d)},this);Ext.each(a,function(d){this.types.add(d)},this);Ext.each(c.statuses,function(e){var d=this.statuses.findExact("id",e);this.statuses.getAt(d).set("isUsed",true)},this);Ext.each(c.types,function(e){var d=this.types.findExact("id",e);this.types.getAt(d).set("isUsed",true)},this)},getData:function(){var a={type:this.getType(),statuses:[],types:[]};this.statuses.each(function(b){if(b.get("isUsed")){a.statuses.push(b.get("id"))}},this);this.types.each(function(b){if(b.get("isUsed")){a.types.push(b.get("id"))}},this);return a},getTypes:function(){return this.types},getStatuses:function(){return this.statuses},getUsedTypes:function(){var a=0;this.getTypes().each(function(b){if(b.isUsed()){a++}},this);return a},getUsedStatuses:function(){var a=0;this.getStatuses().each(function(b){if(b.isUsed()){a++}},this);return a},updateTypes:function(b,a){log(b);log(this.getType());this.getTypes().each(function(c){if(b.indexOf(c.getId())!=-1){log("FOUND");c.setIsUsed(a)}},this);this.getTypes().each(function(c){log(c.isUsed())})}});Ext.define("FT.module.configure.WorkflowHelper",{extend:"Ext.util.Observable",constructor:function(a){this.listeners=a.listeners;this.callParent(arguments);this.projectWorkflow=Ext.create("FT.module.configure.ProjectWorkflow",{});this.projectWorkflow.on("load",function(){this.fireEvent("workflowLoaded",this.projectWorkflow)},this)},validateWorkflow:function(){return this.projectWorkflow.validate()},loadProjectWorkflow:function(a){this.projectWorkflow.load(a)},saveProjectWorkflow:function(a){this.projectWorkflow.save();this.projectWorkflow.on("save",a.callback,a.scope,{single:true})},setName:function(a){this.projectWorkflow.setName(a)},createSelector:function(){var a=Ext.create("Ext.data.Store",{fields:["name","value"],mode:"local",proxy:{type:"memory",reader:{type:"json"}},sorters:[{property:"name",direction:"asc"}]});this.selector=Ext.create("FT.button.Selector",{text:FT.i18n("Add task type"),itemType:"checkbox",store:a,displayField:"name",valueField:"value",tooltip:FT.i18n("Columns"),tooltipType:"title",menuAlign:"tl-tr",anchor:"100%",margin:"10 0",selectAction:undefined,listeners:{selectionchanged:function(b){this.projectWorkflow.selectTaskTypes(b);this.fireEvent("typesUpdated")},scope:this}});this.on("workflowLoaded",function(){var e=[];var c=this.projectWorkflow.getWorkflows();var b=[];var d=[];Ext.each(c,function(h){if(h.getType()=="version"){return true}var g=h.getTypes();g.each(function(j){if(j.isUsed()){b.push(j.getId())}if(d.indexOf(j.getId())!=-1){return true}e.push({name:j.getName(),value:j.getId()});log(j.getName());log(j.isUsed());d.push(j.getId())},this)},this);this.selector.store.loadData(e);this.selector.value=b;this.selector.select(b)},this);return this.selector},createStatusEditor:function(){this.statusEditor=Ext.create("FT.module.configure.StatusEditor",{cls:"border-left border-right border-bottom",hideHeaders:true,viewConfig:{markDirty:false}});this.on("workflowLoaded",function(){this.statusEditor.loadData(this.projectWorkflow.getWorkflowByType("task").getStatuses())},this);this.on("workflowSelected",function(a){this.statusEditor.loadData(a.getStatuses())},this);return this.statusEditor},createTree:function(){this.tree=Ext.create("FT.module.configure.WorkflowTree",{bbar:{padding:0,layout:"anchor",items:[this.createSelector(),this.createOverrideButton()]}});this.on("workflowLoaded",function(){this.tree.loadData(this.projectWorkflow.getWorkflows())},this);this.on("typesUpdated",function(){this.tree.loadData(this.projectWorkflow.getWorkflows())},this);this.tree.on("typesUpdated",function(){this.tree.loadData(this.projectWorkflow.getWorkflows())},this);this.tree.on("workflowSelected",function(a){this.fireEvent("workflowSelected",this.projectWorkflow.getWorkflowById(a))},this);return this.tree},createOverrideButton:function(){var a=Ext.widget("button",{text:FT.i18n("Add override"),anchor:"100%",margin:"5 0",handler:function(){this.projectWorkflow.addOverride();this.fireEvent("typesUpdated")},scope:this});return a}});Ext.define("FT.module.configure.WorkflowBuilder",{extend:"Ext.panel.Panel",width:1000,height:700,autoShow:true,draggable:false,modal:true,resizable:false,saveHandler:Ext.emptyFn,saveScope:undefined,workflowId:null,layout:"border",initComponent:function(){this.workflowId=this.schemeId;this.textfield=Ext.widget("textfield",{fieldLabel:FT.i18n("Name"),allowBlank:false,msgTarget:"side",margin:"15 0 15 25",listeners:{afterrender:function(){var a=this;setTimeout(function(){a.focus()},100)}}});this.helper=Ext.create("FT.module.configure.WorkflowHelper",{});this.helper.loadProjectWorkflow(this.workflowId);this.helper.on("workflowLoaded",function(a){this.textfield.setValue(a.getName())},this);this.items=[{padding:10,region:"center",layout:"border",items:[{padding:"0 15 0 0",region:"west",width:175,layout:"fit",items:[this.helper.createTree()]},{layout:"fit",region:"center",items:this.helper.createStatusEditor()}]}];this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),handler:function(){this.fireEvent("configdone")},scope:this},{xtype:"button",text:FT.i18n("Save"),cls:"button-primary",handler:function(b){b.disable();var a=this.helper.validateWorkflow();if(a!=""){FT.notifyError(a);b.enable();return}this.helper.saveProjectWorkflow({callback:function(){this.fireEvent("configdone");FT.notifySuccess(FT.i18n("Tasks workflow schema saved."))},scope:this})},scope:this}]});this.callParent()}});Ext.define("FT.module.configure.StatusEditorTask",{extend:"Gnt.model.Task",fields:[{name:"isUsed",type:"bool"},"color","sort"]});Ext.define("FT.module.configure.StatusEditor",{extend:"Gnt.panel.Gantt",cascadeChanges:false,startDate:new Date(2016,1,1),endDate:Sch.util.Date.add(new Date(2016,1,1),Sch.util.Date.WEEK,4),viewPreset:"workflow",highlightWeekends:false,allowParentTaskMove:false,enableProgressBarResize:false,enableTaskDragDrop:false,enableDependencyDragDrop:false,enableDragCreation:false,resizeHandles:"none",initComponent:function(){Sch.preset.Manager.registerPreset("workflow",{timeColumnWidth:70,rowHeight:24,resourceColumnWidth:100,displayDateFormat:"Y-m-d H:i",shiftUnit:"MONTH",shiftIncrement:1,defaultSpan:10,timeResolution:{unit:"HOUR",increment:12},headerConfig:{middle:{unit:"MONTH",dateFormat:"d M Y",align:"left",renderer:function(a){return""}}}});this.columns=[{xtype:"checkcolumngantt",text:"",dataIndex:"isUsed",width:30,sortable:false,draggable:false},{xtype:"treecolumn",sortable:true,dataIndex:"Name",width:200,field:{allowBlank:false},sortable:false,draggable:false}];this.taskStore=Ext.create("Gnt.data.TaskStore",{autoLoad:false,model:"FT.module.configure.StatusEditorTask",proxy:"memory",sorters:[{property:"isUsed",direction:"desc"},{property:"sort",direction:"desc"}]});this.dependencyStore=Ext.create("Gnt.data.DependencyStore",{proxy:{type:"memory",reader:{type:"json"}}});this.taskStore.on("update",this.updateStore,this);this.callParent()},eventRenderer:function(b){var a={percentDone:0};log(b.raw);a.style="background-color: "+b.get("color")+";";return a},loadData:function(b){assert(b);this.statuses=b;var c=[];b.each(function(d){c.push({Id:d.getId(),Name:d.getName(),isUsed:d.isUsed(),color:d.getColor(),StartDate:null,EndDate:null,leaf:true,icon:null,iconCls:"no-tree-icon",sort:d.getSort()})},this);var a={Name:"root",StartDate:null,EndDate:null,children:c,expanded:true};this.taskStore.proxy.data=a;this.taskStore.load();this.createDeps();this.updateDates()},getRecords:function(b){if(b){return this.taskStore.tree.flatten()}var a=[];Ext.each(this.getRecords(true),function(c){if(c.get("isUsed")){a.push(c)}},this);return a},createDeps:function(){var c=[];var b=null;var a=this.getRecords();Ext.each(a,function(d){if(b==null){b=d.get("Id");return true}c.push({From:b,To:d.get("Id"),Type:2});b=d.get("Id")},this);this.dependencyStore.getProxy().data=c;this.dependencyStore.load()},updateDates:function(){this.taskStore.suspendEvents();var b=this.getRecords(true);var a=250000000;var c=250000000;Ext.each(b,function(d){if(d.get("isUsed")){d.setStartEndDate(new Date(a),new Date(a+c));a+=c}else{d.setStartEndDate(null,null)}},this);this.taskStore.resumeEvents()},updateStore:function(c,a,b,e,d){if(Ext.data.Model.EDIT!=b){return}if(!this.statuses){return}assert(this.statuses);this.statuses.each(function(g){if(g.getId()==a.get("Id")){g.setIsUsed(a.get("isUsed"))}},this);this.createDeps();this.updateDates()}});Ext.define("FT.module.configure.WorkflowTree",{extend:"Ext.tree.Panel",rootVisible:false,initComponent:function(){this.viewConfig={plugins:{ptype:"treeviewdragdrop",appendOnly:true},listeners:{drop:function(c,d,h,k,g){var e=h;if(h.get("leaf")){e=h.parentNode}var a=[];Ext.each(d.records,function(l){a.push(l.raw.typeId)},this);log(a);var b=d.records[0].raw.workflow;b.updateTypes(a,false);log(b);var j=e.raw.workflow;j.updateTypes(a,true);this.fireEvent("typesUpdated")},scope:this}};this.store=Ext.create("Ext.data.TreeStore",{});this.callParent();this.on("select",function(e,c,b,a){var d=null;if(c.get("leaf")){d=c.parentNode.raw.workflowId}else{d=c.raw.workflowId}this.fireEvent("workflowSelected",d)},this)},createNode:function(d){var b=function(g){var e={shot:"Shot/Asset build statuses",version:"Asset statuses",task:"Task types (default)",override:'Override (task types)<br /><img src="'+Ext.BLANK_IMAGE_URL+'" class="x-tree-elbow-line" style="margin-left:16px;" /><span style="padding-left:3px;color:#ccc;font-size:11px;font-style:italic;">Drop task types here</span>'};return e[g]?e[g]:g};var a=[];var c={workflowId:d.getWorkflowId(),type:d.getType(),text:b(d.getType()),expanded:true,children:a,draggable:false,workflow:d,allowDrop:d.getType()!="version",allowDrag:false,icon:null,iconCls:"no-tree-icon"};d.getTypes().each(function(e){if(e.isUsed()){a.push({typeId:e.getId(),text:e.getName(),leaf:true,workflow:d,icon:null,iconCls:"no-tree-icon",index:e.get("sort")})}},this);return c},createRootNode:function(c){var b=[];var a={expanded:true,children:b};Ext.each(c,function(d){b.push(this.createNode(d))},this);return a},loadData:function(a){this.store.proxy.data=this.createRootNode(a);this.store.load()}});Ext.define("FT.module.Session",{extend:"FT.AbstractRAWModule",itemId:"session",preRequests:[],enableBookmark:false,verticalDashboardMenu:false,enableSlideIn:false,constructor:function(a){FT.disableLoadMasks=true;FT.Mediator=FT.SessionMediator=Ext.create("FT.ReviewSession.Mediator");this.callParent(arguments)},init:function(a){this.reviewSessionWindow=Ext.create("FT.ReviewSession.Window",{entity:Ext.clone(a),title:Ext.String.format('<img src="{0}" class="ft-reviewsession-logo">',FT.companyLogo),listeners:{reviewsessionjoin:function(){this.inviteeLabel.show();this.signOutButton.show()},scope:this}});this.updateLabel(a);return this.callParent(arguments)},beforeUpdate:function(a){this.entity=a;this.view=a.view},getTopMenuItems:function(){this.inviteeLabel=Ext.create("Ext.toolbar.TextItem",{cls:"ft-reviewsession-inviteelabel",rightAlign:true,hidden:true});this.signOutButton=Ext.create("Ext.button.Button",{text:FT.i18n("Sign out"),ui:"simple",scale:"small",margin:"8 10 8 10",handler:function(){this.reviewSessionWindow.doFadeOpen()},scope:this,hidden:true});return["->",this.inviteeLabel,this.signOutButton]},updateLabel:function(a){FTApi.ReviewSession.getReviewSession({},function(b){var d=b&&b[0]&&b[0].inviteeName,d="<strong>"+(d||"")+"</strong>";var c=FT.glyphIcon("user",{cls:"ft-reviewsession-inviteelabel-icon"});this.inviteeLabel.setText(FT.i18n("Welcome {inviteeName}",{values:{inviteeName:d}})+" "+c)},this)}});Ext.define("FT.configure.WorkflowBuilder",{alias:"widget.ft-configure-workflow",extend:"Ext.container.Container",layout:{type:"hbox",align:"stretch"},initComponent:function(){var b=Ext.create("FT.data.DirectWorkflow",{});var c=Ext.create("FT.configure.workflow.GenericList",{width:200,store:b,displayField:"name",warningField:"warning",defaultField:"default",viewConfig:{stripeRows:false,markDirty:false}});var a=Ext.create("FT.configure.WorkflowDetails",{flex:1,maxWidth:800,autoScroll:true,reserveScrollbar:true});c.on("selectionchange",this.onWorkflowSelect,this);this.items=[c,a];this.workflowDetails=a;b.load();c.on("addclicked",this.onAddSchema,this);c.on("removeclicked",this.onRemoveSchema,this);a.on("workflowUpdated",function(){c.store.load()},this);this.callParent(arguments)},onWorkflowSelect:function(a,b){var c=b[0];if(c){this.workflowDetails.loadWorkflow(c)}},onAddSchema:function(b){var a=b.store.add({})[0];b.store.sync({callback:function(){b.getSelectionModel().select(a);this.workflowDetails.renameSchema(FT.i18n("Create workflow"),FT.i18n("Create"));FT.util.intercom("CREATED-WORKFLOW")},scope:this})},onRemoveSchema:function(b,a){if(!a){return}b.store.remove(a);b.store.sync({failure:function(c){b.store.rejectChanges()}})}});Ext.define("FT.configure.WorkflowDetails",{extend:"Ext.panel.Panel",initComponent:function(){var a,c,b;c=Ext.create("Ext.data.Store",{fields:["name","data","editor","editorTitle","width","height","isStatusable","isTypeable","typeId"],proxy:{type:"direct",directFn:"FTApi.FType.WorkflowSchema.summary",reader:{type:"json",root:"data"}}});this.store=c;this.store.on("metachange",this.onMetaChange,this);a=Ext.create("Ext.view.View",{store:c,itemSelector:"div.ft-workflowsummary",tpl:new Ext.XTemplate('<tpl for=".">','<div style="margin-bottom:15px;" class="ft-workflowsummary">','<div style="float:right;margin:10px;">','<button class="button editworkflow">Edit</button>','<div style="clear:both;"></div>',"</div>",'<div class="ft-property-groupheader">{name}</div>','<div style="padding:0 12px;">{data}</div>',"</div>","</tpl>"),listeners:{itemclick:this.onWorkflowClick,scope:this},emptyText:'<p class="ft-grid-emptytext" style="font-size:13px;">'+FT.i18n("No workflow schema selected.")+'</p><p class="ft-grid-emptytext" style="margin-top:25px;font-size:13px;">'+FT.i18n("Select a workflow schema to the left or click (+) to add a new.")+"</p>",deferEmptyText:false});b={xtype:"button",text:FT.i18n("Rename workflow"),handler:function(){this.renameSchema(FT.i18n("Rename workflow"),FT.i18n("Rename"))},scope:this};var d={xtype:"button",text:FT.i18n("Set as default"),handler:function(){this.setDefault()},scope:this};this.warning=Ext.create("Ext.Component",{});this.tbar=this.topBar=Ext.create("Ext.toolbar.Toolbar",{cls:"background-light border-bottom",hidden:true,items:[b,d,"->",this.warning]});this.items=[a];this.callParent(arguments);this.on("workflowUpdated",function(){FT.util.intercom("UPDATED-WORKFLOW")})},setDefault:function(){var a=this.getSchemeId();FTApi.FType.WorkflowSchema.setAsDefault(a,function(b){this.fireEvent("workflowUpdated");if(b!=true){FT.notifyError(b)}},this)},renameSchema:function(d,b){var c,a;a=Ext.widget({xtype:"textfield",width:"100%",value:this.getSchemeName(),allowBlank:false});c=Ext.create("FT.Window",{width:300,height:175,title:d,bodyPadding:10,items:[a],autoShow:true,bbar:["->",{xtype:"button",text:FT.i18n("Cancel"),handler:function(){c.close()},scope:this},{xtype:"button",text:b,cls:"button-primary",handler:function(){if(!a.validate()){return}this.updateSchemaName(a.getValue());c.close()},scope:this}]});a.focus(true,25)},updateSchemaName:function(a){this._schema.set("name",a);this._schema.store.sync()},onWorkflowClick:function(c,b,h,d,k,g){if(k.getTarget(".editworkflow")==null){return true}log(b);var a=Ext.create(b.get("editor"),{schemeId:this.getSchemeId(),isTypeable:b.get("isTypeable"),isStatusable:b.get("isStatusable"),typeId:b.get("typeId")});var j=Ext.create("Ext.Window",{width:b.get("width"),height:b.get("height"),layout:"fit",title:b.get("editorTitle"),items:[a]});a.on({configdone:function(){j.close()},configcancelled:function(){j.close()}},this);j.on("close",function(){this.loadData();this.fireEvent("workflowUpdated")},this);j.show()},getSchemeName:function(){return this._schema.get("name")},getSchemeId:function(){return this._schema.get("schemeid")},loadWorkflow:function(a){this.topBar.show();this._schema=a;this.loadData()},onMetaChange:function(a,b){if(b.warning){this.warning.update('<img src="/resources/icons/warning2.png" style="margin-bottom:-2px;" width="16" height="16"/> '+b.warning)}else{this.warning.update("")}},loadData:function(){Ext.apply(this.store.getProxy().extraParams,{schemeid:this.getSchemeId()});this.store.load()}});Ext.define("FT.configure.workflow.GenericList",{extend:"Ext.grid.Panel",cls:"border-right",displayField:null,valueField:null,warningField:null,hideHeaders:true,autoAdd:false,viewConfig:{stripeRows:false},initComponent:function(){var b;b=Ext.widget({xtype:"button",text:"-",handler:this.removeClicked,width:30,disabled:true,scope:this});this.viewConfig=Ext.value(this.viewConfig,{});this.viewConfig.emptyText=this.emptyText;this.viewConfig.deferEmptyText=false;this.columns=[{dataIndex:this.displayField,flex:1}];if(this.defaultField){this.columns.push({width:40,readonly:true,renderer:FTrack.grid.WorkflowIconRenderer,dataIndex:this.defaultField})}if(this.warningField){this.columns.push({width:40,readonly:true,renderer:FTrack.grid.WarningRenderer,dataIndex:this.warningField})}this.bbar={xtype:"toolbar",cls:"background-default",style:"border-top-width:0 !important;",padding:"10 15",items:[{text:"+",handler:this.addClicked,width:30,scope:this},b]};this.callParent(arguments);var a=this.getSelectionModel();this.on("selectionchange",function(c,d){b.setDisabled(d.length==0)});this.relayEvents(a,"selectionchange")},getSelection:function(){var b=this.getSelectionModel(),a=b.getSelection(),c=a[0];return c},removeClicked:function(){var a=this.getSelection();this.fireEvent("removeclicked",this,a)},addClicked:function(){this.fireEvent("addclicked",this);if(this.autoAdd){var a=this.store.add(this.defaultData||{})[0];this.getSelectionModel().select(a)}}});Ext.define("FT.configure.workflow.CheckboxSelectionList",{extend:"Ext.grid.Panel",displayField:null,valueField:null,initComponent:function(){this.selModel={selType:"checkboxmodel",checkOnly:true,toggleOnClick:false};if(this.selModelCfg){Ext.apply(this.selModel,this.selModelCfg)}if(this.store){this.store.on({load:this.onLoad,scope:this})}this.columns=[{text:this.text,dataIndex:this.displayField,flex:1,menuDisabled:true}];this.callParent(arguments)},getSelectionIds:function(){assert(this.valueField,"valueField must be set");var a=this.getSelectionModel(),c=a.getSelection(),b=Ext.pluck(Ext.pluck(c,"data"),this.valueField);return b},onLoad:function(){var c=[],b=this.getStore(),a=this.getSelectionModel();b.each(function(d){if(d.get(this.selectionField)){c.push(d)}},this);a.select(c,false,true)}});Ext.define("FT.configure.workflow.Editor",{extend:"Ext.Container",layout:"border",initComponent:function(){assert(this.schemeId,"schemeId must be set");var e,a,d,c,b;this.items=[];if(this.isStatusable){e=Ext.create("FT.data.DirectArbitraryContextStatus",{});d=Ext.create("FT.configure.workflow.CheckboxSelectionList",{region:"west",cls:"ft-genericlist",text:FT.i18n("Statuses"),selectionField:"selected",flex:1,displayField:"name",valueField:"statusid",store:e,selModelCfg:{showHeaderCheckbox:false},viewConfig:{stripeRows:false}});this.items.push(d);this.statusStore=e;this.statusPane=d}if(this.isTypeable){a=Ext.create("FT.data.DirectArbitraryContextType",{});c=Ext.create("FT.configure.workflow.CheckboxSelectionList",{region:"center",text:FT.i18n("Types"),cls:"ft-genericlist",selectionField:"selected",flex:1,displayField:"name",valueField:"typeid",store:a,selModelCfg:{showHeaderCheckbox:false},viewConfig:{stripeRows:false}});this.items.push(c);this.typesPane=c;this.typeStore=a}b={xtype:"toolbar",region:"south",items:["->",{text:FT.i18n("Cancel"),handler:function(){this.fireEvent("configcancelled")},scope:this},{text:FT.i18n("Save"),handler:this.onSaveClicked,scope:this}]};this.items.push(b);this.loadData();this.callParent(arguments)},loadData:function(){var a={schemeid:this.schemeId,typeId:this.typeId};if(this.statusStore){Ext.apply(this.statusStore.getProxy().extraParams,a);this.statusStore.load()}if(this.typeStore){Ext.apply(this.typeStore.getProxy().extraParams,a);this.typeStore.load()}},onSaveClicked:function(){var c=this.getEditRecord(),d={};if(this.isTypeable){var a=this.typesPane.getSelectionIds();if(a.length==0){FT.notifyError(FT.i18n("You must select a least one type"));return}}if(this.isStatusable){var b=this.statusPane.getSelectionIds();if(b.length==0){FT.notifyError(FT.i18n("You must select a least one status"));return}}if(this.isTypeable){d={typeids:a,schemeid:this.schemeId,typeId:this.typeId};FTApi.FType.ArbitraryContextType.setSchema(d,function(){if(!this.isStatusable){FT.notifySuccess(FT.i18n("Workflow schema saved."));this.fireEvent("configdone")}},this)}if(this.isStatusable){d={statusids:b,schemeid:this.schemeId,typeId:this.typeId};FTApi.FType.ArbitraryContextStatus.setSchema(d,function(){FT.notifySuccess(FT.i18n("Workflow schema saved."));this.fireEvent("configdone")},this)}},getEditRecord:function(){return this._editRecord}});Ext.define("FT.configure.workflow.ObjectTypeEditor",{extend:"Ext.Panel",layout:"border",initComponent:function(){var a,b;a=Ext.create("Ext.data.Store",{fields:["name","id","selected"],proxy:{type:"direct",api:{read:"FTApi.ProjectSchema.getObjectTypes"}}});Ext.apply(a.getProxy().extraParams,{schemaId:this.schemeId});a.load();this.selectionList=Ext.create("FT.configure.workflow.CheckboxSelectionList",{region:"center",cls:"ft-genericlist",selectionField:"selected",flex:1,displayField:"name",valueField:"id",store:a,selModelCfg:{showHeaderCheckbox:false},viewConfig:{stripeRows:false},sortable:false});this.items=[this.selectionList];b={xtype:"toolbar",region:"south",items:["->",{text:FT.i18n("Cancel"),handler:function(){this.fireEvent("configcancelled")},scope:this},{text:FT.i18n("Save"),handler:this.onSaveClicked,scope:this}]};this.items.push(b);this.callParent()},onSaveClicked:function(){var a=this.selectionList.getSelectionIds(),b;b={schemaId:this.schemeId,ids:a};FTApi.ProjectSchema.updateObjectTypes(b,function(c){if(c&&c.success===true){this.fireEvent("configdone");FT.notifySuccess(c.message)}else{FT.notifyError(FT.i18n("Something went wrong when updating the schema."))}},this)}});Ext.define("FT.configure.workflow.TaskTemplateEditor",{extend:"Ext.Container",layout:"border",initComponent:function(){assert(this.schemeId,"schemeId must be set");var d,a,c,g,e,b;this.nameField=Ext.widget({xtype:"textfield",fieldLabel:FT.i18n("Name"),labelWidth:50});d=Ext.create("FT.data.DirectTaskTemplate",{});a=Ext.create("FT.data.DirectTaskType",{method:"getByTaskTemplate",listeners:{datachanged:function(){this.nameField.focus(true)},scope:this}});c=Ext.create("FT.configure.workflow.GenericList",{width:200,region:"west",store:d,displayField:"name",valueField:"id",emptyText:'<div style="padding:5px;">'+FT.i18n("No task templates.")+"<br />"+FT.i18n("Click (+) to add a new.")+"</div>",defaultData:{name:FT.i18n("New task template")},listeners:{addclicked:this.onAddClicked,removeclicked:this.onRemoveClicked,scope:this}});c.on("selectionchange",this.onTaskTemplateSelect,this);g=Ext.create("FT.configure.workflow.CheckboxSelectionList",{region:"center",selectionField:"selected",cls:"ft-genericlist",flex:1,hidden:true,tbar:{padding:"5 10",items:[this.nameField,"->",{text:FT.i18n("Apply"),cls:"button-primary",handler:this.onSaveClicked,scope:this}]},hideHeaders:true,displayField:"name",valueField:"typeid",store:a,selModelCfg:{showHeaderCheckbox:false},viewConfig:{stripeRows:false}});b=Ext.widget({xtype:"component",cls:"ft-grid-emptytext",style:"font-size:14px;",html:"<p>No template selected.</p>Select a template to the left or click (+) to add a new.",region:"east",width:575});this.taskTypeStore=a;this.templateStore=d;this.settingsPane=g;this.initPane=b;e={xtype:"toolbar",region:"south",padding:0,ui:"window-docked-bottom-toolbar",items:["->",{text:FT.i18n("Close"),margin:0,handler:function(){this.fireEvent("configcancelled")},scope:this}]};this.items=[c,g,e,b];this.loadTemplateStore();this.callParent(arguments)},loadTemplateStore:function(){Ext.apply(this.templateStore.getProxy().extraParams,{schemeId:this.schemeId});this.templateStore.load()},onRemoveClicked:function(c,a){if(!a){return}var b=this;records=this.templateStore.remove(a);this.templateStore.sync({success:function(){var d=b.templateStore.first();b.settingsPane.getSelectionModel().select([d]);b.onTaskTemplateSelect(b.settingsPane.getSelectionModel(),[d]);FT.notifySuccess(FT.i18n("Task template removed."))}})},onAddClicked:function(){var c,b=this,a;c={projectschemeid:this.schemeId,name:FT.i18n("Task template")};records=this.templateStore.add(c);this.templateStore.sync({success:function(){b.settingsPane.getSelectionModel().select(records);b.onTaskTemplateSelect(b.settingsPane.getSelectionModel(),records)}})},onSaveClicked:function(){var b=this.getEditRecord(),a=this.settingsPane.getSelectionIds(),c={};c={typeids:a,id:b.get("id"),name:this.nameField.getValue()};FTApi.FType.TaskTemplate.setTaskTypes(c,function(){this.loadTemplateStore();FT.notifySuccess(FT.i18n("Task template saved."))},this)},getEditRecord:function(){return this._editRecord},onTaskTemplateSelect:function(b,a){var c=a[0];if(!c){delete this._editRecord;return}this._editRecord=c;Ext.apply(this.taskTypeStore.getProxy().extraParams,{templateid:c.get("id")});this.nameField.setValue(c.get("name"));this.taskTypeStore.load();this.settingsPane.setVisible(true);this.initPane.setVisible(false)}});Ext.define("FT.configure.workflow.StatusEditor",{extend:"Ext.Container",cls:"ft-genericlist",layout:{type:"hbox",align:"stretch"},initComponent:function(){assert(this.schemeId,"schemeId must be set");assert(this.store,"must have store");assert(this.saveMethod,"must have save method");var a=Ext.create("FT.configure.workflow.CheckboxSelectionList",{selectionField:"selected",flex:1,displayField:"name",valueField:"statusid",store:this.store,hideHeaders:false,viewConfig:{stripeRows:false},hideHeaders:true,bbar:{items:["->",{text:FT.i18n("Cancel"),handler:function(){this.fireEvent("configcancelled")},scope:this},{text:FT.i18n("Save"),cls:"button-primary",handler:this.onSaveClicked,scope:this}]}});this.statusPane=a;this.items=[a];this.callParent(arguments);this.loadStatusStore()},loadStatusStore:function(){Ext.apply(this.store.getProxy().extraParams,{schemeId:this.schemeId});this.store.load()},onSaveClicked:function(){var a=this.statusPane.getSelectionIds();if(a.length==0){FT.notifyError(FT.i18n("You must select a least one status"));return}var b={schemeId:this.schemeId,ids:a};this.saveMethod(b,function(){this.fireEvent("configdone");FT.notifySuccess(this.type.charAt(0).toUpperCase()+this.type.slice(1)+"s workflow schema saved.")},this)}});Ext.define("FT.configure.workflow.VersionStatusEditor",{extend:"FT.configure.workflow.StatusEditor",type:"version",initComponent:function(){this.store=Ext.create("FT.data.DirectVersionStatus",{method:"getByWorkflow"});this.saveMethod=FTApi.FType.VersionStatus.setByWorkflow;this.callParent(arguments)}});Ext.define("RAW.configure.DisplayStorageScenario",{extend:"Ext.Component",alias:"widget.ft-display-storage-scenario",initComponent:function(){this.on({afterrender:function(a){a.getEl().on("click",function(b){if(b.getTarget(".configure-a-scenario")){this.fireEvent("configure-storage-scenario")}if(b.getTarget(".show-raw-json")){this._showRawJson()}},this)},scope:this});this.callParent(arguments);this.displayEmptyText();this.loadScenarioSetting()},loadScenarioSetting:function(){var a=this;this._scenarioSetting=null;FT.api.query('select value from Setting where name = "storage_scenario" and group = "STORAGE"',function(b){var c;if(b.data.length===0){return}c=Ext.decode(b.data[0].value);if(c===null){return}a._scenarioSetting=c;a.update(Ext.String.format('<div class="ft-grid-emptytext">You have already configured a scenario: {0}.<br/><br />If you want to update the scenario settings or switch to another scenario, click <a class="configure-a-scenario pointer">here</a>.<br /><br />Advanced users may want to inspect the raw <a class="show-raw-json pointer">JSON parameters</a> for debugging purposes.<div>',a._scenarioSetting.scenario.split(/\.|\-/).join(" ")))})},displayEmptyText:function(){var a="Looks like you haven't configured a storage scenario yet!<br /><br />It is not necessary if you already know the location system well,<br />but if you don't we suggest you <a class=\"configure-a-scenario pointer\">configure a scenario</a> now!";this.update(Ext.String.format('<div class="ft-grid-emptytext">{0}</div>',a))},_showRawJson:function(){var a=Ext.create("FT.window.Message",{header:true,title:FT.i18n("JSON parameters"),modal:false,closable:true,defaults:{margin:0}});a.setMessage({message:Ext.encode(this._scenarioSetting),showButton:false});a.show()}});Ext.define("FT.configure.StorageScenarioWizard",{extend:"Ext.Container",layout:"card",timeoutMilliseconds:8000,scenarioId:undefined,initComponent:function(){var a,b;this.launchMask=new Ext.LoadMask({msg:"Processing...",target:this});b=Ext.create("Ext.data.Store",{fields:["id","name","description"],proxy:{type:"eventhub",topic:"ftrack.storage-scenario.discover",timeoutMilliseconds:this.timeoutMilliseconds,singleResponse:false}});this.mon(b.getProxy(),"event-timeout",function(){if(b.getCount()===0){a.collapse();this._onEventTimeOut()}},this);a=Ext.widget({xtype:"combobox",displayField:"name",valueField:"id",store:b,editable:false,anchor:"100%",queryCaching:false,padding:5,tpl:Ext.create("Ext.XTemplate",'<tpl for=".">','<div class="x-boundlist-item">','<div class="text-bigger">{name}</div>','<div class="text-faded">{description}</div>',"</div>","</tpl>"),listeners:{select:function(){this.nextButton.enable()},scope:this}});this.items=[{xtype:"form",bodyPadding:10,layout:"anchor",items:[{anchor:"100%",padding:5,html:FTrack.grid.markdownRenderer("#Select storage scenario#\nSelect the storage scenario that you want to use.")},a],bbar:[{xtype:"button",text:FT.i18n("Cancel"),handler:this.cancelConfiguration,scope:this},"->",this.nextButton=Ext.widget({xtype:"button",cls:"button-primary",text:FT.i18n("Next"),disabled:true,handler:function(){this.scenarioId=a.getValue();this.configureScenario()},scope:this})]}];this.callParent(arguments)},cancelConfiguration:function(){this.fireEvent("cancel-configuration",this)},_handleConfigureResponse:function(c){var b="Submit",e=c.data.state,a=[];if(e==="confirm"){b="Confirm"}if(e==="done"){b="Done";FT.util.intercom("configured-storage-scenario")}if(e!=="done"){a.push(Ext.create("FT.form.ActionCancelButtonPlugin",{handler:this.cancelConfiguration,scope:this}))}var d=Ext.create("FT.form.Action",{formData:c.data,submitButtonText:b,listeners:{"submit-form":function(g){if(e!="done"){this.configureScenario(g,c.source.id)}else{this.fireEvent("complete-configuration",this)}},scope:this},plugins:a});this.add(d);this.getLayout().next();this.launchMask.hide()},_onEventTimeOut:function(){this.launchMask.hide();if(this._messageWindow&&!this._messageWindow.isDestroyed){this._messageWindow.show();return}this._messageWindow=Ext.create("FT.window.Message",{header:true,title:FT.i18n("Problem when configuring storage scenario"),modal:false,closable:true,defaults:{margin:0}});this._messageWindow.setMessage({message:Ext.String.format('<div class="ft-grid-emptytext">{0}</div>','Oh no! We could not process your request,<br>you might want to check that you have Connect running and then try again.<br><br><a href="https://www.ftrack.com/portfolio/connect" target="_blank">Need help using Connect?</a><br><br><br><br><a class="button button-primary" href="https://www.ftrack.com/portfolio/connect" target="_blank">Download Connect</a>'),showButton:false});this._messageWindow.show()},configureScenario:function(a,d){var b,e,c={scenario_id:this.scenarioId};if(d){e="id="+d}if(a){Ext.apply(c,{values:a})}this.launchMask.show();b=Ext.create("FT.Event",{topic:"ftrack.storage-scenario.configure",data:Ext.clone(c),target:e});FT.EventHub.publish(b,function(g){this._handleConfigureResponse(g)},this,{timeout:true,timeoutMilliseconds:this.timeoutMilliseconds,timeoutCallback:this._onEventTimeOut})}});Ext.define("FT.configure.TaskBoards",{alias:"widget.ft-configure-taskboards",extend:"Ext.container.Container",layout:"auto",initComponent:function(){this.store=Ext.create("Ext.data.Store",{fields:["boardid","name","data"],autoLoad:true,proxy:{type:"direct",directFn:"FTApi.FType.TaskBoards.getBoards",reader:{type:"json"}}});var a=Ext.create("Ext.view.View",{width:500,store:this.store,itemSelector:"div.ft-workflowsummary",tpl:new Ext.XTemplate('<tpl for=".">','<div style="margin-bottom:15px;" class="ft-workflowsummary">','<div style="float:right;padding-top:10px;">','<button class="button edittaskboard">{[FT.i18n("Edit")]}</button>','<div style="clear:both;"></div>',"</div>",'<div class="ft-property-groupheader">{name}</div>','<div style="padding:0 12px;">{data}</div>',"</div>","</tpl>"),listeners:{itemclick:this.onWorkflowClick,scope:this},emptyText:'<p class="ft-grid-emptytext" style="font-size:13px;">'+FT.i18n("No workflow schema selected.")+'</p><p class="ft-grid-emptytext" style="margin-top:25px;font-size:13px;">'+FT.i18n("Select a workflow schema to the left or click (+) to add a new.")+"</p>",deferEmptyText:false});this.items=[a];this.callParent(arguments)},onWorkflowClick:function(b,a,h,d,j,g){if(j.getTarget(".edittaskboard")===null){return true}var k=a.get("boardid");var c=this.store;Ext.create(FT.kanban.KanbanConfigure,{boardName:k,title:FT.i18n("Edit {name} columns",{values:{name:a.get("name")}}),closable:true,callback:function(){c.load()}})}});Ext.define("FT.configure.ResourceOutliner",{extend:"Ext.view.View",trackOver:false,itemSelector:"div.ft-resource-view-item",cls:"resource-outliner",autoScroll:true,preserveScrollOnRefresh:true,selModel:{deselectOnContainerClick:false,allowDeselect:false},selectOnRefresh:0,groupButton:null,getContextMenu:Ext.emptyFn,editEnabled:true,defaultGroupings:null,initComponent:function(){var a=this;this.store={model:"FT.model.Group"};this.defaultGroupings=this.defaultGroupings||[];this.tpl=new Ext.XTemplate('<tpl for=".">','<div class="ft-resource-view-item {resource_type}">',"{[this.renderItem(values)]}","</div>","{[this.getExtraItems(xindex)]}","</tpl>",{getExtraItems:function(b){if(b!==a.defaultGroupings.length){return}var c='<div class="header"><div class="group-header">'+FT.i18n("Groups")+"</div>";if(a.groupButton&&a.editEnabled){c+=Ext.String.format('<button class="button group-button {0}" id="{2}">{1}</button>',a.groupButton.cls,a.groupButton.text,a.groupButton.tourId)}c+="</div>";return c},shouldRenderMenu:function(b){return b.resource_type==="group"&&a.getContextMenu!==Ext.emptyFn&&a.editEnabled},renderItem:function(k){var c="",b=k.name,e=10,d=k.link.length*e,j=null,h="",g="",l="ft-resource-image-purple pull-left";if(this.shouldRenderMenu(k)){c+='<div class="resource-group-dropdown">&#160;</div>'}if(Ext.isEmpty(k.group_id)===false){j=a.store.findRecord("id",k.group_id);if(j===null){d=e;b=FTrack.grid.LinkRendererPrint(k.link)}}if(k.resource_type==="group"){if(k.local){l="ft-resource-image-green pull-left"}h=FTrack.grid.ResourceImageRenderer(k,{size:"tiny",cls:l});g="resource-name"}nameElement=Ext.String.format('<div class="text-ellipsis {1}">{0}</div>',b,g);return Ext.String.format('<div style="margin-left:{0}px;">{3}{2}{1}</div>',d,nameElement,c,h)}});this.callParent();this.store.onProxyLoad=Ext.Function.createInterceptor(this.store.onProxyLoad,this._onProxyLoad,this);this.on({refresh:this._onRefresh,containerclick:this._onContainerClicked,itemclick:this._onItemClicked,scope:this})},enableEdit:function(){this.editEnabled=true;this.refresh()},disableEdit:function(){this.editEnabled=false;this.refresh()},load:function(a){this.selectOnRefresh=a;this.store.load()},addGroup:function(a){this.store.insert(this.defaultGroupings.length,a);this.selectOnRefresh=a.get("id");this.refresh()},showContextMenu:function(a,b){var c=this.getContextMenu(a);if(c){c.on("hide",function(d){d.destroy()});c.showBy(b)}},removeGroup:function(c){var b=this.store.getById(c),d=false,a=[];if(b&&b==this.getSelectionModel().selected.get(0)){d=true}a.push(b);a=a.concat(this._getChildren(b));this.store.remove(a);if(d){this.selectOnRefresh=0;this.refresh()}},_getChildren:function(a){var c,b=[];c=this.store.query("group_id",a.get("id"));c.each(function(d){b.push(d);b=b.concat(this._getChildren(d))},this);return b},_onContainerClicked:function(a,b){if(b.getTarget&&b.getTarget(".group-button")){this.groupButton.handler.apply(this.groupButton.scope,[b.getTarget(".group-button")]);return}},_onItemClicked:function(b,a,d,c,g){if(g.getTarget&&g.getTarget("div.resource-group-dropdown")){this.showContextMenu(a,g.target);return}},_onRefresh:function(){if(Ext.isDefined(this.selectOnRefresh)){var a=this.getSelectionModel(),b;if(Ext.isString(this.selectOnRefresh)){b=this.store.getById(this.selectOnRefresh);if(b){a.select(b)}}else{a.select(this.selectOnRefresh)}}delete this.selectOnRefresh},_onProxyLoad:function(b){var a=b.getRecords(),c=FT.model.Group,d=[];Ext.each(this.defaultGroupings,function(e){d.push(c.create(e))});Ext.Array.insert(a,0,d)}});Ext.define("FT.configure.CreateUserWindow",{extend:"FT.Window",title:FT.i18n("Create user account"),width:540,height:500,layout:{type:"card",deferredRender:true},initComponent:function(){this.tbar=this._getToggleToolbar();this.items=[this._getSendInviteForm(),this._getCreateManuallyForm()];this.callParent(arguments)},_getToggleToolbar:function(){var a=Ext.create("Ext.toolbar.Toolbar",{defaultButtonUI:"toggle-toolbar",margin:"0 0 0 10",items:[this._getToggleButton(0,FT.i18n("Send invite")),this._getToggleButton(1,FT.i18n("Create manually"))]});return a},_getSendInviteForm:function(){var a=Ext.create("FT.configure.InviteUsersForm",{});a.on("usercreated",function(){this.close()},this);return a},_getCreateManuallyForm:function(){var a=Ext.create("FT.configure.CreateUserForm",{});a.on("usercreated",function(){this.close()},this);return a},_getToggleButton:function(a,c){var b={text:c,cardIndex:a,toggleGroup:"CreateUserWindow-toggle-group",enableToggle:true,allowDepress:false,pressed:a===0,scope:this,handler:function(d){this.getLayout().setActiveItem(d.cardIndex)}};return b}});Ext.define("FT.configure.InviteUsersForm",{extend:"Ext.form.Panel",bodyPadding:10,padding:10,layout:"anchor",defaults:{anchor:"100%",padding:"5 0 5 0"},initComponent:function(){this.items=[{html:FT.i18n("Invite users to ftrack. Separate email addresses with commas.")},{name:"emails",xtype:"textarea",height:100,validator:this._validateEmails,emptyText:FT.i18n("Email address(es)"),allowBlank:false},{html:"<div class='text-faded'>"+FT.i18n("Each user will receive an invitation email with a link to a page where the user can enter their name and password. Each account will be given the default permission role.")+"</div>"}];this.bbar=["->",{text:FT.i18n("Create account(s)"),cls:"button-primary",handler:this._inviteUsers,scope:this,formBind:true,disabled:true}];this.loadingMask=new Ext.LoadMask({target:this});this.callParent(arguments)},_validateEmails:function(c){var d=c.split(","),b,a;if(c.length===0){return true}for(b=0;b<d.length;b++){a=Ext.String.trim(d[b]);if(Ext.form.field.VTypes.email(a)===false){return d[b]+" is not a valid email address."}}return true},_inviteUsers:function(){var c=this.getForm(),a=c.getValues(),d=a.emails.split(","),e=[],b;this.loadingMask.show();for(b=0;b<d.length;b++){e.push(Ext.String.trim(d[b]))}FTApi.User.inviteUsers({emails:e},Ext.bind(this._handleResponse,this))},_handleResponse:function(a){this.loadingMask.hide();if(a.success===true){this.fireEvent("usercreated");FT.notifySuccess(FT.i18n("Invites were sent successfully."));FT.util.intercom("invited-users")}else{if(a.message){FT.notifyError(a.message)}else{FT.notifyError(FT.i18n("An error occured when inviting users."))}}}});Ext.define("FT.configure.CreateUserForm",{extend:"Ext.form.Panel",bodyPadding:10,padding:10,layout:"anchor",defaults:{anchor:"100%",padding:"5 0 5 0",labelWidth:200},initComponent:function(){this.items=[{fieldLabel:FT.i18n("First name"),name:"firstname",xtype:"textfield",allowBlank:false},{fieldLabel:FT.i18n("Last name"),name:"lastname",xtype:"textfield",allowBlank:false},{fieldLabel:FT.i18n("Email (Username)"),name:"email",xtype:"textfield",allowBlank:false,vtype:"email"},{fieldLabel:FT.i18n("Password (at least 8 characters)"),name:"password",xtype:"textfield",inputType:"password",allowBlank:true,disabled:true,validator:this._validatePassword},{fieldLabel:FT.i18n("Change password on first login"),name:"require_password_update",xtype:"checkbox",disabled:true,checked:true,inputValue:true},{fieldLabel:FT.i18n("Enable account"),name:"isactive",xtype:"checkbox",checked:true,inputValue:true,handler:this._enableAccountHandler,scope:this},{fieldLabel:FT.i18n("Send invitation email"),name:"send_invite",xtype:"checkbox",checked:true,inputValue:true,padding:"5 0 0 0",handler:this._sendInvitationHandler,scope:this},{padding:0,html:'<div class="text-faded text-small">'+FT.i18n("Password will not be sent.")+"</div>"}];this.bbar=["->",{text:FT.i18n("Create account"),cls:"button-primary",handler:this._createUser,scope:this,formBind:true,disabled:true}];this.loadingMask=new Ext.LoadMask({target:this});this.callParent(arguments)},_enableAccountHandler:function(e,d){var c=this.getForm(),b=c.findField("require_password_update"),a=c.findField("send_invite");if(d){a.setValue(true);a.setDisabled(false)}else{a.setDisabled(true);a.setValue(false)}},_sendInvitationHandler:function(e,d){var c=this.getForm(),b=c.findField("require_password_update"),a=c.findField("password");if(d){b.setValue(true);b.setDisabled(true);a.setDisabled(true)}else{b.setDisabled(false);a.setDisabled(false)}},_validatePassword:function(a){if(a.length>=8||a.length===0){return true}else{return"Password must be at least 8 characters."}},_createUser:function(){var b=this.getForm(),a=b.getValues();this.loadingMask.show();FTApi.User.createUser(a,Ext.bind(this._handleResponse,this))},_handleResponse:function(a){this.loadingMask.hide();if(a.success===true){this.fireEvent("usercreated");FT.notifySuccess(FT.i18n("Account was created successfully."));FT.util.intercom("created-user-manually")}else{if(a.message){FT.notifyError(a.message)}else{FT.notifyError(FT.i18n("An error occured when creating the account."))}}}});Ext.define("FT.configure.LicenseInformation",{extend:"Ext.Container",initComponent:function(){this.callParent();var b=Ext.create("Ext.view.View",{width:"100%",itemSelector:"div.ft-about-selector",tpl:new Ext.XTemplate('<h2 style="margin-top: 32px">',FT.i18n("Licenses"),"</h2>",'<tpl for=".">','<div class="ft-license-box {[this.getExpiredCss(values.expired)]}">','<div class="license-type">',"<span>{[this.formatUsers(values.quantity)]}</span><br>","<span>{[this.formatProduct(values.feature_id)]}</span>","</div>","{[this.formatMessage(values.renewal_date, values.date, values.expired)]}","</div>","</tpl>",{getExpiredCss:function(c){return c?"ft-license-expired":""},formatProduct:function(d){var c=d.split("-");return c.join(" ")},formatUsers:function(c){return Ext.String.format("{0} {1}",c,FT.i18n("users"))},formatMessage:function(d,c,e){if(e){return Ext.String.format("{0} {1}",FT.i18n("License expired at"),c)}if(!d||new moment(c)<new moment(d)){return Ext.String.format("{0} {1}",FT.i18n("License expires at"),c)}return Ext.String.format("{0} {1}",FT.i18n("Subscription period ends at"),d)}}),store:this.productStore=Ext.create("Ext.data.Store",{fields:["expired","quantity","date","grace","feature_id","renewal_date"],proxy:{type:"memory"}})});var a=Ext.create("Ext.view.View",{width:"100%",itemSelector:"div.ft-about-selector",tpl:new Ext.XTemplate('<tpl if="values.length">','<h2 style="margin-top: 32px">',FT.i18n("Additional features"),"</h2>",'<div class="ft-license-box">',"{[this.renderFeatures(values)]}","</div>","</div>","</tpl>",{renderFeatures:function(c){var d=[];Ext.each(c,function(e){var g=e.feature_id.replace("feature-","");g=g.replace(/-/g," ");d.push(g.toUpperCase())});return d.join(", ")}}),store:this.additionalFeaturesStore=Ext.create("Ext.data.Store",{fields:["expired","quantity","date","grace","feature_id","renewal_date"],proxy:{type:"memory"}})});this.add(b,this.messages=Ext.create("Ext.Component",{margin:"16px 0"}),a)},updateData:function(b,c,a){this.productStore.getProxy().data=b;this.productStore.load();this.additionalFeaturesStore.getProxy().data=c;this.additionalFeaturesStore.load();if(a.length){this.messages.show()}else{this.messages.hide()}this.messages.update(a.join(", "))}});Ext.define("FT.module.Timelogging",{extend:"FT.view.MegaLayer",itemId:"timelogging",constructor:function(a){Ext.apply(this,a);this.callParent();FT.app.on("timelogger-open",function(b){this.toggleShow(true,b)},this)},state:function(){var a=this.panel.getLayout().getActiveItem();if(a===this._timelogger){return"TIMELOGGER"}else{return"TIMESHEET"}},getTitle:function(){if(this.state()==="TIMELOGGER"){return FT.i18n("Time logger")}else{return FT.i18n("Timesheet")}},toggleShow:function(a,c){var b=false;if(!this.layer){b=true;this.createLayer({cls:"ft-overlay-layer-wide"});this.toggleButton=Ext.create("Ext.button.Button",{ui:"default-toolbar-small",handler:function(e){e.setText(FT.i18n("Switch to {title}",{values:{title:this.getTitle().toLowerCase()}}));if(this.state()==="TIMELOGGER"){this.toggleTimesheet()}else{this.toggleTimelogger()}},scope:this});this.panel=Ext.create("Ext.panel.Panel",{layout:"card",glyph:FT.glyph("timesheet"),tools:[this.toggleButton],header:true,items:[],padding:"10",renderTo:this.layer});this.panel.mon(FT.Viewport,"resize",this._resizePanel,this)}this.callParent(arguments);if(a){this._resizePanel();if(b||c){this.toggleTimelogger();if(c&&c.id){this._setSelectedContext(c)}else{FTApi.Timer.query({criteria:FT.Settings.get("currentuser","userid")},function(e){if(!e||!e.data){return}this._timerComponent.setFromTimer(e.data[0])},this)}}else{var d=this.panel.getLayout().getActiveItem();d.fireEvent("activate",d,d)}}},_updateToggleButton:function(){this.toggleButton.setText(FT.i18n("Switch to {title}",{values:{title:this.getTitle().toLowerCase()}}))},_refreshTimesheet:function(){this.weekView.setDate(this.datePicker.getValue())},toggleTimesheet:function(){this._updateToggleButton();this.layer.addCls("ft-overlay-layer-maximize");this._resizePanel();if(!this._timesheet){this._timesheet=this.createTimesheet();this.panel.add(this._timesheet)}this.panel.getLayout().setActiveItem(this._timesheet);this.panel.setTitle(this.getTitle())},toggleTimelogger:function(){this._updateToggleButton();this.layer.removeCls("ft-overlay-layer-maximize");this._resizePanel();if(!this._timelogger){this._timelogger=this.createTimelogger();this.panel.add(this._timelogger)}this.panel.getLayout().setActiveItem(this._timelogger);this.panel.setTitle(this.getTitle())},getTopMenuItems:function(){this.button=Ext.create("FT.timelogging.TimerButton",{scale:"large",enableToggle:true,rightAlign:true,tooltip:FT.i18n("Track time"),overflowText:FT.i18n("Timelogging"),glyph:FT.glyph("timesheet"),tourId:"timesheet",toggleHandler:function(a,b){this.toggleShow(b);FT.tour.Tour.startDashboardTour("timetracking")},scope:this,allowDepress:false});return this.button},createTimesheet:function(){var c,e,b,a,d;c=Ext.create("Ext.picker.Date",{border:false,startDay:Number(FT.Settings.get("TIME","week_startday"))});b={items:[c],width:250,padding:10,border:false,region:"west",weight:100};e={items:[Ext.create("FT.timelogging.PersistedTimerComponent",{width:500,initialState:"MANUAL",timer:false,listeners:{persistedTimelogCreated:this._refreshTimesheet,scope:this}})],height:100,padding:10,border:false,region:"north"};a=Ext.create("FT.timelogging.TimesheetWeekView",{region:"center",padding:"0 0 5 0"});this.weekView=a;d=Ext.create("Ext.panel.Panel",{layout:"border",items:[e,b,a]});c.on("select",function(h,g){a.setDate(g)});this.datePicker=c;d.on("activate",this._refreshTimesheet,this);return d},createTimelogger:function(){var a,c,b;a=Ext.create("FT.timelogging.PersistedTimerComponent",{minHeight:40,margin:"20 10",listeners:{persistedTimelogCreated:this._refreshTimelogsList,scope:this}});this._timerComponent=a;c=Ext.create("FT.timelogging.TimelogsList",{emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("You have not logged any time yet.")+"</p>",padding:10,flex:1});b=Ext.create("Ext.panel.Panel",{layout:{type:"vbox",align:"stretch"},items:[a,c]});b.on("activate",this._refreshTimelogsList,this);return b},_refreshTimelogsList:function(){var a=this._timelogger.items.getAt(1);a.store.loadPage(1)},_setSelectedContext:function(b){var a=this._timelogger.items.getAt(0);a.stop();a.reset();a.setLinkedEntity(b)}});Ext.define("FT.module.Bookmark",{extend:"FT.AbstractModule",itemId:"bookmark",init:function(b,a){},onAfterModuleActivated:function(a){var b=a.itemId=="projects";if(b){this.contextButton.enable()}else{this.contextButton.disable()}},constructor:function(a){Ext.apply(this,a);FT.app.on("aftermoduleactivated",this.onAfterModuleActivated,this)},getTopMenuItems:function(){var a;a=Ext.widget({xtype:"button",text:FT.i18n("Bookmarks"),scale:"large",tourId:"bookmarks",style:"padding-left: 0;",menu:new Ext.menu.Menu({plain:true,items:Ext.create("FT.bookmark.View",{dashboardManager:this.dashboardManager,listeners:{bookmarkclicked:function(){a.hideMenu()}}})})});this.contextButton=Ext.create("FT.bookmark.BookmarkContextButton",{margin:"0 0 0 10",padding:"6 0 0"});return[this.contextButton,a]}});Ext.define("FT.module.Me",{extend:"FT.AbstractRAWModule",itemId:"me",name:"unknown",preRequests:[],enableBookmark:true,reloadFTrackOnExitModule:true,hideDashboardMenu:false,beforeUpdate:function(a){this.entity={view:this.view,entityId:FT.Settings.get("currentuser","userid"),entityType:"user"}},constructor:function(a){Ext.apply(this,a);this.callParent(arguments)},switchTheme:function(){var c;var b=FT.getUserId();var c=FT.getThemeStylesheet();if(!c.id){c.id="ft-theme-stylesheet"}var d;if(FT.getCurrentTheme(c)==="light"){d="dark"}else{d="light"}var a=Ext.String.format("/ftrack-theme-{0}/ftrack-theme-{0}-all.css",d);Ext.util.CSS.swapStyleSheet(c.id,a);FT.api.query(Ext.String.format('select value from EntitySetting where parent_id is "{0}" and group is DEFAULT and name is theme',b),function(e){if(e.data.length){FT.api.update([{entity_type:"EntitySetting",entity_key:[b,"DEFAULT","theme"],entity_data:{value:d}}],Ext.emptyFn)}else{FT.api.create([{entity_type:"EntitySetting",entity_data:{parent_id:b,parent_type:"user",group:"DEFAULT",name:"theme",value:d}}],Ext.emptyFn)}})},getTopMenuItems:function(){var b={name:FT.Settings.get("currentuser","fullname"),thumbId:FT.Settings.get("currentuser","thumbid")},j,c,a;j=FTrack.grid.UserImageRenderer(b,{size:"tiny"});var h=[{text:FT.i18n("Help center"),href:"https://www.ftrack.com/help",hrefTarget:"_blank"},{text:FT.i18n("Developer hub"),href:"https://www.ftrack.com/developer",hrefTarget:"_blank"}];if(window.Intercom){h.push({text:FT.i18n("Contact us"),handler:function(){window.Intercom("show")}})}c=[{text:FT.i18n("My account"),handler:function(){var k={view:"account_settings_override"};this.app.open(this,k)},scope:this},{text:FT.i18n("Help"),menu:h},"-"];if(FT.isAuth("CONFIGURE")){if(FT.Settings.get("currentuser","enable_account_settings")){c.push({text:FT.i18n("Subscription and billing"),handler:function(){FT.app.open("newconfigure",{view:"account"})}})}c.push({text:FT.i18n("System settings"),handler:function(){FT.app.open("newconfigure",{view:"about"})}});c.push("-")}if(FT.Settings.get("feature","isScopeEnabled")){a=this.app.scope.getSelector();c.push({text:FT.i18n("Scope"),menu:a.menu},"-")}c.push({text:FT.i18n("Getting started tour"),handler:function(){FT.tour.Tour.start("overview_home_v3",true)}});var g=FT.tour.Tour.getWhatsNewTourId();if(g){c.push({text:FT.i18n("What's new"),handler:function(){FT.tour.Tour.start(g,true)}})}c.push({text:FT.i18n("Switch theme"),handler:this.switchTheme});if(FT.Notification.desktopSupport()){var e=FT.Notification.getPermission(),d;switch(e){case 2:d=FT.i18n("Desktop notifications off");break;case 0:d=FT.i18n("Desktop notifications on");break;default:d=FT.i18n("Desktop notifications");break}c.push({text:d,handler:FT.Notification.requestPermission,disabled:e!==1})}c.push("-",{text:FT.i18n("Logout"),handler:function(){window.location.href="/login/logout"}});return[{xtype:"button",text:j,scope:this,scale:"large",tourId:"user",menu:Ext.create("Ext.menu.Menu",{minWidth:200,items:c})}]}});Ext.define("FT.module.User",{extend:"FT.AbstractRAWModule",itemId:"user",name:"unknown",preRequests:[],beforeUpdate:function(a){this.entity={entityId:a.entityId,entityType:"user"}},update:function(a){this.dashboardManager.updateDashboard(this.entity,"tasks_v1")},createLeft:function(){return null},getTopMenuItems:function(){return[]}});Ext.define("FT.form.Editor",{extend:"Ext.panel.Panel",isUpdate:true,visibleFields:null,hiddenFields:null,showInGroups:true,fieldDefaults:null,initComponent:function(){this.addEvents(["createattributeclicked"]);var a={labelAlign:"left",labelWidth:150,msgTarget:"side",autoFitErrors:true,padding:"0 0 10 0",margin:"0 0 10 0"};if(this.fieldDefaults!=null){a=this.fieldDefaults}this.form=Ext.create("Ext.form.Panel",{layout:"anchor",border:false,defaults:{anchor:"100%"},items:[{xtype:"component",html:'<span style="padding-left:15px;" class="button-text-color">Loading...</span>'}],plugins:[Ext.create("FT.form.RemoteValidation",{pluginId:"validator"})],fieldDefaults:a});this.items=this.form;this.callParent()},updateForm:function(e,b,c,d,a){assert(e!="task"||a,"objectType must be defined if contentType is task");this.sourceType=e;this.entity=Ext.clone(b);this.isGetData=c;this.objectType=a;d=Ext.value(d,false);Ext.Ajax.request({url:"/track/getColumnsAndData",params:{data:Ext.encode({objectType:a,contentType:e,cfg:this.entity,isGetData:c})},success:function(g){var h=Ext.decode(g.responseText);this.layoutForm(h,e,d,a)},scope:this})},refreshForm:function(){this.updateForm(this.sourceType,this.entity,this.isGetData,true,this.objectType)},layoutForm:function(g,n,b,c){var l=this.up("window");if(!l){return}if(g.link){l.setTitle(l.title+"&nbsp;"+FTrack.grid.LinkRendererPrint(g.link))}var k=[];var o=g.data!=null;if(!o&&n!="show"){var m=FT.clone(Ext.data.StoreManager.lookup("FT.store.ObjectType"));m.sort("sort","ASC");var e={};m.each(function(p){if(p.get("typeid")=="show"){return true}e[p.get("typeid")]=[]},this);m.each(function(p){Ext.each(p.get("children"),function(q){e[q].push(p.get("typeid"))},this)},this);var a=g.parent;if(!g.parent.entityId){a={entityId:g.showid,entityType:"show"}}this.parentField=Ext.create("FT.form.field.EntitySelectorField",{fieldLabel:FT.i18n("Linked to"),labelWidth:150,margin:10,value:a,selectionTypes:e[c],listeners:{select:function(q,p){assert(Ext.isObject(q.getValue()),"is object");this.parentId.setValue(p.entityId);this.entity=Ext.clone(p);if(this.form){this.form.fireEvent("parentchanged",{entityId:this.parentId.getValue()})}},scope:this}});k.push(this.parentField);if(FT.util.canObjectTypeHaveChildren(c)){k.push(Ext.widget("ft-tasktemplatefield",{name:"templateid",fieldLabel:FT.i18n("Task template"),emptyText:FT.i18n("Select template"),margin:10}))}this.parentId=Ext.create("Ext.form.field.Text",{hidden:true,name:"parent_id",value:g.parent.entityId,editable:false});k.push(this.parentId)}if(!o){this.entityType=Ext.create("Ext.form.field.Text",{hidden:true,name:"entityType",value:this.sourceType,editable:false});k.push(this.entityType);objectTypeField=Ext.create("Ext.form.field.Text",{hidden:true,name:"object_typeid",editable:false});k.push(objectTypeField)}var j=this.form.getPlugin("validator");if(Ext.isDefined(j)){if(o){j.setEntity(this.entity)}else{j.clearEntity()}if(this.parentId){j.setParent({entityId:this.parentId.getValue()})}else{j.clearParent()}}var d=this.generateForm(g,n);var h=this.createRecord(g,n,c);if(!b){delete this.record}if(this.record){Ext.iterate(this.record.getChanges(),function(p,s,q){if(Ext.isDefined(h.data[p])){h.set(p,s)}},this);h.commit()}this.record=h;this.fireEvent("beforeloadrecord",h);this.showid=g.showid;if(!o){this.runAddOperators(h)}this.lockOperators=true;Ext.suspendLayouts();this.form.removeAll(true);this.form.add(Ext.Array.merge(k,d,[this.getExtraButtons(o)]));this.form.doLayout();this.updateEditRecords(h);this.loadRecord(h);this.lockOperators=false;Ext.resumeLayouts(true);this.fireEvent("formfieldlayoutchanged",this,d);this.form.getForm().getFields().each(function(p){if(["name","fullname"].indexOf(p.name)!==-1){p.focus();return false}})},loadRecord:function(a,d){var b=[];this.form.getForm().getFields().each(function(e){if(Ext.isDefined(e.isRemote)&&e.isRemote==true){if(e.getValue()!=a.get(e.name)){b.push(e.name)}}},this);this.remoteFields=b;if(d){var c=Ext.clone(a.getData());delete c[d];this.form.getForm().setValues(c)}else{this.form.getForm().loadRecord(a)}},getExtraButtons:function(d){var a,c=[];if(d){c.push({xtype:"button",ui:"link",text:FT.i18n("Remove"),margin:"0 5 25 15",handler:function(){FT.action.open("removeEntity",Ext.clone(this.entity));this.up("window").close()},scope:this})}if(d||this.sourceType!="show"){c.push({xtype:"button",ui:"plain-toolbar",margin:"10 0",text:FT.i18n("Create attribute"),handler:function(){this.fireEvent("createattributeclicked");var e=FT.CreateAttributeFactory.create("dialog",this.entity)},scope:this})}var b=FT.Shortcuts.get(this.entity.entityType);Ext.each(b,function(e){c.push({xtype:e.xtype,cls:"ft-link-btn ft-9px-font",text:e.text,item:e,entity:Ext.clone(this.entity),textAlign:"left",handler:function(g){g.item.fn(g.entity,g.callback,this);this.up("window").close()}})},this);buttonContainer=Ext.create("Ext.container.Container",{items:c});return buttonContainer},createRecord:function(e,h,c){var d=[],b={},g=[];if(e&&e.mandatoryFields){g=e.mandatoryFields}Ext.each(g,function(l,j,k){if(e&&e.data){d.push(l);b[l]=e.data[l]}},this);Ext.each(e.columns.columns,function(m,j,k){if(Ext.isDefined(m.editor)){if(Ext.isDefined(m.ftscope)&&m.ftscope.indexOf("form")==-1){return}var l=m.dataIndex;if(m.ftype=="date"||m.ftype=="datetime"){l={name:m.dataIndex,type:"date",dateFormat:"c"}}d.push(l);b[m.dataIndex]=e.data!=null?e.data[m.dataIndex]:m.defaultValue}},this);d.push("showid");b.showid=e.showid;if(h=="task"){d.push("object_typeid");b.object_typeid=c}d.push("entityType");b.entityType=h;Ext.define("NewModule-"+h,{extend:"Ext.data.Model",fields:d,contentType:h});var a=Ext.create("NewModule-"+h,b);return a},generateForm:function(data,contentType){var fields=[];var groups={General:{name:"",items:[],collapsed:false,formSort:0}};var formCfgs=[];this.variableNameTranslator={};Ext.each(data.columns.columns,function(field,idx,all){if(Ext.isDefined(field.editor)){var cfg={};if(Ext.isDefined(field.editor.allowBlank)&&!field.editor.allowBlank){field.text+="*"}if(this.isUpdate&&Ext.isDefined(field.disableEdit)&&field.disableEdit){cfg.disabled=true}if(Ext.isDefined(field.ftscope)&&field.ftscope.indexOf("form")==-1){return}if(field.apiname){this.variableNameTranslator[field.apiname]=field.dataIndex;this.variableNameTranslator[field.dataIndex]=field.apiname}if(field.formEditor){Ext.apply(cfg,field.formEditor)}else{Ext.apply(cfg,field.editor)}if(Ext.isDefined(cfg.isWritable)&&cfg.isWritable==false){cfg.disabled=true}cfg.fieldLabel=field.text;if(Ext.isDefined(field.help)){cfg.afterLabelTextTpl=FT.util.getHelp(field.help)}cfg.name=field.dataIndex;if(Ext.isDefined(cfg.remoteValidation)){}cfg.listeners={specialkey:function(field,e){if(e.ctrlKey&&e.getKey()==e.ENTER){this.fireEvent("shortcutSubmit")}},change:this.onFieldChange,scope:this};if(Ext.isDefined(cfg.validator)){cfg.validator=eval(cfg.validator)}cfg.formSort=Ext.isDefined(field.formSort)?field.formSort:999;cfg.formGroup=field.formGroup;cfg.groupSort=field.groupSort;if(Ext.isArray(this.visibleFields)){if(this.visibleFields.indexOf(cfg.name)==-1){cfg.hidden=true}}if(Ext.isArray(this.hiddenFields)){if(this.hiddenFields.indexOf(cfg.name)!=-1){cfg.hidden=true}}formCfgs.push(cfg)}},this);if(!this.showInGroups){Ext.Array.sort(formCfgs,function(a,b){return a.formSort-b.formSort});return formCfgs}Ext.each(formCfgs,function(cfg){if(Ext.isDefined(cfg.formGroup)&&Ext.isDefined(groups[cfg.formGroup])){groups[cfg.formGroup].items.push(cfg)}else{var groupName="More";if(cfg.formGroup){groupName=cfg.formGroup}if(!Ext.isDefined(groups[groupName])){groups[groupName]=Ext.apply({name:groupName,items:[],collapsed:false,formSort:cfg.groupSort},this.fieldGroupCfgDefaults||{})}groups[groupName].items.push(cfg)}},this);var groupsList=[];Ext.iterate(groups,function(key,group){groupsList.push(group)});Ext.Array.sort(groupsList,function(group1,group2){return group1.formSort-group2.formSort});Ext.each(groupsList,function(group){if(group.items.length==0){return}Ext.Array.sort(group.items,function(a,b){if(a.formSort==b.formSort){return a.fieldLabel>b.fieldLabel}return a.formSort-b.formSort});var fieldGroup={xtype:"fieldset",title:group.name,defaultType:"textfield",layout:"anchor",collapsible:group.collapsible,collapsed:group.collapsed,border:Ext.isDefined(group.border)?group.border:"1 0 0 0",defaults:{anchor:"100%"},items:group.items};Ext.apply(fieldGroup,group||{});fields.push(fieldGroup)},this);return fields},updateEditRecords:function(a){this.form.getForm().getFields().each(function(d,b,c){if(Ext.isFunction(d.editRecord)){d.editRecord(a)}},this)},onFieldChange:function(e,d,c){var b=this.form.getForm().getRecord();var j=e.name;if(!b){return}b.set(j,d);var a=this.remoteFields.indexOf(j);if(a!=-1){this.remoteFields.splice(a,1);log("early exit");return}if(this.lockOperators||!Ext.isDefined(FT.data.editOperators[b.contentType])){return}var h=b.contentType;if(j=="typeid"&&h=="task"){this.updateEditRecords(b)}if(Ext.isDefined(FT.data.editOperators[h])&&Ext.isDefined(FT.data.editOperators[h][j])){var g=FT.data.editOperators[h][j];g.call(this,b,d,c);this.lockOperators=true;this.loadRecord(b,j);this.lockOperators=false}if(!this.delayedRemoteValidation){this.delayedRemoteValidation=new Ext.util.DelayedTask}this.delayedRemoteValidation.delay(500,this.remoteValidateRecord,this,[b])},translateVariableNames:function(b){if(Ext.isString(b)){return Ext.value(this.variableNameTranslator[b],b)}var a={};Ext.iterate(b,function(d,c){if(this.variableNameTranslator[d]){a[this.variableNameTranslator[d]]=c}else{a[d]=c}},this);return a},remoteValidateRecord:function(a){if(a.contentType!="show"){return}if(this.isRemoteValidating){this.delayedRemoteValidation.delay(500);return}this.isRemoteValidating=true;var c=Ext.clone(a.data);c=this.translateVariableNames(c);var b=Ext.create("FT.Event",{topic:"ftrack.validate",data:c});FT.EventHub.publish(b,this.handleRemoteValidationResponse,this)},handleRemoteValidationResponse:function(b){var c=b.data;var a=this.form.getForm().getRecord();a.set(this.translateVariableNames(c.changes));this.lockOperators=true;this.loadRecord(a,this.translateVariableNames());this.lockOperators=false;var d=this.translateVariableNames(c.errors);this.form.getForm().getFields().each(function(j,e,h){var k=j.getName();var g=d[k];if(Ext.isDefined(g)){j.markInvalid(g)}});this.isRemoteValidating=false},runAddOperators:function(a){var b=a.contentType;if(!Ext.isDefined(FT.data.addOperators[b])){return}Ext.iterate(a.data,function(c,e,d){var g=FT.data.addOperators[b][c];if(Ext.isDefined(g)){a.beginEdit();g.call(this,a);a.endEdit(true)}},this);a.commit()},submitForm:function(b,g,c){if(this.form.getForm().isValidFocus()){var d=this.form.getForm().getValues();var e={sourceType:Ext.encode(this.sourceType)};if(b){Ext.apply(e,b)}if(!this.isUpdate){e.add=Ext.encode([d]);this.fireEvent("entityadded",this.sourceType)}else{this.fireEvent("entityupdated",this.sourceType);e.update=Ext.encode([{entityId:this.entity.entityId,entityType:this.entity.entityType,data:d}])}var a=new Ext.LoadMask(this.up("window"),{msg:"Please wait..."});a.show();Ext.Ajax.request({params:e,url:"/track/commitChanges",success:function(h){var j=Ext.decode(h.responseText);a.hide();if(j.success){g.call(c,j)}else{FT.notifyError(j.message)}},scope:this})}else{log("NOT VALID!")}}});Ext.define("FT.module.New",{extend:"FT.AbstractModule",itemId:"new",name:"unknown",init:function(a){},constructor:function(a){Ext.apply(this,a)},getTopMenuItems:function(){var a=[];return a}});FT.create=function(e,k,o,c){k=Ext.value(k,FT.app.getCfg());if(Ext.isDefined(e)){assert(Ext.isString(e),"must be string")}if(FT.isDemo()){FT.notifyError(FT.i18n("You cannot create in demo mode."));return}if(FT.util.isModalOpen()){return}var g=FT.app.getActiveModule();if(g&&g.itemId!="projects"){FT.notifyError(FT.i18n("You cannot create anything outside of Projects."));return}var d,m;var l=Ext.data.StoreManager.lookup("FT.store.ObjectType");var n=FT.app.getObjectType();var j="";var a=l.findRecord("typeid",n);if(a&&a.get("children").length>0){j=a.get("children")[0]}else{j="11c137c0-ee7e-4f9c-91c5-8c77cec22b2c"}if(Ext.isDefined(e)){j=e}var b,h;l.each(function(p){if(p.get("entityType")=="task"){if(j==p.get("typeid")){b=p.get("typeid");h=p.get("name")}}},this);d=Ext.create("FT.form.Editor",{isUpdate:false,region:"center",layout:"auto",bodyCls:"bodyscrollhack",app:FT.app,border:false,bodyBorder:false,submitFormHelper:function(){this.submitForm(o,function(p){FT.notifyCommitSuccess(p)},this)},bbar:{cls:"border-top",items:['<span class="text-faded x-unselectable">'+FT.i18n("Use Ctrl+Enter to create")+"</span>","->",{xtype:"button",text:FT.i18n("Cancel"),handler:function(){m.close()},scope:this},{xtype:"button",cls:"button-primary",text:FT.i18n("Create"),handler:function(){d.submitForm(o,function(p){d.up("window").close();FT.notifyCommitSuccess(p);if(Ext.isDefined(c)&&p.changes&&Ext.isArray(p.changes)&&p.changes.length>0){c(p.changes[0])}FT.util.intercom("USED-CREATE-DIALOG")},this)},scope:this}]},listeners:{shortcutSubmit:function(){d.submitFormHelper()},createattributeclicked:function(){m.close()},scope:this}});d.selectedEntity=h;d.updateForm("task",k,false,undefined,b);m=Ext.create("FT.ModalWindow",{id:"ftrack_create",closeOnClick:false,title:FT.i18n("Create ")+h.toLowerCase(),closeAction:"destroy",width:550,height:600,layout:"border",resizable:false,closable:true,draggable:false,modal:true,items:d});m.show()};FT.editCurrent=function(){var b=FT.app.getObjectType();var a={objectType:b};Ext.apply(a,FT.app.getCfg());FT.edit(a)};FT.edit=function(a,d,g,b){if(FT.isDemo()){FT.notifySuccess("You cannot edit in demo mode.");return}g=Ext.value(g,Ext.emptyFn);b=Ext.value(b,this);if(FT.util.isModalOpen()){return}if(a.entityType=="user"){return}if(["show","sequence","shot","task","assetversion"].indexOf(a.entityType)==-1&&!Ext.isDefined(d)){FTrack.errorMessage("","You cannot edit this.",5);return}var c,e;c=Ext.create("FT.form.Editor",{id:"ftrack_edit",region:"center",layout:"auto",bodyCls:"bodyscrollhack",border:false,bodyBorder:false,submitFormHelper:function(){this.submitForm(null,function(h){FT.notifyCommitSuccess(h);c.up("window").close()},this)},bbar:{items:['<span style="color:grey;" class="x-unselectable">Use Ctrl+Enter to save</span>',"->",{xtype:"button",text:FT.i18n("Cancel"),style:{marginRight:"10px"},handler:function(){e.close()},scope:this},{xtype:"button",text:FT.i18n("Save"),cls:"button-primary",handler:function(){c.submitFormHelper()},scope:this}]},listeners:{shortcutSubmit:function(){c.submitFormHelper()},createattributeclicked:function(){e.close()},scope:this}});c.entity=a;c.updateForm(a.entityType,a,true,undefined,a.objectType);e=Ext.create("FT.ModalWindow",{title:FT.i18n("Edit"),closeAction:"destroy",constrain:true,width:525,height:600,closeOnClick:false,layout:"border",resizable:false,closable:true,draggable:true,modal:true,items:c});e.show()};Ext.define("FT.picker.Date",{extend:"Ext.picker.Date",fullUpdate:function(c,d){var j=this,n=j.cells.elements,k=Ext.Date,e=0,m=k.getDaysInMonth(c),b=k.getFirstDateOfMonth(c),g=b.getDay()-j.startDay,a=k.add(c,k.MONTH,-1),l,h;if(g<0){g+=7}m+=g;l=k.getDaysInMonth(a)-g;h=new Date(a.getFullYear(),a.getMonth(),l,j.initHour);this.callParent(arguments);for(;e<j.numDays;++e){h.setDate(h.getDate()+1);this.fireEvent("beforecellrender",n[e],h)}},showPrevMonth:function(a){this.callParent(arguments);this.fireEvent("monthchange")},showNextMonth:function(a){this.callParent(arguments);this.fireEvent("monthchange")},showPrevYear:function(){this.callParent(arguments);this.fireEvent("monthchange")},showNextYear:function(){this.callParent(arguments);this.fireEvent("monthchange")},setValue:function(c){var a=this,b=a.activeDate;this.callParent(arguments);var d=a.activeDate;if(d.getMonth()!=b.getMonth()){this.fireEvent("monthchange")}}});Ext.define("FT.picker.Text",{extend:"Ext.form.field.Text",alias:"widget.ft-textpicker",baseCls:Ext.baseCSSPrefix+"datepicker",focusOnShow:true,emptyText:FT.i18n("Write a note..."),focusOnSelect:true,width:178,initComponent:function(){var a=this;this.callParent();a.value=a.value;a.addEvents("select")},onRender:function(b,a){this.callParent(arguments)},onSelect:function(){if(this.hideOnSelect){this.hide()}},onShow:function(){this.callParent(arguments);if(this.focusOnShow){this.focus(false,60)}}});Ext.define("FT.picker.Month",{extend:"Ext.form.field.Date",alias:"widget.monthfield",createPicker:function(){var a=this;return Ext.create("Ext.picker.Month",{floating:true,maxDate:a.maxValue,showButtons:false,listeners:{select:function(b,c){if(new Date(c[1],c[0],1)<=this.maxDate){a.onSelect(b,c)}else{FT.notifySuccess(FT.i18n("Please select a month that is before or equal to current month."))}}},keyNavConfig:{esc:function(){a.collapse()}}})},parseDate:function(a){if(!a||Ext.isDate(a)){return a}a+=" 01";return this.callParent(arguments)},onSelect:function(a,b){this.setValue(new Date(b[1],b[0],1));this.fireEvent("select",this,new Date(b[1],b[0],1))}});Ext.define("FT.form.field.RemoteEditor",{extend:"FT.ui.LabelEditor",alias:"widget.ft-remote-editor",queryMode:"remote",displayField:"name",valueField:"id",stacked:false,selectOnTab:false,multiSelect:true,minChars:0,queryParam:"queryString",criteria:null,initComponent:function(){this.storeConfig=Ext.Object.merge({fields:[],proxy:{type:"direct",directFn:this.directFn,reader:{type:"json",root:"data"}}},this.storeConfig||{});if(this.criteria){this.storeConfig.proxy.extraParams=Ext.value(this.storeConfig.proxy.extraParams,{});Ext.apply(this.storeConfig.proxy.extraParams,{criteria:this.criteria})}this.store=Ext.create("Ext.data.Store",this.storeConfig);if(this.value){this.delayedValue=this.value;this.store.on("load",function(){this.setValue(this.delayedValue);delete this.delayedValue},this,{single:true})}this.callParent(arguments)},getValue:function(){if(this.delayedValue){var a=this.delayedValue;if(Ext.isArray(a)&&this.submitType=="string"){return a.join(this.delimiter)}else{return a}}return this.callParent(arguments)}});Ext.define("FT.form.field.ResourceEditor",{extend:"Ext.form.field.Base",alias:"widget.ft-resource-editor",props:null,submitType:"string",delimiter:", ",initComponent:function(){this.callParent(arguments);this.on("afterrender",this._handleAfterRender,this)},hide:function(){this.callParent(arguments);this.resourceSelector.hide()},_handleAfterRender:function(){if(this.el.parent().hasCls("x-editor")){this.el.parent().setStyle({overflow:"visible"});this.el.hide()}else{this.el.parent().setStyle({overflow:"visible"})}if(this.props.groups||this.props.users){this.renderResourceSelector()}},_updateSelectorWidth:function(){if(this.el.parent().hasCls("x-editor")&&this.el.parent().hasCls("x-grid-editor")){var a=this.ownerCt.boundEl.getWidth();this.resourceSelector.setWidth(Math.max(a,200))}},renderResourceSelector:function(){if(this.resourceSelector||!this.rendered){return}var c=this.el.parent();var a=c.hasCls("x-editor");var d="";var b="";if(!a){c=this.el.down("input").el.parent();this.el.down("input").el.remove();this.inputEl=null}else{d="background-default"}this.resourceSelector=Ext.create("FT.spark.Component",{component:"ResourceSelector",renderTo:c,style:b,props:Ext.Object.merge({className:"ftrack-spark-root "+d,multi:true,messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onChange:Ext.bind(this._onChange,this)},this.props)});this.resourceSelector.el.down("input").on("blur",this._resourceSelectorBlur,this);this.resourceSelector.el.down("input").focus(1)},focus:function(){if(this.resourceSelector){this._updateSelectorWidth();this.resourceSelector.el.down("input").focus(1)}},_resourceSelectorBlur:function(){this.fireEvent("blur",this)},_onChange:function(b){this.setRawValue(b.join(this.delimiter));this.fireEvent("change",this,b);var a=this;Ext.Function.defer(function(){var c=a.resourceSelector.el.query(".ftrack-spark-root")[0];a.getEl().setHeight(c.clientHeight);a.doComponentLayout()},25)},isValid:function(){return true},updateProps:function(a){this.props=Ext.Object.merge(this.props||{},a);if(this.resourceSelector){this.resourceSelector.setProps(this.props)}},processRawValue:function(a){if(Ext.isArray(a)&&this.submitType=="string"){return a.join(this.delimiter)}else{if(Ext.isString(a)&&this.submitType=="array"){return a.split(this.delimiter)}else{return a}}},setValue:function(b){this.setRawValue(b);var a=b;if(Ext.isString(a)){a=a.split(this.delimiter)}this.updateProps({value:a})},editRecord:function(a){this.updateFromObjectType(a.get("object_typeid"))},updateFromObjectType:function(a){var b=a===FT.getMilestoneId()||a===FT.getTaskId();this.updateProps({groups:!b,users:b})},editId:function(a,d,c){var b=this;if(d=="task"&&c){b.updateProps({users:true});b.renderResourceSelector()}else{FT.api.query(Ext.String.format("select id from TypedContext where id is {0}",a),function(e){b.updateProps({users:true});b.renderResourceSelector()})}}});Ext.define("FT.form.field.ResourceEditorLegacy",{extend:"FT.form.field.RemoteEditor",alias:"widget.ft-resource-editor-legacy",directFn:"FTApi.Resource.query",queryMode:"local",autoLoad:false,initComponent:function(){var b=this,a;this.storeConfig={autoLoad:this.autoLoad,sorters:[{property:"resource_type",direction:"DESC"},{sorterFn:function(g,e){var d=Ext.pluck(g.get("link"),"name"),c=Ext.pluck(e.get("link"),"name");return d.join("/")>c.join("/")?1:-1}}],fields:["resource_type","id","link","group_id",{name:"name",convert:function(d,c){if(c.raw.resource_type=="user"){return c.raw.firstname+" "+c.raw.lastname}return d}}],proxy:{type:"direct",directFn:this.directFn,reader:{type:"json",root:"data",onMetaChange:Ext.emptyFn}},remoteSort:true};a=new Ext.XTemplate('<tpl for=".">',"{[this.getHeader(xindex, values)]}",'<div class="x-boundlist-item">',"{[this.getName(values)]}","</div>","</tpl>",{getName:function(d){var c=Ext.String.repeat("&#160;",(d.link.length-1)*2);if(d.resource_type=="group"&&Ext.isEmpty(d.group_id)===false){parent=b.store.findRecord("id",d.group_id);if(parent===null){return FTrack.grid.LinkRendererPrint(d.link)}}return c+d.link[d.link.length-1].name},getHeader:function(d,c){if(d===1){return}var e=b.store.getAt(d-2);if(e.get("resource_type")!==c.resource_type){return'<div class="x-menu-item-separator" style="width:100%">&#160;</div>'}}});Ext.apply(this,{labelTpl:"{[FTrack.grid.LinkRendererPrint(values.link)]}",listConfig:{tpl:a,minWidth:200}});delete this.autoLoad;this.callParent(arguments)},editRecord:function(a){this.loadStoreForContext({entityId:a.get("entityId"),entityType:a.get("entityType"),objectTypeId:a.get("object_typeid"),projectId:a.get("showid")})},editId:function(a,b){this.loadStoreForContext({entityId:a,entityType:b})},loadStoreForContext:function(a){this.store.load({params:{criteria:{allocationEntity:a}}})}});Ext.define("FT.form.field.EntitySelectorField",{extend:"Ext.form.field.Picker",alias:"widget.entityfield",cls:"ft-entityselector",triggerCls:"ft-form-trigger-wide",triggerWidth:23,editable:false,initComponent:function(){this.rawToValueMap={};this.addEvents(["select"]);this.callParent(arguments)},createPicker:function(){var a=this;return Ext.create("FT.tree.EntitySelector",{style:"background-color:white;",ownerCt:a.ownerCt,renderTo:document.body,floating:true,entity:this.getValue(),selectionTypes:this.selectionTypes,height:300,viewHeight:400,listeners:{entityselected:this.onEntitySelected,afterrender:function(c){var b=c.getView();if(b){b.refreshSize=Ext.emptyFn}},scope:this}})},onEntitySelected:function(c,b){var a={entityId:b.get("entityId"),entityType:b.get("entityType"),link:b.get("link"),object_typeid:b.get("object_typeid")};this.collapse();this.setValue(a);this.validate();this.fireEvent("select",this,Ext.clone(a))},valueToRaw:function(b){var a="";if(Ext.isObject(b)){if(!b.link){this.resolveValueToRaw(b)}if(b.link){a=FTrack.grid.LinkRendererPrint(b.link)}}this.rawToValueMap[a]=b;return a},rawToValue:function(a){var b=null;if(Ext.isDefined(this.rawToValueMap[a])){b=this.rawToValueMap[a]}return b},validator:function(){var a=this.getValue();if(this.selectionTypes&&this.selectionTypes.indexOf(a.object_typeid)==-1){return"Selection "+a.entityType+" is not valid."}return true},resolveValueToRaw:function(a){assert(a.entityId,"entityId is defined");assert(a.entityType,"entityTYpe is defined");Ext.Ajax.request({url:"/browse/getLink",params:{entity:Ext.encode(a)},success:function(b){this.setValue(Ext.decode(b.responseText).entity)},scope:this})}});Ext.define("FT.form.field.TextNumber",{extend:"Ext.form.field.Picker",alias:"widget.ft-textnumberfield",triggerCls:"ft-textnumber-trigger",triggerWrapCls:"ft-textnumber-wrapper",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,step:1,minText:FT.i18n("The minimum value for this field is")+" {0}",maxText:FT.i18n("The maximum value for this field is")+" {0}",nanText:"{0} "+FT.i18n("is not a valid number"),negativeText:FT.i18n("The value cannot be negative"),baseChars:"0123456789",autoStripChars:false,matchFieldWidth:false,enableKeyEvents:true,initComponent:function(){var a=this,b;a.callParent();a.setMinValue(a.minValue);a.setMaxValue(a.maxValue);if(a.disableKeyFilter!==true){b=a.baseChars+"";if(a.allowDecimals){b+=a.decimalSeparator}if(a.minValue<0){b+="-"}b=Ext.String.escapeRegex(b);a.maskRe=new RegExp("["+b+"]");if(a.autoStripChars){a.stripCharsRe=new RegExp("[^"+b+"]","gi")}}this.on("keydown",this.onSpecialKey,this)},autoSize:function(){this.setWidth(57)},reset:function(){this.notes=undefined;this.callParent(arguments)},rawToValue:function(b){b=FT.util.Format.timeToFloat(b);var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return{hours:a,notes:this.notes}},valueToRaw:function(d){if(!d){return d}var a=d.notes;d=d.hours;var c=this,b=c.decimalSeparator;d=c.parseValue(d);d=c.fixPrecision(d);d=Ext.isNumber(d)?d:parseFloat(String(d).replace(b,"."));d=isNaN(d)?"":String(d).replace(".",".");d=FT.util.Format.floatToTime(d);this.notes=a;return d},createPicker:function(){var a=this,b=Ext.String.format;return Ext.create("FT.picker.Text",{cls:"ft-textnumber-picker",pickerField:a,ownerCt:a.ownerCt,renderTo:document.body,floating:true,hidden:true,focusOnShow:true,border:0,fieldStyle:"border:none;",listeners:{scope:a,change:a.onPickerChange,specialkey:a.onPickerSpecialKey},keyNavConfig:{esc:function(){a.collapse()}}})},onPickerSpecialKey:function(b,a){if(a.getKey()==a.ENTER||a.getKey()==a.TAB||a.getKey()==a.ESC){a.stopEvent();a.stopPropagation();this.collapse()}},initEvents:function(){var a=this;a.callParent();a.keyNav.destroy();a.keyNav=Ext.create("Ext.util.KeyNav",a.inputEl,{esc:a.collapse,scope:a,forceKeyDown:true})},onSpecialKey:function(c,b,a){if(b.getKey()==b.UP){b.stopEvent();b.stopPropagation();this.onSpinUp()}if(b.getKey()==b.DOWN){b.stopEvent();b.stopPropagation();this.onSpinDown()}if(b.getKey()==32){b.stopEvent();b.stopPropagation();this.expand()}},setMinValue:function(a){this.minValue=Ext.Number.from(a,Number.NEGATIVE_INFINITY)},setMaxValue:function(a){this.maxValue=Ext.Number.from(a,Number.MAX_VALUE)},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?null:a},fixPrecision:function(d){var c=this,b=isNaN(d),a=c.decimalPrecision;if(b||!d){return b?"":d}else{if(!c.allowDecimals||a<=0){a=0}}return parseFloat(Ext.Number.toFixed(parseFloat(d),a))},onPickerChange:function(a,c){var b=this},onExpand:function(){var a=this.getValue();this.picker.setValue(this.notes)},onCollapse:function(){this.notes=this.picker.getValue();this.focus(false,60)},beforeBlur:function(){var b=this,a=b.focusTask;if(a){a.cancel()}},onSpinUp:function(){var b=this;if(!b.readOnly){var a=b.getValue().hours;a=Ext.Number.constrain(a+b.step,b.minValue,b.maxValue);b.setValue({hours:a,notes:this.notes})}},onSpinDown:function(){var b=this;if(!b.readOnly){var a=b.getValue().hours;a=Ext.Number.constrain(a-b.step,b.minValue,b.maxValue);b.setValue({hours:a,notes:this.notes})}}});Ext.define("FT.form.field.DynamicEnumerator",{extend:"FT.ui.LabelEditor",alias:"widget.ft-dynamicenumerator",queryCaching:false,queryMode:"remote",displayField:"name",valueField:"value",editable:false,loadWithoutRecord:false,params:null,initComponent:function(){this._delayedLoad=false;this.store=Ext.create("Ext.data.Store",{fields:["name","value"],proxy:{type:"eventhub",topic:"ftrack.dynamic-enumerator"}});this.store.on("beforeload",this._onBeforeLoad,this);this.callParent(arguments)},_translateVariableNames:function(c){var b=Ext.data.StoreManager.lookup("FT.store.CustomAttributes"),g={},e,a,d;Ext.iterate(c,function(h,j){d=h.replace("__","");a=b.findRecord("registerid",d,0,false,true,true);if(a){e=a.get("key");g[e]=j}else{g[h]=j}});return g},_onBeforeLoad:function(){if(!this.loadWithoutRecord&&!this._record){this._delayedLoad=true;return false}this.store.getProxy().extraParams=Ext.value(this.store.getProxy().extraParams,{});if(this.params){Ext.apply(this.store.getProxy().extraParams,this.params)}Ext.apply(this.store.getProxy().extraParams,{recordData:this.getRecordData()})},editRecord:function(a){this._record=a;if(a&&this._delayedLoad){this.store.load();this._delayedLoad=false}},getRecordData:function(){if(!this._record){return{}}var a={entity:null,changes:this._translateVariableNames(this._record.getChanges())};if(!this._record.phantom&&Ext.isFunction(this._record.getEntity)){a.entity=this._record.getEntity()}return a},setValue:function(d,a,c){var b;if(!this.valueStore){return}b=this.callParent([d,a,c])===false;if(b){this.value=d}}});Ext.define("FT.form.field.CheckboxList",{extend:"Ext.form.FieldContainer",alias:"widget.ft-checkboxlist",overflowY:"auto",options:null,value:null,displayField:"name",valueField:"value",singleSelection:false,initComponent:function(){this.value=Ext.value(this.value,[]);this.callParent(arguments);this.store.on("load",this._onLoad,this);if(this.store.getCount()){this._onLoad(this.store)}},getValue:function(){var a=[];this.items.each(function(b){if(b.isXType("checkboxfield")&&b.getValue()){a.push(b.name)}});return a},_onLoad:function(b){var d=this.value||[],c,a=[];b.each(function(e,g){c=Ext.widget({xtype:"checkboxfield",style:"white-space: nowrap;overflow: hidden;text-overflow: ellipsis;",boxLabelAttrTpl:'style="line-height:normal;"',boxLabel:e.get(this.displayField),name:e.get(this.valueField),checked:d.indexOf(e.get(this.valueField))!==-1,listeners:{change:this._onCheckboxChanged,scope:this}});a.push(c);if(c.checked){this.lastCheckedItem=c}},this);this.add(a)},_onCheckboxChanged:function(b,a){if(this.singleSelection&&this.lastCheckedItem&&this.lastCheckedItem!==b){this.lastCheckedItem.suspendEvent("change");this.lastCheckedItem.setValue(false);this.lastCheckedItem.resumeEvent("change")}this.lastCheckedItem=b;this.fireEvent("change",this,this.getValue())}});Ext.define("FT.form.ApiQueryTextArea",{extend:"Ext.form.FieldContainer",alias:"widget.ft-api-query-text-area",layout:{type:"vbox",align:"stretch"},entityType:undefined,delay:1000,value:undefined,initComponent:function(){this.items=[this.textArea=Ext.create("Ext.form.field.TextArea",{value:this.value,emptyText:"Type an api query here to filter...\nE.g. status.name is Normal"}),this.messageBox=Ext.create("Ext.Component")];this.callParent(arguments);this.textArea.on("change",this.remoteValidate,this,{buffer:this.delay})},setValue:function(a){this.textArea.setValue(a)},getValue:function(){return this.textArea.getValue()},reset:function(){this.setValue(this.value)},isValid:function(){return true},remoteValidate:function(a,g){var d,b=this,e,c=[];Ext.each(this.entityType.split(" "),function(h){c.push(h.capitalize())});e=c.join("");d=Ext.String.format("select id from {0} where {1} ",e,g);if(!g){b.messageBox.update("");b.fireEvent("change",b,"");return}FT.api.parseQuery(d,function(h){if(h.data===true){b.messageBox.update("");b.fireEvent("change",b,g)}else{b.messageBox.update(h.data)}})}});Ext.define("FT.form.RemoteValidation",{extend:"Ext.AbstractPlugin",init:function(a){this.fields=[];this.requestOut=0;this.onAddOrRemoveDelayed=new Ext.util.DelayedTask(this.onAddOrRemove,this);this.formPanel=a;this.originalValid=this.formPanel.getForm().isValid;this.formPanel.getForm().isValid=Ext.bind(this.isFormValid,this);this.formPanel.on({scope:this,add:Ext.bind(this.onAddOrRemoveDelayed.delay,this,[50]),remove:Ext.bind(this.onAddOrRemoveDelayed.delay,this,[50]),parentchanged:this.setParent})},onAddOrRemove:function(){this.unbindEvents();this.bindEvents()},isFormValid:function(){if(this.requestOut<1&&!this.validationDelayed){return this.originalValid.apply(this.formPanel.getForm(),arguments)}return false},unbindEvents:function(){Ext.each(this.fields,function(a){a.un("change",this.fieldChanged,this)},this);this.fields=[]},bindEvents:function(){this.formPanel.getForm().getFields().each(function(c,a,b){if(c.remoteValidation){c.on("change",this.fieldChanged,this);c.delayedValidation=new Ext.util.DelayedTask(this.remoteValidate,this,[c]);if(!Ext.isFunction(c.originalGetErrors)){c.originalGetErrors=c.getErrors;c.getErrors=Ext.bind(this.getErrors,c)}this.remoteValidate(c,false);this.fields.push(c)}},this)},fieldChanged:function(a){this.validationDelayed=true;a.delayedValidation.delay(150)},getErrors:function(){var a=this.originalGetErrors.apply(this,arguments);if(a.length>0){return a}return this.remoteErrors},clearEntity:function(){delete this.entity},setEntity:function(a){this.entity=a},clearParent:function(){delete this.parent},setParent:function(a){this.parent=a;this.validateAll(true)},remoteValidate:function(d,c){c=Ext.value(c,true);this.requestOut+=1;this.validationDelayed=false;var a=Ext.clone(d.remoteValidation);var e=a.params;var b=a.url;Ext.apply(e,{field:d.name,value:d.getValue()});if(this.entity){Ext.apply(e,{entityId:this.entity.entityId})}if(this.parent){Ext.apply(e,{parentId:this.parent.entityId})}Ext.Ajax.request({url:b,params:e,success:function(g){d.remoteErrors=Ext.decode(g.responseText);if(c){d.msgTarget="qtip";d.isValid()}},callback:function(){this.requestOut-=1},scope:this})},validateAll:function(a){a=Ext.value(a,false);this.formPanel.getForm().getFields().each(function(d,b,c){if(d.remoteValidation){this.remoteValidate(d,a)}},this)}});Ext.define("FT.form.plugin.AutoSyncForm",{alias:"plugin.auto-sync-form",extend:"Ext.AbstractPlugin",init:function(a){this.getForm=Ext.bind(a.getForm,a);this.getRecord=Ext.bind(a.getRecord,a);this.loadRecord=Ext.bind(a.loadRecord,a);this._attachFieldListeners();a.on("afterrender",this._onComponentAfterRender,this);Ext.Function.interceptAfter(a,"loadRecord",this.resetOriginalValues,this)},resetOriginalValues:function(){this.getForm().getFields().each(function(a){a.resetOriginalValue()})},saveRecordData:function(){var a=this.getRecord();this.getForm().updateRecord();if(a.dirty){a.save();this.resetOriginalValues()}},_attachFieldListeners:function(){this.getForm().getFields().each(function(a){a.on("blur",this.saveRecordData,this);if(a.getXType()==="textfield"){a.on("specialkey",function(c,b){if(b.getKey()==b.ENTER){c.blur()}},this)}},this)},_onComponentAfterRender:function(){if(this.getRecord()){this.loadRecord(this.getRecord())}}});Ext.define("FT.grid.column.Action",{extend:"Ext.grid.column.Action",alias:"widget.ft-actioncolumn",constructor:function(d){var h=this,b=Ext.apply({},d);this.callParent(arguments);var c=this.items,a=c.length,e,g;this.renderer=function(t,u,j,q,p,o,n){t=Ext.isFunction(b.renderer)?b.renderer.apply(this,arguments)||"":"";u.tdCls+=" "+Ext.baseCSSPrefix+"action-col-cell";var m=[];for(e=0;e<a;e++){g=c[e];g.disable=Ext.Function.bind(h.disableAction,h,[e]);g.enable=Ext.Function.bind(h.enableAction,h,[e]);var w=Ext.isDefined(g.inner)?g.inner:"";if(Ext.isDefined(g.innerRenderer)){var l=Ext.Array.toArray(arguments,1,arguments.length-1);Ext.Array.insert(l,0,[j.get(g.dataIndex)]);w=g.innerRenderer.apply(this,l)}var k=Ext.value(g.style,"")+Ext.value(b.style,"");var s=Ext.baseCSSPrefix+"action-col-icon "+Ext.baseCSSPrefix+"action-col-"+String(e)+" "+(g.disabled?Ext.baseCSSPrefix+"item-disabled":" ")+(g.iconCls||"")+" "+(Ext.isFunction(g.getClass)?g.getClass.apply(g.scope||h.scope||h,arguments):h.iconCls||"");if(Ext.isDefined(g.icon)){m.push('<img style="cursor:pointer;'+k+(j.get("entityType")=="group"?"display:none;":"")+'" alt="'+(g.altText||h.altText)+'" src="'+(g.icon||Ext.BLANK_IMAGE_URL)+'" class="'+s+'"'+(g.qtip?' data-qtip="'+g.qtip+'"':"")+">"+w+"</img>")}else{m.push('<span class="'+s+'" style="cursor:pointer;'+k+'" '+(g.tooltip?' data-qtip="'+g.qtip+'"':"")+">"+w+"</span>")}}return m.join('<div style="width:5px;display:inline-block;"></div>')}}});Ext.define("FT.grid.column.GlyphAction",{extend:"Ext.grid.column.Action",alias:["widget.glyphactioncolumn"],defaultRenderer:function(j,l,d,c,m,h,k){var t=this,o=Ext.baseCSSPrefix,b=t.origScope||t,n=t.items,q=n.length,p=0,s,u,e,g,a;u=Ext.isFunction(t.origRenderer)?t.origRenderer.apply(b,arguments)||"":"";l.tdCls+=" "+Ext.baseCSSPrefix+"action-col-cell";l.tdCls+=" glyph-action-col-cell";for(;p<q;p++){s=n[p];e=s.disabled||(s.isDisabled?s.isDisabled.call(s.scope||b,k,c,m,s,d):false);g=e?null:s.tooltip||(s.getTip?s.getTip.apply(s.scope||b,arguments):null);if(!s.hasActionConfiguration){s.stopSelection=t.stopSelection;s.disable=Ext.Function.bind(t.disableAction,t,[p],0);s.enable=Ext.Function.bind(t.enableAction,t,[p],0);s.hasActionConfiguration=true}a=o+"action-col-icon "+o+"action-col-"+String(p)+" "+(e?o+"item-disabled":" ")+" "+(Ext.isFunction(s.getClass)?s.getClass.apply(s.scope||b,arguments):s.iconCls||t.iconCls||"")+" icon--actioncolumn actionicon";u+=FT.glyphIcon(s.glyph,{size:20,cls:a})}return u}});Ext.define("FT.grid.HeaderContainer",{extend:"Ext.grid.header.Container",alternateClassName:"Ext.grid.PropertyColumnModel",nameWidth:100,nameText:FT.i18n("Name"),valueText:FT.i18n("Value"),dateFormat:"Y/m/d",trueText:FT.i18n("true"),falseText:FT.i18n("false"),nameColumnCls:Ext.baseCSSPrefix+"grid-property-name",constructor:function(d,a){var e=this;e.grid=d;e.store=a;var c=[{header:e.nameText,sortable:false,dataIndex:d.nameField,renderer:Ext.Function.bind(e.renderProp,e),itemId:d.nameField,menuDisabled:true,flex:1}];if(Ext.isDefined(d.columns)){Ext.Array.insert(c,1,d.columns)}else{c.push({header:e.valueText,renderer:Ext.Function.bind(e.renderCell,e),getEditor:Ext.Function.bind(e.getCellEditor,e),flex:2,fixed:true,dataIndex:d.valueField,itemId:d.valueField,menuDisabled:true})}for(var b=0;b<c.length;b++){c[b].menuDisabled=true;c[b].sortable=false}e.callParent([{items:c}])},getCellEditor:function(a){return this.grid.getCellEditor(a,this)},renderProp:function(a,c,d){var b=[];if(d.get("bold")){b.push("font-weight:bold")}b.push("font-size:"+d.get("size"));b.push("color: #"+d.get("color"));return"<span style='"+b.join(";")+"'>"+this.getPropertyName(a)+"</span>"},renderCell:function(val,meta,rec){var me=this,renderer=me.grid.customRenderers[rec.get(me.grid.nameField)],result=val;if(rec.get("xtype")=="combobox"){var editor=this.grid.getCellEditor(rec,0,true);var idx=editor.field.store.find("id",result);if(idx!=-1){var test=editor.field.store.getAt(idx);result=test.get("name")}else{result="Invalid value"}}if(rec.get("variableRecord").get("renderer")!=""){renderer=eval(rec.get("variableRecord").get("renderer"))}if(renderer){return renderer.apply(me,arguments)}if(Ext.isDate(val)){result=me.renderDate(val,"Y-m-d")}if(rec.get("xtype")=="textarea"){if(Ext.isString(result)){try{result=result.replace(/\n/g,"<br>")}catch(e){log("Error when convering string in attributes widget...")}}result='<div class="ft-reset">'+result+"</div>"}else{result=Ext.util.Format.htmlEncode(result)}return"<span style='font-size:"+rec.get("size")+"'>"+result+"</span>"},renderDate:Ext.util.Format.date,renderBool:function(a){return this[a?"trueText":"falseText"]},getPropertyName:function(b){var a=this.grid.propertyNames;return a&&a[b]?a[b]:b}});Ext.define("FT.grid.PropertyGrid",{extend:"Ext.grid.Panel",alias:"widget.propertygrid",alternateClassName:"Ext.grid.PropertyGrid",uses:["Ext.grid.plugin.CellEditing","Ext.grid.property.Store","Ext.grid.property.HeaderContainer","Ext.XTemplate","Ext.grid.CellEditor","Ext.form.field.Date","Ext.form.field.Text","Ext.form.field.Number"],valueField:"value",nameField:"name",enableColumnMove:false,columnLines:true,stripeRows:true,trackMouseOver:false,clicksToEdit:2,enableHdMenu:false,header:false,hideHeaders:true,initComponent:function(){var a=this;a.plugins=a.plugins||[];if(!Ext.isDefined(a.columns)){a.plugins.push(Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:a.clicksToEdit,listeners:{beforeedit:function(){this.fireEvent("editItems");return false},scope:this},startEdit:function(b,c){return this.self.prototype.startEdit.call(this,b,a.headerCt.child("#"+a.valueField))}}))}else{a.plugins.push(Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:a.clicksToEdit}))}a.customRenderers=a.customRenderers||{};a.customEditors=a.customEditors||{};if(!a.store){a.propStore=a.store=Ext.create("Ext.grid.property.Store",a,a.source)}a.columns=Ext.create("FT.grid.HeaderContainer",a,a.store);a.addEvents("beforepropertychange","propertychange","valuechanged");a.callParent();a.getView().walkCells=this.walkCells;a.editors={date:Ext.create("Ext.grid.CellEditor",{field:Ext.create("Ext.form.field.Date",{selectOnFocus:true})}),string:Ext.create("Ext.grid.CellEditor",{field:Ext.create("Ext.form.field.TextArea",{selectOnFocus:true})}),number:Ext.create("Ext.grid.CellEditor",{field:Ext.create("Ext.form.field.Number",{selectOnFocus:true})}),"boolean":Ext.create("Ext.grid.CellEditor",{field:Ext.create("Ext.form.field.ComboBox",{editable:false,store:[[true,a.headerCt.trueText],[false,a.headerCt.falseText]]})})};a.store.on("update",a.onUpdate,a)},onUpdate:function(d,a,c){var g=this,b,e;if(c==Ext.data.Model.EDIT){b=a.get(g.valueField);e=a.modified.value;if(g.fireEvent("beforepropertychange",g.source,a.getId(),b,e)!==false){if(g.source){g.source[a.getId()]=b}a.commit();g.fireEvent("propertychange",g.source,a.getId(),b,e);g.fireEvent("valuechanged",a)}else{a.reject()}}},walkCells:function(h,g,d,c,a,b){if(g=="left"){g="up"}else{if(g=="right"){g="down"}}h=Ext.view.Table.prototype.walkCells.call(this,h,g,d,c,a,b);if(!h.column){h.column=1}return h},getCellEditorIfEditable:function(a,b){if(!a.get("variableRecord").get("editable")){return false}return this.getCellEditor(a,b)},getCellEditor:function(h,e,a){if(!Ext.isDefined(a)&&!h.get("variableRecord").get("editable")){return false}var k=this,g=h.get(k.nameField),c=h.get(k.valueField),j=k.customEditors[g];if(!Ext.isDefined(j)){var d=h.get("xtype");var b=Ext.decode(h.get("variableRecord").get("config"));j=k.customEditors[g]=Ext.create("Ext.grid.CellEditor",{field:Ext.widget(d,b)})}j.editorId=g;return j},beforeDestroy:function(){var a=this;a.callParent();a.destroyEditors(a.editors);a.destroyEditors(a.customEditors);delete a.source},destroyEditors:function(b){for(var a in b){if(b.hasOwnProperty(a)){Ext.destroy(b[a])}}},setSource:function(a){this.source=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.define("FT.Field",{extend:"Ext.data.Model",fields:[{name:"id",type:"string"},{name:"name",type:"string"},{name:"value",type:"auto"},{name:"bold",type:"bool"},{name:"size",type:"int"},{name:"sort",type:"int"},{name:"color",type:"string"},{name:"config",type:"string"},{name:"xtype",type:"string"},{name:"variableRecord",type:"auto"},{name:"configurerRecord",type:"auto"}],idProperty:"id"});Ext.define("Variables",{extend:"Ext.data.Model",fields:[{name:"registerid",type:"string"},{name:"key",type:"string"},{name:"value",type:"auto"},{name:"entityid",type:"string"},{name:"xtype",type:"string"},{name:"config",type:"string"},{name:"editable",type:"bool"},{name:"renderer",type:"string"},{name:"group",type:"string",defaultValue:"General"}]});Ext.define("FT.FieldsGrid",{extend:"Ext.container.Container",isEditMode:false,initComponent:function(){this.grids=[];log("##################3");log(this.entity);this.fieldsConfigurer=Ext.create("FT.grid.RemoteGridConfigureColumns",{padding:10,enableCreate:false,title:FT.i18n("Add/Remove Attributes"),onEntityType:this.entity.objectType,entity:this.entity,fields:["id","key","ftype","data","group"]});this.columnsButton=this.fieldsConfigurer.getButton();this.fieldsConfigurer.on("createdField",function(){this.variablesStore.load()},this);this.fieldsConfigurer.on("selectionchanged",function(){this.updateGrids()},this);this.viewStore=Ext.data.StoreManager.lookup("FT.store.AttributesGrid");this.variablesStore=Ext.create("Ext.data.Store",{mySync:function(b){if(Ext.isObject(b)){this.on("write",function(d,c){if(Ext.isDefined(b.scope)){b.callback.call(b.scope)}else{b.callback.call(this)}d.un("write",b.callback)},this,{single:true})}this.sync()},model:"Variables",proxy:{type:"batch",url:"/batch/get",reader:{type:"json",root:"items"},extraParams:{entityId:this.entity.entityId,entityType:this.entity.entityType,method:"getVariables"}},sorters:[{property:"key",direction:"ASC"}],autoLoad:false});this.variablesStore.on("load",function(c){var e=[];c.each(function(l){e.push({id:l.get("registerid"),key:l.get("key"),data:{column:0,sort:0,record:l,bold:1,size:12,color:"000000"}})},this);this.isCustomLayout=false;var k=this.variablesStore.proxy.reader.jsonData.showid;var g=this.entity.objectType;if(g=="assetversion"){g="asset_version"}var j=null;this.viewStore.each(function(l){if(l.get("type")==g&&l.get("showid")=="default"){j=l}},this);this.viewStore.each(function(l){if(l.get("type")==g&&l.get("showid")==k){j=l;this.isCustomLayout=true;if(Ext.isDefined(this.saveAsDefaultButton)){this.saveAsDefaultButton.setDisabled(true)}}},this);var d=1;var b=[];if(j){b=j.get("fields")}this.numberOfColumns=d;this.fieldsConfigurer.update(e,b);if(this.isEditMode){if(this.grids.length){this.updateGrids()}else{this.createGrids()}}else{this.updateAttributesStore()}var h=c.getProxy().getReader().jsonData.title;this.fireEvent("changeTitle",h,this)},this);var a={items:[],layout:"auto"};if(this.isEditMode){this.saveAsDefaultButton=Ext.create("Ext.button.Button",{xtype:"button",cls:"ftrack-button-blue",text:FT.i18n("Save as default"),handler:function(){this.saveData("default")},scope:this});a={cls:"ftrack-tab-bar",items:[],tbar:[this.columnsButton],dockedItems:Ext.create("Ext.toolbar.Toolbar",{dock:"bottom",style:{marginTop:5},items:[{xtype:"button",cls:"ftrack-button-grey",text:FT.i18n("Cancel"),handler:function(){this.parentWidget.createFields(!this.isEditMode)},scope:this}," ","-"," ",{xtype:"button",cls:"ftrack-button-blue",text:FT.i18n("Save for this project"),handler:this.saveAll,style:{marginRight:5},scope:this},this.saveAsDefaultButton]})};this.gridsPanel=Ext.create("Ext.panel.Panel",a)}else{this.gridsPanel=this.getAttributesView()}this.items=this.gridsPanel;this.callParent();this.variablesStore.load()},setEntity:function(a){this.entity=a;this.variablesStore.getProxy().extraParams.entityId=this.entity.entityId;this.variablesStore.getProxy().extraParams.entityType=this.entity.entityType;this.variablesStore.load()},getAttributesView:function(){this.attributesStore=Ext.create("Ext.data.Store",{fields:["name","value","color",{name:"sort",type:"int"},"bold","size","group"],sorters:[{property:"sort",direction:"ASC"}]});var c=new Ext.XTemplate('<table class="ft-attributes-widget">','<tpl for=".">','<tr{[(xindex == xcount) ? "" : " style=\'border-bottom:1px solid #eee;\'"]}>','<td class="ft-attributes-widget-left-col"><span style="color:#{color};font-size:{size}px;{[values.bold ? "font-weight:bold;" : ""]}">{name}:</span></td>','<td class="ft-attributes-widget-right-col">{value}</td>',"</tr>","</tpl>","</table>");var b=Ext.create("Ext.view.View",{store:this.attributesStore,tpl:c,emptyText:FT.i18n("No attributes selected")});this.groupToolbar=Ext.create("Ext.toolbar.Toolbar",{items:[],padding:"5 5 5 5",enableOverflow:true,style:"background-color:#EDEDED;"});var a={tbar:this.groupToolbar,items:[b]};return a},updateAttributesStore:function(){var records=[];var newRecords=[];var groups=[];Ext.each(this.fieldsConfigurer.getSelectedRecords(),function(item){var r=item.get("data").record;var renderer=eval(r.get("renderer"));var value=r.get("value");if(renderer){value=renderer(value)}newRecords.push({name:r.get("key"),value:value,sort:item.get("data").sort,bold:item.get("data").bold,size:item.get("data").size,color:item.get("data").color.replace("#","").replace("00aa00","000000"),group:r.get("group")});groups.push(r.get("group"))},this);var tbarItems=[];groups=Ext.Array.unique(groups);groups=Ext.Array.sort(groups,function(a,b){if(a=="General"){return -1}if(b=="General"){return 1}return a>b?1:-1});Ext.each(groups,function(g,idx){if(idx==0){this.filterByGroup(g)}var group={text:g,enableToggle:true,pressed:idx==0,cls:"ft-quick-filter-btns",toggleGroup:"quick-filter",handler:this.filterHandler,scope:this};tbarItems.push(group)},this);this.groupToolbar.removeAll();this.groupToolbar.add(tbarItems);this.attributesStore.loadData(newRecords)},filterHandler:function(a){var c=a.text;var b=a.pressed||a.checked;if(b){this.filterByGroup(c)}else{this.attributesStore.clearFilter(true);this.attributesStore.sort("sort","ASC")}},filterByGroup:function(a){this.attributesStore.clearFilter(true);this.attributesStore.filter("group",a);this.attributesStore.sort("sort","ASC")},createGrids:function(){var e={sorterFn:function(h,g){return h.get("data").sort<g.get("data").sort?-1:1}};this.grids=[];var c=[];for(var b=0;b<this.numberOfColumns;b++){var a=this.createColumnGrid();this.grids.push(a);a.columnWidth=1/this.numberOfColumns;c.push(a)}Ext.each(this.gridsPanel.items.items,function(g){g.suspendLayout=true},this);this.gridsPanel.removeAll(true);Ext.each(this.gridsPanel.items.items,function(g){g.suspendLayout=false},this);this.updateGrids();if(this.isEditMode){Ext.each(c,function(g){if(g.items.items[0].store.count()==0){g.items.items[0].height=50}},this);this.gridsPanel.add(c)}else{var d=[];Ext.each(c,function(g){if(g.items.items[0].store.count()>0){d.push(g)}},this);Ext.each(d,function(g){g.columnWidth=1/d.length},this);this.gridsPanel.add(d)}},getRecordsForIndex:function(d){var b=[];var c=this.fieldsConfigurer.getSelectedRecords();function a(g,e){return g.get("data").sort-e.get("data").sort}c.sort(a);Ext.each(c,function(g){var e=g.get("data").column>=this.numberOfColumns?this.numberOfColumns-1:g.get("data").column;if(e==d){b.push(g)}},this);return b},updateGrids:function(){for(var c=0;c<this.grids.length;c++){var b=this.grids[c];var a=this.getRecordsForIndex(c);var d=[];Ext.each(a,function(g){var e=g.get("data").record;var h=e.get("value");if(e.get("xtype")=="ft-datefield"){h=Ext.Date.parse(h,"Y-m-d H:i:s")}var j={id:e.get("registerid"),name:e.get("key"),value:h,xtype:e.get("xtype"),config:e.get("config"),variableRecord:e,configurerRecord:g,sort:g.get("data").sort,bold:g.get("data").bold,size:g.get("data").size,color:g.get("data").color.replace("#","").replace("00aa00","000000")};d.push(j)},this);b.getStore().loadData(d)}},saveAll:function(){this.saveData()},updateSortAndColumns:function(){var a=0;Ext.each(this.grids,function(c){var b=0;c.getStore().each(function(d){var e=d.get("configurerRecord").get("data");e.column=a;e.sort=b;e.bold=d.get("bold");e.size=d.get("size");e.color=d.get("color");d.get("configurerRecord").set("data",e);b+=1});a+=1},this)},saveData:function(a,d){if(!Ext.isDefined(a)){a=this.variablesStore.proxy.reader.jsonData.showid}if(!Ext.isDefined(d)){d=false}var c=[];this.updateSortAndColumns();Ext.each(this.fieldsConfigurer.getSelectedRecords(),function(g){var h={id:g.get("id"),data:{column:g.get("data").column,sort:g.get("data").sort,bold:g.get("data").bold,size:g.get("data").size,color:g.get("data").color}};c.push(h)},this);var e=null;var b=this.entity.objectType;if(b=="assetversion"){b="asset_version"}this.viewStore.each(function(g){if(g.get("type")==b&&g.get("showid")==a){e=g}},this);if(e!=null){e.set("fields",c);e.set("columns",this.numberOfColumns)}else{this.viewStore.insert(0,{fields:c,columns:this.numberOfColumns,showid:a,type:b})}this.viewStore.sync({callback:function(){this.parentWidget.createFields(!this.isEditMode);FT.notifySuccess(FT.i18n("The layout was saved"))},scope:this})},createColumnGrid:function(){var a=Ext.create("Ext.data.Store",{model:"FT.Field",data:[]});var c={padding:5,columns:[{header:"Size",dataIndex:"size",field:{xtype:"numberfield",allowBlank:false,minValue:9,maxValue:50,beforestartedit:function(){}},width:50},{header:"Bold",dataIndex:"bold",xtype:"checkcolumn",width:35},{header:"Color",dataIndex:"color",editor:"colorfield",renderer:function(e){return"<table style='height: 100%; font-size:12;width:100%; background-color:#"+e+";color:#"+FT.util.hexInverse(e)+"'><tr><td>"+e+"</td></tr></table>";return e}}],viewConfig:{selectedItemCls:"blaha",emptyText:FT.i18n("No attributes selected"),plugins:{ptype:"gridviewdragdrop"},listeners:{drop:function(g,h,j,e){},scope:this}},hideHeaders:false,store:a,listeners:{valuechanged:function(e){e.get("variableRecord").set("value",e.get("value"));this.updateSortAndColumns()},scope:this}};var d={padding:5,disableSelection:true,viewConfig:{selectedItemCls:"blaha",trackOver:false},hideHeaders:true,store:a,listeners:{editItems:function(){FT.editCurrent()},valuechanged:function(e){var h=this.variablesStore.getAt(this.variablesStore.find("registerid",e.get("id")));var j=e.get("value");if(Ext.isDate(j)){j=Ext.Date.format(j,"Y-m-d H:i:s")}this.variablesStore.each(function(k){k.commit()});var g=h.get("value");if(g!=j){h.set("value",j);Ext.Ajax.request({url:"/track/setVariables",params:{entityId:this.variablesStore.getProxy().extraParams.entityId,entityType:this.variablesStore.getProxy().extraParams.entityType,data:Ext.encode([{entityid:h.get("entityid"),value:h.get("value"),registerid:h.get("registerid")}]),pushToken:this.pushToken},success:function(k){var l=k.responseText;FT.notifySuccess(FT.i18n("The attribute was saved"));this.variablesStore.load()},scope:this})}},scope:this}};var b=Ext.create("FT.grid.PropertyGrid",this.isEditMode?c:d);return b}});Ext.define("FT.selection.RowModel",{extend:"Ext.selection.RowModel",doDelayedSelect:function(c,b,a){if(!this.deselectTask){this.deselectTask=new Ext.util.DelayedTask(function(g,e,d){this.doSelect(g,e,d)},this);this.view.on("itemdblclick",function(){this.deselectTask.cancel()},this)}this.deselectTask.delay(250,this.doSelect,this,[c,b,a])},selectWithEvent:function(a,g,d){var c=this,b=c.isSelected(a);switch(c.selectionMode){case"MULTI":if(g.shiftKey&&c.selectionStart){c.selectRange(c.selectionStart,a,g.ctrlKey)}else{if(g.ctrlKey&&b){c.doDeselect(a,false)}else{if(g.ctrlKey){c.doSelect(a,true,false)}else{if(b&&!g.shiftKey&&!g.ctrlKey&&c.selected.getCount()>1){c.doDelayedSelect(a,d,false)}else{if(!b){c.doSelect(a,false)}}}}}break;case"SIMPLE":if(b){c.doDeselect(a)}else{c.doSelect(a,true)}break;case"SINGLE":if(c.allowDeselect&&b){c.doDeselect(a)}else{c.doSelect(a,false)}break}if(!g.shiftKey){if(c.isSelected(a)){c.selectionStart=a}else{c.selectionStart=null}}}});Ext.ns("FT.clip");Ext.define("FT.grid.RemoteGrid",{extend:"Ext.panel.Panel",alias:"widget.remotegrid",deferUpdate:false,groupField:null,noGroup:"cb459356-a06a-480f-931a-035cde8b4ecc",compactMode:false,mode:"grid",thumbSize:95,layout:{type:"border"},pageSize:50,configured:false,layoutAfterLoad:false,edit:false,groupable:true,statics:{clipboard:{},addedCSS:false},initComponent:function(){this.listHelper.on("selectlist",this.onSelectList,this);if(FT.grid.RemoteGrid.addedCSS===false&&this.contentType=="shot"){var c=Ext.data.StoreManager.lookup("FT.store.TaskType");var g="";c.each(function(n,k,m){var l=n.get("color");var j=Ext.draw.Color.fromString(n.get("color"));var p="border-left:1px solid "+l+" !important;";var q="border-right:1px solid "+l+" !important;";var o="background-color: "+l+" !important;";g+=".ft-grid-tasktype-"+n.get("typeid")+".bg {"+o+"}";g+=".ft-grid-tasktype-"+n.get("typeid")+".left {"+p+"}";g+=".ft-grid-tasktype-"+n.get("typeid")+".right {"+q+"}";g+=".ft-grid-tasktype-"+n.get("typeid")+".left.right {"+q+p+"}"},this);Ext.util.CSS.createStyleSheet(g);FT.grid.RemoteGrid.addedCss=true}this.tbar=Ext.value(this.tbar,[]);this.thumbSlider=Ext.widget("slider",{groupId:"slider",width:200,fieldLabel:FT.i18n("Thumbnail size"),labelWidth:90,margin:"0 8 0 17",value:100,increment:1,minValue:50,maxValue:200,listeners:{changecomplete:function(j,k){this.updateThumbnailSize(k)},scope:this}});if(!this.compactMode){this.bbar=this.pager=Ext.create("Ext.PagingToolbar",{displayInfo:true,hidden:false});this.bbar.add([{xtype:"combo",value:this.getPageSize(),forceSelection:true,margin:"0 8 0 25",width:175,fieldLabel:FT.i18n("Number of items"),editable:false,store:{fields:["name","value"],data:[{name:"50",value:50},{name:"100",value:100},{name:"150",value:150},{name:"200",value:200},{name:"250",value:250}]},displayField:"name",valueField:"value",listeners:{select:function(j){if(this.store){this.setPageSize(j.getValue());this.store.pageSize=this.getPageSize();this.store.load()}},scope:this}},this.thumbSlider])}else{this.bbar=this.pager=Ext.widget("morepager",{extraItems:["->",this.thumbSlider]})}Ext.Array.insert(this.tbar,0,["->",{xtype:"button",glyph:FT.glyph("grid"),belongsToGroup:"mode",enableToggle:true,groupId:"mode",itemId:"grid",hidden:this.compactMode,toggleGroup:"ft-grid-style"+this.id,allowDepress:false,pressed:this.mode=="grid",qtip:FT.tip("shots-toolbar-viewbutton-grid"),handler:Ext.bind(this.changeMode,this,["grid"]),scope:this},{xtype:"button",glyph:FT.glyph("thumbs"),belongsToGroup:"mode",enableToggle:true,groupId:"mode",itemId:"thumb",allowDepress:false,hidden:this.compactMode,toggleGroup:"ft-grid-style"+this.id,pressed:this.mode=="thumb",qtip:FT.tip("shots-toolbar-viewbutton-thumb"),handler:Ext.bind(this.changeMode,this,["thumb"]),scope:this},{xtype:"tbspacer",hidden:this.compactMode,width:10}]);if(this.groupable){this.groupCombo=Ext.create("FT.button.Selector",{cls:"ftrack-toolbarbutton-grey",itemType:"radio",groupId:"group",hidden:this.compactMode,sortItems:true,store:{fields:["text","dataIndex","group"],mode:"local",proxy:{type:"memory",reader:{type:"json"}}},text:FT.i18n("Group"),displayField:"text",valueField:"dataIndex"})}this.sortCombo=Ext.create("FT.button.Selector",{groupId:"sort",text:FT.i18n("Sort"),itemType:"radio",sortItems:true,listeners:{select:this.onSort,scope:this},hidden:this.compactMode,store:{fields:["text","dataIndex","group"],mode:"local",proxy:{type:"memory",reader:{type:"json"}}},displayField:"text",valueField:"dataIndex",qtip:"",beforeItems:[this.sortAscDesc=Ext.widget("menucheckitem",{groupId:"sort",handler:this.onSort,hidden:this.compactMode,text:FT.i18n("Reverse"),enableToggle:true,scope:this,qtip:""}),"-"]});if(this.groupable){this.groupCombo.on("select",function(m,k){var j=k[0];var l=j.get("dataIndex");this.groupField=l!=this.noGroup?l:false;this.state=this.getState();this.doReconfigure()},this)}this.tbar=Ext.widget("toolbar",{defaultButtonUI:"plain-toolbar",cls:"border-bottom",itemId:"toptoolbar",items:this.tbar});this.tbarRef=this.tbar;this.on("thumbnailsizechanged",function(){if(Ext.isDefined(this.grid)){this.grid.forceNewScrollsbars=true;this.grid.determineScrollbars();this.grid.getView().refresh()}else{this.doLayout();this.masterView.refresh()}},this);var b={asset:"AssetVersionFilters",task:"TaskFilters",shot:"ShotFilters"};var a=this.getQuickFilters(this.contentType);var h=Ext.data.StoreManager.lookup("FT.store."+b[this.contentType]);var e=Ext.create("FT.button.Selector",{ui:"default",displayField:"name",valueField:"name",border:false,itemType:"radio",glyph:FT.glyph("configure"),disableIfEmpty:false,emptyText:FT.i18n("No saved filters"),store:h,selectHandler:function(k,j){this.loadSerializedFilters(Ext.decode(j.get("value")),false)},scope:this});var d=[];if(h.getCount()){d=[{text:FT.i18n("Saved filters (legacy)"),menu:e.menu}]}this.availableFilters=Ext.create("FT.newfilters.AvailableStore");this.filterPanel=Ext.create("FT.newfilters.AdvancedFilterPanel",{region:"east",hidden:true,split:true,minWidth:250,width:300,weight:30,overflowY:"auto",defaultFilters:[{field:"highest"},{field:"assettypename"},{field:"statusid"},{field:"tasktypeid"}],tools:[{xtype:"ft-add-filter-tool"},{xtype:"ft-autoupdate-filter-tool",itemId:"autoupdate-filter-button",stateId:"remotegrid-"+this.contentType},"->",{xtype:"ft-configure-filter-tool",menuItems:d}],availableStore:this.availableFilters});this.filterBar=Ext.create("Ext.Container",{region:"north",layout:"hbox",padding:5,items:[this.searchField=Ext.create("FT.newfilters.SearchField",{tooltip:"Type to filter on "+FT.getFreeFilterText(this.contentType),listeners:{"filter-changed":this._onSearchChanged,scope:this}}),{xtype:"component",flex:1},{xtype:"ft-configure-filter-button",filterPanel:this.filterPanel,handler:function(){if(this.filterPanel.isVisible(true)){this.filterPanel.hide()}else{this.filterPanel.show()}},scope:this}]});this.items=[this.filterBar,this.filterPanel];this._autoUpdateButton=this.filterPanel.down("#autoupdate-filter-button");this._autoUpdateButton.on("apply-filters",this.applyFilters,this);this.callParent();this.on({scope:this,ftdatachanged:this.onFtDataChanged});this.setEditCls(this.edit);this.filterPanel.on("filterschanged",this._onFilterChanged,this,{buffer:500})},_onFilterChanged:function(){if(this._autoUpdateButton.isAutoUpdateEnabled()){this.applyFilters()}},_onSearchChanged:function(){Ext.apply(this.store.getProxy().extraParams,{filterField:this.searchField.getValue()});this.store.loadPage(1)},applyFilters:function(){Ext.apply(this.store.getProxy().extraParams,{filter:Ext.encode(this.filterPanel.getMetafilters())});this.store.loadPage(1)},save:function(){this.undoRedoHelper.syncChanges()},undo:function(){this.undoRedoHelper.undo()},redo:function(){this.undoRedoHelper.redo()},onSort:function(){var a=this.sortAscDesc.checked?"ASC":"DESC";var b=this.sortCombo.getValue();this.store.sort([{property:b,direction:a}]);if(Ext.isDefined(this.grid)){Ext.each(this.grid.columns,function(g,d,e){if(g.dataIndex==b){g.setSortState(a)}else{g.setSortState(null,false)}},this)}},createEditTools:function(){if(this._isCreatedEditTools){return}var e=this.getDockedComponent("toptoolbar");var g=[];var d,a,c;g=g.concat([d=Ext.widget("ftrack-button",{glyph:FT.glyph("save"),qtip:"",itemId:"save",groupId:"edit",hidden:true,handler:function(){this.save()},scope:this}),a=Ext.widget("ftrack-button",{glyph:FT.glyph("undo"),qtip:FT.tip("toolbar-button-icononly-undo"),groupId:"edit",hidden:true,handler:function(){this.undo()},scope:this}),c=Ext.widget("ftrack-button",{glyph:FT.glyph("redo"),qtip:FT.tip("toolbar-button-icononly-redo"),groupId:"edit",hidden:true,handler:function(){this.redo()},scope:this}),{xtype:"ftrack-button",glyph:FT.glyph("delete"),qtip:FT.tip("toolbar-button-icononly-remove"),groupId:"edit",hidden:true,cls:"toolbarActionButton",handler:function(j){var h=this.grid.getSelectionModel();this.undoRedoHelper.remove(h.selected.items)},scope:this}]);var b=Ext.create("FT.data.UndoRedoButtonInteraction",{buttons:{save:d,undo:a,redo:c},undoRedoHelper:this.undoRedoHelper});if(this.contentType!="asset"){Ext.Array.insert(g,0,[{xtype:"button",text:FT.i18n("Create"),itemId:"new",groupId:"edit",hidden:true,cls:"button-primary",handler:function(h){FT.util.resolvePath(this.ftData,function(j){var k=j[0].id;this.undoRedoHelper.add({showid:k,link:Ext.clone(j),parent_id:this.ftData.entityId})},this)},scope:this}]);g=g.concat([{xtype:"tbspacer",width:20},{xtype:"ftrack-button",icon:"copy",qtip:FT.tip("toolbar-button-icononly-copy"),groupId:"edit",hidden:true,cls:"toolbarActionButton",handler:function(k){var h=this.grid.getSelectionModel();var j=[];h.selected.each(function(n,l,m){var o=Ext.isEmpty(n.get("entityId"))?Ext.clone(n.data):n.getChanges();o.entityId=n.get("entityId");o.entityType=n.get("entityType");j.push(Ext.clone(o))},this);FT.grid.RemoteGrid.clipboard[this.contentType]=j},scope:this},{xtype:"ftrack-button",icon:"paste",qtip:FT.tip("toolbar-button-icononly-paste"),groupId:"edit",itemId:"paste",hidden:true,cls:"toolbarActionButton",handler:function(j){var h=[];FT.util.resolvePath(this.ftData,function(k){Ext.each(FT.grid.RemoteGrid.clipboard[this.contentType],function(o,l,n){var m=Ext.clone(o);m.link=Ext.clone(k);m.parent_id=this.ftData.entityId;h.push(m)},this);this.undoRedoHelper.paste(h)},this)},scope:this},{xtype:"ftrack-button",icon:"import",text:FT.i18n("Import"),qtip:FT.tip("toolbar-button-icononly-import"),cls:"toolbarActionButton",handler:function(){return Ext.create("FT.ModalWindow",{width:1024,height:768,autoShow:true,layout:"fit",items:Ext.create("FT.wizard.Panel",{data:Ext.clone(this.ftData),firstCard:"FT.wizard.card.ImportSelector"})})},scope:this}])}e.insert(0,g);this._isCreatedEditTools=true},getConfigureButtons:function(){return[this.groupCombo,this.sortCombo]},onItemContextMenu:function(b,a,g,c,h,d){h.preventDefault();var j=this.getContextMenu();j.showAt(h.xy[0],h.xy[1])},getContextMenu:function(){var a=this;if(!this.contextMenu){this.contextMenu=Ext.create("Ext.menu.Menu",{items:[this.listHelper.createEntityMenuItem()],pluginInfo:{contentType:this.contentType}});this.contextMenu.add(FT.plugin.Manager.getMenus(this.contextMenu))}return this.contextMenu},bindContextMenu:function(a){var b=this.getContextMenu();Ext.apply(this.contextMenu.pluginInfo,{grid:a})},createGrid:function(cfg,state){var gridCfg={region:"center",margin:"10 10 0 10",columnLines:false,simpleSelect:false,multiSelect:true,listeners:{sortchange:function(ct,column){if(this.sortCombo){this.sortCombo.select(column.dataIndex)}},itemcontextmenu:this.onItemContextMenu,scope:this}};var selModel=Ext.create("FT.selection.RowModel",{mode:"MULTI"});this.listHelper.setSelectionModel(selModel);Ext.apply(gridCfg,{selModel:selModel,viewConfig:{trackOver:false,cls:"row-border-selection fastrowover",isMarkdownSupported:false,plugins:{ptype:"gridviewdragdrop",enableDrag:true,enableDrop:false,ddGroup:"selDD"},emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("Empty spreadsheet")+"</div>",preserveScrollOnRefresh:true,loadMask:false,stripeRows:false,getRowClass:function(record,rowIndex,rowParams,store){if(record.get(FT.data.UndoRedoHelperBase.removeGUID)){return"row-delete"}if(record.phantom){return"row-new"}return record.dirty?"row-dirty":"row-clean"},listeners:{beforeselect:function(view,record,item,index,e){if(view.getSelectionModel().selectionMode=="MULTI"&&!e.ctrlKey&&view.getSelectionModel().isSelected(record)){return false}},scope:this}}});gridCfg.selModel.on("selectionchange",function(selModel){if(!this.edit){selModel.deselectAll()}},this);Ext.apply(gridCfg,cfg);gridCfg.columns=[{xtype:"rownumberer",width:40,renderer:function(value,metaData,record,rowIdx,colIdx,store){metaData.tdCls="text-faded";metaData.style="text-align: center;";return record.index+1}}].concat(gridCfg.columns);for(var i=0;i<gridCfg.columns.length;i+=1){if(gridCfg.columns[i].xtype==="ft-actioncolumn"){gridCfg.columns[i]=Ext.apply(gridCfg.columns[i],{dataIndex:"shortcut",xtype:"glyphactioncolumn",width:30,menuDisabled:true,items:[{glyph:"note",getClass:function(field,metadata,record,row,column,store){if(record.raw.notes){return"icon--actioncolumn-visible"}else{return""}},handler:FT.action.fn.viewNotesHandler}]})}}if(this.headerStats){this.headerStats.prepareColumns(gridCfg.columns)}this.grid=Ext.create("Ext.grid.Panel",gridCfg);this.fireEvent("gridcreated",this.grid);this.store.on("add",function(store,records,index,eOpts){Ext.each(records,function(record,idx,all){Ext.iterate(record.data,function(key,value,allData){var op=FT.data.addOperators[this.contentType][key];if(Ext.isDefined(op)){record.beginEdit();op.call(this,record);record.endEdit(true)}},this)},this)},this);this.grid.on("edit",function(editor,e,eOpts){var grid=e.grid;var value=e.value;var column=e.column;var originalValue=e.originalValue;var field=Ext.value(column.editDataIndex,e.field);var selModel=grid.getSelectionModel();if(Ext.isDefined(FT.data.editOperators[this.contentType])){var op=FT.data.editOperators[this.contentType][field]}if(Ext.isDefined(op)){op.call(this,e.record,value,originalValue)}if(selModel.isSelected(e.record)&&originalValue!=value){selModel.selected.each(function(r,idx,all){var rOriginalValue=r.get(field);r.set(field,value);if(Ext.isDefined(op)){op.call(this,r,value,rOriginalValue)}},this)}},this);var me=this;Ext.create("FT.grid.RenderSelector",{grid:this.grid,getRenderer:function(col,record){return eval(me.getSafeRenderer(record.get("renderer")))}});if(Ext.isDefined(state)&&state!=null){}this.grid.on("beforeedit",function(e,eOpts){if(this.contentType=="asset"&&eOpts&&eOpts.record){var r=eOpts.record;if(r.get("tasktypeid")===null&&eOpts.field=="taskstatusid"){return false}}return this.edit||e.field=="statusid"&&this.contentType=="task"},this);this.grid.on("edit",function(editor,e){if(!this.edit){e.record.commit();Ext.Ajax.request({url:"/main/updateTask",params:{data:Ext.encode(e.record.data)},success:function(){FT.app.safeFireEvent("entitychanged")}})}},this);this.activeColumns=this.grid.columns;return this.grid},createDataView:function(b,j){this.listHelper.setSelectionModel(null);var g=[];var k=this.getColumnById("thumbnail",b.columns);if(!Ext.isDefined(k)){return false}var d=k.dataIndex;this.activeColumns=b.columns;var e=['<tpl for=".">','<div class="ft-remotegrid-thumbnail-item" style="width:{[values.'+d+'.size.x]}px;">',"</div>","</tpl>"];var h=["{[FTrack.grid.IconRendererFit(values."+d+')]}<table style="width:{[values.'+d+'.size.x-15]}px;margin:10px;padding-top:10px;border-spacing:0px;table-layout:fixed;">'];Ext.each(Ext.pluck(b.columns,"columns"),function(m,c,l){if(m){Ext.each(m,function(n){n.text=b.columns[c].text+" "+n.text;g.push(n)})}else{g.push(b.columns[c])}});Ext.each(g,function(n,l,p){var c=0;if(!n.hidden&&n.itemId!="thumbnail"&&n.xtype!="ft-actioncolumn"){var o="overflow-x:hidden;font-size:12px;";var q='<tr style="'+o+'">';if(Ext.isDefined(this.addLabels)&&!this.addLabels){}else{var m='<td style="vertical-align:top;color:#9a9a9a;white-space:nowrap;padding:2px 0px;">'+n.text+"</td>";q+=m}if(Ext.isDefined(n.rendererString)){n.rendererString=FT.util.replaceQuotes(n.rendererString,false);q+=Ext.String.format('<td class="text-ellipsis" style="padding:2px 0px;">{[this.renderValue(values, {0}, xindex)]}</td>',l)}else{q+="{"+n.dataIndex+"}"}q+="</tr>";h.push(q);c+=1}},this);h.push("</table>");Ext.Array.insert(e,2,h);console.log("=!",e);e=new Ext.XTemplate(e.join(""),{renderValue:function(m,n,p){p=p-1;var o=g[n],l=a.getStore(),c=l.getAt(p);return o.renderer(m[o.dataIndex],{},c,p,n,l,a)}});var a=Ext.create("Ext.view.View",{region:"center",flex:1,selModel:{mode:"MULTI"},isMarkdownSupported:false,loadMask:false,store:b.store,autoScroll:true,itemSelector:"div.ft-remotegrid-thumbnail-item",trackOver:true,overItemCls:"x-item-over",emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("Empty view")+"</div>",tpl:e,listeners:{itemcontextmenu:this.onItemContextMenu,scope:this}});this.listHelper.setSelectionModel(a.getSelectionModel());return a},reloadFromEntity:function(b){var a=true;if(this.ftData&&b&&this.ftData.entityId==b.entityId){a=false}this.ftData=b;assert(this.ftData.objectType,"objectType must be defined");this.fireEvent("ftdatachanged",Ext.clone(this.ftData));this.store.entity=b;Ext.apply(this.store.getProxy().extraParams,{data:Ext.JSON.encode({objectType:this.objectType,entityType:this.ftData.entityType,entityId:this.ftData.entityId,fields:this.fields}),inList:this.listHelper.getActiveList(),sourceType:this.contentType});if(Ext.isDefined(this.undoRedoHelper)){this.undoRedoHelper.setFtData(Ext.clone(this.ftData))}if(a){this.store.loadPage(1)}else{this.store.load()}},groupColumns:function(a){var a=a;var c=[];var b={};Ext.each(a,function(g,d,e){if(g.groupText){if(!Ext.isDefined(b[g.groupText])){b[g.groupText]={text:g.groupText,headerId:g.groupText,itemId:g.groupText,cls:g.cls,menuDisabled:true,columns:[]};c.push(b[g.groupText])}b[g.groupText].columns.push(g)}else{c.push(g)}},this);Ext.iterate(b,function(g,d,e){d.columns=Ext.Array.sort(d.columns,function(j,h){if(j.dataIndex==h.dataIndex){return 0}return j.dataIndex>h.dataIndex?1:-1});d.columns[0].tdCls+=" left";d.columns[d.columns.length-1].tdCls+=" right"},this);return c},getSafeRenderer:function(a){return"FT.Function.append(FTrack.grid.SafeRenderer, ["+a+"])"},doReconfigure:function(columnsIn,contentType,ftData,state){this.suspendLayout=true;var start=Date.now();this.columnsIn=Ext.isDefined(columnsIn)?Ext.clone(columnsIn):this.columnsIn;this.contentType=Ext.isDefined(contentType)?Ext.clone(contentType):this.contentType;this.ftData=Ext.isDefined(ftData)?Ext.clone(ftData):this.ftData;assert(this.ftData.objectType,"objectType must be defined");this.state=Ext.isDefined(state)?Ext.clone(state):this.state;this.state=Ext.value(this.state,{});if(this.groupable&&Ext.isDefined(this.state.groupField)){this.groupField=this.state.groupField}if(this.mode!="grid"){this.groupField=false}this.setModeFromState(this.state.mode);if(Ext.isDefined(this.state.thumbSize)){this.setThumbSizeFromState(this.state.thumbSize)}var cfg={};var hideGroupedHeader=false;this.fields=[];var storeFields=[];var groupFields=[];var sortFields=[];var columns=[];var viewColumns=[];var syncFields=[];var filters=[];Ext.each(this.columnsIn,function(c,idx,all){columns.push(Ext.clone(c))},this);Ext.each(columns,function(c,idx,all){if(Ext.isDefined(c.renderer)){c.renderer=this.edit&&c.editRenderer&&c.editor?c.editRenderer:c.renderer;c.rendererString=this.getSafeRenderer(c.renderer);c.renderer=eval(c.rendererString)}if(Ext.isDefined(c.editor)&&Ext.isDefined(c.editor.validator)){c.editor.validator=eval(c.editor.validator)}if(Ext.isDefined(c.printRenderer)){}if(Ext.isDefined(c.summaryRenderer)){c.summaryRenderer=eval(c.summaryRenderer)}if(Ext.isDefined(c.summaryTypeFn)){c.summaryType=eval(c.summaryTypeFn)}else{if(c.summaryType&&FT.grid.GroupSummary.Calculations[c.summaryType]&&c.summaryType=="sum"){c.summaryType=Ext.pass(FT.grid.GroupSummary.Calculations[c.summaryType],c.dataIndex)}}if(Ext.isDefined(c.handler)){c.handler=eval(c.handler)}if(c.groupable){groupFields.push({dataIndex:c.dataIndex,text:c.text,group:c.group})}if(!Ext.isDefined(c.sortable)||c.sortable){sortFields.push({dataIndex:c.dataIndex,text:c.text,group:c.group})}sortFields=Ext.Array.sort(sortFields,function(item1,item2){return item1.text.toUpperCase()<=item2.text.toUpperCase()?-1:1});if(Ext.isDefined(c.help)){}c.tdCls=Ext.value(c.tdCls,"");c.tdCls+=c.editor?" cell--editable":"";if(c.filter){if(c.filter){f=Ext.clone(c.filter);f.field=c.dataIndex;f.label=c.text;f.group=c.group;if(f.group&&!Ext.isArray(f.group)){f.group=[f.group]}filters.push(f)}}if(Ext.isDefined(c.xtype)&&c.xtype=="ft-actioncolumn"&&Ext.isDefined(c.items)){Ext.each(c.items,function(item,idx,all){item.handler=eval(item.handler);if(c.addToView&&Ext.isDefined(item.dataIndex)&&Ext.isDefined(item.innerRenderer)){item.innerRenderer=eval(item.innerRenderer);this.fields.push(item.dataIndex);storeFields.push(item.dataIndex)}},this)}else{if(Ext.isDefined(c.xtype)&&c.xtype=="ft-actioncolumn"&&c.addToView){c.innerRenderer=eval(c.renderer);delete c.header}}var newStoreField=FT.util.columnToField(c);if(Ext.isDefined(newStoreField)){storeFields.push(newStoreField)}if(Ext.isDefined(c.syncFields)){syncFields=syncFields.concat(c.syncFields)}c.itemId=Ext.isDefined(c.id)?c.id:c.dataIndex;c.headerId=Ext.isDefined(c.id)?c.id:c.dataIndex;delete c.id;if(Ext.isDefined(this.state.columns)){var columnState=this.getColumnById(c.itemId,this.state.columns,"id");if(Ext.isDefined(columnState)){if(c.forceWidth){c.width=c.forceWidth}else{c.width=columnState.width}}}if(this.groupField&&c.itemId==this.groupField){hideGroupedHeader=!(Ext.isDefined(c.addToView)&&c.addToView);c.addToView=true}if(c.itemId=="thumbnail"&&Ext.isDefined(c.renderer)){if(this.mode=="grid"){newCfg={size:{y:16,x:32}};c.width=40;c.renderer=FT.Function.append(c.renderer,newCfg)}delete c.text}if(c.addToView){if(!Ext.isDefined(c.hidden)||!c.hidden){viewColumns.push(c)}this.fields.push(c.dataIndex)}if(Ext.isDefined(c.mandatoryStoreField)){this.fields.push(c.dataIndex)}},this);viewColumns=this.groupColumns(viewColumns);var idsState=Ext.isDefined(this.state.columns)?Ext.pluck(this.state.columns,"id"):[];var idsView=Ext.pluck(viewColumns,"itemId");Ext.Array.sort.call(this,viewColumns,function(cA,cB){siA=idsState.indexOf(cA.itemId);siA=siA!=-1?siA:idsView.indexOf(cA.itemId)+idsView.length;siB=idsState.indexOf(cB.itemId);siB=siB!=-1?siB:idsView.indexOf(cB.itemId)+idsView.length;if(cA.itemId=="thumbnail"){return -1}if(cB.itemId=="thumbnail"){return 1}return siA<siB?-1:1});if(viewColumns.length>0){viewColumns[viewColumns.length-1].flex=1}if(this.mode=="card"){viewColumns=this.columnsToCard(viewColumns)}this.cellEditing=Ext.create("FT.grid.plugin.CellEditing",{clicksToEdit:2});cfg.plugins=[this.cellEditing,{ptype:"bufferedrenderer"}];cfg.features=[];cfg.columns=viewColumns;cfg.fields=storeFields;storeFields=storeFields.concat(FT.data.UndoRedoHelperBase.getFields());var modelName="NewModule-"+Ext.id();Ext.define(modelName,{extend:"Ext.data.Model",fields:storeFields,getEntity:function(){return Ext.copyTo({},this.data,["entityId","entityType"])}});var storeCfg={model:modelName,remoteSort:true,pageSize:this.getPageSize(),entity:this.ftData,getGroupString:function(instance){var o=instance.get(this.groupField);var out=Ext.isArray(o)?FT.util.replaceQuotes(Ext.encode(o),true):Ext.encode(o);return out},proxy:{type:"ajax",url:"/track/getData",actionMethods:{create:"POST",read:"POST",update:"POST",destroy:"POST"},extraParams:{data:Ext.JSON.encode({objectType:this.objectType,entityType:this.ftData.entityType,entityId:this.ftData.entityId,fields:Ext.Array.unique(this.fields)}),sourceType:this.contentType,inList:this.listHelper.getActiveList()},reader:{root:"data",idProperty:"entityId",type:"json",totalProperty:"total"}}};if(this.groupable){groupFields=Ext.Array.sort(groupFields,function(item1,item2){return item1.text.toUpperCase()<=item2.text.toUpperCase()?-1:1});groupFields=Ext.Array.insert(groupFields,0,[{dataIndex:this.noGroup,text:FT.i18n("No group")},{dataIndex:"-",text:"-"}]);this.groupCombo.store.loadData(groupFields);this.groupCombo.select(this.groupField?this.groupField:this.noGroup)}if(this.groupField){var groupColumn=this.getColumnById(this.groupField,viewColumns,"dataIndex");if(groupColumn){var groupHeaderTpl=Ext.isDefined(groupColumn.rendererString)&&groupColumn.ftype!="decimal"?"{["+groupColumn.rendererString+"(Ext.decode(values.name))]} - ({rows.length})":groupColumn.text+" : Ext.decode({name}) ({rows.length})";if(groupColumn.printRenderer){groupHeaderTpl="{["+groupColumn.printRenderer+"(Ext.decode(values.name))]} - ({rows.length})"}cfg.features.push({id:"group",disable:true,ftype:"groupingsummary",groupHeaderTpl:groupHeaderTpl,hideGroupedHeader:hideGroupedHeader,enableGroupingMenu:false,startCollapsed:true});storeCfg.groupField=this.groupField;Ext.apply(storeCfg.proxy.extraParams,{groupField:this.groupField})}}this.sortCombo.store.loadData(sortFields);if(Ext.isDefined(this.state.sort)&&this.state.sort!=null){storeCfg.sorters=[this.state.sort];if(this.sortAscDesc.rendered){this.sortAscDesc.setChecked(this.state.sort.direction=="ASC",true)}else{this.sortAscDesc.pressed=this.state.sort.direction=="ASC"}this.sortCombo.select(this.state.sort.property)}cfg.store=Ext.create("Ext.data.Store",storeCfg);if(!Ext.isDefined(this.undoRedoHelper)){this.undoRedoHelper=Ext.create("FT.data.UndoRedoHelper",{store:cfg.store,ftData:Ext.clone(this.ftData),syncFields:syncFields,contentType:this.contentType,saveMaskTarget:this.ownerCt,stackKey:Ext.id(),pushToken:this.pushToken,reloadAfterCommit:false});this.undoRedoHelper.on("changesvisible",function(isChangesVisible){this.getDockedComponent("toptoolbar").getComponent("save").setQtip(isChangesVisible?FT.tip("toolbar-button-icononly-save"):FT.tip("toolbar-button-icononly-save-notvisible"))},this)}else{this.undoRedoHelper.setFtData(Ext.clone(this.ftData));this.undoRedoHelper.bindStore(cfg.store)}this.store=cfg.store;if(this.masterView){this.masterView.destroy()}delete this.masterView;delete this.grid;if(Ext.isDefined(this.pager)){this.pager.bindStore(this.store)}this.store.on("load",function(){if(Ext.isDefined(this.grid)){var sel=this.grid.getSelectionModel();if(sel.views){}}this.updateThumbnailSize(this.thumbSize);if(this.grid&&this.grid.rendered&&this.grid.getStore().getCount()==0){this.grid.view.refresh()}},this);this.store.on("beforeload",function(){if(this.cellEditing&&this.cellEditing.activeEditor){Ext.Function.defer(this.store.load,250,this.store);return false}else{if(this.grid){var view=this.grid.getView();if(view&&view.el&&view.el.dom){view.el.dom.scrollTop=0}}}},this);this.store.on("datachanged",function(){if(this.grid){this.grid.getView().refresh()}},this);this.relayEvents(this.store,["load","beforeload"]);this.createEditTools();this.availableFilters.getProxy().data=filters;this.availableFilters.load();if(this.ftData.data&&this.ftData.data.filters){this.loadSerializedFilters(this.ftData.data.filters)}else{if(this.state&&this.state.rawFilters){this.loadSerializedFilters(this.state.rawFilters)}}this.configureToolbar(this.mode);if(this.mode!="thumb"){this.masterView=this.createGrid(cfg,this.state)}else{this.masterView=this.createDataView(cfg,this.state)}this.bindContextMenu(this.masterView);this.add(this.masterView);this.suspendLayout=false;Ext.apply(this.store.getProxy().extraParams,{filter:Ext.encode(this.filterPanel.getMetafilters()),filterField:this.searchField.getValue()});this.store.load();this.fireEvent("remotegridreconfigure")},loadSerializedFilters:function(c,a){var b=Ext.clone(c),a=Ext.value(a,true);Ext.each(b,function(d){Ext.applyIf(d,{presentation:"advanced"})});this.filterPanel.loadSerialized(b,a)},getState:function(){if(Ext.isDefined(this.grid)){var c=this.grid.getState();var b=[],a={};Ext.iterate(this.grid.columns,function(h,d,e){if(h.itemId!="thumbnail"){h.width=Ext.isDefined(h.width)?h.width:100;var g={id:h.itemId,width:h.width};b.push(g)}a[h.itemId]=h.renderName},this);Ext.each(c.columns,function(h,d,e){var g=this.getColumnById(h.id,b,"id");if(!Ext.isDefined(g)){b.push(h)}},this);c.columns=b;c.viewers=a}else{var c=this.state}if(this.mode=="grid"){if(c&&c.storeState&&c.storeState.sorters&&c.storeState.sorters.length>0){c.sort=c.storeState.sorters[0]}}else{c.sort={property:this.sortCombo.getValue(),direction:this.sortAscDesc.pressed?"ASC":"DESC"}}c.rawFilters=this.filterPanel.getSerialized(true);c.groupField=this.groupField;c.mode=this.mode;c.thumbSize=this.thumbSize;return c},getColumnById:function(e,c,a){a=Ext.isDefined(a)?a:"itemId";var d=Ext.Array.pluck(c,a);var b=Ext.Array.indexOf(d,e);return c[b]},columnsToCard:function(b){return b;var a=["thumbnail","card","lastnotes"];Ext.each(b,function(g,d,e){if(g.hidden){a.push(g.itemId)}g.hidden=g.itemId!="thumbnail"&&g.itemId!="lastnotes"},this);Ext.Array.insert(b,1,[{text:FT.i18n("Info"),itemId:"card",flex:1,trulyHidden:a,renderer:function(d,n,h,j,m,l,k){var o=this.columns[m].trulyHidden;var e=this.columns.length;var g=0;var c=[];Ext.each(this.columns,function(s,q,p){if(o.indexOf(s.itemId)!=-1){return}metaData={tdCls:"",style:""};renderer=s.renderer;value=h.get(s.dataIndex);if(Ext.isString(renderer)){s.renderer=renderer=Ext.util.Format[renderer]}if(Ext.isFunction(renderer)){value=renderer.call(this,value,metaData,h,j,m,l,k)}if(value===undefined||value===null||value===""){value="&#160;"}c.push('<div style="padding:2px;width:600px;"><div style="font-weight:bold;display:inline-block;width:110px;">'+s.text+'</div><div style="display:inline-block;'+metaData.style+'" class="'+metaData.tdCls+'">'+value+"</div></div>")},this);return c.join("")}}]);return b},changeMode:function(a){if(this.mode==a){return}this.mode=a;this.state=this.getState();this.doReconfigure();this.fireEvent("modechanged",a)},setEdit:function(sw){this.edit=sw;if(Ext.isDefined(this.grid)){Ext.each(this.grid.columns,function(c,idx,all){if(c.editRenderer){c.renderer=this.edit&&c.editRenderer&&c.editor?eval(c.editRenderer):eval(c.rendererString)}},this);this.grid.getView().refresh()}this.setEditCls(this.edit);if(!this.edit){if(Ext.isDefined(this.grid)){this.grid.getSelectionModel().deselectAll()}this.undoRedoHelper.cancelChanges()}this.configureToolbar(this.mode)},setModeFromState:function(d){this.mode=Ext.value(d,this.mode);var c=this.getDockedComponent("toptoolbar").getComponent(this.mode);if(c&&!c.pressed){if(c.rendered){c.toggle(true,false)}else{var b=this.getDockedComponent("toptoolbar").getComponent("thumb");var a=this.getDockedComponent("toptoolbar").getComponent("grid");b.pressed=false;a.pressed=false;c.pressed=true}}},setThumbSizeFromState:function(a){this.thumbSize=a;this.thumbSlider.setValue(this.thumbSize,false)},configureToolbar:function(d){if(!this.compactMode){var a={group:["grid","edit"],sort:["card","thumb"],slider:["card","thumb"],edit:["grid","card"],mode:["card","grid","thumb","edit"]}}else{var a={group:[],sort:["card","thumb"],slider:["card","thumb"],edit:[],mode:[]}}d!="grid"?this.thumbSlider.show():this.thumbSlider.hide();this.getDockedComponent("toptoolbar").items.each(function(h,e,g){if(Ext.isDefined(h.groupId)){if(a[h.groupId].indexOf(d)!=-1&&(this.edit||!this.edit&&h.groupId!="edit")){h.show()}else{h.hide()}}},this);var c=this.getDockedComponent("toptoolbar").getComponent("new");var b=this.getDockedComponent("toptoolbar").getComponent("paste");if(Ext.isDefined(c)&&Ext.isDefined(b)){if(this.contentType=="shot"&&!FT.isAllowedParent(FT.getShotId(),this.ftData.objectType)){c.disable();b.disable()}else{c.enable();b.enable()}}},updateThumbnailSize:function(b){if(!Ext.isDefined(this.activeColumns)){return}this.thumbSize=b;var a=undefined;var d=this.getColumnById("thumbnail",this.activeColumns);if(!Ext.isDefined(d)||this.mode=="grid"||!Ext.isDefined(d.dataIndex)){return}if(this.mode=="card"){d.setWidth(2*this.thumbSize)}var a=d.dataIndex;this.undoRedoHelper.lock();this.store.each(function(e){var c=e.get(a);c.size.y=this.thumbSize;if(this.mode=="thumb"){c.size.x=this.thumbSize*2}e.set(a,c)},this);this.undoRedoHelper.unLock();this.fireEvent("thumbnailsizechanged",this.thumbSize)},onFtDataChanged:function(a){this.configureToolbar(this.mode)},isUnsavedChanges:function(){return this.undoRedoHelper.unsavedChanges()},setEditCls:function(a){if(a){this.addCls("ft-editmode-on");this.removeCls("ft-editmode-off")}else{this.addCls("ft-editmode-off");this.removeCls("ft-editmode-on")}},loadList:function(){var a=this.store,b=a.getProxy();Ext.apply(b.extraParams,{inList:this.listHelper.getActiveList()});a.load()},onSelectList:function(){this.loadList()},getSelection:function(){var a=this.grid.getSelectionModel();return a.selected},getQuickFilters:function(a){if(a=="asset"){return FT.FilterFactory.create("versions")}},getPageSize:function(){var a=FT.getVar("pageSize"+this.contentType,this.pageSize);return FT.util.min(a,250)},setPageSize:function(a){FT.setVar("pageSize"+this.contentType,a)}});Ext.define("FT.grid.RemoteGridConfigureColumns",{mixins:{observable:"Ext.util.Observable"},enableCreate:true,constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this);this.callParent(arguments);this.store=Ext.create("Ext.data.Store",{fields:this.fields,proxy:{type:"memory",reader:{type:"json"}},sorters:[{sorterFn:function(c,b){return c.get("key").toLowerCase()<b.get("key").toLowerCase()?-1:1}}]});this.selectionChangedDelayed=Ext.create("Ext.util.DelayedTask",this.selectionChanged,this);this.addEvents("selectionchanged")},selectionChanged:function(){this.fireEvent("selectionchanged",this.getSavedRecords())},applyStateToColumns:function(b,e){var d=function(k,g){for(var h=0;h<g.length;h++){if(g[h].id==k){return g[h]}}return null};for(var a=0;a<e.length;a++){var c=d(e[a].id,b);if(c!=null){if(Ext.isDefined(c.data)&&Ext.isDefined(e[a].data)){Ext.apply(c.data,e[a].data)}if(Ext.isDefined(e[a].viewer)){c.viewer=e[a].viewer}}}},update:function(b,d){this.applyStateToColumns(b,d);this.columns=Ext.clone(b);var a=Ext.pluck(d,"id"),c=[];this.store.getProxy().data=Ext.clone(b);this.store.load();this.store.each(function(e){if(a.indexOf(e.get("id"))!=-1){c.push(e)}},this);this.button.select(a)},getSavedRecords:function(){var b=this.button.getValue(),a=[];Ext.each(this.columns,function(d){if(b.indexOf(d.id)!=-1){a.push(d)}},this);return Ext.clone(a)},getSelectedRecords:function(){var a=[];var b=this.button.getValue();this.store.each(function(d){if(b.indexOf(d.get("id"))!=-1){a.push(d)}},this);return a},getButton:function(){if(!this.button){var a={text:FT.i18n("Attributes"),qtip:FT.tip("toolbar-button-attributes"),store:this.store,displayField:"key",valueField:"id",sortItems:true,itemType:"checkbox",selectAction:null};if(this.enableCreate){a.beforeItems=[{text:FT.i18n("Create attribute"),handler:function(){var b=FT.CreateAttributeFactory.create(this.onEntityType,this.entity);this.relayEvents(b,["createdField"])},scope:this},"-"]}this.button=Ext.create("FT.button.Selector",a);this.button.on("selectionchanged",Ext.bind(this.selectionChangedDelayed.delay,this,[1500]))}return this.button},getStore:function(){return this.store}});Ext.define("FT.util.CleanMenu",{cleanMenu:function(g){var c=g.items,e,b=0,d,a=[];c.each(function(h){if(!h.isFtMenu){a.push(h)}});e=a.length;for(;b<e;b++){d=a[b];d.hidden=true}}});Ext.define("FT.grid.RenderSelector",{mixins:{observable:"Ext.util.Observable",cleanMenu:"FT.util.CleanMenu"},constructor:function(a){this.mixins.observable.constructor.call(this);Ext.apply(this,a);this.addEvents(["rendererselected"]);this.view=this.grid.getView();this.store=FT.util.copyStore("FT.store.Viewers");this.attachEvents()},getGridPanel:function(){return this.grid()},attachEvents:function(){var b=this,a=b.view,c=a.headerCt;c.on("menucreate",b.onMenuCreate,b)},onMenuCreate:function(d,c){var b=false,a;this.selector=Ext.create("FT.button.Selector",{store:this.store,itemType:"radio",displayField:"renderLabel",valueField:"renderName",listeners:{select:this.onSelect,scope:this}});a=Ext.widget({xtype:"menuitem",isFtMenu:true,text:FT.i18n("Cell formatting"),menu:this.selector.menu});this.cleanMenu(c);c.on("show",function(e){if(this.store.getCount()>0&&!b){e.add(a);b=true}a.setVisible(this.store.getCount()>0)},this);c.on("beforeshow",this.onMenuBeforeShow,this)},getActiveColumn:function(){return this.view.headerCt.getMenu().activeHeader},onMenuBeforeShow:function(c){var b=this.getActiveColumn(),a=b.ftype;this.store.clearFilter();this.store.filter("ftype",new RegExp("^"+a+"$"));this.selector.select(b.renderName)},getRenderer:function(col,record){return eval(record.get("renderer"))},onSelect:function(c,b){var a=b[0],d=this.getActiveColumn();d.renderName=a.get("renderName");d.renderer=this.getRenderer(d,a);this.view.refresh();this.fireEvent("rendererselected",c,a,d)}});Ext.ns("FT.grid.sorter");FT.grid.sorter.UserSorter=function(a){return a.name};Ext.ns("FT.grid.GroupSummary");FT.grid.GroupSummary.Calculations={sum:function(g,b){var d=b.length,a=0,e,c=0;for(;a<d;a++){e=b[a].get(g);if(Ext.isNumber(e)){c+=e}}return c;return v+(Ext.isString(newvalue)?parseFloat(newvalue):newvalue)},concatall:function(b,c,e,d){var a=[];Ext.iterate(c,function(j,g,h){a.push(j.data[b])},this);return a}};Ext.define("Ext.ux.grid.menu.RangeMenu",{extend:"Ext.menu.Menu",fieldCls:"Ext.form.field.Number",iconCls:{gt:"ux-rangemenu-gt",lt:"ux-rangemenu-lt",eq:"ux-rangemenu-eq"},fieldLabels:{gt:"Greater Than",lt:"Less Than",eq:"Equal To"},menuItemCfgs:{emptyText:"Enter Number...",selectOnFocus:false,width:155},menuItems:["lt","gt","-","eq"],constructor:function(a){var g=this,c,h,b,e,j,d,k;g.callParent(arguments);c=g.fields=g.fields||{};h=g.fieldCfg=g.fieldCfg||{};g.addEvents("update");g.updateTask=Ext.create("Ext.util.DelayedTask",g.fireUpdate,g);for(b=0,e=g.menuItems.length;b<e;b++){j=g.menuItems[b];if(j!=="-"){d={itemId:"range-"+j,enableKeyEvents:true,hideLabel:false,fieldLabel:g.iconTpl.apply({cls:g.iconCls[j]||"no-icon",text:g.fieldLabels[j]||"",src:Ext.BLANK_IMAGE_URL}),labelSeparator:"",labelWidth:29,listeners:{scope:g,change:g.onInputChange,keyup:g.onInputKeyUp,el:{click:function(l){l.stopPropagation()}}},activate:Ext.emptyFn,deactivate:Ext.emptyFn};Ext.apply(d,Ext.applyIf(c[j]||{},h[j]),g.menuItemCfgs);k=d.fieldCls||g.fieldCls;j=c[j]=Ext.create(k,d)}g.add(j)}},fireUpdate:function(){this.fireEvent("update",this)},getValue:function(){var a={},b,c;for(b in this.fields){c=this.fields[b];if(c.isValid()&&c.getValue()!==null){a[b]=c.getValue()}}return a},setValue:function(b){var a;for(a in this.fields){this.fields[a].setValue(a in b?b[a]:"")}this.fireEvent("update",this)},onInputKeyUp:function(b,a){if(a.getKey()===a.RETURN&&b.isValid()){a.stopEvent();this.hide()}},onInputChange:function(g){var e=this,c=e.fields,b=c.eq,d=c.gt,a=c.lt;if(g==b){if(d){d.setValue(null)}if(a){a.setValue(null)}}else{b.setValue(null)}this.updateTask.delay(this.updateBuffer)}},function(){this.prototype.iconTpl=Ext.create("Ext.XTemplate",'<img src="{src}" alt="{text}" class="'+Ext.baseCSSPrefix+'menu-item-icon ux-rangemenu-icon {cls}" />')});Ext.define("Ext.ux.grid.menu.ListMenu",{extend:"Ext.menu.Menu",labelField:"text",loadingText:"Loading...",loadOnShow:true,single:false,constructor:function(b){this.selected=[];this.addEvents("checkchange");this.callParent([b=b||{}]);if(!b.store&&b.options){var c=[];for(var d=0,a=b.options.length;d<a;d++){var e=b.options[d];switch(Ext.type(e)){case"array":c.push(e);break;case"object":c.push([e.id,e[this.labelField]]);break;case"string":c.push([e,e]);break}}this.store=Ext.create("Ext.data.ArrayStore",{fields:["id",this.labelField],data:c,listeners:{load:this.onLoad,scope:this}});this.loaded=true}else{this.add({text:this.loadingText,iconCls:"loading-indicator"});this.store.on("load",this.onLoad,this)}},destroy:function(){if(this.store){this.store.destroy()}this.callParent()},show:function(){var a=null;return function(){if(arguments.length===0){this.callParent(a)}else{a=arguments;if(this.loadOnShow&&!this.loaded){this.store.load()}this.callParent(arguments)}}}(),onLoad:function(j,b){var h=this,a=h.isVisible(),e,k,c,d,g;h.hide(false);h.removeAll(true);e=h.single?Ext.id():null;for(d=0,g=b.length;d<g;d++){c=b[d].get("id");k=Ext.create("Ext.menu.CheckItem",{text:b[d].get(h.labelField),group:e,checked:Ext.Array.contains(h.selected,c),hideOnClick:false,value:c});k.on("checkchange",h.checkChange,h);h.add(k)}h.loaded=true;if(a){h.show()}h.fireEvent("load",h,b)},getSelected:function(){return this.selected},setSelected:function(a){a=this.selected=[].concat(a);if(this.loaded){this.items.each(function(d){d.setChecked(false,true);for(var c=0,b=a.length;c<b;c++){if(d.value==a[c]){d.setChecked(true,true)}}},this)}},checkChange:function(b,a){var c=[];this.items.each(function(d){if(d.checked){c.push(d.value)}},this);this.selected=c;this.fireEvent("checkchange",b,a)}});Ext.define("FT.grid.plugin.CellEditing",{extend:"Ext.grid.plugin.CellEditing",alias:"plugin.ft-cellediting",startEdit:function(a,g){var d=this,c=d.getEditingContext(a,g),e,b;d.completeEdit();if(!c||!d.grid.view.isVisible(true)){return false}a=c.record;g=c.column;if(g&&!g.getEditor(a)){return false}e=a.get(g.editDataIndex?g.editDataIndex:g.dataIndex);c.originalValue=c.value=e;if(d.beforeEdit(c)===false||d.fireEvent("beforeedit",d,c)===false||c.cancel){return false}b=d.getEditor(a,g);d.grid.view.cancelFocus();d.view.focusCell({row:c.row,column:c.colIdx});if(b){d.context=c;d.setActiveEditor(b);d.setActiveRecord(a);d.setActiveColumn(g);d.editTask.delay(15,b.startEdit,b,[d.getCell(a,g),e]);d.editing=true;d.scroll=d.view.el.getScroll();return true}return false},onEditComplete:function(b,h,a){var g=this,d=g.grid,j=d.getSelectionModel(),e=g.getActiveColumn(),c;if(e){c=e.editDataIndex?e.editDataIndex:e.dataIndex;g.setActiveEditor(null);g.setActiveColumn(null);g.setActiveRecord(null);delete j.wasEditing;if(!g.validateEdit()){return}if(h!==a){g.context.record.set(c,h)}else{d.getView().getEl(e).focus()}g.context.value=h;g.fireEvent("edit",g,g.context)}},getEditor:function(a,c){var b=this.callParent(arguments);if(Ext.isFunction(b.field.editRecord)){b.field.editRecord(a)}if(FT.util.canEditWithEditor(b)==false){return null}return b}});Ext.define("FT.simplegrid.BaseGrid",{extend:"Ext.grid.Panel",headerLines:false,hideHeaders:true,disableSelection:true,menuDisabled:true,alwaysReconfigure:false,cardGlyph:FT.glyph("thinrow"),padding:10,emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("Empty spreadsheet")+"</p>",initComponent:function(){this.viewConfig=Ext.value(this.viewConfig,{});Ext.applyIf(this.viewConfig,{trackOver:true,stripeRows:false,loadMask:false,preserveScrollOnRefresh:true,getRowClass:function(b,e,d,c){var a="row-simplegrid-medium";if(b.get("overlay")){a+=" row-simplegrid-overlay"}return a},handleEvent:function(a){if(a.getKey()!=a.SPACE){return Ext.view.View.prototype.handleEvent.apply(this,arguments)}}});this.callParent(arguments);this.getStore().on("metachange",this.onMetaDataChanged,this);this.getStore().on("write",this.onAfterStoreWrite,this)},onAfterStoreWrite:function(){FT.notifySuccess(FT.i18n("Your changes were saved."))},onMetaDataChanged:function(store,meta){if(!this.alwaysReconfigure){if(this.metaLoadedOnce){return}this.metaLoadedOnce=true}Ext.each(meta.columns,function(c){if(c.renderer){c.renderer=eval(c.renderer)}c.menuDisabled=this.menuDisabled;if(this.headerLines===false){c.border=false}c.style="background-color:inherit;";if(c.remoteAction){c.handler=function(view,rowIndex,colIndex,item,e,record){var action=eval("FTApi."+c.remoteAction);var data={entityId:record.get("entityId"),context:store.getEntity()};action(data,function(response){if(response.success){FT.notifySuccess(response.msg)}else{FT.notifyError(response.msg)}store.load()})}}},this);if(meta.defaultSort){this.store.sort(meta.defaultSort,undefined,false)}this.reconfigure(this.store,meta.columns)}});Ext.ns("FT.simplegrid");Ext.define("FT.simplegrid.AbstractFactory",{extned:"Ext.Base",constructor:function(a){Ext.apply(this,a);this.callParent()},create:Ext.emptyFn});Ext.define("FT.data.SimpleStore",{extend:"Ext.data.Store",loadEntity:function(a){this._entity=Ext.clone(a);Ext.apply(this.getProxy().extraParams,{entity:this._entity});this.loadPage(1)},getEntity:function(){return Ext.clone(this._entity)}});Ext.define("FT.simplegrid.StoreCreator",{createStore:function(d){var a="factory-storecreator-model-"+Ext.id();Ext.define(a,{extend:"Ext.data.Model",fields:[],idField:{name:"entityId"}});var b,c;c={type:"direct",reader:{idProperty:"entityId",type:"json",root:"data"},writer:{writeAllFields:false}};Ext.apply(c,d);b=Ext.create("FT.data.SimpleStore",{model:a,remoteSort:true,pageSize:25,proxy:c,autoSync:true});return b}});Ext.define("FT.simplegrid.SimpleThumbnailViewFactory",{extend:"FT.simplegrid.AbstractFactory",mixins:{storeCreator:"FT.simplegrid.StoreCreator"},create:function(c,a){var b=Ext.apply({},a);b.plugins=b.plugins&&Ext.clone(b.plugins)||[];b.plugins.push(Ext.create("FT.simplegrid.ScrollPager"));return Ext.create("FT.simplegrid.ThumbnailsView",b)}},function(){FT.SimpleThumbnailViewFactory=Ext.create("FT.simplegrid.SimpleThumbnailViewFactory",{})});Ext.define("FT.simplegrid.MultiViewFactory",{extend:"FT.simplegrid.AbstractFactory",mixins:{storeCreator:"FT.simplegrid.StoreCreator"},create:function(d,c){var p=[],j,u=[],b=[],t=[],o,w=false,q=true,a=true,h={},m,k=this.getPanelConfig(d),e,g=c&&c.viewPlugins||[];gridPlugins=c&&c.gridPlugins||[];if(d=="tasks"){o=FT.getApi("SimpleTasks",c.pushToken);j=this.createStore({api:{read:o.read,update:o.update}});filter=FT.FilterFactory.create("tasks");u=filter.getItems();filter.bindStore(j)}if(d=="shots"){o=FT.getApi("SimpleShots",c.pushToken);j=this.createStore({api:{read:o.read,update:o.update}});filter=FT.FilterFactory.create("shots");u=filter.getItems();filter.bindStore(j)}if(d=="assetbuilds"){o=FT.getApi("SimpleAssetsBuilds",c.pushToken);j=this.createStore({api:{read:o.read,update:o.update}});filter=FT.FilterFactory.create("shots");u=filter.getItems();filter.bindStore(j)}if(d=="dependencies"){o=FT.getApi("SimpleDependencies",c.pushToken);j=this.createStore({api:{read:o.read,update:o.update}});filter=FT.FilterFactory.create("linked_assets");u=filter.getItems();filter.bindStore(j);var l=Ext.widget("button",{text:FT.i18n("Create links"),permission:{name:"UPDATE_OBJECT_LINK",allow:"show",deny:"hide"},menu:[{text:FT.i18n("Incoming"),handler:function(){FT.util.actions.createDependencies([j.getEntity()],"incoming",function(){this.load()},j)},scope:this},{text:FT.i18n("Outgoing"),handler:function(){FT.util.actions.createDependencies([j.getEntity()],"outgoing",function(){this.load()},j)},scope:this}]});b.push(l)}if(d=="versions"){o=FT.getApi("SimpleVersions",c.pushToken);j=this.createStore({api:{read:o.read,update:o.update}});Ext.apply(h,{plugins:g,thumbnailTemplate:"FT.template.OverlayThumbnailDetails",directApi:o});filter=FT.FilterFactory.create("versions");u=filter.getItems();filter.bindStore(j)}if(d=="linked_versions"){o=FT.getApi("VersionDependencies",c.pushToken);j=this.createStore({api:{read:o.read,update:o.update}});filter=FT.FilterFactory.create("linked_versions");u=filter.getItems();filter.bindStore(j)}if(d=="list_content"){o=FT.getApi("SimpleListContent",c.pushToken);j=this.createStore({reader:{idProperty:"id",type:"json",root:"data"},api:{read:o.read,update:o.update}});var n=FT.freview.FReviewHelper.getReviewButton(function(){return[j.getEntity().entityId]},function(){return"list"});b.push(n);w=true}if(d==="reviewSessionObjects"){var o=FT.getApi("SimpleReviewSessionObject",c.pushToken);j=this.createStore({api:{read:o.read,update:o.update,destroy:o["delete"]},reader:{idProperty:"id",type:"json",root:"data"}});j.pageSize=500;a=false;Ext.apply(k,{plugins:[{ptype:"ft-simplegrid-plugins-removeitems",buttonMargin:"0 10",removeButtonText:FT.i18n("Remove from session"),permissionName:"MANAGE_REVIEW_SESSION"}]});Ext.apply(h,{emptyText:"",selModel:{mode:"MULTI"},plugins:["ft-view-plugin-checkboxtool",{ptype:"ft-view-plugin-drag-and-drop-sort"},{ptype:"ft-view-plugin-drag-and-drop-file-upload-review-session"}],thumbnailTemplate:"FT.template.ReviewSessionObjectThumbnailDetails"})}assert(j!==null,"cannot create multiview for "+d);if(q){p.push(FT.SimpleThumbnailViewFactory.create("basic",Ext.apply(h,{store:j})))}if(a){gridPlugins.push({ptype:"ft-grid-actions-menu"});if(j.getProxy().api.update){w=true;gridPlugins.push({ptype:"ft-cellediting",clicksToEdit:2,listeners:{beforeedit:function(z,y){return FT.util.recordHasObjectTypeFeature(y.record,y.field)}}})}p.push(FT.SimpleGridFactory.create("simple",{plugins:gridPlugins,disableSelection:false,selModel:Ext.create("Ext.selection.RowModel",{mode:"MULTI"}),store:j,alwaysReconfigure:w,directApi:o}))}m=Ext.create("Ext.panel.Panel",Ext.apply(k,{items:p}));if(b.length>0){m.defaultToolbarItems=m.defaultToolbarItems.concat(b)}if(u.length>0){u.forEach(function(y){y.ui="plain"});m.defaultToolbarItems=m.defaultToolbarItems.concat(u)}if(p.length>1){var s=FT.getVar(d,0),x=this.getCardButtons(m,p,s);m.defaultToolbarItems.push("->");m.defaultToolbarItems=m.defaultToolbarItems.concat(x);if(s&&s<m.items.getCount()){m.getLayout().setActiveItem(s)}}if(m.defaultToolbarItems.length>0){e=this.getToolbarConfig(m.defaultToolbarItems,"top");t.push(e)}m.addDocked(t);m._dataStore=j;return m},getToolbarConfig:function(d,a,c,b){return{xtype:"toolbar",items:d,dock:a,cls:c||"",defaultButtonUI:b||"",enableOverflow:true}},getCardButtons:function(b,c,a){var g=[],e=Ext.id();for(var d=0;d<c.length;d+=1){g.push({glyph:c[d].cardGlyph,cardIndex:d,cls:"button-card",enableToggle:true,pressed:d===a,allowDepress:false,toggleGroup:"simple-card-toggle-group-"+e,handler:Ext.bind(b.onCardButtonSetActiveItem,b)})}return g},getPanelConfig:function(a){return{border:false,bodyBorder:false,bodyStyle:"background-color:inherit;",layout:{type:"card"},defaultToolbarItems:[],loadEntity:function(b){var c=this.getLayout(),d=c.getActiveItem();d.getStore().loadEntity(b)},onCardButtonSetActiveItem:function(e){var g=this.getLayout(),d,c,b,h,j;c=g.getActiveItem();b=c.getStore();g.setActiveItem(e.cardIndex);FT.setVar(a,e.cardIndex);h=g.getActiveItem();j=h.getStore();if(j!==b){d=Ext.clone(b.getEntity());j.loadEntity(d)}}}}},function(){FT.MultiViewFactory=Ext.create("FT.simplegrid.MultiViewFactory",{})});Ext.define("FT.grid.SimpleGridFactory",{extend:"FT.simplegrid.AbstractFactory",mixins:{storeCreator:"FT.simplegrid.StoreCreator"},getStore:function(d,a){var b="factory-simplegrid-model-"+Ext.id();Ext.define(b,{extend:"Ext.data.Model",fields:[],idField:{name:"entityId"}});var c=Ext.create("Ext.data.Store",{model:b,remoteSort:true,sorters:[{property:"enddate",direction:"ASC"}],pageSize:a.pageSize||25,doSort:function(){Ext.data.Store.prototype.loadPage.call(this,1)},proxy:{type:"direct",api:a.api,reader:{idProperty:"entityId",type:"json",root:"data"},writer:{writeAllFields:false},extraParams:{type:d}},autoSync:true});return c},getLauncherGridCfg:function(e,a){var d,c=[],b;b=this.getStore(e,a);gridPanelCfg={disableSelection:true,selModel:{enableKeyNav:false,allowDeselect:true},viewConfig:{preserveScrollOnRefresh:true,stripeRows:false,trackOver:false},plugins:[{ptype:"ft-filterandsort"},{ptype:"ft-cellediting",clicksToEdit:1}],store:b,columns:c,bbar:Ext.create("FT.ui.MorePager",{store:b})};if(e!="app_tasks"){gridPanelCfg.plugins.push({ptype:"ftl-my-tasks-shortcuts"});gridPanelCfg.title="Browse my tasks";gridPanelCfg.disableSelection=false}return gridPanelCfg},getMyGridCfg:function(e,a){var d,c=[],b;if(!a.store){b=this.getStore(e,a)}else{b=a.store}gridPanelCfg={cardGlyph:FT.glyph("thinrow"),title:FT.i18n("Tasks"),cls:"widget-body-border",hideHeaders:false,plugins:[{ptype:"ft-filterandsort"},{ptype:"ft-cellediting",clicksToEdit:1}],selModel:{enableKeyNav:false},store:b,columns:c,bbar:Ext.create("FT.ui.MorePager",{store:b})};return gridPanelCfg},create:function(d,a){var c=null,b={};if(d=="launcher_tasks"){b=this.getLauncherGridCfg(d,a);c="FT.simplegrid.BaseGrid"}else{if(d=="my_tasks"){b=this.getMyGridCfg(d,a);b.header=false;c="FT.simplegrid.BaseGrid"}else{if(d=="simple"){b=Ext.apply({columns:[],hideHeaders:false,viewConfig:{ui:"simple",overItemCls:"panel",plugins:[Ext.create("FT.simplegrid.ScrollPager")]}},a);c="FT.simplegrid.BaseGrid"}else{if(d=="app_tasks"){b=this.getLauncherGridCfg(d,a);c="FT.simplegrid.BaseGrid"}}}}if(c===null){throw"No class was found in SimpleGridFactory for "+d}return Ext.create(c,b)}},function(){FT.SimpleGridFactory=Ext.create("FT.grid.SimpleGridFactory",{})});Ext.define("FT.simplegrid.ThumbnailsView",{extend:"Ext.view.View",autoScroll:true,preserveScrollOnRefresh:true,cardGlyph:FT.glyph("thumbs"),itemSelector:"li.ft-thumbnailsview-block-selector",emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("Empty view")+"</p>",thumbnailTemplate:"FT.template.ThumbnailDetails",initComponent:function(){this.callParent(arguments);var a=this;this.tpl=new Ext.XTemplate('<ol class="ft-thumbnailsview-list">',"{[this._dropPlaceholder()]}",'<tpl for=".">',"{[this.renderSubTpl(values)]}","</tpl>","</ol>",{renderSubTpl:Ext.bind(this._renderSubTpl,this),_dropPlaceholder:function(){if(a.dropPlaceholder){return a.dropPlaceholder()}}});this.toolbarItems=[];this.store.on("metachange",this.updateTemplate,this)},_renderSubTpl:function(a){if(!this.viewItemTpl){return""}return this.viewItemTpl.apply(a)},updateTemplate:function(){this.viewItemTpl=Ext.create(this.thumbnailTemplate,{detailItemConfigs:this.getStore().getProxy().getReader().metaData.thumbCols||[],toolbarItems:this.toolbarItems})}});Ext.define("FT.simplegrid.ScrollPager",{extend:"Ext.AbstractPlugin",init:function(b){this.testId=Ext.id();b.on("afterrender",this.onAfterCmpRender,this);this.cmp=b;var a=b.getStore();if(a){Ext.Function.interceptBefore(a,"sort",this.beforeSort,this)}},beforeSort:function(){var a=this.cmp.getStore();if(a.remoteSort){a.currentPage=1}},onAfterCmpRender:function(){this.el=this.cmp.getEl();this.el.on("scroll",this.onElementScroll,this);this.cmp.on("refresh",this.onElementScroll,this)},onElementScroll:function(){if(!this.cmp.isVisible(true)){return}var a=this.el.dom.scrollHeight-this.el.getScroll().top;var c=a-this.cmp.getSize().height;var b=this.cmp.getStore();if(c<150){if(!this.isAtBottom&&b.isLoading()===false){this.isAtBottom=true;this.loadNextPage()}}else{this.isAtBottom=false}},loadNextPage:function(){var a=this.cmp.getStore();if(a.getCount()<a.getTotalCount()){a.nextPage({addRecords:true})}}});Ext.define("FT.simplegrid.plugins.ActionsMenu",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-grid-actions-menu",init:function(a){this.callParent(arguments);this.grid=a;this.grid.on("itemcontextmenu",this.onItemContextMenu,this)},getEntityFromRecord:function(a){var c=a.get("link"),d,b={};if(Ext.isArray(c)===false){return null}d=c[c.length-1];b.entityId=d.id;b.entityType=d.type;return b},getSelectedEntities:function(){var c=this.grid.getSelectionModel().getSelection()||[],d=[],b,a;for(b=0;b<c.length;b++){a=this.getEntityFromRecord(c[b]);if(a!==null){d.push(a)}}return d},createMenu:function(){var a=Ext.create("Ext.menu.Item",{text:FT.i18n("Actions"),glyph:FT.glyph("actions"),handler:function(){Ext.create("FT.window.Actions",{selection:this.getSelectedEntities(),autoShow:true})},scope:this});this.menu=Ext.create("Ext.menu.Menu",{items:[a]})},onItemContextMenu:function(d,a,g,b,h,c){if(!this.menu){this.createMenu()}this.menu.showAt(h.getXY());h.stopEvent()}});Ext.define("FT.simplegrid.plugins.LauncherShortcuts",{extend:"Ext.AbstractPlugin",alias:"plugin.ftl-my-tasks-shortcuts",onBeforeReconfigure:function(c,a,b){this.insertActionColumn(b)},constructor:function(){this.callParent(arguments);var a=this.getCmp();this.insertActionColumn(a.columns)},init:function(a){this.gridPanel=a;this.callParent(arguments);this.gridPanel.on({reconfigure:this.onBeforeReconfigure,scope:this})},insertActionColumn:function(a){Ext.each(a,function(b){if(b.xtype=="actioncolumn"){b.items=Ext.value(b.items,[]);b.items.push({cls:"ft-always-visible",glyph:FT.glyph("external"),tooltip:FT.i18n("Open in ftrack"),tooltipType:"title",handler:function(d,k,g,h,j,c){FTVV.Mediator.invoke("openBrowser",[c.get("entityId")])}},{cls:"ft-always-visible",glyph:FT.glyph("upload"),tooltip:FT.i18n("Open uploader"),tooltipType:"title",handler:function(d,k,g,h,j,c){FTVV.Mediator.invoke("openUploader",[c.get("entityId")])}})}},this)}});Ext.define("FT.simplegrid.plugins.SortAndFilterPlugin",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-filterandsort",constructor:function(){this.callParent(arguments);var a=this.getCmp();var b=Ext.create("Ext.Toolbar",{defaultButtonUI:"plain-toolbar",enableOverflow:true,items:[{text:FT.i18n("Sort by"),xtype:"tbtext"},this.sortButton=Ext.widget({xtype:"ft-selector",label:FT.i18n("Sort by:"),cls:"plain-button",text:"-",setTextToName:true,itemType:"radio",beforeItems:[this.sortDir=Ext.widget({text:FT.i18n("Sort asc"),xtype:"menucheckitem",checked:true,handler:Ext.bind(this.onSortChange,this)}),"-"],store:[["priority",FT.i18n("Priority")],["statusid",FT.i18n("Status")],["enddate",FT.i18n("Due date")]],value:"enddate",listeners:{select:Ext.bind(this.onSortChange,this)},forceSelection:true}),{text:FT.i18n("Any project"),xtype:"simplefilter-selection",field:"showid",displayField:"fullname",valueField:"showid",itemType:"checkbox",store:Ext.create("FT.data.DirectActiveProjects",{autoLoad:true}),listeners:{filterchanged:function(c){Ext.apply(this.store.getProxy().extraParams,{projects:c.getValue()});this.store.load()},scope:this}},{text:FT.i18n("Any note"),field:"todos",xtype:"simplefilter-selection",store:[["is_completed",FT.i18n("Completed")],["is_not_completed",FT.i18n("Not completed")]],listeners:{filterchanged:function(c){Ext.apply(this.store.getProxy().extraParams,{todos:c.getValue()});this.store.load()},scope:this}},{xtype:"checkbox",fieldLabel:FT.i18n("Show done/blocked tasks"),fieldStyle:"margin-top: 2px",labelStyle:"width: auto; white-space: nowrap",listeners:{change:function(c,d){Ext.apply(this.store.getProxy().extraParams,{showAll:d});this.store.load()},scope:this},checked:false}]});a.tbar=b},onGridSortChange:function(b,a){this.sortDir.setChecked(a.sortState=="ASC",true);this.sortButton.select(a.dataIndex)},onSortChange:function(){var a=this.sortDir.checked?"ASC":"DESC",b=this.sortButton.getValue();this.store.sort([{property:b,direction:a}])},init:function(a){this.store=a.getStore();a.on("sortchange",this.onGridSortChange,this)}});Ext.define("FT.filter.plugins.Stateful",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-filter-stateful",eventName:"filterchanged",constructor:function(){this.callParent(arguments);var a=this.getCmp();this.statefulId="ftstate-"+a.filterId+"-"+this.filterId;var b=FT.getVar(this.statefulId);if(Ext.isDefined(b)){a.value=b}},init:function(b){var a=this;this.callParent(arguments);b.on(this.eventName,function(c){a.onSetVar(c,a.statefulId)})},onSetVar:function(b,a){var c=b.getValue();if(!c&&c!==false){c=""}FT.setVar(a,c)}});Ext.define("FT.sort.plugins.Stateful",{extend:"FT.filter.plugins.Stateful",alias:"plugin.ft-sort-stateful",eventName:"select",onSetVar:function(b,a){FT.setVar(a,b)}});Ext.define("FT.simplegrid.plugins.RemoveItems",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-simplegrid-plugins-removeitems",buttonMargin:null,removeButtonText:FT.i18n("Remove"),removeButtonGlyph:null,init:function(a){a.defaultToolbarItems=a.defaultToolbarItems||[];this._removeButton=Ext.create("Ext.button.Button",{text:this.removeButtonText,glyph:this.removeButtonGlyph,margin:this.buttonMargin,tooltip:FT.i18n("Remove selected items from the review session"),disabled:true,permission:{name:this.permissionName,allow:Ext.bind(this.enable,this),deny:Ext.bind(this.disable,this)},handler:function(){Ext.create("FT.window.CancelSave",{title:FT.i18n("Remove item(s)"),message:FT.i18n("Are you sure you want to remove the selected item(s)?"),saveAction:"delete",saveText:FT.i18n("Remove"),saveHandler:function(){var b=a.getLayout().getActiveItem();a._dataStore.remove(b.getSelectionModel().getSelection());this.close()},cancelHandler:function(){this.close()}})}});a.items.each(function(b){b.on({selectionchange:this._onSelectionChange,beforeactivate:this._onBeforeActivate,scope:this})},this);a.defaultToolbarItems.push(this._removeButton);this.callParent(arguments)},disable:function(){this._removeButton.disable();this.callParent(arguments)},_onSelectionChange:function(a,c,b){this._removeButton.setDisabled(this.disabled||c.length===0)},_onBeforeActivate:function(a){this._removeButton.setDisabled(this.disabled||a.getSelectionModel().getSelection().length===0)}});Ext.define("FT.configure.BaseSettings",{extend:"Ext.Container",nameColumnWidth:300,autoAddSaveBar:true,autoHideToolbar:true,initComponent:function(){assert(this.name,"A name must be defined");var b="ConfigureProperty"+this.id;Ext.define(b,{extend:"Ext.data.Model",fields:[]});this.propertyStore=Ext.create("Ext.data.Store",{model:b,proxy:{url:"/configure/getConfigureProperty",type:"ajax",reader:{type:"json",root:"data"}}});this.propertyStore.on({metachange:this.onPropertyStoreMetaChange,update:this.onPropertyStoreUpdate,load:this.onPropertyStoreLoad,scope:this});this.on({beforesave:this.onBeforeSave,scope:this});var a={cls:"ft-grid-metaproperty",nameColumnWidth:200,bodyBorder:false};Ext.apply(a,this.propertyGridCfg||{});if(this.autoAddSaveBar){Ext.apply(a,{bbar:this.getSaveBar()})}this.items=[this.propertyGrid=Ext.create("FT.configure.MetaProperty",a)];this.on("afterrender",this.reloadData,this,{single:true});this.propertyStore.on("load",function(c){Ext.defer(this.doLayout,100,this)},this,{single:true});this.callParent(arguments)},getName:function(){return this.name},setName:function(a){this.name=a},reloadData:function(){var a=this.getName();Ext.apply(this.propertyStore.getProxy().extraParams,{name:a});this.propertyStore.load()},getStore:function(){return this.propertyStore},getSaveBarConfig:function(b){var a=FT.i18n("You have unsaved changes");if(!this.autoHideToolbar){a=""}b=Ext.value(b,{});var c=[{xtype:"button",cls:"button-primary",text:FT.i18n("Save"),handler:this.onSave,scope:this}];if(a!=""){Ext.Array.push(c,[a])}Ext.applyIf(b,{xtype:"toolbar",cls:"background-warning border-top",padding:15,hidden:this.autoHideToolbar,items:c});return b},getSaveBar:function(a){var a=this.getSaveBarConfig(a);this.saveBar=Ext.widget("toolbar",a);return this.saveBar},onPropertyStoreMetaChange:function(a,b){this.propertyCfg=Ext.clone(b.property);if(this.lastLoad==b.name){return}this.lastLoad=b.name;this.suspendLayout=true;if(this.itemsBefore){Ext.each(this.itemsBefore,function(c){this.remove(c,true)},this)}if(this.itemsAfter){Ext.each(this.itemsAfter,function(c){this.remove(c,true)},this)}this.itemsBefore=this.insert(0,b.itemsBefore);this.itemsAfter=this.add(b.itemsAfter);this.suspendLayout=false},updateButton:function(){if(!this.saveBar||!this.saveBar.rendered||!this.autoHideToolbar){return}this.propertyStore.getModifiedRecords().length!=0?this.saveBar.show():this.saveBar.hide()},onPropertyStoreUpdate:function(){this.updateButton()},onPropertyStoreLoad:function(){this.updateButton();this.propertyGrid.updateData(this.propertyCfg,this.propertyStore.first());this.propertyGrid.setVisible(this.propertyCfg.length>0);Ext.each(this.itemsBefore,function(a){if(Ext.isFunction(a.updateData)){a.updateData(this.propertCfg,this.propertyStore.first())}},this);Ext.each(this.itemsAfter,function(a){if(Ext.isFunction(a.updateData)){a.updateData(this.propertCfg,this.propertyStore.first())}},this)},onBeforeSave:function(){var a=true;Ext.each(this.itemsBefore,function(b){a=a&&b.isValid()},this);Ext.each(this.itemsAfter,function(b){if(Ext.isFunction(b.isValid)){a=a&&b.isValid()}},this);if(!a){FT.notifyError(FT.i18n("Could not save, error in fields."))}return a},onSave:function(){this.propertyGrid.completeEdit();var a=this.propertyStore.first(),b=a.getChanges();if(this.fireEvent("beforesave",b,a)===false){return}this.fireEvent("save",a);Ext.Ajax.request({url:"/configure/updateProperty",params:{data:Ext.encode(b),name:this.getName()},success:function(c){var d=Ext.decode(c.responseText);if(d.success){FT.notifySuccess(d.message)}else{FT.notifyError(d.message);this.reloadData(this.getName())}},scope:this});this.propertyStore.commitChanges()},isUnsavedChanged:function(){return this.propertyStore.getModifiedRecords().length!=0},forceSaveOrCancel:function(c,b){var a=this.propertyStore,d=this;if(d.propertyStore.getModifiedRecords().length==0){return}var e=Ext.create("FT.window.CancelSave",{cancelHandler:function(g){a.rejectChanges();e.close();c.call(b,false)},saveHandler:function(g){d.onSave();e.close();c.call(b,true)}})}});Ext.define("FT.configure.Personal",{alias:"widget.ft-configure-personal",extend:"Ext.form.Panel",pollForChanges:true,cls:"ft-account-settings border-bottom",border:false,initComponent:function(){this.defaults={listeners:{change:this.onChange,scope:this}};this.is_2fa_enforced=FT.Settings.get("security","enforce_2fa");var b={xtype:"component",margin:"20 0",cls:"border-bottom"};this.passwordField=Ext.widget({xtype:"textfield",listeners:{change:this.onChange,scope:this},name:"password",fieldLabel:FT.i18n("Password"),afterLabelTextTpl:FT.util.getHelp(FT.i18n("Password needs to be at least 8 characters. Password will be unchanged if left blank.")),inputType:"password",labelWidth:200,anchor:"100%",padding:"0 0 0 15"});this.confrimPasswordField=Ext.widget({xtype:"textfield",listeners:{change:this.onChange,scope:this},fieldLabel:FT.i18n("Confirm password"),validator:Ext.Function.pass(FT.validator.password,this.passwordField),inputType:"password",labelWidth:200,anchor:"100%",padding:"0 0 0 15"});this.items=[this.thumbnail=Ext.create("FT.attachment.DroppableThumbnail",{style:"position: relative;",margin:15,width:100,forceDroppable:true,entity:{entityId:FT.Settings.get("currentuser","userid"),entityType:"user"}}),this.accountInfo=Ext.widget({xtype:"component",margin:"10 0 10 10"}),{xtype:"textfield",name:"username",fieldLabel:FT.i18n("Username"),labelWidth:200,anchor:"100%",padding:"0 0 0 15",readOnly:true},{xtype:"textfield",name:"firstname",allowBlank:false,fieldLabel:FT.i18n("First name"),labelWidth:200,anchor:"100%",padding:"0 0 0 15"},{xtype:"textfield",name:"lastname",allowBlank:false,fieldLabel:FT.i18n("Last name"),labelWidth:200,anchor:"100%",padding:"0 0 0 15"},{xtype:"textfield",name:"mail",allowBlank:false,fieldLabel:FT.i18n("Email"),labelWidth:200,anchor:"100%",padding:"0 0 0 15",vtype:"email"},b,this.passwordField,this.confrimPasswordField,b,this.apiKey=Ext.widget({xtype:"textfield",readOnly:true,fieldLabel:FT.i18n("Personal API key"),afterLabelTextTpl:FT.util.getHelp(FT.i18n("This is you personal API key, use carefully and do not share it with other people.")),name:"apikey",invalidCls:"ft-settings-invalidfield",labelWidth:200,anchor:"100%",padding:"0 15"}),{xtype:"button",name:"regenerate",text:FT.i18n("Reset API key"),cls:"button-default",margin:"5 15 20",handler:this.confirmResetApiKey,scope:this}];if(FT.Settings.get("feature","isTwoFactorAuthenticationEnabled")){this.twoFaField=Ext.create("Ext.Component",{html:"",margin:"0 15 15"});this.twoFaButton=Ext.create("Ext.button.Button",{text:"",cls:"button-default",margin:"0 15"});this.TwoFactorBackupCodesButton=Ext.create("Ext.button.Button",{text:FT.i18n("Generate backup codes"),cls:"button-default",hidden:true,handler:this.generateTwoFactorBackupCodes,scope:this,margin:"0 15"});var a=this.items.indexOf(this.apiKey);this.items.splice(a,0,this.twoFaField,this.twoFaButton,this.TwoFactorBackupCodesButton,b)}this.thumbnail.setThumbnail({userid:FT.Settings.get("currentuser","userid"),thumbId:FT.Settings.get("currentuser","thumbid")});this.callParent(arguments)},updateAccountType:function(c){if(c=="ftrack"){return}else{if(["ldap","google"].indexOf(c)>-1){this.items.each(function(d){if(d===this.apiKey){return}if(d.name==="regenerate"){return}if(d!=this.thumbnail){d.disable()}},this)}else{if(c=="saml"){this.items.each(function(d){if(d===this.apiKey){return}if(d.name==="regenerate"){return}if([this.thumbnail,this.passwordField,this.confrimPasswordField].indexOf(d)!==-1){d.disable()}},this)}}}var a,b;if(["saml","ldap"].indexOf(c)>-1){c=c.toUpperCase()}a=FT.i18n("This account is synced with an external service ({accounttype}) and some settings cannot be changed",{values:{accounttype:c}});b='<div class="padding-default box">'+a+"</div>";this.accountInfo.update(b)},updateData:function(b,a){var c=this.getForm();mailField=c.findField("mail"),usernameField=c.findField("username");if(a.get("username")===a.get("mail")&&a.get("accounttype")!="saml"){mailField.setFieldLabel(FT.i18n("Email (Username)"));usernameField.hide()}else{usernameField.show()}this.model=a;this.lock=true;this.loadRecord(a);this.lock=false;this.updateAccountType(a.get("accounttype"));this.updateTwoFactorEnabled(a.get("two_factor_enabled"))},onChange:function(){if(this.lock){return}this.getForm().updateRecord(this.model)},isValid:function(){return this.getForm().isValid()},confirmResetApiKey:function(){Ext.create("FT.ConfirmDialog",{autoShow:true,width:500,height:200,title:FT.i18n("Regenerate API key?"),padding:5,msg:FT.i18n("Are you sure you want to reset your current API key? Any integrations or scripts using it will stop working until you update them with the new key."),actionHandler:this.resetApiKey,scope:this})},resetApiKey:function(){FTApi.User.resetUserApiKey({},Ext.bind(this._handleResetApiKeyResponse,this))},_handleResetApiKeyResponse:function(a){if(a&&a.success){var b=Ext.create("FT.window.CancelSave",{height:230,modal:true,cancelHandler:null,saveText:FT.i18n("Close"),saveHandler:function(c){this.close()},message:FT.i18n("This is the only time that the key can be viewed. You cannot recover it later. However, you can reset it at any time.")+'<br><br><textarea class="api-key-textarea" rows="3" cols="50" readonly="readonly">'+a.api_key+"</textarea>",title:FT.i18n("Your API key has been reset"),listeners:{afterrender:function(c){var d=c.el.down(".api-key-textarea");d.on("click",function(g,e){e.focus();e.select()})}}});this.apiKey.setValue(a.masked_key)}else{FT.notifyError(FT.i18n("Failed to reset access key"))}},updateTwoFactorEnabled:function(a){if(!FT.Settings.get("feature","isTwoFactorAuthenticationEnabled")){return}if(a){var b=FT.i18n("Disable 2FA");if(this.is_2fa_enforced){b=FT.i18n("Disable and reconfigure 2FA")}this.twoFaField.update(FT.i18n("Two-factor authentication is active"));this.twoFaButton.setText(b);this.twoFaButton.setHandler(this.disableTwoFactorAuthentication,this);this.TwoFactorBackupCodesButton.show()}else{this.twoFaField.update(FT.i18n("Two-factor authentication is currently not active"));this.twoFaButton.setText(FT.i18n("Enable 2FA"));this.twoFaButton.setHandler(this.configureTwoFactorAuthentication,this);this.TwoFactorBackupCodesButton.hide()}},configureTwoFactorAuthentication:function(){var a=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"TwoFactorDialog",props:{className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onError:Ext.bind(function(){FT.i18n("Failed to activate two-factor authentication")},this),onClose:Ext.bind(function(){a.destroy()},this),onActivated:Ext.bind(function(){this.updateTwoFactorEnabled(true)},this)}})},disableTwoFactorAuthentication:function(){var a=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"DisableTwoFactorDialog",props:{className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onError:Ext.bind(function(){FT.i18n("Failed to disable two-factor authentication")},this),onClose:Ext.bind(function(){a.destroy()},this),onDisabled:Ext.bind(function(){if(this.is_2fa_enforced){FT.Viewport.enforceTwoFactorAuthentication(FT.app.getActiveModule())}else{FT.notifySuccess(FT.i18n("Two-factor authentication disabled"))}this.updateTwoFactorEnabled(false)},this)}})},generateTwoFactorBackupCodes:function(){var a=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"GenerateBackupCodesDialog",props:{className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onError:Ext.bind(function(){FT.i18n("Failed to generate backup codes")},this),onClose:Ext.bind(function(){a.destroy()},this)}})}});Ext.define("FT.configure.Information",{alias:"widget.ft-configure-information",extend:"Ext.Component",margin:15,cls:"configuration-information box row",isValid:function(){return true},initComponent:function(){this.html=Ext.String.format('{0}<p class="configuration-information__message">{1}</p>',FT.glyphIcon("info-outline",{cls:"text-faded pull-left",size:"x-large"}),this.message);this.callParent(arguments)}});Ext.define("FT.configure.Diagnostics",{alias:"widget.ft-configure-test",extend:"Ext.container.Container",margin:"0 10",initComponent:function(){this.callParent(arguments);var e=Ext.create("Ext.form.Panel",{items:[{xtype:"ftrack-button",action:"save",text:FT.i18n("Send test email to current user"),margin:"0 10 0 0",handler:function(){e.getForm().submit({url:"/tests/mail",success:function(k,m){var l=Ext.decode(m.response.responseText);if(l.success){FT.notifySuccess(l.msg)}else{Ext.Array.each(l.error,function(o,n,p){FT.notifyError(o)})}},failure:function(k,m){try{var l=Ext.decode(m.response.responseText);if(l.success){FT.notifySuccess(l.msg)}else{Ext.Array.each(l.errors,function(p,o,q){FT.notifyError(p.msg)})}}catch(n){}}})}},{xtype:"ftrack-button",action:"save",text:FT.i18n("Send server error email"),handler:function(){e.getForm().submit({url:"/tests/errormail",success:function(k,l){FT.notifyError(l.responseText)},failure:function(k,l){FT.notifyError(l.responseText)}})}}]});var b=Ext.create("Ext.view.View",{tpl:new Ext.XTemplate('<tpl for=".">','<div class="diagnostics__item {[this.getStyle(values.value)]}">','<h2 class="diagnostics__value">{value}</h2>',"<span>{key}</span>","</div>","</tpl>",{getStyle:function(k){return !Ext.isString(k)||k.indexOf("OK")!=-1?"background-success":"background-danger"}}),store:this.store=Ext.create("Ext.data.Store",{fields:["key","value"],autoLoad:true,proxy:{type:"ajax",url:"/tests/getStatus"}})});var a=Ext.create("Ext.form.FieldSet",{title:"<h4>"+FT.i18n("Server status and statistics")+"</h4>",items:[b]});var j=FT.socket.socket.connected,h,g=FT.i18n("Connected to event server"),d=FT.i18n("Unable to connect to event server");h=Ext.create("Ext.form.FieldSet",{title:"<h4>"+FT.i18n("Client status and statistics")+"</h4>",items:[{xtype:"component",tpl:new Ext.XTemplate('<div class="diagnostics__item {class}">',"<span>{text}</span>","</div>"),data:{"class":j?"background-success":"background-danger",text:j?g:d}}]});var c=Ext.create("Ext.form.FieldSet",{title:"<h4>"+FT.i18n("Mail server tests")+"</h4>",items:[e]});this.add([a,h,c])},updateData:function(){this.store.load()}});Ext.define("FT.configure.Saml",{alias:"widget.ft-saml-test",extend:"Ext.button.Button",margin:10,action:"test",text:FT.i18n("Test saved SAML configuration"),handler:function(){window.open("/saml/test","_blank")}});Ext.define("FT.form.field.JsonField",{extend:"Ext.form.field.TextArea",cls:"ft-json-field",alias:"widget.ft-json-field",value:0,resetIfInvalid:false,getErrors:function(b){var c=this.callParent([b]);try{b=JSON.parse(b)}catch(a){c.push("The text is not valid JSON and will not be saved.")}return c}});Ext.ns("FT.configure.operator");FT.configure.operator.editUserRoles=function(d,e,b,c){var a=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"UserRoleDialog",props:{userId:c.get("userid"),className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onClose:function(){a.destroy()},onSave:function(g){a.destroy();FT.util.intercom("edited-user-roles");e.store.reload()}}})};FT.configure.operator.editUserProjectRole=function(g,h,b,e){var d=e.get("userid");var a=e.get("data")[0].project_id;var c=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"ChangeProjectRoleDialog",props:{userId:d,projectId:a,className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onClose:function(){c.destroy()},onError:function(){FT.notifyError(FT.i18n("Failed to save project role"))},onSave:function(j){c.destroy();FT.util.intercom("edited-user-roles-project");h.store.reload()}}})};FT.configure.operator.grantProjectAccess=function(e,g,b,d){var a=FT.app.location.getProjectId();var c=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"AddProjectAccessDialog",props:{projectId:a,className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onClose:function(){c.destroy()},onError:function(){FT.notifyError(FT.i18n("Failed to add access to project. Verify that users does not already have access."))},onSave:function(h){c.destroy();FT.util.intercom("granted-project-access");g.store.load()}}})};FT.configure.operator.open=function(c,d,a,b){FT.list.open(b)};FT.configure.operator.rvopen=function(e,g,b,d){var a=FT.Settings.get("ftrack","server_url");var c=FT.util.security.generateToken(function(h){var j=encodeURI("rvlink:// -flags ModeManagerPreload=ftrack ftrackUrl="+a+' params=\'{"list":["'+d.get("listid")+'"],"auth_token":["'+h+"\"]}'");window.location.href=j})};FT.configure.operator.addCustomAttribute=function(c,d,a){var b=FT.CreateAttributeFactory.create("configure");b.on("createdField",function(){this.load()},a)};FT.configure.operator.editCustomAttribute=function(d,e,a,c){var b=FT.CreateAttributeFactory.edit(c);b.on("createdField",function(){this.load()},a);b.on("fieldchanged",function(){this.load()},a)};FT.configure.operator.addRole=function(c,d,b){var a=Ext.create("FT.configure.RoleEditor",{});a.on("saved",function(){this.load()},b)};FT.configure.operator.editRole=function(d,e,b,c){var a=Ext.create("FT.configure.RoleEditor",{record:c});a.on("saved",function(){this.load()},b)};FT.configure.operator.addWorkflow=function(c,d,b){var a=Ext.create("FT.module.configure.WorkflowBuilder",{workflowId:null});a.on("saved",function(){this.load()},b)};FT.configure.operator.editWorkflow=function(d,e,b,c){var a=Ext.create("FT.module.configure.WorkflowBuilder",{workflowId:c.get("schemeid")});a.on("saved",function(){this.load()},b)};FT.configure.operator.editUser=function(c,e,a,b){var d=e.showEditDialog(b);d.bottomBar.insert(0,{cls:"ft-link-btn",text:FT.i18n("Edit user roles"),handler:function(){d.close();FT.configure.operator.editUserRoles(c,e,a,b)}})};FT.configure.operator.createUser=function(c,d,b,a){Ext.create("FT.configure.CreateUserWindow",{autoShow:true,modal:true,listeners:{close:function(){b.reload()}}})};FT.configure.operator.gotoAccountSettings=function(c,d,b,a){FT.app.open("newconfigure",{view:"account"})};FT.configure.operator.createSubGroup=function(g,h,c,b){var a=h.getCfg().entity.entityId,e=h.getCfg().context,d=FT.model.Group;if(e!="group"){return}newGroup=d.create({name:FT.i18n("New subgroup"),group_id:a,local:0});newGroup.save({success:function(j){h.fireEvent("subgroupcreated",h,j.get("id"),a)},failure:function(j,k){var l=k.request.proxy.reader.jsonData;if(l.message){FT.notifyError(l.message)}}})};FT.configure.operator.createProjectSubGroup=function(h,j,c,b){var g=j.getCfg().resource,d=FT.model.Group,e=j.getCfg().entity,a=g.resourceId;if(!g||g.resourceType!=="group"){return}newGroup=d.create({name:FT.i18n("New subgroup"),group_id:a,local:1});newGroup.save({success:function(k){var l={resource_id:k.get("id"),context_id:e.entityId,type:"allocation"};FTApi.Appointment.create(l,function(m){if(m.success){FT.notifySuccess(FT.i18n("Successfully created subgroup."));j.fireEvent("subgroupcreated",j,k.get("id"),a)}else{FT.notifyError(FT.i18n("An error occurred."));newGroup.destroy()}})},failure:function(k,l){var m=l.request.proxy.reader.jsonData;if(m.message){FT.notifyError(m.message)}}})};FT.configure.operator.addGroupMembers=function(g,h,b,a){var d=h.getCfg().entity.entityId,c,e=h.getCfg().resource;if(e&&e.resourceType==="group"){d=e.resourceId}c=function(j){FTApi.Membership.query({criteria:{group_id:d}},function(l){var k=[],m=[];Ext.each(l.data,function(n){m.push(n.user_id)});Ext.each(j,function(n){if(m.indexOf(n)===-1){k.push({user_id:n,group_id:d})}});FTApi.Membership.create(k,function(n){if(n.success){FT.notifySuccess(FT.i18n("Successfully added members to group."));b.load();FT.util.intercom("ADDED-MEMBERS-TO-GROUP")}else{FT.notifyError(FT.i18n("An error occurred."))}})})};openResourceSelectorWindow({title:FT.i18n("Add members"),saveHandler:c,criteria:{resource_type:"user"}})};FT.configure.operator.removeGroupMembers=function(e,k,l,j){var h=k.getCfg().entity.entityId,g=k.getSelectionModel().getSelection(),d=k.getCfg().resource,b=[],c=[],m,a,n;if(g.length===0){FT.notifyError(FT.i18n("Please select at least one member."));return}if(d&&d.resourceType==="group"){h=d.resourceId}Ext.each(g,function(o){b.push(o.get("entityId")||o.get("userid"));var p=o.get("name")||o.get("firstname")+" "+o.get("lastname");c.push(p)});m=function(){a.close();FTApi.Membership.query({criteria:{group_id:h}},function(p){var o=[];Ext.each(p.data,function(q){if(b.indexOf(q.user_id)!==-1){o.push(q)}});FTApi.Membership["delete"](o,function(q){if(q.success){FT.notifySuccess(FT.i18n("Successfully removed members from group."));l.load()}else{FT.notifyError(FT.i18n("An error occurred."))}})})};n="Would you like to remove "+c.join(", ")+" from the group?";a=Ext.create("FT.window.CancelSave",{title:FT.i18n("Remove members"),saveHandler:m,saveScope:this,saveAction:"delete",saveText:FT.i18n("Remove members"),message:n})};FT.configure.operator.addTeamMembers=function(e,g,c,a){var b=g.getCfg().entity.entityId,d;d=function(h){FTApi.Appointment.query({criteria:{context_id:b,type:"allocation"}},function(j){var l=[],k=[];Ext.each(j.data,function(m){k.push(m.resource_id)});Ext.each(h,function(m){if(k.indexOf(m)===-1){l.push({resource_id:m,context_id:b,type:"allocation"})}});FTApi.Appointment.create(l,function(m){if(m.success){FT.notifySuccess(FT.i18n("Successfully added members to team."));c.load();FT.util.intercom("ADDED-MEMBERS-TO-TEAM")}else{FT.notifyError(FT.i18n("An error occurred."))}})})};openResourceSelectorWindow({title:FT.i18n("Add team members"),saveHandler:d,criteria:{resource_type:"user"}})};FT.configure.operator.removeTeamMembers=function(d,j,k,h){var g=j.getCfg().entity.entityId,e=j.getSelectionModel().getSelection(),b=[],c=[],l,a,m;if(e.length===0){FT.notifyError(FT.i18n("Please select at least one member."));return}Ext.each(e,function(n){b.push(n.get("userid"));c.push(n.get("name"))});l=function(){a.close();FTApi.Appointment.query({criteria:{context_id:g}},function(n){var o=[];Ext.each(n.data,function(p){if(b.indexOf(p.resource_id)!==-1){o.push(p)}});if(!o.length){FT.notifyError(FT.i18n("The member(s) can not be removed.")+"<br>"+FT.i18n("If they are added as part of a group you must remove the group."));return}FTApi.Appointment["delete"](o,function(p){if(p.success){FT.notifySuccess(FT.i18n("Successfully removed members from team."));k.load()}else{FT.notifyError(FT.i18n("An error occurred."))}})})};m="Would you like to remove "+c.join(", ")+" from the team?";a=Ext.create("FT.window.CancelSave",{title:FT.i18n("Remove team members"),saveHandler:l,saveScope:this,saveAction:"delete",saveText:FT.i18n("Remove team members"),message:m})};FT.configure.operator.editObjectType=function(c,d,b,a){Ext.create("FT.configure.ObjectTypeFormWindow",{record:a,columns:d.columns,onSave:function(){d.doUpdate()}})};FT.configure.operator.addObjectType=function(d,e,b,c){var a=e.store.createModel({});Ext.create("FT.configure.ObjectTypeFormWindow",{columns:e.columns,record:a,onSave:Ext.pass(e.doSave,[a],e)})};FT.configure.operator.addAccessKey=function(d,e,b,c){var a=e.store.createModel({});Ext.create("FT.configure.APIKeyFormWindow",{columns:e.columns,record:a,store:b})};Ext.ns("FT.configure");FT.configure.booleanRenderer=function(a,b){if(b){b.style="background-color:transparent!important;border:0px;"}return FTrack.grid._booleanRenderer(a)};FT.configure.colorRenderer=function(b,c){var a="padding: 2px 4px; border-radius: 2px; text-align: center;";a+="background-color: "+b+";";a+="color: "+FT.util.Format.textColorFromColor(b)+";";return'<div style="'+a+'">'+b+"</div>"};FT.configure.fileSizeRenderer=function(a){if(a==0){return"0 Bytes"}var c=["Bytes","KB","MB","GB","TB"];var d=parseInt(Math.floor(Math.log(a)/Math.log(1024)));if(d>c.length-1){d=c.length-1}var b=a/Math.pow(1024,d);return b.toFixed(2)+" "+c[d]};FT.configure.comboRenderer=function(c,l,a,d,h,n,m,j){var o=Ext.pluck(c,"id"),e=-1,p=c[e],g=[],b,k=0;if(!Ext.isArray(l)){l=Ext.isString(l)?l.split(", "):[l]}b=l.length;for(;k<b;k++){e=o.indexOf(l[k]);if(e!=-1){g.push(c[e].name)}}return g.join(", ")};FT.configure.iconRenderer=function(g,c,b,h,e,d,a){return FT.glyphIcon(g,{cls:"icon--inline"})};FT.configure.accessKeyProjectsRenderer=function(a,b){var c=[];Ext.each(a,function(d){if(b.indexOf(d.id)!==-1){c.push(d.name)}});return FT.i18n("All open projects {count, plural, =0 {} other {and {names}}}",{values:{count:c.length,names:c.join(", ")}})};FT.configure.passwordRenderer=function(g,c,b,h,e,d,a){return"*****"};FT.configure.listLinkRenderer=function(g,c,b,h,e,d,a){if(!b){return g}return FTrack.grid.LinkRenderer([{name:b.get("name"),id:b.get("listid"),entity:b.get("entity"),type:"list"}])};FT.configure.overlayRenderer=function(m,j,d,h,o,n,k){var p="",c=1,b=d.get("dates"),m,a,l=this.getWeekends(),g,e=d.get("nrOfDays");for(;c<=e;c++){m=Ext.isDefined(b[c])?b[c]:"&nbsp;";g=Ext.Array.contains(l,c);if(g&&m==="&nbsp;"){a="background-light"}else{if(k.overlay&&k.overlay["function"](m)){a=k.overlay.cls}else{a="background-default"}}m=Ext.util.Format.number(m/60/60,"0.00");p+=Ext.String.format('<div class="metagrid__cell {0}">{1}</div>',a,m)}return p};FT.configure.createList=function(a,b,e,d){var c=Ext.create("FT.configure.MetaGrid",{listeners:{beforesave:function(g){g[0].entity=b},aftersave:function(g){e.call(d,g[0]);c.destroy()}}});c.reloadData("lists",Ext.clone(a));c.getStore().on("load",function(){c.propertyCfg=Ext.Array.filter(c.propertyCfg,function(g){return["entity","isopen"].indexOf(g.dataIndex)==-1});c.onAddClicked()},this,{single:true})};FT.configure.operatorHandler=function(b,a){var c=FT.configure.operator[b];if(Ext.isDefined(c)){c.apply(this,arguments)}};Ext.define("FT.configure.MetaGrid",{extend:"Ext.grid.Panel",border:true,cls:"ftrack-configure-grid ftrack-user-selectable-text",bodyCls:"border-bottom",disableAdd:false,disableResetSort:false,customSettings:false,rowNumberer:true,createButtonText:FT.i18n("Create"),initComponent:function(){this.storeCfg=Ext.value(this.storeCfg,{});this.addEvents(["contentchanged","beforeeditdialog","beforedeletedialog"]);if(!this.topBar){this.tbar=this.topBar=Ext.widget("toolbar",{cls:"background-dark",itemId:"metagrid-toolbar",items:[]})}this.bbar=this.saveBar=Ext.widget("toolbar",{xtype:"toolbar",hidden:true,items:["->",{xtype:"button",cls:"button-primary",text:FT.i18n("Save"),handler:function(){this.doUpdate()},scope:this}]});var b=this.getModuleName();Ext.define(b,{extend:"Ext.data.Model",fields:[],getEntity:function(){return{entityId:this.get("entityId"),entityType:this.get("entityType")}}});var a=Ext.apply({fields:[],model:b,proxy:{url:"/configure/getConfigureGrid",type:"ajax",extraParams:{},reader:{type:"json",root:"data",totalProperty:"total"},writer:{type:"json",writeAllFields:false}}},this.storeCfg);this.disableResetSort=Ext.isDefined(this.storeCfg.sorters);this.store=Ext.create("Ext.data.Store",a);this.store.on({metachange:this.onMetaChange,update:this.onStoreUpdate,scope:this});this.relayEvents(this.store,["beforeload","load"]);this.on({itemdblclick:this.onItemDblClick,itemcontextmenu:this.onItemContextMenu,scope:this});Ext.apply(this,{columns:[]});this.viewConfig=Ext.value(this.viewConfig,{});Ext.applyIf(this.viewConfig,{stripeRows:false,enableTextSelection:true,loadMask:false,trackOver:false,plugins:[this.dragDropPlugin=Ext.create("Ext.grid.plugin.DragDrop",{dragGroup:"config",dropGroup:"config",containerScroll:true})]});this.selModel=Ext.applyIf(this.selModel||{},{pruneRemoved:this.store.buffered!==true});this.callParent(arguments);this.getView().on("drop",this.onDrop,this)},makeExportable:function(){if(Ext.isDefined(this.exportHelper)){delete this.exportHelper}this.exportHelper=FT.ExportFactory.create("metagrid",{});this.exportHelper.setGrid(this)},getMetaId:function(){return this.metaId},onItemContextMenu:function(b,a,g,c,h,d){var j=this.getContextMenu.apply(this,arguments);if(j){h.preventDefault();j.showAt(h.xy[0],h.xy[1])}},getContextMenu:Ext.emptyFn,cancelChanges:function(){this.store.rejectChanges();this.store.load()},getModuleName:function(){return"ConfigureModel"+this.id},onDrop:function(){this.store.suspendEvents(true);var a=this.store.getCount()-1;this.store.each(function(c,b){b=this.reverseSort?a-b:b;c.set("sort",b)},this);this.store.resumeEvents()},onMetaChange:function(a,c){if(this.metaId==c.metaId&&!this.forceMetaUpdate){return}this.metaId=c.metaId;this.setPrimary(c.primary);this.setEditAddOperator(c);this.setSortable(c.sortable,c.reverseSort);this.propertyCfg=Ext.clone(c.property);this.enableCreate=c.enableCreate;this.enableEdit=c.enableEdit;this.enableDelete=c.enableDelete;this.exportable=c.exportable;this.enableManualSort=c.enableManualSort;if(c.preserveScrollOnRefresh){this.getView().preserveScrollOnRefresh=true}var b=this.processColumns(c.columns,c);if(this.exportable){this.makeExportable()}this.updateToolbar(a,c);this.reconfigure(a,b);this.fireEvent("contentchanged",c)},reconfigure:function(){this.callParent(arguments)},setSortable:function(b,a){if(b){this.dragDropPlugin.enable()}else{this.dragDropPlugin.disable();if(!this.rendered){this.on("afterrender",function(){this.dragDropPlugin.disable()},this,{single:true})}}this.reverseSort=a;this.isColumnsSortable=!b},setEditAddOperator:function(a){this.overrideAdd=a.overrideAdd;this.overrideEdit=a.overrideEdit},getAddHandler:function(){return this.overrideAdd?Ext.pass(FT.configure.operatorHandler,[this.overrideAdd,this,this.store],this):this.onAddClicked},getEditHandler:function(a){if(!this.enableEdit||this.fireEvent("beforeeditdialog",this,a)===false){return Ext.emptyFn}return this.overrideEdit?Ext.pass(FT.configure.operatorHandler,[this.overrideEdit,this,this.store],this):Ext.bind(this.showEditDialog,this)},getDefaultToolbarItems:function(){return[]},updateToolbar:function(c,e){var b=e.buttons,d=this.getDefaultToolbarItems(),a,g=[];if(this.enableCreate){d.push({xtype:"button",cls:"button-primary",disabled:this.disableAdd,text:this.createButtonText,handler:this.getAddHandler(),scope:this})}Ext.each(b,function(h){if(Ext.isString(h)){d.push(h);if(h=="->"){a=true}}else{h.xtype=Ext.value(h.xtype,"ftrack-button");h.handler=Ext.pass(FT.configure.operatorHandler,[h.operator,this,this.store]);h.metaGrid=this}d.push(h)},this);if(this.exportable){g.push({glyph:FT.glyph("export"),text:FT.i18n("Export"),menu:this.exportHelper.getMenu().menu})}if(this.customSettings){g.push({text:FT.i18n("Attributes"),menu:this.columnSelector.menu})}if(this.customSettings||this.exportable){if(!a){d.push("->");a=true}d.push({xtype:"button",glyph:FT.glyph("configure"),menu:{xtype:"menu",items:g}})}if(this.enableManualSort){d.push({xtype:"checkbox",labelWidth:125,fieldLabel:FT.i18n("Manual sort"),afterLabelTextTpl:FT.util.getHelp(FT.i18n("Enable drag and drop reordering.")),checked:!this.isColumnsSortable,handler:function(h){this.forceMetaUpdate=true;this.store.sorters.clear();this.reloadData(this.getName(),{enableSort:h.checked})},scope:this})}if(this.topBar&&this.topBar.isComponent){this.topBar.suspendLayout=true;this.topBar.removeAll(true);this.topBar.suspendLayout=false;this.topBar.add(d);d.length==0?this.topBar.hide():this.topBar.show()}},addTopBar:function(a){this.topBar.suspendLayout=true;this.topBar.removeAll(true);this.topBar.suspendLayout=false;this.topBar.add(a);a.length==0?this.topBar.hide():this.topBar.show()},onStoreUpdate:function(){var a=this.store.getUpdatedRecords();this.toggleSave(a.length>0)},toggleSave:function(a){a?this.saveBar.show():this.saveBar.hide()},processColumns:function(columns,meta){columns=Ext.clone(columns);this.onlySaveIfModified={};var name=this.getName(),flexExists=false;var avilibleColumns=[];this.customSettings=false;var value=[];try{value=FT.getVar(this.getMetaId()+"_savedattributecolumns",Ext.encode([]));value=Ext.decode(value)}catch(e){log(e)}Ext.each(columns,function(c,index){if(c.hideableColumn){this.customSettings=true;c.hidden=value.indexOf(c.dataIndex)==-1;avilibleColumns.push({name:c.text,value:c.dataIndex})}if(c.renderer){c.renderer=eval(c.renderer)}if(c.summaryRenderer){c.summaryRenderer=eval(c.summaryRenderer)}if(c.onlySaveIfModified===true){this.onlySaveIfModified[c.dataIndex]=c.onlySaveIfModified}if(c.columns){Ext.each(c.columns,function(c2){if(c2.renderer){c2.renderer=eval(c2.renderer)}if(c2.summaryRenderer){c2.summaryRenderer=eval(c2.summaryRenderer)}},this)}c.sortable=(!Ext.isDefined(c.sortable)||c.sortable)&&this.isColumnsSortable;c.menuDisabled=Ext.value(c.menuDisabled,true);if(Ext.isDefined(this.sortableColumns)&&!this.sortableColumns){c.sortable=false}if(c.flex){flexExists=true}else{if(!c.hideable){flexCol=c}}},this);if(!flexExists&&flexCol&&!flexCol.width){flexCol.flex=1}if(this.customSettings){if(Ext.isDefined(this.columnSelectorStore)){this.columnSelectorStore.destroy()}if(Ext.isDefined(this.columnSelector)){this.columnSelector.destroy()}this.columnSelectorStore=Ext.create("Ext.data.Store",{fields:["name","value"],mode:"local",proxy:{type:"memory",reader:{type:"json"}},sorters:[{property:"name",direction:"asc"}]});this.columnSelector=Ext.create("FT.button.Selector",{cls:"ftrack-button-grey",text:FT.i18n("Attributes"),itemType:"checkbox",store:this.columnSelectorStore,displayField:"name",valueField:"value",value:value,selectAction:undefined,listeners:{selectionchanged:function(values){Ext.each(this.columns,function(col){if(col.hideableColumn&&values.indexOf(col.dataIndex)!=-1){col.show()}else{if(col.hideableColumn){col.hide()}}},this);FT.setVar(this.getMetaId()+"_savedattributecolumns",Ext.encode(values))},scope:this}});this.columnSelectorStore.loadData(avilibleColumns)}if(meta.enableActionColumns){var actions=[];if(this.enableEdit){actions.push({glyph:FT.glyph("pen"),tooltip:FT.i18n("Edit"),handler:this.onEditAction,scope:this})}if(this.enableDelete){actions.push({glyph:FT.glyph("delete"),tooltip:FT.i18n("Delete"),handler:this.onDeleteAction,scope:this})}if(meta.customActionColumns){Ext.each(meta.customActionColumns,function(aColumn){aColumn.handler=Ext.pass(this.onCustomAction,[aColumn.operator])},this);actions=Ext.Array.merge(actions,meta.customActionColumns)}columns.splice(0,0,{menuDisabled:true,xtype:"actioncolumn",width:actions.length*25+10,items:actions})}if(this.rowNumberer){columns.splice(0,0,{menuDisabled:true,xtype:"rownumberer",width:40,align:"center",renderer:function(value,metaData,record,rowIdx,colIdx,store){metaData.tdCls="button-text-color";return record.index+1}})}return columns},getPrimary:function(){return this._primary},setPrimary:function(a){this._primary=a},setName:function(a){this._name=a},getName:function(){if(!this._name){throw"name not set"}return this._name},nameExists:function(){return Ext.isDefined(this._name)},setCfg:function(a){this.cfg=Ext.clone(a)},getCfg:function(){return Ext.clone(this.cfg)},reloadData:function(c,a){a=a||this.getCfg()||{};this.setCfg(a);var b=!this.nameExists()||this.getName()!=c;if(this.disableResetSort){b=false}this.setName(c);Ext.apply(this.store.getProxy().extraParams,{name:c});Ext.apply(this.store.getProxy().extraParams,{cfg:Ext.encode(this.getCfg())});if(this.store.pageMap){this.store.pageMap.clear()}this.store.load();if(b){this.store.sorters.clear()}},onAddClicked:function(){this.onDialogOpen();var a=this.store.createModel({});var b=Ext.create("FT.configure.MetaFormWindow",{title:FT.i18n("Add"),autoShow:true,propertyCfg:this.propertyCfg,model:a,actionButtonName:"Create",listeners:{close:this.onDialogClose,actionclicked:Ext.pass(this.doSave,[a]),scope:this}});b.center()},onDeleteAction:function(c,e,a){var d=c.getStore().getAt(e),b;if(this.fireEvent("beforedeletedialog",this,d)===false){return}b=Ext.create("FT.configure.DeleteDialog",{data:{id:d.get(this.getPrimary()),name:this.getName(),realname:d.get("name")},listeners:{itemremoved:function(){this.reloadData(this.getName())},scope:this}})},onEditAction:function(b,e,a){var d=b.getStore().getAt(e);var c=this.getEditHandler(d);c(d)},onCustomAction:function(a,c,e,b){var d=c.getStore().getAt(e);FT.configure.operatorHandler(a,c,this.store,d)},showEditDialog:function(a){this.onDialogOpen();var b=Ext.create("FT.configure.MetaFormWindow",{title:FT.i18n("Edit"),autoShow:true,propertyCfg:this.propertyCfg,model:a,actionButtonName:"Update",listeners:{actionclicked:function(){this.doUpdate();b.close()},close:this.onDialogClose,scope:this}});return b},doUpdate:function(){var c=[],b=this.store.getProxy().getWriter(),a;Ext.each(this.store.getModifiedRecords(),function(d){a=b.getRecordData(d,{});a[this.getPrimary()]=d.get(this.getPrimary());c.push(a)},this);Ext.Ajax.request({timeout:600000,url:"/configure/update",params:{data:Ext.encode(c),name:this.getName()},success:function(d){var e=Ext.decode(d.responseText);if(e.success){FT.notifySuccess(e.message)}else{FT.notifyError(e.message);this.reloadData(this.getName())}},scope:this});this.store.commitChanges()},getSaveData:function(c){var d=this.store.getProxy().getWriter(),b={},a=d.getRecordData(c,{});Ext.iterate(a,function(h,g,e){if(Ext.isDefined(this.onlySaveIfModified)&&this.onlySaveIfModified[h]===true&&!c.isModified(h)){return}b[h]=g},this);return b},doSave:function(a,c){a=Ext.isArray(a)?a:[a];var b=[];Ext.each(a,function(d){b.push(this.getSaveData(d))},this);this.fireEvent("beforesave",b);Ext.Ajax.request({url:"/configure/create",timeout:600000,params:{data:Ext.encode(b),cfg:Ext.encode(this.getCfg()),name:this.getName()},success:function(d){var e=Ext.decode(d.responseText);if(e.success){FT.notifySuccess(e.message);if(c){c.close()}this.fireEvent("aftersave",e.createdIds)}else{FT.notifyError(e.message)}this.reloadData(this.getName())},scope:this})},onItemDblClick:function(b,a,h,c,j,d){var g=this.getEditHandler(a);g(a)},onDialogClose:function(){this.store.rejectChanges();this.store.resumeEvents()},onDialogOpen:function(){this.store.suspendEvents(true)}});Ext.define("FT.configure.DeleteDialog",{extend:"FT.ModalWindow",title:FT.i18n("Confirm delete"),autoShow:true,cls:"ftrack-remove-window x-unselectable",width:400,height:200,html:FT.i18n("Are you sure you want to delete this?"),bodyPadding:10,closable:false,modal:true,initComponent:function(){this.addEvents("itemremoved");this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),handler:function(){this.close()},scope:this},{xtype:"button",cls:"button-danger",text:FT.i18n("Delete"),handler:Ext.bind(this.doDelete,this,[this.data.id,this.data.name])}]});this.callParent(arguments);if(Ext.isDefined(this.data.realname)){if(this.data.name=="manager_types"){this.update('Are you sure you want to delete the manager type "'+this.data.realname+'"?')}else{if(this.data.name=="disk"){this.update('Are you sure you want to delete the disk "'+this.data.realname+'"?')}}}},doDelete:function(c,b){log("this.data");log(this.data);if(!c||!b){throw"typeid or name not specified"}var a=new Ext.LoadMask(this,{msg:"Please wait...",floating:{shadow:false}});a.show();Ext.Ajax.request({timeout:600000,url:"/configure/delete",params:{id:c,name:b},success:function(d){var e=Ext.decode(d.responseText);if(e.success){FT.notifySuccess(e.message);this.fireEvent("itemremoved");this.close()}else{this.update(e.message)}a.destroy()},failure:function(){a.destroy();this.close()},scope:this})}});Ext.define("FT.configure.MetaFormWindow",{extend:"FT.ModalWindow",modal:true,autoScroll:true,mixins:{observable:"Ext.util.Observable"},initComponent:function(){var a=this;this.addEvents("actionclicked");this.maxHeight=Ext.getBody().getHeight();this.items=[this.property=Ext.widget("ft-metaproperty",{cls:"ft-grid-metaproperty",propertyCfg:this.propertyCfg,model:this.model,width:400,rowLines:false,bodyBorder:false,listeners:{resize:function(){a.center()}}})];this.bbar=this.bottomBar=Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),handler:function(){this.close()},scope:this},{xtype:"button",cls:"button-primary",text:this.actionButtonName,handler:this.onSave,scope:this}]});this.callParent(arguments)},onSave:function(){this.property.completeEdit();this.fireEvent("actionclicked",this)}});Ext.define("FT.configure.MetaProperty",{extend:"Ext.form.Panel",alias:"widget.ft-metaproperty",padding:15,hideHeaders:true,border:false,layout:"anchor",defaults:{padding:"0 0 0 0",margin:"0 0 10 0",anchor:"100%"},nameColumnWidth:150,initComponent:function(){this.callParent();if(this.propertyCfg&&this.model){this.updateData(this.propertyCfg,this.model)}},updateData:function(c,b){this.propertyCfg=c;this.model=b;var a=[];Ext.each(this.propertyCfg,function(d){var e;if(d.readOnly){return}if(Ext.isString(d.editor)){e={xtype:d.editor}}else{if(Ext.isObject(d.editor)){e=Ext.clone(d.editor)}else{if(!d.editor){e={xtype:"textfield"}}}}if(e.xtype==="checkboxfield"||e.xtype==="checkbox"){e.checked=["true",true,"1",1,"on"].indexOf(this.model.get(d.dataIndex))!==-1}e.value=this.model.get(d.dataIndex);e.fieldLabel=d.text;if(d.help){e.afterLabelTextTpl=FT.util.getHelp(d.help)}e.labelWidth=this.nameColumnWidth;e.itemId=d.dataIndex;a.push(e)},this);this.removeAll(true);this.add(a);this.items.each(function(d){if(d.editRecord){d.editRecord(this.model)}d.on({change:this.onPropertyChange,blur:this.handleBlur,scope:this})},this)},handleBlur:function(a){if(!a.isValid()&&a.resetIfInvalid!==false){a.setValue(this.model.get(a.itemId))}},onPropertyChange:function(a){if(a.isValid()){this.model.set(a.itemId,a.getValue())}},completeEdit:function(){this.blur()}});Ext.define("FT.configure.MetaPropertyGrid",{extend:"Ext.grid.property.Grid",alias:"widget.ft-metaproperty-grid",padding:15,hideHeaders:true,border:false,columnLines:false,disableSelection:true,viewConfig:{stripeRows:false,selectedCellCls:""},nameColumnWidth:150,initComponent:function(){var a;this.source={};this.callParent();if(Ext.isDefined(this.editors.number)){this.editors.number.addCls("numberfield")}if(Ext.isDefined(this.editors.string)){this.editors.string.addCls("metaFormInput metaformInput-text")}if(this.propertyCfg&&this.model){this.updateData(this.propertyCfg,this.model)}this.on("propertychange",this.onPropertyChange,this);this.on("cellclick",function(b,k,d,c,g,j,h){if(Ext.get(h.getTarget()).child(".checkbox")){return false}});this.cellEditPlugin=this.plugins[0]},getCellEditor:function(a,c){var d=a.get(this.nameField);var b=this.sourceConfig[d].editor;if(Ext.isDefined(b)){b.cls="metaFormInput";if(b.xtype=="combo"){b.cls+=" combo"}else{if(b.xtype=="textfield"){b.cls+=" metaformInput-text"}else{if(b.xtype=="textarea"){b.cls+=" metaformInput-textarea"}else{if(b.xtype=="ft-labeleditor"||b.xtype=="boxselect"){b.cls+=" labeleditor"}else{if(b.xtype=="colorfield"){b.cls+=" colorfield"}else{if(b.xtype=="numberfield"){b.cls+=" numberfield"}}}}}}if(Ext.isDefined(b.field)&&b.field.hasCls("metaformInput-textarea")){b.addCls("metaformInput-textarea")}}if(Ext.isDefined(b)&&Ext.isDefined(b.xtype)&&b.xtype=="checkboxfield"){a.set("value",!a.get("value"));return false}if(Ext.isDefined(b)&&Ext.isDefined(b.field)&&Ext.isDefined(b.field.$className)&&b.field.$className=="Ext.form.field.Checkbox"){b.on("beforestartedit",function(){a.set("value",!a.get("value"));return false})}var b=this.callParent(arguments);if(b.field&&b.field.editRecord){b.field.editRecord(this.model)}return b},updateData:function(propertyCfg,model){this.propertyCfg=propertyCfg;this.model=model;var source={},sortOrder=Ext.pluck(propertyCfg,"dataIndex"),value;this.sourceConfig={};Ext.each(propertyCfg,function(c){if(c.readOnly){return}this.sourceConfig[c.dataIndex]={};value=model.get(c.dataIndex);source[c.dataIndex]=value;if(c.renderer&&c.disablePropertyRenderer!==true){if(Ext.isFunction(c.renderer)){this.sourceConfig[c.dataIndex].renderer=c.renderer}else{this.sourceConfig[c.dataIndex].renderer=eval(c.renderer)}}if(c.editor){this.sourceConfig[c.dataIndex].editor=c.editor}this.sourceConfig[c.dataIndex].displayName=c.text;if(c.help){this.sourceConfig[c.dataIndex].displayName+=FT.util.getHelp(c.help)}},this);this.getStore().sort([{sorterFn:function(r1,r2){var o1=sortOrder.indexOf(r1.get("name"));var o2=sortOrder.indexOf(r2.get("name"));return o1<o2?-1:1}}]);this.setSource(source)},onPropertyChange:function(a,b){this.model.set(a,b)},completeEdit:function(){this.cellEditPlugin.completeEdit()}});Ext.define("FT.configure.SyncDirectoryServiceButton",{extend:"Ext.button.Button",alias:"widget.sync-directory-service-button",text:FT.i18n("Sync"),tooltip:FT.i18n("Click on a service to sync ftrack users from"),metaGrid:undefined,services:[{text:FT.i18n("Google Apps"),url:"/configure/googleSync",name:"google",handler:function(b){var a=Ext.decode(b.responseText);window.location=a.url}},{text:FT.i18n("LDAP/AD"),url:"/configure/ldapSync",name:"ldap"}],initComponent:function(){this.enabledServices=Ext.value(this.enabledServices,[]);this.menu=[];Ext.each(this.services,function(a){this.menu.push({text:FT.i18n("Sync with ")+a.text,disabled:!this.isServiceEnabled(a.name),tooltip:this.getServiceTooltip(a),handler:Ext.bind(this.onSyncServiceClicked,this,[a])})},this);if(this.enabledServices.length===0){this.disabled=true;this.tooltip="No services enabled or configured"}this.callParent()},isServiceEnabled:function(a){return Ext.Array.contains(this.enabledServices,a)},getServiceTooltip:function(a){if(this.isServiceEnabled(a.name)){return"Click to start syncing with "+a.text}else{return a.text+" service is not enabled"}},onSyncServiceClicked:function(a){var c,b=this.metaGrid.getStore();c=new Ext.LoadMask(this.metaGrid,{msg:"Syncing users from "+a.text});c.show();Ext.Ajax.request({timeout:600000,url:a.url,success:function(d){if(a.handler){a.handler.apply(this,[d])}else{b.load()}},callback:function(){c.hide();c.destroy()}})}});Ext.define("RAW.Configure.Account",{extend:"RAW.Widget",alias:"widget.configure_account",layout:"card",header:false,PAGE_LOAD_TIMEOUT_DELAY:20000,bodyStyle:"background: white",_addWindowEventListener:function(a,d,c){var e=window.addEventListener?"addEventListener":"attachEvent";var b=window[e];if(e==="attachEvent"){a="on"+a}b(a,Ext.bind(d,c))},initWidget:function(){this.pageLoadTimeout=new Ext.util.DelayedTask(this.onPageLoadTimeout,this);this.pageLoadTimeout.delay(this.PAGE_LOAD_TIMEOUT_DELAY);this._addWindowEventListener("message",this.onPostMessageReceived,this);FTApi.Account.getUrl({},Ext.bind(function(a){a=a||{};if(a.success&&a.type==="iframe"){this.displayUrl(a.url)}else{if(a.success&&a.type==="link"){this.showPlaceholder({message:['<h2 style="color: #333">',FT.i18n("Click the link below to manage your subscription"),"</h2>",'<p><a href="'+a.url+'" target="_blank">',FT.i18n("Manage subscription"),"</a></p>"].join("")});this.pageLoadTimeout.cancel()}else{this.setErrorMessage(a.message);this.pageLoadTimeout.cancel()}}},this));this.showPlaceholder({message:FT.i18n("Loading..."),loading:true})},showPlaceholder:function(a){if(!this.placeholder){this.placeholder=Ext.create("Ext.Component",{cls:"account-settings-placeholder",tpl:['<h2 class="account-settings-placeholder__header {headerCls}">','<tpl if="loading">','<span class="loader"></span>',"</tpl>",'<tpl if="error">','<div class="account-settings-placeholder__icon">{[FT.glyphIcon("error")]}</div>',"</tpl>","{message}","</h2>",'<p class="text-faded">',"{details}","</p>"].join("")});this.add(this.placeholder)}if(a.error){a.headerCls="text-danger"}this.placeholder.update(a);this.getLayout().setActiveItem(this.placeholder)},onPostMessageReceived:function(b){try{data=Ext.decode(b&&b.data,true)||{};if(data.message==="pageLoaded"){this.pageLoadTimeout.cancel();this.getLayout().setActiveItem(this.iframe);this.remove(this.placeholder);b.source.postMessage("pageLoadedConfirmed",b.origin)}}catch(a){log(a)}},onPageLoadTimeout:function(){this.setErrorMessage("Account management pages are taking longer than expected to load. <br>Make sure you have internet access and have configured your firewall to allow access.")},displayUrl:function(a){this.iframe=Ext.create("Ext.Component",{autoEl:{tag:"iframe",frameborder:0,src:a}});this.add(this.iframe)},setErrorMessage:function(a){a=a||FT.i18n("An unexpected error occurred loading the page");var b='<a href="https://help.ftrack.com/using-ftrack/getting-started/managing-your-account" target="_blank">'+FT.i18n("documentation")+"</a>";this.showPlaceholder({message:a,error:true,details:['<p style="text-align: center;">',FT.i18n("For more information, please see the {documentationLink}.",{values:{documentationLink:b}}),"</p>"].join(""),cls:"text-danger"})}});Ext.define("FT.configure.ObjectTypeForm",{extend:"Ext.form.Panel",layout:"anchor",bodyPadding:10,defaults:{labelWidth:150,anchor:"100%"},_orignalRecord:null,iconOptions:null,record:null,onCancel:Ext.emptyFn,onSave:Ext.emptyFn,initComponent:function(){this.items=[{xtype:"textfield",fieldLabel:FT.i18n("Name"),name:"name",regex:new RegExp("^[\\w ]+$"),regexText:FT.i18n("Name can only contain English letters, numbers and spaces."),allowBlank:false},{fieldLabel:FT.i18n("Icon"),name:"icon",xtype:"combobox",displayField:"name",valueField:"id",lazyRender:true,forceSelection:true,allowBlank:false,queryMode:"local",tpl:Ext.create("Ext.XTemplate",'<tpl for=".">','<div class="x-boundlist-item">{[FT.glyphIcon(values.id, {cls: "icon--inline"})]} {name}</div>',"</tpl>"),store:Ext.create("Ext.data.ArrayStore",{fields:["id","name"],data:this.iconOptions||[]})},{xtype:"checkboxfield",fieldLabel:FT.i18n("Priority"),name:"ispriority",defaultValue:true,handler:Ext.pass(this._onFieldChanged,["ispriority"],this)},{html:FT.i18n("Select a priority to set on existing objects and update workflow schemas to include it."),padding:"10 0 5",visibleFor:"ispriority",hidden:true},{xtype:"ft-priorityfield",anchor:"50%",name:"default_priorityid",visibleFor:"ispriority",valueField:"priorityid",displayField:"name",hidden:true},{xtype:"checkboxfield",fieldLabel:FT.i18n("Type"),name:"istypeable",defaultValue:true,handler:Ext.pass(this._onFieldChanged,["istypeable"],this)},{html:FT.i18n("Select a type to set on existing objects and update workflow schemas to include it."),padding:"10 0 5",visibleFor:"istypeable",hidden:true},{xtype:"combobox",anchor:"50%",name:"default_typeid",visibleFor:"istypeable",store:FT.util.copyStore("FT.store.TaskType"),valueField:"typeid",displayField:"name",hidden:true},{xtype:"checkboxfield",fieldLabel:FT.i18n("Status"),name:"isstatusable",defaultValue:true,handler:Ext.pass(this._onFieldChanged,["isstatusable"],this)},{html:FT.i18n("Select a status to set on existing objects and update workflow schemas to include it."),padding:"10 0 5",visibleFor:"isstatusable",hidden:true},{xtype:"combobox",anchor:"50%",name:"default_statusid",visibleFor:"isstatusable",store:FT.util.copyStore("FT.store.TaskStatus"),valueField:"statusid",displayField:"name",hidden:true}];this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:["->",{text:FT.i18n("Cancel"),scope:this,handler:this.onCancel},{text:FT.i18n("Save"),cls:"button-primary",formBind:true,scope:this,handler:this._onSavePressed}]});this.callParent(arguments);if(this.record){this.record.set({default_priorityid:undefined,default_typeid:undefined,default_statusid:undefined});this._orignalRecord=this.record.copy();this.loadRecord(this.record)}},_onFieldChanged:function(a,c,b){Ext.Array.forEach(this.query("[visibleFor="+a+"]"),function(d){var e=this._orignalRecord&&this._orignalRecord.get(a)===false&&!!b;d.setVisible(e)},this)},_shouldDisplayConfirmation:function(){if(!this._orignalRecord){return false}var a=this.record.copy();this.getForm().updateRecord(a);var b=Ext.Array.some(["ispriority","istypeable","isstatusable"],function(c){var d=!!this._orignalRecord.get(c)&&!a.get(c);return d},this);return b},_onSavePressed:function(){if(this._shouldDisplayConfirmation()){Ext.create("FT.ConfirmDialog",{title:FT.i18n("Confirm irreversible change"),autoShow:true,scope:this,actionHandler:this._onSaveConfirmed,msg:['<p class="text-danger">Removing priority, status or type from an object',"will remove all existing values and is irreversible.</p>","<p>Are you <strong>sure</strong> want to update the object?</p>"].join(" ")})}else{this._onSaveConfirmed()}},_onSaveConfirmed:function(){this.getForm().updateRecord();this.onSave()}});Ext.define("FT.configure.ObjectTypeFormWindow",{extend:"FT.Window",width:450,height:450,layout:"fit",modal:true,autoShow:true,title:FT.i18n("Configure object"),record:null,columns:null,onSave:Ext.emptyFn,padding:10,initComponent:function(){var a=(Ext.Array.findBy(this.columns,function(b){return b.dataIndex==="icon"})||{}).options||[];this.items=[Ext.create("FT.configure.ObjectTypeForm",{iconOptions:a,record:this.record,onCancel:Ext.bind(this.close,this),onSave:Ext.Function.createSequence(this.onSave,this.close,this)})];this.callParent(arguments)}});Ext.define("FT.configure.APIKeyFormWindow",{extend:"FT.Window",width:450,height:350,layout:"fit",modal:true,autoShow:true,title:FT.i18n("Create API key"),record:null,columns:null,padding:10,initComponent:function(){var a=[];Ext.each(this.columns,function(c){if(c.editor&&c.dataIndex==="roleIds"){var d=FT.clone(c.editor);d.name="role_ids";d.fieldLabel=c.text;a.push(d)}else{if(c.dataIndex=="description"){a.push({xtype:"textarea",fieldLabel:FT.i18n("Description"),emptyText:FT.i18n("Enter a short description of what this API key will be used for."),name:"description",allowBlank:true,padding:"0 0 10 0"})}}});var b=Ext.create("Ext.toolbar.Toolbar",{items:["->",{text:FT.i18n("Cancel"),scope:this,handler:this.close},{text:FT.i18n("Save"),cls:"button-primary",formBind:true,scope:this,handler:this.onSave}]});this.items=[this.form=Ext.create("Ext.form.Panel",{layout:"anchor",bodyPadding:10,defaults:{labelWidth:150,anchor:"100%"},items:a,bbar:b})];this.callParent(arguments)},handleResponse:function(a){if(a&&a.success){var b=Ext.create("FT.window.CancelSave",{height:230,modal:true,cancelHandler:null,saveText:FT.i18n("Close"),saveHandler:function(c){this.close()},message:FT.i18n("This is the only time that the key can be viewed. You cannot recover it later. However, you can create a new key at any time.")+'<br><br><textarea class="api-key-textarea" rows="3" cols="50" readonly="readonly">'+a.api_key+"</textarea>",title:FT.i18n("The API key has been created"),listeners:{afterrender:function(c){var d=c.el.down(".api-key-textarea");d.on("click",function(g,e){e.focus();e.select()})}}});this.store.load();this.close()}else{FT.notifyError(a.message)}},onSave:function(){FTApi.AccessKey.create_new(this.form.getValues(),Ext.bind(this.handleResponse,this))}});Ext.define("FT.wizard.AbstractPage",{layout:"fit",extend:"Ext.container.Container",dirty:false,showHeader:true,initComponent:function(){this.callParent(arguments)},internalInit:function(b,a){this.fromPage=b;this.setData(a);this.init()},setData:function(a){this.data=a},init:function(){FT.util.Exception("init not implemented")},isValid:function(){return true},setDirty:function(a){this.dirty=a},isDirty:function(){return this.dirty},setVeryDirty:function(a){this.veryDirty=a},isVeryDirty:function(){return this.veryDirty},getNext:function(){return null},getPrev:function(){return this.fromPage},getSetting:function(a){var b=this.getData().findRecord("setting",a);if(!b){return null}return b.get("value")},addSetting:function(a,b){this.getData().add({setting:a,value:b})},setSetting:function(a,c){var b=this.getData().findRecord("setting",a);if(b){b.set("value",c)}else{this.addSetting(a,c)}},getData:function(){return this.data},getTools:function(){return[]},setErrors:function(a){this.getWizard().getErrorBox().showError(a)},clearErrors:function(){this.getWizard().getErrorBox().clear()},getNextButton:function(){return{text:FT.i18n("Next"),cls:"ftrack-button-grey"}},getPrevButton:function(){return{text:FT.i18n("Previous"),cls:"ftrack-button-grey"}},showLoadMask:function(a){if(Ext.isDefined(this.myMask)){this.myMask.destroy()}this.myMask=new Ext.LoadMask(this.up("window"),{msg:a,floating:{shadow:false}});this.myMask.show()},hideLoadMask:function(){if(Ext.isDefined(this.myMask)){this.myMask.hide();this.myMask.destroy()}},getWizard:function(){return this.wizard}});Ext.define("FT.wizard.Panel",{extend:"Ext.panel.Panel",layout:"border",initComponent:function(){this.pages={};this.top=Ext.create("Ext.panel.Panel",{region:"north",height:65,html:FT.i18n("Title")});this.main=Ext.create("Ext.container.Container",{region:"center",layout:"fit"});this.prevButton=Ext.create("Ext.button.Button",{text:FT.i18n("Previous"),handler:Ext.bind(this.previous,this)});this.nextButton=Ext.create("Ext.button.Button",{text:FT.i18n("Next"),cls:"button-primary",handler:Ext.bind(this.next,this)});this.errorBox=Ext.create("FT.error.ToolbarErrorBox",{width:400});this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:[this.errorBox,"->",this.prevButton,this.nextButton]});this.callParent(arguments);this.setNextPage(this.firstCard,this.data);this.on("moveToNext",function(a){this.setNextPage(a)},this);this.add([this.main])},getErrorBox:function(){return this.errorBox},setButtons:function(a,b){if(a){this.nextButton.setText(a.text);if(a.cls){this.nextButton.addCls(a.cls)}this.nextButton.show()}else{this.nextButton.hide()}if(b){this.prevButton.setText(b.text);if(b.cls){this.prevButton.addCls(b.cls)}this.prevButton.show()}else{this.prevButton.hide()}},removeButtonCls:function(a,b){if(a){if(a.cls){this.nextButton.removeCls(a.cls)}}if(b){if(b.cls){this.prevButton.removeCls(b.cls)}}},next:function(){if(!this.currentPage.isValid()){return}var a=this.currentPage.getNext(this);if(a==false){return}this.setNextPage(a)},setNextPage:function(nextPage,data,reuseInstance){if(!nextPage){this.up("window").close();return}if(this.currentPage&&this.currentPage.isVeryDirty()){this.currentPage.setVeryDirty(false);if(Ext.isDefined(this.pages[nextPage])){delete this.pages[nextPage]}}if(!Ext.isDefined(this.pages[nextPage])){var pageClass=eval(nextPage);var className=nextPage;nextPage=new pageClass({});this.pages[className]=nextPage}else{nextPage=this.pages[nextPage]}this.fireEvent("cardchanged",nextPage);this.initPageAndData(nextPage,data);this.setPage(nextPage)},previous:function(){if(this.currentPage){var a=this.currentPage.getPrev();if(a===false){return}if(a=="close"){this.setNextPage()}else{this.setPage(a)}}},setTitleHeader:function(a){if(Ext.isDefined(this.up("window"))){this.up("window").setTitle(a)}else{this.on("render",function(){this.setTitleHeader(a)},this)}},initPageAndData:function(b,c){b.wizard=this;var a=this.currentPage?this.currentPage.getData():{};if(Ext.isDefined(c)){a=c}var a=FT.clone(a);b.internalInit(this.currentPage,a)},setPage:function(c){this.errorBox.clear();if(Ext.isDefined(this.currentPage)){var a=this.currentPage.getNextButton();var b=this.currentPage.getPrevButton();this.removeButtonCls(a,b)}var a=c.getNextButton();var b=c.getPrevButton();this.setButtons(a,b);c.show();this.main.add(c);this.setTitleHeader(c.title);if(Ext.isDefined(this.currentPage)){this.main.remove(this.currentPage,false);this.currentPage.hide()}this.currentPage=c},getTools:function(){return this.currentPage.getTools()}});Ext.define("FT.wizard.Window",{extend:"FT.ModalWindow",id:"ftrack_wizard",width:500,height:350,resizable:false,maximizable:false,closable:false,layout:"fit",autoScroll:true,modal:true,initComponent:function(){var a=Ext.create("FT.wizard.Panel",{data:this.data,firstCard:this.firstCard});var b=a.getTools();if(b&&b.length){this.toolsToolbar=Ext.create("Ext.toolbar.Toolbar",{items:b});this.tbar=this.toolsToolbar}this.items=a;this.callParent();a.on("cardchanged",this.onCardChanged,this);a.on("afterrender",function(){a.fireEvent("cardchanged",a.currentPage)},this)},onCardChanged:function(d){var b=this.getWidth(),c=this.getHeight(),j=d.cardWidth,h=d.cardHeight,g=FT.Viewport.getWidth(),e=FT.Viewport.getHeight(),k=100;this.getHeader().setVisible(d.showHeader);if(this.toolsToolbar){this.toolsToolbar.setVisible(d.showHeader)}if(!j||!h){return}if(j>g-k){j=g-k}if(h>e-k){h=e-k}if(b===j&&c===h){return}var a=Math.round((g-j)/2);var l=Math.round((e-h)/2);this.animate({to:{x:a,y:l,width:j,height:h}})}});Ext.define("FT.wizard.card.ImportSelector",{extend:"FT.wizard.AbstractPage",cls:"ft-importer",title:FT.i18n("Select what to import"),initComponent:function(){this.callParent();this.importerStore=Ext.create("Ext.data.Store",{fields:["setting","value"],data:[{setting:"type"},{setting:"dbId"},{setting:"entity"}]});this.cardWidth=1000;this.cardHeight=800;this.showHeader=true;this.on("show",function(){this.getWizard().pages={}},this)},init:function(){this.createSelectionScreen();if(!this.getWizard().data){throw"No entity data provided to wizard"}},createSelectionScreen:function(){var b,c,a;b=Ext.create("Ext.data.Store",{fields:["text","image","cls","type"],autoLoad:true,proxy:{type:"ajax",url:"/import/getImportOptions",extraParams:{data:Ext.encode(this.getWizard().data)},reader:{type:"json",root:"data"}}});c=new Ext.XTemplate('<p class="text-faded" style="text-align: center">','{[FT.i18n("Select import method based on how your tasks are structured")]}',"</p>",'<tpl for=".">','<div class="import-type" style="padding-top: 25px; text-align:center;{[this.getStyle(values)]}">',"{text}<br />",'<img src="/resources/{image}" style="margin-top: 10px;" />',"</div>","</tpl>",{getStyle:function(d){if(!d.cls){return""}return"cursor:pointer;"}});a=Ext.create("Ext.view.View",{store:b,itemSelector:"div.import-type",cls:"import-selector",tpl:c,overItemCls:"background-dark",trackOver:true,margin:15,overflowY:"auto",listeners:{itemclick:this.onWizardItemClick,scope:this}});this.add(a)},onWizardItemClick:function(b,a){if(!a.get("cls")){return}this.setData(this.importerStore);this.setSetting("entity",this.getWizard().data);var c;c=this.getData().findRecord("setting","type");if(c!=null){c.set("value",a.get("type"))}this.getWizard().setNextPage(a.get("cls"))},getPrevButton:function(){return null},getNextButton:function(){return null}});Ext.define("FT.wizard.card.ImportCSV",{extend:"FT.wizard.AbstractPage",padding:10,title:FT.i18n("Paste data"),initComponent:function(){this.callParent();this.textarea=Ext.create("Ext.form.field.TextArea",{value:"",emptyText:FT.i18n("Paste CSV here..."),fieldLabel:FT.i18n("Data to import"),labelAlign:"top"});this.add(this.getTextArea())},init:function(){},importCsv:function(){var b=this,a;a=new Ext.LoadMask(this,{msg:"Loading...",autoShow:true,floating:{shadow:false}});this.csv=b.getTextArea().getValue();b.getTextArea().disable();this.getWizard().nextButton.disable();this.getWizard().prevButton.disable();Ext.Ajax.request({url:"/import/importCSV",params:{csv:this.csv},success:function(d){this.getWizard().nextButton.enable();this.getWizard().prevButton.enable();var e=Ext.decode(d.responseText),c;a.hide();b.getTextArea().enable();this.importSuccess=e.success;if(e.success){this.clearErrors();c=b.getData().findRecord("setting","dbId");if(c!=null){c.set("value",e.dataId)}b.getNext()}else{this.setErrors(e.errors)}},scope:this})},getNext:function(){var a=this.getData().findRecord("setting","dbId");if(this.importSuccess&&this.csv&&this.csv==this.getTextArea().getValue()){this.getWizard().setNextPage("FT.wizard.card.ImportMapData")}else{if(this.csv){this.setVeryDirty(true)}this.importCsv()}return false},getTextArea:function(){return this.textarea}});Ext.define("FT.wizard.card.ImportMapData",{extend:"FT.wizard.AbstractPage",padding:10,title:FT.i18n("Map data"),initComponent:function(){var a=this,c,b;this.callParent();Ext.define("FT.importer.data.CsvMapping",{extend:"RAW.data.Setting",fields:[{name:"name",type:"string"},{name:"value",type:"string"},{name:"type",type:"string"}]});this.serverStore=Ext.create("RAW.data.SettingStore",{model:"FT.importer.data.CsvMapping",sorters:[{property:"name",direction:"ASC"}]});c=Ext.create("Ext.form.field.Text",{dock:"top",emptyText:FT.i18n("Save mappings as...")});b={xtype:"button",action:"save",dock:"top",text:FT.i18n("Save"),padding:"2 8",handler:function(){if(c.getValue()==""){FT.notifyError(FT.i18n("Please specify a name to your mappings"));c.focus()}else{this.saveMappingToServer(c.getValue());c.setValue("")}},scope:this};this.savedMappingsCombo=Ext.widget({xtype:"combobox",store:a.getServerStore(),displayField:"name",itemId:"mappingscombo",valueField:"value",editable:false,disabled:true,fieldLabel:FT.i18n("Apply mappings"),listeners:{change:function(e,d){a.deleteButton.show();a.applySavedSettings(e,d);a.grid.getView().refresh()}}});this.deleteButton=Ext.create("Ext.button.Button",{text:FT.i18n("Remove"),dock:"top",hidden:true,padding:"2 8",handler:function(){var e=this.savedMappingsCombo.getValue(),d=this.savedMappingsCombo.findRecordByValue(e);if(!d){FT.notifyError(FT.i18n("Must select a mapping something to remove."))}else{var g=['<p class="text-danger">',"Are you sure you want to remove this mapping: {0}","<br/ ><br />","Note: this will remove the mapping for all users.","</p>"].join(" ");Ext.create("FT.ConfirmDialog",{title:FT.i18n("Remove mapping"),autoShow:true,scope:this,actionHandler:function(){a.savedMappingsCombo.clearValue();a.removeMappingFromServer(d);a.deleteButton.hide()},msg:Ext.String.format(g,d.get("name"))})}},scope:this});this.savedMappingsModel=Ext.create("FT.Mapping.SavedMappingsModel");this.grid=Ext.create("FT.configure.MetaGrid",{storeCfg:{leadingBufferZone:50,pageSize:50,buffered:false,remoteSort:true},getDefaultToolbarItems:function(){return[a.savedMappingsCombo,a.deleteButton,"->",c,b]}});this.grid.getComponent("metagrid-toolbar").removeCls("toolbar-white").addCls("background-default");this.add(this.getGrid())},init:function(){var a=this;if(!Ext.isDefined(a.menu)){a.menu=Ext.create("FT.Mapping.Menu",{data:{type:this.getSetting("type"),entityId:this.getSetting("entity").entityId,entityType:this.getSetting("entity").entityType}});a.menu.on("mappingchanged",function(){a.grid.getView().refresh()});a.menu.getStore().on({load:function(){this.grid.getDockedItems('toolbar[dock="top"]')[0].getComponent("mappingscombo").setDisabled(false)},scope:this})}this.getGrid().reloadData("importer",{dataId:a.getSetting("dbId")});this.getGrid().getView().getHeaderCt().on({menucreate:function(d,e){var c=a.menu.getModel(),b=c.getStore();e.on("beforeshow",a.onMenuBeforeShow,a);if(Ext.isDefined(c)&&Ext.isDefined(b)){if(b.getCount()==0){b.on("load",function(){a.getGrid().getView().getHeaderCt().fireEvent("menucreate",null,e)})}else{a.onMenuBeforeShow(e,a)}}},scope:this});this.getServerStore().filter("type",a.getSetting("type"))},onMenuBeforeShow:function(g,d){var c=this;g.removeAll();if(!c.menu.hasListener("checkedchanged")){c.menu.on("checkedchanged",function(k,j){var h=c.getGrid().getView().getHeaderCt().getMenu().activeHeader;if(j){c.saveAndHighlight(h,k,d)}else{c.saveAndUndoHighlight(h)}})}var a=this.getGrid().getView().getHeaderCt().getMenu().activeHeader,e=Ext.isDefined(a)?a.text:"",b;if(e.indexOf("<br />")!=-1){e=e.substr(0,e.indexOf("<br />"))}b=Ext.decode(this.getSavedMappingsModel().getMapping(e));c.menu.uncheckAllMenuItems();if(b!=null){c.menu.setCheckedMenuItem(b,true)}this.disabledAlreadyMapped();g.add(c.menu.getMenu())},disabledAlreadyMapped:function(){var c=this,b=this.getSavedMappingsModel().getStore(),a;Ext.each(c.menu.getStore().data.items,function(d){d.set("disabled",false)});Ext.each(b.data.items,function(d){a=c.menu.getStore().findRecord("id",Ext.decode(d.get("mapping")));if(a!=null){a.set("disabled",true)}})},applySavedSettings:function(h,j){var e=this,c,d,a,b;c=Ext.create("Ext.data.Store",{fields:["column","mapping"],data:Ext.decode(j)});this.resetMappings();Ext.each(this.getGrid().getView().getHeaderCt().items.items,function(k){if(k.getXType()=="gridcolumn"){d=k.text;if(d.indexOf("<br />")!=-1){d=d.substr(0,d.indexOf("<br />"))}a=c.getAt(c.findBy(function(l){return l.get("column")===d}));if(a!=null){b=e.menu.getModel().getDbIdById(Ext.decode(a.get("mapping")));if(b!=null){e.saveAndHighlight(k,Ext.decode(a.data.mapping))}}}});if(h.getStore().findRecord("value",j)){var g=h.getStore().findRecord("value",j).get("name");FT.notifySuccess(FT.i18n('Mappings "{mappingsName}" applied',{values:{mappingsName:g}}))}},resetMappings:function(){Ext.each(this.getGrid().getView().getHeaderCt().items.items,function(a){this.saveAndUndoHighlight(a)},this)},saveAndHighlight:function(j,g,e){var d=j.text,a="",h,b=g,c;if(!Ext.isArray(b)){b=Ext.decode(b)["mapping"]}if(d.indexOf("<br />")!=-1){d=d.substr(0,d.indexOf("<br />"))}j.addClass("background-success");this.getSavedMappingsModel().saveMapping(d,b);h=b;if(!Ext.isArray(h)){h=Ext.decode(b)}for(c=0;c<h.length;c++){a=h[c]+" "+a}j.setText(d+"<br />"+a)},saveAndUndoHighlight:function(b){var a=b.text;if(a.indexOf("<br />")!=-1){a=a.substr(0,a.indexOf("<br />"))}b.removeCls("background-success");this.getSavedMappingsModel().removeMapping(a);b.setText(a+'<br /><span class="text-faded">Not mapped</span>')},saveMappingToServer:function(b){var a=this.getServerStore();a.insert(0,{name:b,value:Ext.encode(this.getSavedMappingsModel().getMappings()),type:this.getData().findRecord("setting","type").get("value")});a.sync({callback:function(){FT.notifySuccess(FT.i18n("Mappings saved!"))}})},removeMappingFromServer:function(a){var b=this.getServerStore();b.remove([a]);b.sync({callback:function(){FT.notifySuccess(FT.i18n("Mapping removed!"))}})},getSavedMappingsModel:function(){return this.savedMappingsModel},getMappings:function(){var g=this,e,b,a,d=this.getSavedMappingsModel().getStore(),c,h={};Ext.each(this.getGrid().getView().getHeaderCt().items.items,function(k,j){if(k.getXType()=="gridcolumn"){e=k.text;if(e.indexOf("<br />")!=-1){e=e.substr(0,e.indexOf("<br />"))}b=d.getAt(d.findBy(function(l){return l.get("column")===e}));if(b!=null){c=g.menu.getModel().getDbIdById(Ext.decode(b.get("mapping")));a=g.menu.getModel().getObjectType(Ext.decode(b.get("mapping")));if(c!=null){h[j-1]={dbId:c,objectType:a}}}}});return h},getNext:function(){this.getWizard().nextButton.disable();this.getWizard().prevButton.disable();var a=this.getMappings();this.setSetting("mappings",a);Ext.Ajax.request({url:"/import/mapData",params:{data:Ext.encode({id:this.getSetting("dbId"),mappings:this.getSetting("mappings"),type:this.getSetting("type"),entityId:this.getSetting("entity").entityId,entityType:this.getSetting("entity").entityType})},success:function(b){this.getWizard().nextButton.enable();this.getWizard().prevButton.enable();var c=Ext.decode(b.responseText),d=c.isSolved;if(c.success){this.clearErrors();if(!d){this.setSetting("add",c.add);this.setSetting("update",c.update);this.setSetting("resolveData",c.resolve);this.getWizard().setNextPage("FT.wizard.card.ImportResolve")}else{this.setSetting("add",c.add);this.setSetting("update",c.update);this.getWizard().setNextPage("FT.wizard.card.ImportSummary")}}else{this.setErrors(c.errors)}},scope:this});return false},getGrid:function(){return this.grid},getServerStore:function(){return this.serverStore}});Ext.define("FT.wizard.card.ImportResolve",{extend:"FT.wizard.AbstractPage",layout:"auto",padding:"0 15 15 15",cls:"ft-importer",title:FT.i18n("Resolve not mapped values"),autoScroll:true,initComponent:function(){this.resolvedGrids={};this.callParent()},init:function(){this.removeAll(true);var g=this.getSetting("resolveData"),d=g.length,a=0,c=[],e,b,h;for(;a<d;a++){e=g[a];h="resolve-grid-"+a;this.resolvedGrids[h]=false;b=Ext.create("FT.import.ResolveGrid",{itemId:h,resolveId:e.resolveId,title:e.name,storeData:e,margin:"0 0 20 0",listeners:{allsolved:this.onAllSolved,unresolved:this.onUnResolved,scope:this}});c.push(b)}this.add(c);this.grids=c},getResolved:function(){var e=this.grids,b,d=e.length,a=0,c={};for(;a<d;a++){b=e[a];c[b.resolveId]=b.getResolved()}return c},getNext:function(){if(this.checkAll()){this.clearErrors({msg:"All un-mapped values not solved"});var a=this.getResolved();this.setSetting("resolvedData",a);this.getWizard().setNextPage("FT.wizard.card.ImportSummary")}else{this.setErrors({msg:"All un-mapped values not solved"})}return false},checkAll:function(){var a=true;Ext.iterate(this.resolvedGrids,function(c,b){a=a&&b});return a},onAllSolved:function(a){this.resolvedGrids[a.itemId]=true;this.checkAll()},onUnResolved:function(a){this.resolvedGrids[a.itemId]=false;this.checkAll()}});Ext.define("FT.wizard.card.ImportSummary",{extend:"FT.wizard.AbstractPage",title:FT.i18n("Import summary"),padding:10,cls:"ft-importer import-summary",layout:"border",initComponent:function(){this.pageSize=100;this.leadingBufferZone=200;this.updates=Ext.create("FT.configure.MetaGrid",{storeCfg:{leadingBufferZone:this.leadingBufferZone,pageSize:this.pageSize,buffered:false,remoteSort:true},getDefaultToolbarItems:function(){return[{xtype:"tbtext",text:FT.i18n("Mapped attributes are only updated if changed.")}]}});this.updates.getComponent("metagrid-toolbar").removeCls("toolbar-white").addCls("background-default");this.creates=Ext.create("FT.configure.MetaGrid",{storeCfg:{leadingBufferZone:this.leadingBufferZone,pageSize:this.pageSize,buffered:true,remoteSort:true}});this.items=[this.infoArea=Ext.widget("component",{xtype:"component",html:"<p>A summary of the import data is now loading...</p><p>It may take from a few seconds to several minutes depending on how much data you are importing.</p>",region:"north",height:135}),this.tabPanel=Ext.widget("tabpanel",{region:"center",hidden:true,border:false,bodyBorder:false,items:[this.creates,this.updates]})];this.callParent();this.infoTpl=new Ext.XTemplate("<p>All data is mapped and ready to be imported.</p>",'<div class="box box--float text-faded">','<div class="text-bigger text-primary">{created}</div>',"objects will be created","</div>",'<div class="box box--float text-faded">','<div class="text-bigger text-strong">{updated}</div>',"objects will be updated","</div>")},init:function(){this.getWizard().nextButton.disable();this.getWizard().prevButton.disable();Ext.Ajax.request({url:"/import/createSummary",params:this.getParams(),timeout:900000,success:function(a){this.getWizard().nextButton.enable();this.getWizard().prevButton.enable();var b=Ext.decode(a.responseText);if(b.success){this.tabPanel.show();this.clearErrors();this.updates.setTitle("Updated");this.updates.reloadData("importerSummary",{summaryId:b.summaryIdUpdate});this.creates.setTitle("Created");this.creates.reloadData("importerSummary",{summaryId:b.summaryIdCreate});this.infoArea.update(this.infoTpl.apply({updated:b.updateTotal,created:b.createTotal}))}else{this.setErrors(b.errors)}},scope:this})},getParams:function(){return{data:Ext.encode({id:this.getSetting("dbId"),mappings:this.getSetting("mappings"),type:this.getSetting("type"),entityId:this.getSetting("entity").entityId,entityType:this.getSetting("entity").entityType,resolve:this.getSetting("resolvedData")||{}})}},getNextButton:function(){return{text:FT.i18n("Import")}},getNext:function(){var a=new Ext.LoadMask(this,{msg:"Importing...",autoShow:true,floating:{shadow:false}});this.getWizard().nextButton.disable();this.getWizard().prevButton.disable();Ext.Ajax.request({url:"/import/doImport",params:this.getParams(),timeout:900000,success:function(b){var c=Ext.decode(b.responseText);this.getWizard().nextButton.enable();this.getWizard().prevButton.enable();a.hide();if(c.success){this.clearErrors();this.getWizard().setNextPage("FT.wizard.card.ImportFinished")}else{this.setErrors(c.errors)}},scope:this});return false}});Ext.define("FT.wizard.card.ImportFinished",{extend:"FT.wizard.AbstractPage",title:FT.i18n("Import finished"),cls:"ft-importer",padding:"0 25 25 0",layout:"column",items:[{xtype:"component",style:"text-align:center;",html:'<h1 style="font-weight:normal;">Your data has been<br />successfully imported.</h1><p style="margin:25px 0 0 0;">(the spreadsheet is now updated)</p><div style="padding-left:50px;text-align:left;"><img src="/ftrack-theme/resources/import-arrow.png" alt="" /></div>',columnWidth:0.6},{xtype:"component",cls:"border-left",style:"height:100%;padding-left:25px;",html:'<h2 class="text-bigger">Select next step</h2><ul style="padding-left:20px;"><li><div id="gobackbtn" style="display:inline-block;vertical-align:top;"></div> to return to the first<br />page and run the importer again.</li><li>Click Close below to return to the spreadsheet.</li></ul>',columnWidth:0.4}],init:function(){},initComponent:function(){this.callParent(arguments);this.on("afterrender",function(){Ext.create("Ext.button.Button",{ui:"link-button",text:FT.i18n("Click here"),handler:function(){this.wizard.setNextPage("FT.wizard.card.ImportSelector")},scope:this,renderTo:"gobackbtn"})},this);this.cardWidth=650;this.cardHeight=350;this.showHeader=true},getPrevButton:function(){return null},getNextButton:function(){return{text:FT.i18n("Close")}}});Ext.define("FT.MoveDialog",{extend:"FT.Window",entity:null,title:"",width:640,height:375,resizable:false,layout:"fit",modal:true,initComponent:function(){this.callParent();var a=Ext.create("FT.wizard.Panel",{data:{entities:this.entities},firstCard:"FT.wizard.move.Move"});this.add(a)}});Ext.define("FT.wizard.move.AbstractMoveCard",{extend:"FT.wizard.AbstractPage",layout:"border",padding:15,ui:"ft-wizard",initComponent:function(){this.callParent(arguments);this.mainLayout=Ext.value(this.mainLayout,{type:"table",columns:2,tableAttrs:{style:{width:"100%"}},tdAttrs:{style:{fontSize:"small",verticalAlign:"top"}}});this.add(this.main=Ext.create("Ext.container.Container",{region:"center",layout:this.mainLayout}))}});Ext.define("FT.wizard.move.Move",{extend:"FT.wizard.move.AbstractMoveCard",title:FT.i18n("Move"),image:"warning1.png",initComponent:function(){this.callParent(arguments)},init:function(){Ext.Ajax.request({url:"/main/getMoveData",params:{entityId:this.data.entities[0].entityId,entityType:this.data.entities[0].entityType,entities:Ext.encode(this.data.entities)},success:function(a){var b=Ext.decode(a.responseText);if(b.entities){this.data.entities=b.entities}this.initGUI(b.parent,b.validParents)},scope:this})},initGUI:function(a,d){var e=this.data.entities;this.entity=null;this.parentField=Ext.create("FT.form.field.EntitySelectorField",{value:a,selectionTypes:d,width:500,listeners:{select:function(h,g){assert(Ext.isObject(h.getValue()),"is object");this.entity=g},scope:this}});var c=Ext.create("Ext.data.Store",{fields:["link"],data:e});var b=Ext.create("Ext.grid.Panel",{cls:"border-default",width:500,store:c,hideHeaders:true,columns:[{dataIndex:"link",flex:1,renderer:FTrack.grid.LinkRenderer,menuDisabled:true}],viewConfig:{stripeRows:false,trackOver:false,disableSelection:true},height:200,margin:"0 0 10 0"});this.main.add([{xtype:"tbtext",text:FT.i18n("Items to move"),width:100},b,{xtype:"tbtext",text:FT.i18n("Move to"),width:100},this.parentField])},getNext:function(a){if(this.parentField.isValid()){this.process(a)}return false},getNextButton:function(){return{text:FT.i18n("Move")}},getPrevButton:function(){return{text:FT.i18n("Cancel")}},getPrev:function(){this.up("window").close();return false},process:function(a){this.wizard=a;this.showLoadMask("Moving...");Ext.Ajax.request({url:"/main/moveEntities",timeout:900000,params:{data:Ext.encode({entities:this.data.entities,contentType:this.data.entities[0].entityType,parentId:this.entity.entityId,parentType:this.entity.entityType})},success:function(b){var e=Ext.decode(b.responseText);if(e.success){var c=e.moved;var d=e.movedTo;Ext.apply(this.data,e);this.wizard.setNextPage("FT.wizard.move.Confirm")}else{FT.notifyError(e.msg)}},callback:function(b){this.hideLoadMask()},scope:this})}});Ext.define("FT.wizard.move.Confirm",{extend:"FT.wizard.move.AbstractMoveCard",title:FT.i18n("Move"),initComponent:function(){this.mainLayout={type:"vbox",align:"stretchmax"};this.callParent(arguments)},init:function(){var a=this.data.moved;var b=this.data.movedTo;var c=new Ext.XTemplate('<ul class="box" style="margin:0;max-height:175px;overflow:auto;">','<tpl for=".">',"<li>{[FTrack.grid.LinkRenderer(values.link)]}</li>","</tpl>","</ul>");this.main.add([{xtype:"component",cls:"text-bigger",html:"The following item"+(this.data.moved.length>1?"s":"")},{xtype:"component",margin:"10 0",html:c.apply(a)},{xtype:"component",cls:"text-bigger",html:(this.data.moved.length>1?"have":"has")+" been moved to"},{xtype:"component",margin:"10 0",cls:"box",html:FTrack.grid.LinkRenderer(b)}])},getNext:function(a){this.up("window").close();return false},getNextButton:function(){return{text:FT.i18n("OK")}},getPrevButton:function(){},getPrev:function(){this.up("window").close();return false}});Ext.define("FT.LicenseDialog",{extend:"FT.ModalWindow",entity:null,title:"",width:600,height:400,fitHeight:false,resizable:false,layout:"fit",modal:true,initComponent:function(){this.callParent();var a=Ext.create("FT.wizard.Panel",{data:{},firstCard:"FT.wizard.license.First"});this.add(a)}});Ext.define("FT.wizard.license.First",{extend:"FT.wizard.AbstractPage",title:FT.i18n("Update license"),initComponent:function(){this.callParent(arguments)},padding:"0 20 20 20",init:function(){this.textfield=Ext.widget("textarea",{allowBlank:false,msgTarget:"side",emptyText:FT.i18n("Enter or paste license key here"),labelAlign:"top"});this.add(this.textfield)},getNext:function(a){this.process(a);return false},getNextButton:function(){return{text:FT.i18n("Validate"),cls:"button-primary"}},getPrevButton:function(){return{text:FT.i18n("Cancel")}},getPrev:function(){this.up("window").close();return false},process:function(a){this.wizard=a;this.data.licenseKey=this.textfield.getValue();this.showLoadMask("Verifying license...");Ext.Ajax.request({url:"/configure/validateLicense",timeout:900000,params:{license:this.data.licenseKey},success:function(b){var c=Ext.decode(b.responseText);if(c.success){this.data.license=c;this.wizard.setNextPage("FT.wizard.license.Confirm")}else{if(c.errors){FTrack.errorMessage(c.errors[0].msg,"",5)}}},callback:function(b){this.hideLoadMask()},scope:this})}});Ext.define("FT.wizard.license.Confirm",{extend:"FT.wizard.AbstractPage",title:FT.i18n("Confirm license details"),padding:"0 0 0 20",layout:"vbox",autoScroll:true,init:function(){this.add([this.licenseInfo=Ext.create("FT.configure.LicenseInformation")]);this.licenseInfo.updateData(this.data.license.product,this.data.license.features,this.data.license.messages)},getNext:function(a){this.process(a);return false},process:function(a){this.wizard=a;this.showLoadMask("Verifying license...");Ext.Ajax.request({url:"/configure/applyLicense",timeout:900000,params:{license:this.data.licenseKey},success:function(b){var c=Ext.decode(b.responseText);if(c.success){this.wizard.setNextPage("FT.wizard.license.Done")}else{if(c.errors){FTrack.errorMessage(c.errors[0].msg,"",5)}}},callback:function(b){this.hideLoadMask()},scope:this})},getNextButton:function(){return{text:FT.i18n("Apply"),cls:"button-primary"}},getPrevButton:function(){return{text:FT.i18n("Cancel")}},getPrev:function(){this.up("window").close();return false}});Ext.define("FT.wizard.license.Done",{extend:"FT.wizard.AbstractPage",title:FT.i18n("License updated"),padding:"0 0 0 20",init:function(){this.add([{xtype:"component",cls:"license-success",html:'<span style="margin-right:10px;font-size:xx-large;">'+FT.glyphIcon("checkmark")+"</span>Your license was successfully updated."}])},getNext:function(a){location.reload();return false},getNextButton:function(){return{text:FT.i18n("Close")}},getPrevButton:function(){return false}});Ext.define("FT.window.RemoveDialogBase",{extend:"FT.ModalWindow",entity:null,title:"",width:550,minHeight:240,fitHeight:false,resizable:false,layout:{type:"vbox",align:"stretch"},closable:false,modal:true,bodyPadding:"0 10 20",padding:10,initComponent:function(){this.loadingMask=new Ext.LoadMask({target:this});this.content=Ext.create("Ext.Component");this.validationField=Ext.create("Ext.form.TextField",{margin:"10 0",emptyText:FT.i18n("Type {deleteKeyword} to confirm...",{values:{deleteKeyword:"DELETE"}}),validator:function(a){if(a&&a.toLowerCase()==="delete"){return true}return this.emptyText},listeners:{change:function(a){if(a.isValid()){this.deleteButton.enable()}else{this.deleteButton.disable()}},specialkey:function(b,a){if(a.ctrlKey&&a.getKey()==a.ENTER&&b.isValid()){this.handleDelete();a.stopEvent()}},scope:this}});this.defaultFocus=this.validationField;this.items=[this.content,this.validationField];this.cancelButton=Ext.create("Ext.Button",{text:FT.i18n("Cancel"),handler:this.handleCancel,scope:this});this.deleteButton=Ext.create("Ext.Button",{text:FT.i18n("Delete"),cls:"button-danger",disabled:true,handler:this.handleDelete,scope:this});this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:["->",this.cancelButton,this.deleteButton]});this.callParent();this.populateDialog()},handleCancel:function(){this.fireEvent("user-cancel");this.close()},handleDelete:Ext.emptyFn,populateDialog:Ext.emptyFn});Ext.define("FT.window.RemoveDialog",{extend:"FT.window.RemoveDialogBase",populateDialog:function(){var b,a=false;if(this.entity.entityType==="task"){b=Ext.String.format('select link from TypedContext where id is "{0}"',this.entity.entityId);a=true}else{if(this.entity.entityType==="show"){b=Ext.String.format('select full_name from Project where id is "{0}"',this.entity.entityId);a=true}else{if(this.entity.entityType==="assetversion"){b=Ext.String.format('select link from AssetVersion where id is "{0}"',this.entity.entityId);a=true}else{if(this.entity.entityType==="list"){b=Ext.String.format('select name from List where id is "{0}"',this.entity.entityId)}else{if(this.entity.entityType==="reviewsession"){b=Ext.String.format('select name from ReviewSession where id is "{0}"',this.entity.entityId)}else{if(this.entity.entityType==="component"){b=Ext.String.format('select name from Component where id is "{0}"',this.entity.entityId)}else{if(this.entity.entityType==="group"){b=Ext.String.format('select name from Group where id is "{0}"',this.entity.entityId)}}}}}}}if(b){this.loadingMask.show();FT.api.query(b,Ext.pass(this.manageResponse,[a],this))}},handleDelete:function(){this.loadingMask.show();Ext.Ajax.request({url:"/track/removeEntity",timeout:900000,params:{entityId:this.entity.entityId,entityType:this.entity.entityType,force:true},success:function(b){var a=Ext.decode(b.responseText);if(a.success){FT.notifySuccess(FT.i18n("Item was successfully deleted."));this.fireEvent("removesuccess",this,this.entity);this.close()}else{FT.notifyError(a.message)}},failure:function(){FT.notifyError(FT.i18n("Failed to remove item."))},callback:function(){this.loadingMask.hide()},scope:this})},getPresentationFromSchemaId:function(b){var a={TypedContextList:FT.i18n("list"),AssetVersionList:FT.i18n("list"),Project:FT.i18n("project"),Task:FT.i18n("task"),Milestone:FT.i18n("milestone"),AssetVersion:FT.i18n("version"),Component:FT.i18n("component"),User:FT.i18n("user"),Group:FT.i18n("group"),ReviewSession:FT.i18n("review session")};if(a[b]){return a[b]}return b.replace(/([a-zA-Z])(?=[A-Z])/g,"$1 ").toLowerCase()},manageResponse:function(g,a){var e=a.data[0],b,d=this.getPresentationFromSchemaId(e.__entity_type__);this.setTitle(FT.i18n("Delete {entityTypeName}?",{values:{entityTypeName:d}}));if(e.link){b=Ext.pluck(e.link,"name").join(" / ")}else{if(e.full_name){b=e.full_name}else{if(e.name){b=e.name}}}var c;if(g){c=FT.i18n('The {entityTypeName} "{entityName}" and all related objects in ftrack will be permanently deleted and cannot be restored.',{values:{entityTypeName:d,entityName:b}})}else{c=FT.i18n('The {entityTypeName} "{entityName}" will be permanently deleted and cannot be restored.',{values:{entityTypeName:d,entityName:b}})}this.content.update(FT.i18n(["<p>",c,"</p><p>","<p>",FT.i18n("Are you sure you want to continue?"),"</p>"].join("")));this.deleteButton.setText(FT.i18n("Yes, permanently delete the {entityTypeName}",{values:{entityTypeName:d}}));this.loadingMask.hide()}});Ext.define("FT.window.SelectedItemsRemoveDialog",{extend:"FT.window.RemoveDialogBase",populateDialog:function(){this.content.update(["<p>",FT.i18n("The selected items ({items}) and all related objects in ftrack will be permanently deleted and cannot be restored.",{values:{items:this.numberOfSelectedItems}}),"</p><p>",FT.i18n("Are you sure you want to continue?"),"</p>"].join(""));this.deleteButton.setText(FT.i18n("Yes, permanently delete selected items"));this.setTitle(FT.i18n("Delete selected items?"))},handleDelete:function(){this.callback.call(this.scope);this.close()}});Ext.define("FT.template.ThumbnailDetails",{extend:"Ext.XTemplate",detailItemConfigs:null,toolbarItems:null,constructor:function(b){Ext.apply(this,b);var d=this.getBeforeThumbnailTpl();var a=this.getAfterThumbnailTpl();var c=['<li class="ft-thumbnailsview-block x-unselectable ft-thumbnailsview-block-selector">',"{[this.getCardToolbar()]}",'<div class="ft-thumbnailsview-block-inner status-bar__trigger">',d,'<tpl if="thumbid">','<div class="ft-thumbnailsview-image">',"{[FTrack.grid.IconRendererFit(values.thumbid)]}","</div>","</tpl>",'<ul class="ft-thumbnailsview-details">',"{[this.getLink(values)]}","{[this.getDetails(values)]}","</ul>","{[this.getStatusBar(values)]}",a,"</div>","</li>"];this.callParent(c)},getBeforeThumbnailTpl:function(){return""},getAfterThumbnailTpl:function(){return""},getStatusBar:function(k){var e=k.statusid;var a=k.object_typeid;var c=FT.util.FieldToObjectTypeFeature.statusid;var g=Ext.data.StoreManager.lookup("FT.store.TaskStatus");var d=g.findRecord("statusid",e);if(!d){return}if(a&&!FT.util.hasObjectTypeFeature(a,c)){return}var h=d.get("color");var j=FT.util.Format.textColorFromColor(h);var b="background-color: "+h+"; color: "+j+";";return Ext.String.format('<div class="status-bar" style="{0}"><div class="status-bar__name" style="{0}">{1}</div></div>',b,d.get("name"))},getLink:function(a){var c=a.link||[];var d=[{cls:"entity-link",link:c.slice(-1)},{cls:"entity-parent",link:c.slice(-2,-1)},{cls:"entity-path",link:c.slice(0,-2)}];var b="";Ext.Array.forEach(d,function(e){var g=e.link||[];if(g&&g.length){b+=Ext.String.format('<li class="text-ellipsis {0}">{1}</li>',e.cls,FTrack.grid.LinkRenderer(g))}});return b},getDetails:function(values){var customFields=["thumbid","link","notes","statusid"],details=[],configs=this.detailItemConfigs;Ext.Array.each(configs,function(config){var value=values[config.dataIndex],rendererName=config.renderer,detailItem=[],renderer;if(customFields.indexOf(config.dataIndex)!==-1){return true}detailItem.push('<li class="text-ellipsis">');if(rendererName){renderer=eval(rendererName);detailItem.push(renderer(value,null,values))}else{detailItem.push(value)}detailItem.push("</li>");details.push(detailItem.join(""))});return details.join("\n")},getCardToolbar:function(){var a="";Ext.each(this.toolbarItems,function(b){a+=b.html});if(a.length>0){a=Ext.String.format('<div class="ft-cardtoolbar">{0}</div>',a)}return a}});Ext.define("FT.template.OverlayThumbnailDetails",{extend:"FT.template.ThumbnailDetails",getBeforeThumbnailTpl:function(){return['<tpl if="overlay">','<div class="ft-thumbnailsview-block__overlay {[this.getOpacCls(values.overlay.opaque)]}">','<tpl if="overlay.loader">','<div class="loader"></div>',"</tpl>",'<div class="ft-thumbnailsview-block__overlay-alternative text-alternative">{overlay.alternativeText}</div>','<div class="ft-thumbnailsview-block__overlay-text text">{overlay.text}</div>',"</div>","</tpl>"].join("")},getOpacCls:function(a){if(a){return"opaque"}}});Ext.define("FT.template.ReviewSessionObjectStatusBar",{extend:"Ext.XTemplate",width:"100%",emptyText:"<i>"+FT.i18n("No feedback given")+"</i>",constructor:function(a){var b=['<div class="reviewsession-transfer-settingsitem__status" style="width:{[this.width]};">',"{[this.renderBars(values)]}","</div>"];this.callParent(b)},renderBars:function(b){var a=b.require_changes||[],e=b.approved||[],d=a.length+e.length,c=[],g='<div data-qtip="{0}" class="{1}" style="float:right;width:{2}%">&#160;</div>';if(d===0){return this.emptyText}if(e.length){c.push(Ext.String.format(g,FT.i18n("Approved:")+" "+e.join(", "),"background-success",100*e.length/d))}if(a.length){c.push(Ext.String.format(g,FT.i18n("Require changes:")+" "+a.join(", "),"background-danger",100*a.length/d))}return c.join("\n")}});Ext.define("FT.template.ReviewSessionObjectThumbnailDetails",{extend:"FT.template.OverlayThumbnailDetails",getBeforeThumbnailTpl:function(){var a=this.callParent();return[a,'<tpl if="isLocal">','<div class="ft-thumbnailsview-block__icon">{[FT.glyphIcon("cloud")]}</div>',"</tpl>"].join("")},getAfterThumbnailTpl:function(){return['<tpl if="notes">','<div class="ft-thumbnailsview-block__footer">',"{[this.getNoteCount(values)]}","</div>","</tpl>"].join("")},getNoteCount:function(b){var a=b.notes;if(!a){return}return['<div data-qtip="',Ext.util.Format.plural(a,"comment"),'" class="ft-thumbnailsview-block__notecount">',FT.glyphIcon("note"),"</div>"].join("")},getOpacCls:function(a){if(a){return"opaque"}}});Ext.define("FT.view.impl.MetaGridPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-metagridpane",metaType:null,disableAdd:false,constructor:function(a){Ext.apply(this,a);this.topBar=Ext.widget("toolbar",{items:[]});this.callParent(arguments)},updateData:function(a){this.entity=Ext.clone(a);if(this.grid){this.applyActiveFilters(a);this.doReloadGrid(a)}},getEntity:function(){return this.entity},setEntity:function(a){this.entity=a},applyActiveFilters:function(a){if(this.activeFilters){Ext.apply(a,this.activeFilters)}},applyFilters:function(b,a){this.activeFilters=Ext.clone({filters:b,filterField:a});var c=Ext.clone(this.getEntity());this.applyActiveFilters(c);this.doReloadGrid(c)},createRenderable:function(b){var a=Ext.apply({disableAdd:this.disableAdd,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("Empty spreadsheet")+"</div>",storeCfg:{leadingBufferZone:50,pageSize:50,buffered:true,remoteSort:true,sorters:this.sorters||[]}},b);this.grid=Ext.create("FT.configure.MetaGrid",a);this.relayEvents(this.grid,["beforeeditdialog","beforedeletedialog"]);if(!Ext.isDefined(a.loadAtStartup)||Ext.isDefined(a.loadAtStartup)&&a.loadAtStartup){this.doReloadGrid(this.getEntity())}else{Ext.Function.defer(function(){this.grid.view.refresh()},50,this)}return this.grid},getSelectionModel:function(){return this.grid.getSelectionModel()},doReloadGrid:function(a){if(!Ext.isString(this.metaType)){throw"metaType not set"}this.grid.reloadData(this.metaType,a)}});Ext.define("FT.view.impl.ListsView",{extend:"FT.view.AbstractView",alias:"widget.lists_view",text:FT.i18n("Grid"),title:FT.i18n("Grid"),constructor:function(a){this.callParent(arguments)},registerPanes:function(){this.filters=this.registerSecondary("east",{name:"Filters",xtype:"ft-listsfilterpane",renderable:{hidden:true,width:300,split:true}});this.filterBar=this.registerSecondary("north",{name:"Filter bar",xtype:"ft-filter-bar",filterPane:this.filters,freeFilterText:"Type to filter on list name or the user who created the list",renderable:{overflowY:"auto",cls:"top-border",split:false}});this.filterBar.on("search-changed",this.onFiltersChanged,this);this.primary=this.registerPrimary("center",{xtype:"ft-metagridpane",renderable:{columnLines:true,margin:"0 8",getContextMenu:Ext.bind(this.getContextMenu,this)},sorters:[{property:"date",direction:"DESC"}],disableAdd:false,metaType:"lists"});this.primary.on({beforeeditdialog:this.onBeforeEditDialog,beforedeletedialog:this.onBeforeDeleteDialog,scope:this});this.filters.on("filterschanged",this.onFiltersChanged,this,{buffer:500});this.listHelper=Ext.create("FT.list.LinkListHelper",{entity:this.getEntity()});this.listHelper.on({itemsunlinked:this.listLinksChanged,itemslinkedtolist:this.listLinksChanged,scope:this})},listLinksChanged:function(){this.updateEntity(this.getEntity())},isPermitted:function(a){return true;var b=FT.util.isManager();if(!b){FT.notifyError(FT.i18n("You are not permitted to change this item"))}return b},onBeforeEditDialog:function(a,b){return this.isPermitted(b)},onBeforeDeleteDialog:function(a,b){return this.isPermitted(b)},onFiltersChanged:function(){this.primary.applyFilters(this.filters.filterPanel.getMetafilters(),this.filterBar.getSearch())},getPrimaryTools:function(){return this.primary.topBar},updateEntity:function(a){this.primary.updateData(a);this.listHelper.updateEntity(a)},getContextMenu:function(b,a,d,c,g){if(!this.contextMenu){this.contextMenu=Ext.create("Ext.menu.Menu",{items:this.listHelper.getLinkListMenu(),pluginInfo:{grid:this.primary,contentType:"list"}});this.contextMenu.add(FT.plugin.Manager.getMenus(this.contextMenu));this.listHelper.setSelectionModel(this.primary.getSelectionModel())}this.contextMenu.pluginInfo={grid:this.primary,contentType:"list"};return this.contextMenu}});Ext.define("FT.view.impl.ListsFilerPane",{extend:"FT.view.AbstractPane",alias:"widget.ft-listsfilterpane",bindPrimary:function(a){this.primary=a},constructor:function(){this.callParent(arguments);var d=[],g,e=[],j=[],b,a,c=Ext.data.StoreManager.lookup("FT.store.User"),h=Ext.data.StoreManager.lookup("FT.store.ListType");h.each(function(k){e.push([k.get("typeid"),k.get("name")])});c.each(function(k){if(k.get("isactive")){j.push([k.get("userid"),k.get("name")])}});g=[{label:FT.i18n("List name"),type:"string",field:"name"},{type:"boolean",label:FT.i18n("Open"),field:"isopen"},{config:{options:e},label:FT.i18n("Category"),type:"list",field:"listtype"},{config:{options:j},label:FT.i18n("Created by"),type:"list",field:"userid"},{label:FT.i18n("Date"),type:"date",field:"date",config:{mode:["CUSTOM"]}},{label:FT.i18n("Accepts"),type:"list",field:"entity",config:{options:[["task",FT.i18n("Objects")],["assetversion",FT.i18n("Versions")]]}}];Ext.each(g,function(k){d.push({field:k.field})});b=Ext.create("FT.newfilters.AvailableStore");b.getProxy().data=g;b.load();this.filterPanel=Ext.create("FT.newfilters.FilterPanel",{defaultFilters:d,availableStore:b,enableFilterControls:false,minWidth:250,overflowY:"auto"});this.relayEvents(this.filterPanel,["filterschanged"])},createRenderable:function(a){Ext.apply(this.filterPanel,a);return this.filterPanel}});Ext.define("FT.view.impl.LoggedHoursTop",{extend:"FT.view.AbstractPane",alias:"widget.ft-loggedhourstop",mixins:{observable:"Ext.util.Observable"},constructor:function(a){var b=this;b.addEvents("filterschanged");this.callParent(arguments);this.monthPicker=Ext.create("FT.picker.Month",{editable:false,format:"F Y",fieldLabel:FT.i18n("Month"),labelWidth:50,itemId:"date",value:Ext.Date.format(new Date,"F Y"),maxValue:new Date,listeners:{select:function(){b.fireEvent("filterschanged",this.getValue())}}})},bindPrimary:function(a){this.primary=a},createRenderable:function(b){var c=this,a={items:[{xtype:"container",cls:"ft-run-box",padding:15,items:[this.monthPicker,{xtype:"ftrack-button",action:"save",cls:"button-primary",text:FT.i18n("Run"),margin:"5 0",handler:function(){c.weekends=null;c.getRenderable().setHeight(100);c.primary.grid.setLoading({text:FT.i18n("Loading..."),floating:{shadow:false}});c.primary.doReloadGrid({view:"month",date:Ext.Date.format(c.monthPicker.getValue(),"Y-m-d"),viewAll:true})}}]}]};Ext.apply(a,b);return Ext.create("Ext.container.Container",a)}});Ext.define("FT.view.impl.LoggedHoursGrid",{extend:"FT.view.impl.MetaGridPane",alias:"widget.ft-loggedhoursgrid",metaType:"timereports",createRenderable:function(k){var e=this,h=parseInt(FT.Settings.get("TIME","workday_length"),10),g=h/60/60,j,c,a,d=Ext.Date.getLastDateOfMonth(new Date).getDate(),b;b=Ext.create("Ext.data.Store",{fields:["name","value","overlay"],data:[{name:"No overlay",value:"nooverlay"},{name:"< "+g+" h",value:{"function":function(l){return l<h},cls:"background-edit"}}]});j=Ext.create("FT.button.Selector",{text:FT.i18n("Overlays"),itemType:"radio",displayField:"name",valueField:"value",value:"nooverlay",hideOnClick:true,store:b,listeners:{selectionchanged:function(l){e.grid.getView().overlay=l!="nooverlay"?l:null;e.grid.getView().refresh()}}});c=Ext.create("Ext.toolbar.Toolbar",{cls:"background-dark",items:["->",configureButton=Ext.create("FT.button.Button",{glyph:FT.glyph("configure"),menu:[{text:FT.i18n("Overlays"),menu:j.menu}]})]});a={cls:"ft-timereportedgrid",topBar:[],enableColumnResize:false,disableSelection:true,viewConfig:{trackOver:false},forceMetaUpdate:true,getWeekends:function(){var l=e.getWeekends();e.weekends=l;return l},tbar:c,loadAtStartup:false,overlay:null,listeners:{beforerender:function(){this.setLoading({text:FT.i18n("Loading..."),floating:{shadow:false}})},afterrender:function(){this.store.on({datachanged:function(l){this.setLoading(false);d=Ext.Date.getLastDateOfMonth(e.getMonth()).getDate()},scope:this})}},storeCfg:{pageSize:9999,buffered:false}};Ext.apply(k,a);return this.callParent([k])},setFilterSettings:function(a){this.filterSettings=a},getWeekends:function(){var c=1,b=this.getMonth(),g=Ext.Date.getLastDateOfMonth(b).getDate(),d=b.getMonth(),e,a=[];for(;c<=g;c++){e=Ext.Date.format(new Date(b.getFullYear(),d,c),"w");if(e==0||e==6){a.push(c)}}return a},getMonth:function(){var a=new Date;Ext.each(this.filterSettings,function(b){if(b.field=="month"){a=Ext.Date.parse(b.value,"Y-m-d")}});return a}});Ext.define("FT.view.impl.LoggedHoursView",{extend:"FT.view.AbstractView",alias:"widget.loggedhours_view",constructor:function(a){var b=this;this.callParent(arguments);this.viewComboBox=Ext.create("Ext.form.field.ComboBox",{valueField:"value",editable:false,value:"month",fieldLabel:FT.i18n("View"),labelWidth:50,hidden:true,store:Ext.create("Ext.data.Store",{fields:["value","text"],data:[{value:"month",text:FT.i18n("Month")},{value:"projects",text:FT.i18n("Projects")}]}),listeners:{select:function(c,d){b.primary.grid.setLoading({text:FT.i18n("Loading..."),floating:{shadow:false}});b.primary.doReloadGrid({view:d[0].get("value"),date:Ext.Date.format(b.monthPicker.getValue(),"Y-m-d")})}}});this.viewAllUsers=Ext.create("Ext.form.field.Checkbox",{boxLabel:FT.i18n("Show all users"),margin:"0 10",hidden:true,handler:function(){b.primary.grid.setLoading({text:FT.i18n("Loading..."),floating:{shadow:false}});b.primary.doReloadGrid({view:b.viewComboBox.getValue(),date:Ext.Date.format(b.monthPicker.getValue(),"Y-m-d"),viewAll:b.viewAllUsers.getValue()})}})},registerPanes:function(){var c=this,d=null,a=Number(FT.Settings.get("TIME","workday_length")),b=Ext.data.StoreManager.lookup("FT.store.Projects").load();c.weekends=null;this.settingsPane=this.registerSecondary("north",{xtype:"ft-runboxpane",renderable:{split:false,maxHeight:300,filters:[{type:"month",label:FT.i18n("Month"),field:"month",width:"auto",disableComparison:true,margin:"0 0 10 5"},{type:"list",label:FT.i18n("Project"),field:"project",emptyText:FT.i18n("All"),displayField:"text",valueField:"entityId",options:[],multiSelect:false,padding:0,data:b.findRecord("name","active").get("value"),help:FT.i18n("Select a project to only show users assigned to this project. This action will not filter the logged hours."),disableComparison:true,margin:"10 0 10 5"},{type:"list",label:FT.i18n("Options"),field:"filter",emptyText:FT.i18n("Show all users"),multiSelect:false,valueField:"value",options:[["haveLoggedTime",FT.i18n("Show only users who have logged time")],["ltWorkingDay",FT.i18n("Show only users with missing time")]],disableComparison:true,margin:"10 0 10 5"}],listeners:{filterschanged:function(e){c.primary.setFilterSettings(e.rawFilterSettings)}}}});this.primary=this.registerPrimary("center",{xtype:"ft-loggedhoursgrid"});this.settingsPane.bindPrimary(this.primary)},getPrimaryTools:function(){return[]}});Ext.define("FT.view.plugin.DragAndDropSort",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-view-plugin-drag-and-drop-sort",sortField:"sort_order",scrollOnDrag:true,init:function(a){this.callParent(arguments);a.on("render",Ext.Function.pass(this._setupDragAndDrop,[a],this))},destroy:function(){Ext.destroy(this.dragZone,this.dropZone);if(this.view&&this.scrollOnDrag){Ext.dd.ScrollManager.unregister(this.view.getEl())}this.callParent()},_setupDragAndDrop:function(a){this.view=a;this.dragZone=new FT.view.plugin.DragAndDropSortDragZone({view:a});this.dropZone=new FT.view.plugin.DragAndDropSortDropZone({view:a,ddGroup:this.dragZone.ddGroup,onDrop:Ext.Function.pass(this.onDrop,[a],this)});if(this.scrollOnDrag){var b=a.getEl();var c={vthresh:50,hthresh:-1,frequency:100,increment:100};if(Ext.isObject(this.scrollOnDrag)){c=this.scrollOnDrag}b.ddScrollConfig=c;Ext.dd.ScrollManager.register(b)}},onDrop:function(l,k,a,c,e){if(!k){return false}var n=l.getStore(),m=l.getRecord(e.sourceEl),j=n.indexOf(m),b=l.getRecord(k.node),o=n.indexOf(b);sort=this._calculateSortOrder(n,j,o,k.position);n.suspendAutoSync();try{if(sort.order===sort.bounds.min||sort.order==sort.bounds.max){var d=n.getCount(),g,h;for(h=0;h<d-1;h++){g=n.getAt(h);g.set(this.sortField,h+1)}sort=this._calculateSortOrder(n,j,o,k.position)}m.set(this.sortField,sort.order);this._moveRecord(n,m,sort.index)}finally{n.resumeAutoSync()}n.sync();return true},_calculateSortOrder:function(k,h,l,e){var b=k.getAt(l),j=b.get(this.sortField),m={min:j,max:j},n,g;if(e==="leading"){m.min-=1;n="min";g=l}else{m.max+=1;n="max";g=l+1}if(h<l){g-=1}if(l>-1){var c=l;if(n==="min"){c-=1}else{c+=1}var a=k.getAt(c);if(a){m[n]=a.get(this.sortField)}}var d=(m.min+m.max)/2;return{order:d,bounds:m,index:g}},_moveRecord:function(b,a,c){b.remove(a,true);b.insert(c,a)}});Ext.define("FT.view.plugin.DragAndDropSortDragZone",{extend:"Ext.dd.DragZone",view:null,constructor:function(a){Ext.apply(this,a);if(!this.ddGroup){this.ddGroup="ft-view-plugin-drag-and-drop-sort-"+this.view.id}if(!this.proxy){this.proxy=Ext.create("Ext.dd.StatusProxy",{cls:"ft-view-plugin-drag-and-drop-sort-proxy",animRepair:true})}var b;if(this.view.ownerCt){b=this.view.ownerCt.getTargetEl().dom}else{b=this.view.getEl()}this.callParent([b])},getDragData:function(h){var c=this.view;var a=h.getTarget(c.itemSelector);if(a){var e=a.cloneNode(true);e.id=Ext.id();a=Ext.get(a);var d=h.getXY(),g=a.getXY(),b=[d[0]-g[0],d[1]-g[1]];var j=25;b[0]+=j;b[1]+=j;return{ddel:e,sourceEl:a,repairXY:g,offsetXY:b,sourceStore:c.store,draggedRecord:c.getRecord(a)}}},setDragElPos:function(d,c){var b=this.getDragEl(),a=this.dragData.offsetXY;this.alignElWithMouse(b,d-a[0],c-a[1])},getRepairXY:function(a,b){return b?b.repairXY:false},onStartDrag:function(b,c){var a=this.callParent([b,c]);if(this.dragData&&this.dragData.sourceEl){this.dragData.sourceEl.addCls("ft-view-plugin-drag-and-drop-sort-source")}return a},afterValidDrop:function(b,a,c){this._resetSourceElement()},afterRepair:function(){var a=this.callParent();this._resetSourceElement();return a},_resetSourceElement:function(){if(this.dragData&&this.dragData.sourceEl){this.dragData.sourceEl.removeCls("ft-view-plugin-drag-and-drop-sort-source")}}});Ext.define("FT.view.plugin.DragAndDropSortDropZone",{extend:"Ext.dd.DropTarget",view:null,indicatorCls:"ft-view-plugin-drag-and-drop-sort-indicator",indicatorWidth:6,indicatorHeightOverflow:10,constructor:function(a){Ext.apply(this,a);if(!this.ddGroup){this.ddGroup="ft-view-plugin-drag-and-drop-sort-"+this.view.id}var b;if(this.view.ownerCt){b=this.view.ownerCt.getTargetEl().dom}else{b=this.view.getEl()}this.callParent([b])},destroy:function(){Ext.destroy(this._indicator);delete this._indicator;this.callParent()},getTargetFromEvent:function(b){var e=b.getTarget(this.view.itemSelector,10,true);var q=b.getPoint();var n=null;if(!e){var c=this.view.getNodes(),g=c.length,k,s,m,p;for(index=0;index<g;index++){k=Ext.get(c[index]);s=k.getRegion();m=k.getMargin("lr")/2;p=k.getMargin("tb")/2;var a=s.right+m,h=s.bottom+p;if(q.x<=a&&q.y<=h){e=k;break}}if(!e){for(index=g-1;index>=0;index--){k=Ext.get(c[index]);s=k.getRegion();m=k.getMargin("lr")/2;p=k.getMargin("tb")/2;var l=s.left-m,o=s.top-p;if(q.x>=l&&q.y>=o){e=k;break}}}}if(e){var s=e.getRegion(),d=(s.right-s.left)/2,j;if(s.right-q.x>=d){j="leading"}else{j="trailing"}n={node:e,position:j}}return n},getIndicator:function(){if(!this._indicator){this._indicator=new Ext.Component({cls:this.indicatorCls,shadow:false,width:this.indicatorWidth,style:{position:"absolute"},renderTo:this.el.dom})}return this._indicator},positionIndicator:function(j,d){var c=j.node,g=c.getMargin("lr")/2,e;if(j.position==="leading"){e="c-l";g*=-1}else{e="c-r"}var b=this.view,a=b.getRecord(c);if(this._currentRecord!=a||this._indicatorAlignment!=e){var h=c.getHeight();h+=this.indicatorHeightOverflow;this.getIndicator().show().setHeight(h).alignTo(c,e,[g,0]);this._currentRecord=a;this._indicatorAlignment=e}},notifyEnter:function(c,a,b){this.callParent([c,a,b]);return this.dropNotAllowed},notifyOut:function(c,a,b){this.callParent([c,a,b]);this._currentRecord=null;this._indicatorAlignment=null;if(this._indicator){this._indicator.hide()}},notifyOver:function(d,b,c){this.callParent([d,b,c]);var a=this.dropNotAllowed;var e=this.getTargetFromEvent(b);if(e){this.positionIndicator(e,b);a=this.dropAllowed}else{if(this._indicator){this._indicator.hide()}}return a},notifyDrop:function(c,a,b){if(this._indicator){this._indicator.hide()}target=this.getTargetFromEvent(a);return this.onDrop(target,c,a,b)},onDrop:function(d,c,a,b){return false}});Ext.define("FT.view.plugin.DragAndDropFileUpload",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-view-plugin-drag-and-drop-file-upload",dragOverCls:"ft-view-plugin-drag-and-drop-file-upload-dragover ft-dropzone-dragover",dropPlaceholderCls:"ft-thumbnailsview-drop-placeholder ft-thumbnailsview-block x-unselectable",idAttribute:"id",init:function(a){this.callParent(arguments);this.store=a.getStore();this.component=a;a.dropPlaceholder=Ext.bind(this.dropPlaceholder,a);a.dropPlaceholderCls=this.dropPlaceholderCls;this.uploader=Ext.create("FT.upload.DragAndDropUploader",{dragOverCls:this.dragOverCls,beforeUpload:Ext.bind(this.beforeUpload,this),listeners:{scope:this,afterupload:function(d,c,b){this.afterUpload(d,c,b)},progress:function(e,c,b,d){this.onProgress(e,b,d)},failure:function(c,b){this.onFailure(c,b)}}});a.on("render",Ext.Function.pass(this.uploader.setDropElement,[a],this.uploader));a.on("upload",this.uploader.uploadFiles,this.uploader);a.emptyText="";this.store.on("load",this._onStoreLoad,this);FT.EventHub.subscribe("topic=ftrack.update",Ext.Function.bind(this._onEventUpdate,this))},_onStoreLoad:function(a,b,c){Ext.Array.each(b,function(d){var g=FT.Uploader.getProgress(d.get(this.idAttribute)),e;if(g&&g.progress){e=Ext.String.format("{0}%",Math.ceil(g.progress*100));this._setOverlayOnRecord(d,"Uploading",e)}},this)},_setOverlayOnRecord:function(b,d,a){if(!b){return}var c=b.get("overlay");if(!c){c={}}else{if(!c.skipClone){c=Ext.clone(b.get("overlay"));c.skipClone=true}}c.alternativeText=a;c.text=d;c.loader=true;c.opac=false;b.set("overlay",c);this._updateRecordDOM(b,d,a)},_updateRecordDOM:function(b,g,a){var d,c,e,g=g||"",a=a||"";if(!b){return}d=this.component.getNode(b);if(!d){return}c=d.getElementsByClassName("text")&&d.getElementsByClassName("text")[0];e=d.getElementsByClassName("text-alternative")&&d.getElementsByClassName("text-alternative")[0];if(c){c.textContent=g}if(e){e.textContent=a}},onProgress:function(d,c,e){var b=this.store.findRecord(this.idAttribute,d),a=Ext.String.format("{0}%",Math.ceil(c*100));this._setOverlayOnRecord(b,"Uploading",a)},onFailure:function(b,c){var a=this.store.findRecord(this.idAttribute,b);if(a){a.set("overlay",null)}FT.notifyError(FT.i18n("Failed to upload file."))},beforeUpload:Ext.emptyFn,afterUpload:Ext.emptyFn,dropPlaceholder:function(){var a=Ext.id(),d=this;d.on("refresh",function(){var e=document.getElementById(a);if(e){e.addEventListener("change",function(g){d.fireEvent("upload",g.target.files)},false)}},d,{single:true});var b='<span class="filebrowse-wrapper"><input id="'+a+'" type="file" class="filebrowse-input" multiple><a href="#" onclick="return false;" class="filebrowse-link">'+FT.i18n("browse")+"</a></span>";var c=FT.glyphIcon("cloud-upload",{cls:"ft-thumbnailsview-upload-icon"});return'<li class="'+this.dropPlaceholderCls+'"><p>'+FT.i18n("Drag and drop your files here, or {browseButton}",{values:{browseButton:b}})+"</p>"+c+"</li>"},_onEventUpdate:Ext.emptyFn});Ext.define("FT.view.plugin.DragAndDropFileUploadReviewSession",{extend:"FT.view.plugin.DragAndDropFileUpload",alias:"plugin.ft-view-plugin-drag-and-drop-file-upload-review-session",dropPlaceholderCls:"ft-thumbnailsview-drop-placeholder ft-thumbnailsview-block x-unselectable client-review",_onEventUpdate:function(d){var g=-1,a,c,b,e;if(!this.reloadStore){this.reloadStore=new Ext.util.DelayedTask(function(){this.store.reload()},this)}Ext.Array.each(d.data.entities,function(k,h,j){if(k.action==="encoded"){g=h;return false}});if(g!==-1){c=d.data.entities[g].entityId;a=this.store.findRecord("version_id",c);if(a){e=0;if(this.lastReload){b=((new Date).getTime()-this.lastReload)/1000;if(b<10){e=5000}}this.reloadStore.delay(e);this.lastReload=(new Date).getTime()}}},afterUpload:function(e,c,d){var b=this,h=c&&c.data&&c.data[0]||{},g=h.encoding||false,a=this.store&&this.store.findRecord("id",e);if(g){b._setOverlayOnRecord(a,"Encoding","")}},beforeUpload:function(d,c){var a=this;var b=this.store.getEntity();if(!FT.Settings.get("feature","isCloudStorageEnabled")){FT.notifyError(FT.i18n("Cloud storage and encoding disabled. Please contact support@ftrack.com"));return}FTApi.SimpleVersions.create({entityId:FT.app.getProjectId(),entityType:"show",fileName:d},function(e){if(!e){FT.notifyError(FT.i18n("Failed to create version."))}else{var g=e.entityId;FTApi.ReviewSessionObject.create({version_id:g,review_session_id:b.entityId,syncAssetVersionData:true},function(h){if(!h||!h.success){FT.notifyError(FT.i18n("Could not add version to review session."))}else{if(c){a.store.add({id:h.data[0].id,thumbid:{thumbUrl:"/img/thumbnail2.png",link:null,size:{y:"100%",x:"100%"}},overlay:{loader:true,text:FT.i18n("Uploading")}});c({id:h.data[0].id,version_id:g})}}})}})}});Ext.define("FT.view.plugin.DragAndDropFileUploadVersion",{extend:"FT.view.plugin.DragAndDropFileUpload",alias:"plugin.ft-view-plugin-drag-and-drop-file-upload-version",idAttribute:"entityId",_onEventUpdate:Ext.emptyFn,afterUpload:function(e,c,d){var b=this,h=c&&c.data&&c.data[0]||{},g=h.encoding||false,a=this.store&&this.store.findRecord("entityId",e);FT.notifySuccess(FT.i18n("File uploaded successfully."));if(g){a.set("overlay",{text:FT.i18n("Encoding"),loader:true})}else{a.set("overlay",null)}},beforeUpload:function(h,g){var b=this,c=this.store.getEntity(),a,d,e="";if(!FT.Settings.get("feature","isCloudStorageEnabled")){FT.notifyError(FT.i18n("Cloud storage and encoding disabled. Please contact support@ftrack.com"));return}b.cmp.directApi.create({entityId:c.entityId,entityType:c.entityType,fileName:h},function(j){if(!j){FT.notifyError(FT.i18n("Failed to create version."))}else{a=j;a=Ext.apply(a,{overlay:{loader:true,text:FT.i18n("Uploading")}});if(g){b.store.insert(0,a);g({id:j.entityId,version_id:j.entityId})}}});d=h.split(".");e="";if(d.length>1){e=d.pop()}FT.util.intercom("UPLOADED-VERSION",{extension:e})},_onEventUpdate:function(c){var d=-1,a,b;Ext.Array.each(c.data.entities,function(h,e,g){if(h.action==="encoded"){d=e;return false}});if(d!==-1){b=c.data.entities[d].entityId;a=this.store.findRecord("entityId",b);if(a&&a.get("overlay")){a.set("overlay",null);this.cmp.directApi.get(b,function(e){if(e&&e.thumbid){a.set("thumbid",e.thumbid)}})}}}});Ext.define("FT.view.plugin.DragAndDropFileUploadVersionGrid",{extend:"FT.view.plugin.DragAndDropFileUploadVersion",alias:"plugin.ft-view-plugin-drag-and-drop-file-upload-version-grid",_updateRecordDOM:Ext.emptyFn,init:function(a){var b=this;this.callParent(arguments);a.addDocked({xtype:"toolbar",region:"north",padding:"0 0 10px 0",items:[{xtype:"fileuploadfield",buttonOnly:true,buttonText:FT.i18n("Browse"),inputAttrTpl:"multiple",listeners:{change:function(c,d){a.fireEvent("upload",c.extractFileInput().files)},afterrender:function(c){c.fileInputEl.set({multiple:"multiple"})}}},{xtype:"tbtext",text:FT.i18n("or drag and drop files to upload.")}]})}});Ext.define("FT.filter.quick.FilterFactory",{extend:"FT.simplegrid.AbstractFactory",create:function(b,a){var c=[];if(b=="shots"){c=["taskstate"]}if(b=="linked_shots"){c=["taskstate","link_direction"]}if(b=="linked_assets"){c=["taskstate","link_direction"]}if(b=="linked_versions"){c=["link_direction","assettype"]}if(b=="filebin"){c=["created_by","create_time"]}if(b=="feed"){c=["feed_type","feed_time"]}if(b=="gantt"){c=["tasktype","taskstate","taskstatus","taskpriority"]}if(b=="tasks"){c=["tasktype","taskstatus"]}if(b=="notes"){c=["note_textfilter","note_category","create_time","todos"];if(a&&a.entityType&&a.entityType==="assetversion"){c.push({name:"group_versions",stateful:a&&a.stateful})}}if(b=="versions"){c=[{name:"tasktype",field:"tasktypeid"},"assettype","versionstatus","latest_version"]}if(b=="inbox"){c=["project","inbox_type","create_time","inbox_note","unread"]}if(b=="job"){c=["job_type","job_status"]}if(b=="people_resources"){c=["users","groups","people_resource_sort"]}if(b=="people_unassigned"){c=["tasktype","taskstatus"]}if(b==="kanban_project_sort"){c=[]}if(b==="kanban_global_filter"){c=["project","todos"]}if(b==="kanban_tasktype_sort"){c=["tasktype"]}return Ext.create("FT.filter.quick.Collection",{filters:c,stateful:a&&a.stateful})}},function(){FT.FilterFactory=Ext.create("FT.filter.quick.FilterFactory",{})});Ext.define("FT.sorter.quick.SorterFactory",{extend:"FT.simplegrid.AbstractFactory",create:function(b,d){var c=[],a={filterParam:"metasorters"};Ext.apply(a,d);if(b=="kanban_sort_group"){c=[{name:"kanban_sort_group",stateful:a&&a.stateful}]}if(b=="scg"){c=[{name:"scg",stateful:a&&a.stateful}]}if(b=="people_unassigned_group"){c=[{name:"people_group",stateful:a&&a.stateful}]}if(b=="people_resource_sort"){c=[{name:"people_resource_sort",stateful:a&&a.stateful}]}a.filters=c;return Ext.create("FT.filter.quick.Collection",a)}},function(){FT.SorterFactory=Ext.create("FT.sorter.quick.SorterFactory",{})});Ext.define("FT.filter.quick.TextBaseFilter",{extend:"Ext.form.field.Text",alias:"widget.simplefilter-text",autoLoadStore:false,cls:"background-light",emptyText:FT.i18n("Type to filter"),maxWidth:200,tooltip:undefined,filterChangedDelay:300,initComponent:function(){if(this.tooltip){this.inputAttrTpl='data-qtip="'+this.tooltip+'"'}this.callParent(arguments);this.delayedFilterFieldChanged=new Ext.util.DelayedTask(this.onFilterFieldChanged,this);this.on("change",function(a){this.delayedFilterFieldChanged.delay(this.filterChangedDelay)},this)},onFilterFieldChanged:function(){this.fireEvent("filterchanged",this)},loadStore:Ext.emptyFn,getFilterData:function(){var a=this.getValue();if(!a||!a.length){return null}return{field:null,type:"text",value:a}}});Ext.define("FT.filter.quick.SelectionBaseFilter",{extend:"FT.button.Selector",alias:"widget.simplefilter-selection",itemType:"radio",setTextToName:true,autoLoadStore:false,setArrayValueAsName:true,maxWidth:200,isDirty:false,initComponent:function(){var a=this;if(this.itemType=="checkbox"){this.selectAction=null}this._clearButton=Ext.widget({text:this.text,xtype:"menucheckitem",checked:true,handler:function(){this.select(undefined);a.removeCls("ft-filter-highlight");this.isDirty=true},listeners:{beforecheckchange:function(b,c){return c}},scope:this});this.beforeItems=[this._clearButton];this.callParent(arguments);if(Ext.isArray(this.value)&&this.value.length||!Ext.isArray(this.value)&&this.value){this.removeCls("ft-filter-highlight");this.setValue(this.value);this._clearButton.setChecked(false,true)}this.on("select",function(b){if(this.getValue().length){this.addCls("ft-filter-highlight")}else{this.removeCls("ft-filter-highlight")}this._clearButton.setChecked(false,true);this.isDirty=true},this);this.menu.on("hide",this.onFilterMenuHide,this)},onFilterMenuHide:function(){if(this.isDirty){this.fireEvent("filterchanged",this);this.isDirty=false}},loadStore:function(){if(this.autoLoadStore){this.store.load()}},getFilterData:function(){var a=this.getValue();if(!a){return null}if(!Ext.isArray(a)){a=[a]}if(a.length==0){return null}return{field:this.field,type:"list",value:a}}});Ext.define("FT.filter.quick.RemoteSelectionFilter",{extend:"FT.filter.quick.SelectionBaseFilter",alias:"widget.simplefilter-remoteselection",loadOptionsByEntity:function(a){this.store.load({params:{entityId:a.entityId,entityType:a.entityType}})}});Ext.define("FT.filter.quick.CheckboxBaseFilter",{extend:"Ext.form.field.Checkbox",alias:"widget.simplefilter-checkbox",labelSeparator:"",labelWidth:"auto",initComponent:function(){this.fieldLabel=this.text;if(Ext.isDefined(this.value)){this.setValue(this.value)}this.on("change",function(){this.fireEvent("filterchanged",this)},this);this.callParent()},getFilterData:function(){return{field:this.field,type:"boolean",value:this.checked}},getValue:function(){return this.checked},setHighlight:function(){if(this.getValue()){this.addCls("ft-filter-highlight")}else{this.removeCls("ft-filter-highlight")}}});FT.simplegrid.AllFilters=new Ext.util.HashMap;FT.simplegrid.AllFilters.add("taskstate",{text:FT.i18n("Any state"),xtype:"simplefilter-selection",field:"stateshort",displayField:"name",valueField:"short",itemType:"checkbox",store:"FT.store.StatusType"});FT.simplegrid.AllFilters.add("textfilter",{xtype:"simplefilter-text"});FT.simplegrid.AllFilters.add("note_textfilter",{xtype:"simplefilter-text",tooltip:"Type to filter on content or author. Note that client review invitees cannot be filtered."});FT.simplegrid.AllFilters.add("inbox_type",{text:FT.i18n("Any type"),xtype:"simplefilter-selection",store:[["notification_note",FT.i18n("Notes")],["notification_status",FT.i18n("Status changes")],["notification_publish",FT.i18n("Published versions")],["notification_assignment",FT.i18n("Assignments")]]});FT.simplegrid.AllFilters.add("unread",{text:FT.i18n("Unread"),xtype:"simplefilter-checkbox",checked:false});FT.simplegrid.AllFilters.add("inbox_note",{text:FT.i18n("My notes"),xtype:"simplefilter-selection",store:[["my_starred",FT.i18n("Starred")],["my_completed",FT.i18n("Completed")],["my_not_completed",FT.i18n("Not completed")],["-","-"],["sent",FT.i18n("Sent")],["sent_completed",FT.i18n("Sent completed")],["sent_not_completed",FT.i18n("Sent not completed")]]});FT.simplegrid.AllFilters.add("job_type",{text:FT.i18n("Any type"),xtype:"simplefilter-selection",store:[["encoding",FT.i18n("Encoding")],["export",FT.i18n("Export")]]});FT.simplegrid.AllFilters.add("job_status",{text:FT.i18n("Any status"),xtype:"simplefilter-selection",store:[["done",FT.i18n("Done")],["running",FT.i18n("Running")],["queued",FT.i18n("Waiting")],["failed",FT.i18n("Failed")]]});FT.simplegrid.AllFilters.add("note_category",{text:FT.i18n("Any label"),xtype:"simplefilter-selection",field:"notecategory",displayField:"name",valueField:"categoryid",itemType:"checkbox",store:"FT.store.NoteCategory"});FT.simplegrid.AllFilters.add("group_versions",{text:FT.i18n("All versions"),xtype:"simplefilter-checkbox",checked:true});FT.simplegrid.AllFilters.add("tasktype",{text:FT.i18n("Any type"),xtype:"simplefilter-remoteselection",field:"typeid",displayField:"name",itemType:"checkbox",valueField:"typeid",store:Ext.create("FT.data.DirectTaskType")});FT.simplegrid.AllFilters.add("project",{text:FT.i18n("Any project"),xtype:"simplefilter-selection",field:"showid",displayField:"fullname",valueField:"showid",itemType:"checkbox",autoLoadStore:true,store:Ext.create("FT.data.DirectActiveProjects")});FT.simplegrid.AllFilters.add("taskstatus",{text:FT.i18n("Any status"),xtype:"simplefilter-remoteselection",field:"statusid",displayField:"name",itemType:"checkbox",valueField:"statusid",store:Ext.create("FT.data.DirectTaskStatus")});FT.simplegrid.AllFilters.add("versionstatus",{text:FT.i18n("Any status"),xtype:"simplefilter-remoteselection",field:"statusid",displayField:"name",itemType:"checkbox",valueField:"statusid",store:Ext.create("FT.data.DirectVersionStatus")});FT.simplegrid.AllFilters.add("taskpriority",{text:FT.i18n("Any priority"),xtype:"simplefilter-selection",field:"priorityid",displayField:"name",itemType:"checkbox",valueField:"priorityid",store:"FT.store.PriorityType"});FT.simplegrid.AllFilters.add("assettype",{text:FT.i18n("Any asset type"),xtype:"simplefilter-selection",field:"assettypename",displayField:"name",valueField:"typeid",itemType:"checkbox",store:"FT.store.AssetType"});FT.simplegrid.AllFilters.add("create_time",{text:FT.i18n("Last 30 days"),xtype:"simplefilter-selection",store:[["any_time",FT.i18n("Any time")],["yesterday",FT.i18n("Yesterday")],["last_week",FT.i18n("Last week")],["last_month",FT.i18n("Last month")]],ui:"plain"});FT.simplegrid.AllFilters.add("feed_type",{text:FT.i18n("Any type"),xtype:"simplefilter-selection",itemType:"checkbox",store:[["db.all.note",FT.i18n("Notes")],["asset.published",FT.i18n("Asset published")],["status",FT.i18n("Status changed")],["db.append.task:user",FT.i18n("Task assigned")]]});FT.simplegrid.AllFilters.add("feed_time",{text:FT.i18n("Any time"),xtype:"simplefilter-selection",store:[["yesterday",FT.i18n("Yesterday")],["last_week",FT.i18n("Last week")],["last_month",FT.i18n("Last month")]]});FT.simplegrid.AllFilters.add("only_followed",{text:FT.i18n("Only followed"),xtype:"simplefilter-checkbox",checked:false});FT.simplegrid.AllFilters.add("latest_version",{text:FT.i18n("Latest version"),field:"highest",xtype:"simplefilter-checkbox",checked:false,padding:"0 10"});FT.simplegrid.AllFilters.add("kanban_sort_group",{label:FT.i18n("Sort by"),text:FT.i18n("Due date"),xtype:"simplefilter-selection",store:[["show",FT.i18n("Project")],["status",FT.i18n("Status")],["parent",FT.i18n("Parent")],["priority",FT.i18n("Priority")]]});FT.simplegrid.AllFilters.add("scg",{label:FT.i18n("Sort by"),text:FT.i18n("Due date"),xtype:"simplefilter-selection",store:[["status",FT.i18n("Status")],["parent",FT.i18n("Parent")],["priority",FT.i18n("Priority")]]});FT.simplegrid.AllFilters.add("people_sort",{label:FT.i18n("Sort by"),text:FT.i18n("Due date"),xtype:"simplefilter-selection",store:[[]]});FT.simplegrid.AllFilters.add("people_group",{text:FT.i18n("None"),label:FT.i18n("Sort by"),xtype:"simplefilter-selection",store:[["status",FT.i18n("Status")],["parent",FT.i18n("Parent")],["priority",FT.i18n("Priority")]]});FT.simplegrid.AllFilters.add("people_filter",{text:FT.i18n("All"),label:FT.i18n("Show"),xtype:"simplefilter-selection",store:[["show",FT.i18n("Assigned on project")]]});FT.simplegrid.AllFilters.add("people_tasktype",{text:FT.i18n("All"),label:FT.i18n("Show"),xtype:"simplefilter-selection",field:"typeid",displayField:"name",valueField:"typeid",store:"FT.store.TaskType"});FT.simplegrid.AllFilters.add("people_resource_sort",{label:FT.i18n("Sort by"),text:FT.i18n("Name"),xtype:"simplefilter-selection",store:[["workload",FT.i18n("Workload")]]});FT.simplegrid.AllFilters.add("project_status",{text:FT.i18n("Any status"),field:"status",xtype:"simplefilter-selection",store:[["active",FT.i18n("Active")],["hidden",FT.i18n("Hidden")]]});FT.simplegrid.AllFilters.add("link_direction",{text:FT.i18n("Any direction"),xtype:"simplefilter-selection",itemType:"checkbox",store:[["incoming",FT.i18n("Incoming")],["outgoing",FT.i18n("Outgoing")]]});FT.simplegrid.AllFilters.add("users",{text:FT.i18n("Any user"),xtype:"simplefilter-remoteselection",field:"userid",displayField:"name",valueField:"id",store:Ext.create("FT.data.DirectUsers"),disableIfEmpty:false,itemType:"checkbox"});FT.simplegrid.AllFilters.add("groups",{text:FT.i18n("Any group"),xtype:"simplefilter-remoteselection",field:"groupid",displayField:"name",valueField:"id",store:Ext.create("FT.data.DirectGroups"),disableIfEmpty:false,itemType:"checkbox"});FT.simplegrid.AllFilters.add("todos",{text:FT.i18n("Any note"),field:"todos",xtype:"simplefilter-selection",store:[["is_completed",FT.i18n("Completed")],["is_not_completed",FT.i18n("Not completed")]]});Ext.define("FT.filter.quick.Collection",{filterParam:"metafilters",autoLoad:true,mixins:{observable:"Ext.util.Observable"},enableLocationListener:true,constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this,a);this.addEvents("filterschanged");this.callParent(arguments);assert(this.filters,"filters must be set");this.activeFilters=[]},getEntity:function(){if(this.enableLocationListener){var b=FT.app.location.getProjectId();if(b){var a={entityId:b,entityType:"show"};return a}}if(this._store&&this._store.getEntity){return this._store.getEntity()}return},getFilter:function(a){return Ext.clone(FT.simplegrid.AllFilters.get(a))},getItems:function(){var a=[],b;Ext.each(this.filters,function(c){b=this.createFilter(c);if(b.label){a.push({xtype:"label",margin:"0 5",cls:"toolbar-text-color",text:b.label})}this.activeFilters.push(b);a.push(b)},this);if(this.stateful){assert(this._store,"a store must be provided when applying stateful filters");this.applyFiltersToStore(false)}return a},applyFiltersToStore:function(a){if(this._store){var b={};b[this.filterParam]=this.collectFilterData();Ext.apply(this._store.getProxy().extraParams,b);if(a){this._store.loadPage(1)}}},getFilterData:function(){return this.collectFilterData()},collectFilterData:function(){var c=this.activeFilters.length,a=0,b,d=[];for(;a<c;a++){b=this.activeFilters[a];filterData=b.getFilterData();if(filterData){d.push(filterData)}}return d},bindStore:function(a){this._store=a},onFilterChanged:function(a){this.fireEvent("filterschanged",this);this.applyFiltersToStore(this.autoLoad)},onMenuShow:function(b,c){var a=this.getEntity();if(b.loadOptionsByEntity){if(a){b.loadOptionsByEntity(a)}}if(b.loadStore&&b.autoLoadStore){b.loadStore()}},createFilter:function(b){var c,a={filterId:b};if(Ext.isObject(b)){Ext.apply(a,{field:b.field});if(b.stateful){a.plugins=[{ptype:"ft-filter-stateful",filterId:this.stateful}]}b=a.filterId=b.name}c=this.getFilter(b);assert(c,"filterid must be defined");Ext.apply(c,a);c.field=Ext.value(c.field,b);this.attachListeners(c);return Ext.widget(c)},attachListeners:function(a){a.listeners=Ext.value(a.listeners,{});Ext.apply(a.listeners,{filterchanged:this.onFilterChanged,menushow:this.onMenuShow,scope:this})}});Ext.define("FT.model.BookmarkModel",{extend:"RAW.data.Setting",fields:[{name:"settingid",type:"string"},{name:"name",type:"string"},{name:"value"}]});Ext.define("FT.bookmark.Model",{mixins:{observable:"Ext.util.Observable"},constructor:function(){this.addEvents("bookmarkadded","bookmarkremoved","bookmarksloaded");this.mixins.observable.constructor.call(this);this.store=Ext.create("RAW.data.SettingStore",{autoLoad:true,model:"FT.model.BookmarkModel",key:FT.Settings.get("currentuser","userid"),sorters:[{property:"name",direction:"ASC"}]});this.store.on("load",function(){this.fireEvent("bookmarksloaded")},this)},getData:function(c){var a=["entityId","entityType","view","itemId"];var b=Ext.copyTo({},c,a);return b},add:function(b,a){var c=this.getData(a);if(!this.exists(c)){this.store.add({name:b,value:c});this.fireEvent("bookmarkadded",c);this.store.sync()}},removeByCfg:function(a){var b=this.getByCfg(a);if(b){this.remove(b)}},remove:function(a){this.store.remove(a);this.fireEvent("bookmarkremoved");this.store.sync()},getStore:function(){return this.store},getCount:function(){return this.store.getCount()},exists:function(a){return this.getByCfg(a)!==null},getByCfg:function(b){var a=this.store.findBy(function(c){var d=c.get("value");return d.entityId==b.entityId&&d.entityType==b.entityType&&d.view==b.view&&d.itemId==b.itemId},this);return a!=-1?this.store.getAt(a):null}});Ext.define("FT.bookmark.View",{extend:"Ext.view.View",itemSelector:".bookmarks-view__item",emptyText:'<p class="ft-grid-emptytext-small">'+FT.i18n("Looks like you haven't bookmarked anything yet.")+"<br>"+FT.i18n("Add a bookmark by clicking the icon to the left.")+"</p>",deferEmptyText:false,width:350,margin:0,loadMask:false,initComponent:function(){this.model=FT.Bookmarks;this.store=this.model.getStore();this.addEvents("bookmarkclicked");this.tpl=new Ext.XTemplate('<ul class="bookmarks-view">','<tpl for=".">','<li class="bookmarks-view__item">',"{[this.renderRemoveIcon(values)]}","{[this.getName(values.name)]}","</li>","</tpl>","</ul>",{getName:function(a){var c=a.split(" / "),b=c.pop();return Ext.String.format('<div class="entity-parent">{0}</div><div class="entity-path">{1}</div>',b,c.join(" / "))},renderRemoveIcon:function(a){return Ext.String.format('<div class="bookmarks-view__remove actionicon">{0}</div>',FT.glyphIcon("remove"))}});this.callParent();this.on("itemclick",this._onItemClick,this)},_onItemClick:function(b,a,g,c,h){if(h.getTarget(".bookmarks-view__remove")){this.model.remove(a);return}var d=a.get("value");FT.app.open(d.itemId,d);this.fireEvent("bookmarkclicked")}});Ext.define("FT.bookmark.BookmarkContextButton",{extend:"Ext.button.Button",cls:"bookmark",glyph:FT.glyph("favorite-outline"),speedbar:null,dashboardManager:null,enableToggle:true,initComponent:function(){this.model=FT.Bookmarks;this.model.on({bookmarksloaded:this.updateToggle,bookmarkremoved:this.updateToggle,bookmarkadded:this.updateToggle,scope:this});FT.app.on("aftermoduleactivated",this.onAfterModuleActivated,this);this.callParent()},toggleHandler:function(a,b){b?this.add():this.remove()},getCfg:function(){var a=FT.app.getCfg();a.view=this._view;return a},remove:function(){var a=this.getCfg();this.model.removeByCfg(a)},add:function(){var b=FT.app.location.getLocation(),a=this.getCfg();if(b){b=Ext.isDefined(b.user)?FTrack.grid.UserRendererPrint(b.user.id):FTrack.grid.LinkRendererPrint(b)}this.model.add(b,a)},onAfterModuleActivated:function(a,b){this._view=b.view;this.updateToggle()},updateToggle:function(g,d,j){var e=this.getCfg(),h=this.model.exists(e);this.toggle(h,true)}});Ext.define("FT.chart.Chart",{extend:"Ext.chart.Chart",constructor:function(a){this.overrideColorSet=a.colorSet;this.callParent(arguments)},initTheme:function(e){var d=this,b=Ext.chart.theme,c,a;if(e){e=e.split(":");for(c in b){if(c==e[0]){a=e[1]=="gradients";d.themeAttrs=new b[c]({useGradients:a});d.themeAttrs.colors=d.overrideColorSet;Ext.apply(d.themeAttrs.axisLabelLeft,{fill:"#bbb"});Ext.apply(d.themeAttrs.axisLabelBottom,{fill:"#bbb"});Ext.apply(d.themeAttrs.axis,{"stroke-width":0});Ext.apply(d.themeAttrs.seriesLabel,{fill:"#FFF"});if(a){d.gradients=d.themeAttrs.gradients}if(d.themeAttrs.background){d.background=d.themeAttrs.background}return}}}}});Ext.define("FT.chart.FlowDiagram",{extend:"FT.chart.Chart",animate:true,fields:null,store:null,constructor:function(b){assert(b.store,"must have store");assert(b.fields,"must have fields");var a=FT.stateColor();b.colorSet=[a.DONE,a.IN_PROGRESS,a.NOT_STARTED];if(b.simpleMode){b.axes=[{type:"Numeric",grid:true,position:"left",fields:b.fields,title:FT.i18n("Tasks"),hidden:true,grid:true,minimum:0,adjustMinimumByMajorUnit:0,drawTitle:function(){Ext.chart.axis.Axis.prototype.drawTitle.apply(this,arguments);this.displaySprite.setAttributes({fill:"#bbb",font:"14px Arial, sans-serif"})}},{type:"Category",position:"bottom",fields:["date"],hidden:true,grid:true,label:{rotate:{degrees:315}}}]}else{b.axes=[{type:"Numeric",grid:true,position:"left",fields:b.fields,title:FT.i18n("Tasks"),grid:true,minimum:0,adjustMinimumByMajorUnit:0,drawTitle:function(){Ext.chart.axis.Axis.prototype.drawTitle.apply(this,arguments);this.displaySprite.setAttributes({fill:"#bbb",font:"14px Arial, sans-serif"})}},{type:"Category",position:"bottom",fields:["date"],grid:true,label:{rotate:{degrees:315}}}]}b.series=[{type:"area",highlight:false,axis:"left",xField:"date",yField:b.fields,style:{opacity:0.9}}];this.callParent(arguments)}});Ext.define("FT.chart.Legendbox",{extend:"Ext.Component",style:"text-align:center;",initComponent:function(a){this.legendTpl=new Ext.XTemplate('<div class="ft-widget-chart-legend">','<tpl for=".">','<div class="ft-widget-chart-legend-cube" style="{[(xindex!=1)?"margin-left:10px;":""]}background-color:{color};">',"&#160;","</div>","{name}","</tpl>",'<div style="clear:both;"></div>',"</div>");this.callParent(arguments);if(this.store.isLoading()){this.store.on({load:this.updateLegendFromStore,scope:this},{single:true})}else{this.updateLegendFromStore()}},updateLegendFromStore:function(){var a=this.store.getProxy().getReader().metaData;this.updateLegend(a.barNames,a.barColors,a.reverseLabel)},updateLegend:function(g,d,c){if(!Ext.isDefined(c)){c=false}var b=g.length,a=0,e=[];assert(b===d.length,"Names and color series must be of equal length");for(;a<b;a++){e.push({name:g[a],color:d[a]})}if(c){e.reverse()}this.update(this.legendTpl.apply(e))}});Ext.define("FT.widget.Chart",{extend:"RAW.BaseWidget",layout:"fit",initWidget:function(){var a=this.getDirect();this.store=Ext.create("Ext.data.Store",{fields:[],proxy:{type:"direct",directFn:a.getData,reader:{type:"json",root:"data"}}});this.store.on({load:this.onStoreLoad,metachange:this.onMetaChange,scope:this});this.emptyContainer=Ext.create("Ext.Component",{html:FT.i18n("No chart data"),margin:25,cls:"ft-grid-emptytext",hidden:true});this.add(this.emptyContainer)},loadData:function(){Ext.apply(this.store.getProxy().extraParams,{entityId:this.getEntity().entityId,entityType:this.getEntity().entityType});this.store.load()},onMetaChange:function(b,a){this.metaData=a},onStoreLoad:function(b){var a=this.metaData;if(this.chart){this.remove(this.chart,true)}delete this.chart;if(this.legendBox){this.remove(this.legendBox,true)}delete this.legendBox;if(b.getCount()>0){this.emptyContainer.setVisible(false);this.chart=this.getChart(a);this.legendBox=Ext.create("FT.chart.Legendbox",{store:this.store});this.add([this.chart,this.legendBox])}else{this.emptyContainer.setVisible(true)}}});Ext.define("RAW.widgets.TemplateWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-tplwidget",maximizable:false,validPushEntities:["task"],viewConfig:null,initComponent:function(){if(this.pageSize){this.bbar=this.pager=Ext.create("FT.ui.MorePager",{cls:"background-default"})}this.callParent(arguments)},initWidget:function(){this.callParent(arguments);var c=this.getDirect();this.store=Ext.create("Ext.data.Store",{fields:[],pageSize:this.pageSize,proxy:{type:"direct",directFn:c.getInternalData,reader:{root:"data"}}});if(this.pager){this.pager.bindStore(this.store)}var b={emptyText:'<div class="ft-grid-emptytext" style="margin:25px 0px;">'+this.emptyText+"</div>",deferEmptyText:false,itemSelector:this.itemSelector,minHeight:50,store:this.store,tpl:this.getWidgetTpl()};if(this.viewConfig){Ext.apply(b,this.viewConfig)}var a=Ext.create("Ext.view.View",b);this.add(a);this.loadData()},loadData:function(){Ext.apply(this.store.getProxy().extraParams,{entityId:this.getEntity().entityId,entityType:this.getEntity().entityType,widgetid:this.widgetid});this.store.load()},updateWidget:function(){this.loadData()},getWidgetTpl:function(){return this.widgetTpl}});Ext.define("RAW.widgets.IframeWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-iframewidget",maximizable:false,validPushEntities:[],layout:"fit",initWidget:function(){this.callParent(arguments);FT.app.on("aftermoduleactivated",function(a){if(a===this.getModule()&&this.isVisible(true)){this.createIframe()}},this);this.getTop().on("show",function(){this.createIframe()},this);this.getModule().on("beforemodulechange",function(b,a){if(b.itemId===a.itemId){return true}if(this.iframeWidget){this.iframeWidget.destroy();this.iframeWidget=null}},this);this.createIframe()},createIframe:function(){if(this.iframeWidget){return}this.iframeWidget=Ext.create("FT.component.Iframe",{src:this.getSetting("url"),allowPostMessage:this.getSetting("allowPostMessage"),data:{entity:this._getEntity()}});this.add(this.iframeWidget);if(!this.isFitLayout()&&this.getSetting("iframeHeight")){this.setHeight(this.getSetting("iframeHeight"))}},_getEntity:function(){var a=this.getEntity();return{id:a.entityId,type:FT.fromLegacyEntityType(a.entityType)}},updateWidget:function(){if(this.iframeWidget){this.iframeWidget.sendMessage("ftrack.widget.update",{entity:this._getEntity()})}}});Ext.define("RAW.widgets.AssetsWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-assetswidget",maximizable:false,validPushEntities:["assetversion"],bodyCls:"background-default",initComponent:function(){this.bbar=this.pager=Ext.create("FT.ui.MorePager");this.callParent(arguments)},selectionChanged:function(){this.loadData()},initWidget:function(){var c=this;this.callParent(arguments);var d=this.getDirect();this.store=Ext.create("Ext.data.Store",{fields:["thumbid","assettypename","tasktypeid","link",{name:"date",dateFormat:"c",type:"date"},"version","userid"],pageSize:this.getSetting("limit"),proxy:{type:"direct",directFn:d.getChanges,reader:{root:"data"}}});this.pager.bindStore(this.store);var a=['"Published by: " + FTrack.grid.UserRenderer(values.userid) + " " + FTrack.grid.FuzzyDateRenderer(values.date)','"On: " + FTrack.grid.LinkRenderer(values.link)','"Asset type: " + values.assettypename','"Task type: " + FTrack.grid.TaskTypeRenderer(values.tasktypeid)'];a=a.join('+ "<br />" +');var b=Ext.create("FT.simplegrid.ThumbnailsView",{ui:"ft-widget-view",margin:"10 0",store:this.store,minHeight:100,deferEmptyText:false,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("No versions")+"</div>"});this.add(b);this.loadData()},loadData:function(){Ext.apply(this.store.getProxy().extraParams,{entity:{entityId:this.getEntity().entityId,entityType:this.getEntity().entityType},widgetid:this.widgetid});this.store.loadPage(1)},updateWidget:function(){this.loadData()}});Ext.define("RAW.widgets.ComponentsWidget",{title:FT.i18n("Components"),extend:"RAW.BaseWidget",alias:"widget.ft-componentswidget",maximizable:false,validPushEntities:["assettake"],cls:"ft-property-keyfield-black",layout:"fit",initComponent:function(){var a=this;this.playButton=Ext.create("Ext.button.Button",{glyph:FT.glyph("play"),text:FT.i18n("Play"),handler:this.review,scope:this,disabled:true});this.reviewButton=FT.freview.FReviewHelper.getReviewButton(function(){return[a.getEntity().entityId]},function(){return"assetversion"},true);this.tbar=[this.playButton,this.reviewButton];this.callParent(arguments)},initWidget:function(){this._notice=Ext.create("Ext.Component",{cls:"ft-grid-emptytext",tpl:"{notice}",data:{notice:""}});if(!FT.isAuth("VIEW_COMPONENTS")){this.showNotice(this.getPermissionDeniedNotice("VIEW_COMPONENTS"));return}var a=this.getDirect();this._locationResolveTickets={};this.store=Ext.create("Ext.data.Store",{fields:["name","path","play","protocols","isReviewable",{name:"selectedLocationName",type:"string",defaultValue:FT.i18n("Select Location")},{name:"isResolved",type:"bool",defaultValue:false},{name:"isResolving",type:"bool",defaultValue:false},"componentids","data","metadata","locations"],pageSize:this.getSetting("limit"),proxy:{type:"direct",directFn:a.getData,reader:{root:"data"}},listeners:{load:this._onStoreLoad,scope:this}});this._view=Ext.create("Ext.view.View",{ui:"ft-widget-view",store:this.store,itemSelector:"div.ft-component",deferEmptyText:false,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("No components")+"</div>",padding:"0 10 0 0",tpl:new Ext.XTemplate('<tpl for=".">','<div class="ft-component">','<div class="ft-property-groupheader">','<a class="ft-remove-component actionicon" data-qtip="{[FT.i18n("Remove component")]}">{[ FT.glyphIcon("delete") ]}</a>',"{name}",'<a class="ft-actions-component actionicon" data-qtip="{[FT.i18n("Run actions on component")]}">{[ FT.glyphIcon("actions") ]}</a>',"</div>",'<div class="ft-component-row">','<tpl if="locations && locations.length">','<div class="ft-property-keyfield">','<div class="x-btn x-unselectable x-fit-item x-btn-default-toolbar-small locations button-view" style="padding: 6px 3px;">','<div class="x-btn-wrap">','<a class="x-btn-button" style="text-decoration: none;">','<span class="x-btn-inner x-btn-inner-center">{selectedLocationName}</span>','<span class="x-btn-icon-el x-btn-glyph"></span>',"</a>","</div>","</div>","</div>","</tpl>",'<tpl if="this.canDownload(values) === false && protocols.length">','<div class="ft-component-action">','<div class="x-btn x-unselectable x-fit-item x-btn-default-toolbar-small protocols button-view" style="padding:6px 3px;">','<div class="x-btn-wrap">','<a class="x-btn-button" style="text-decoration:none;">','<span class="x-btn-inner x-btn-inner-center">',FT.i18n("Open"),"</span>",'<span class="x-btn-icon-el x-btn-glyph"></span>',"</a>","</div>","</div>","</div>","</tpl>",'<tpl if="this.canDownload(values)">','<div class="ft-component-action">','<div class="x-btn x-unselectable x-fit-item x-btn-default-toolbar-small download button-view" style="padding:6px 3px;">','<div class="x-btn-wrap">','<a class="x-btn-button" style="text-decoration:none;">','<a class="x-btn-button" style="text-decoration:none;">','<span class="x-btn-inner x-btn-inner-center">',FT.i18n("Download"),"</span>",'<span class="x-btn-icon-el x-btn-glyph"></span>',"</a>","</div>","</div>","</div>","</tpl>","<tpl>",'<tpl if="locations && locations.length">','<div class="ft-property-valuefield">','<input readonly="readonly" class="ft-component-path {[ this.unresolvedClass(values) ]} type="text" value="{[ this.componentPath(values) ]}" />',"</div>","</tpl>",'<tpl if="!locations || !locations.length">','<div colspan="2" class="ft-grid-emptytext-small">',FT.i18n("No locations"),"</div>","</tpl>","</tpl>","</div>",'<tpl if="metadata && metadata.length">','<div class="metadata ft-component-row">','<a class="metadata-link text-faded" href="">',FT.i18n("show metadata"),"</a>",'<div class="is-hidden text-small text-faded">','<tpl for="metadata">',"<div><strong>{variable}</strong>: {value}</div>","</tpl>","</div>","</div>","</tpl>","</div>","</tpl>",{unresolvedClass:function(b){if(b.isResolved){return""}return"ft-location-unresolved"},componentPath:function(b){return b.path||""},canDownload:function(c){var d=c.path,b=RegExp("^https?://");return b.test(d)}}),listeners:{itemclick:function(j,c,k,d,b,l){if(b.getTarget(".locations")){this.showLocationsMenu(b,c);return true}if(b.getTarget(".protocols")){this.showOpenersMenu(b,c);return true}if(b.getTarget(".download")){this.downloadComponent(c);return true}var e=b.getTarget(".metadata");if(e){e.className+=" show-hidden";var h=b.getTarget(".metadata-link");h.remove();b.preventDefault();return true}if(b.getTarget(".ft-actions-component")){var g=c.get("componentids")[0];Ext.create("FT.window.Actions",{autoShow:true,selection:[{entityType:"Component",entityId:g}]});return true}if(b.getTarget(".ft-remove-component")){this.removeComponent(c);return true}if(b.getTarget(".ft-component-path")){return false}return true},scope:this}});this.add(this._view);this.loadData()},downloadComponent:function(a){window.open(a.get("path"))},removeComponent:function(a){var b=this,c=Ext.create("FT.window.RemoveDialog",{entity:{entityId:a.get("componentids")[0],entityType:"component"},listeners:{removesuccess:function(){b.updateWidget()}}});c.show()},review:function(){FT.freview.FReviewHelper.openOverlayPlayer(this._getReviewableData())},showLocationsMenu:function(d,b){var c=[];var a=b.get("locations")||[];if(!a.length){return}Ext.each(a,function(g){var h={text:g.name,handler:Ext.Function.pass(this.onSelectLocation,[b,g]),scope:this};c.push(h)},this);var e=Ext.create("Ext.menu.Menu",{items:c,listeners:{hide:function(h,g){Ext.destroy(h)}}});e.showBy(d.target)},onSelectLocation:function(b,a){var d=b.get("componentids"),c=d&&d.length&&d[0];b.set({isResolving:true,isResolved:false,path:a.path||"",selectedLocationName:a.name});setTimeout(function(){b.set("isResolving",false)},10000);var e=Ext.id();this._locationResolveTickets[b.id]=e;var g=Ext.Function.bind(this.onLocationResolved,this,[b,e],0);FT.ComponentPathResolver.resolve(c,a.name,g)},onLocationResolved:function(a,c,b){if(c===this._locationResolveTickets[a.id]){a.set({path:b.data.path,isResolving:false,isResolved:true})}},showOpenersMenu:function(d,a){var h=this;var b=[];var c=a.get("protocols");var g=a.get("isResolved");if(!g){FT.notifyError(FT.i18n("Unable to open unresolved path."));return}Ext.each(c,function(k){var j={text:k.text,handler:Ext.Function.pass(this.onSelectOpener,[k.protocol,a.get("path")]),scope:this};b.push(j)},this);var e=Ext.create("Ext.menu.Menu",{items:b,listeners:{hide:function(k,j){Ext.destroy(k)}}});e.showBy(d.target)},onSelectOpener:function(c,b){var a=c+encodeURI(b);window.location=a},showNotice:function(a){this._notice.update({notice:a});this._setActiveItem(this._notice)},hideNotice:function(){this._setActiveItem(this._view)},getPermissionDeniedNotice:function(a){var b="Permission denied.";if(a=="VIEW_COMPONENTS"){b="Permission denied for viewing components."}return b},_getReviewableData:function(){return this.store.proxy.reader.rawData.reviewable},_onStoreLoad:function(b,a,e,c){this.playButton.setDisabled(this._getReviewableData()===false);if(!e){var d=b.getProxy().getReader().metaData;if(d.reason=="PERMISSION_DENIED"){this.showNotice(this.getPermissionDeniedNotice(d.permission))}}this.store.each(function(g){Ext.each(g.get("locations"),function(h){if(h&&h.preSelected){this.onSelectLocation(g,h);return false}},this)},this)},_setActiveItem:function(a){if(!this.contains(a)){this.removeAll();this.add(a)}}});Ext.define("RAW.FinancialReports",{extend:"FT.view.ViewContainer",alias:"widget.widget_financialreport",title:FT.i18n("Project Breakdown"),header:false,disablePrimaryToolbar:true,validPushEntities:[],viewClasses:["FT.view.impl.FinancialReportsView"]});Ext.define("RAW.FlowDiagram",{extend:"FT.widget.Chart",alias:"widget.ft-flowdiagram",savedFields:[],validPushEntities:[],layout:{type:"vbox",align:"stretch"},bodyCls:"background-default",bodyPadding:"0 20 15 10",initWidget:function(){this.callParent();this.loadData()},getChart:function(a){return Ext.create("FT.chart.FlowDiagram",{height:350,store:this.store,fields:a.seriesFields})},updateWidget:function(){this.loadData()}});Ext.define("FT.widgets.InfoPanelWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-infopanel",layout:{type:"hbox",align:"stretch"},validPushEntities:[],header:false,cls:"ft-info-panel",bodyCls:"infopanel",mixins:{validPush:"RAW.SetValidPushEntities"},publisherEnabledEntityTypes:["task"],launchEnabledEntityTypes:["task"],initComponent:function(){this.tbar=this.createTbar();this.callParent(arguments)},isEnableMoreMenu:function(){var a=this.getEntity().entityType;if(a=="user"){return false}return true},createTbar:function(){var e,c=this,d,b=!this.isEnableMoreMenu(),a=[];this.colorPicker=Ext.create("FT.spark.Component",{component:"ProjectColorPicker",style:{marginLeft:"2px",marginRight:"-6px"},props:{session:FT.spark.getSharedSession(),projectId:null,onError:function(g){if(g&&g.name==="ServerPermissionDeniedError"){FT.notifyError(FT.i18n("You are not permitted to update projects."))}else{FT.notifyError(FT.i18n("Failed to update project color."))}}}});a.push(this.colorPicker);this.titleText=Ext.widget({xtype:"tbtext",flex:1,text:""});a.push(this.titleText);if(FT.Settings.get("feature","isConnectEnabled")){this.publishButton=Ext.create("Ext.button.Button",{glyph:FT.glyph("launch"),tooltip:FT.tip("toolbar-button-icononly-connectpublisher"),overflowText:FT.i18n("Publish"),handler:function(){FT.Connect.openPublisher({entityId:c.getEntity().entityId,entityType:c.getEntity().entityType})},scope:this});a.push(this.publishButton)}this.launchButton=Ext.create("Ext.button.Button",{glyph:FT.glyph("actions"),overflowText:FT.i18n("Actions"),qtip:FT.tip("toolbar-button-icononly-action-launch"),getSelection:function(){return[{entityId:c.getEntity().entityId,entityType:c.getEntity().entityType}]},handler:function(){Ext.create("FT.window.Actions",{selection:this.getSelection(),autoShow:true})}});a.push(this.launchButton);a.push({text:FT.i18n("More"),split:true,disabled:b,handler:function(){d=FT.getContextMenu("slideIn",c.getEntity());d.showBy(this.getEl())}},{xtype:"button",ui:"plain",cls:"tool",glyph:FT.glyph("close"),handler:function(){FT.app.slider.handleSlideOut()}});e=Ext.create("Ext.toolbar.Toolbar",{height:60,cls:"ft-info-panel-tbar background-default border-bottom",items:a});return e},initWidget:function(){var a=[],b=[];if(this.getEntity().entityType!="user"){a.push("ft-propertyeditor")}this.view=Ext.create("FT.property.View",{propertyType:"QUICKINFO_PROPERTIES",autoScroll:false,enableGroup:false,plugins:a,flex:1,padding:"10 10 0 0",direct:FT.getApi("Property",this.pushToken)});this.objectTypeStore=Ext.data.StoreManager.lookup("FT.store.ObjectType");this.taskTypeStore=Ext.data.StoreManager.lookup("FT.store.TaskType");if(this.getEntity().entityType!="list"){this.thumbnail=Ext.create("FT.attachment.DroppableThumbnail",{width:150,margin:"10 10 0 10"});b.push(this.thumbnail)}b.push(this.view);this.add(b);this.view.getStore().on("load",this.onStoreLoad,this);this.loadData()},onStoreLoad:function(k){var d=k.getMetaData().extraData||{},c=k.getMetaData().entityData||{},e=this.getEntity()||{},a,h=d.link,m,j,g,l,b;if(h.length>1){h=Ext.Array.slice(h,-1)}m=FTrack.grid.LinkRendererPrint(h);j=FT.glyphIconFromEntity(h[0],{size:"x-large"});g=null;l=null;b=this.objectTypeStore.findRecord("typeid",e.objectType);g=e.entityType;if(g=="task"&&b){taskType=this.taskTypeStore.findRecord("typeid",c.typeId);if(taskType){l=taskType.get("name")}g=b.get("name")}else{if(g=="show"){g="Project";j=null}}this.updateColorPicker(e);this.updateTitleText(m,j,g,l);this.updateThumbnail(m,d);if(this.publishButton){this.enabledPublishButtonOnStoreLoad(e)}},updateThumbnail:function(c,b){if(!this.thumbnail){return}var a=this.getEntity();thumbnail=b.thumbnail||{};thumbnail.name=c;this.thumbnail.setEntity(a);this.thumbnail.setThumbnail(thumbnail)},updateColorPicker:function(a){if(!this.colorPicker){return}if(a.entityType==="show"){this.colorPicker.setProps({projectId:a.entityId});this.colorPicker.show()}else{this.colorPicker.hide()}},updateTitleText:function(b,d,c,e){var a="";if(!this.titleText){return}if(e){e=" ("+e+")"}else{e=""}if(d){a+='<span class="pull-left large-title">'+d+"</span>"}a+='<div style="padding-left: 10px;" class="text-bigger text-ellipsis">';a+="<span>"+b+"</span>";a+='<div class="text-faded" style="font-size: 12px;"> '+Ext.String.capitalize(c)+e+"</div>";a+="</div>";if(this.rendered){this.titleText.setText(a)}else{this.titleText.text=a}},enabledPublishButtonOnStoreLoad:function(a){var b=Ext.Array.contains(this.publisherEnabledEntityTypes,a.entityType);if(b){this.publishButton.setTooltip(FT.tip("toolbar-button-icononly-connectpublisher"));this.publishButton.enable()}else{this.publishButton.setTooltip(FT.tip("toolbar-button-icononly-connectpublisher-disabled"));this.publishButton.disable()}},updateWidget:function(){this.loadData()},loadData:function(){this.setValidPushEntitiesFromEntity();var a=this.view.getStore(),b={entityId:this.getEntity().entityId,entityType:this.getEntity().entityType};a.loadFrom(b)}});Ext.define("FT.widgets.AppInfoPanelWidget",{extend:"FT.widgets.InfoPanelWidget",alias:"widget.ft-appinfopanel",createTbar:function(){var a=Ext.create("Ext.toolbar.Toolbar",{ui:"plain"});return a}});Ext.define("FT.insights.ConfigureInsightForm",{extend:"Ext.form.Panel",cls:"ft-inset-box ft-window-addinsight",margin:"0 0 0 10",layout:"hbox",defaults:{labelSeparator:""},initComponent:function(){this.addEvents("basechanged");var c=this.direct,b=FT.util.copyStore("FT.store.ObjectType");var a=[];b.each(function(d){if(d.get("typeid")!=FT.getMilestoneId()&&d.get("entityType")!="show"){a.push(Ext.clone(d.data))}});b.removeAll(true);b.add(a);this.items=[this.emptyMsg=Ext.create("Ext.Component",{width:"100%",html:'<p class="ft-grid-emptytext">'+FT.i18n("No insight selected.")+'</p><p class="ft-grid-emptytext">'+FT.i18n("Select an insight to the left or click (+) to add a new.")+"</p>"}),this.fieldsGroup=Ext.create("Ext.form.FieldContainer",{layout:"anchor",hidden:true,padding:"10 15",width:"100%",defaults:{labelSeparator:"",bubbleEvents:["change"],margin:"5 0",anchor:"100%"},items:[{xtype:"combo",fieldLabel:FT.i18n("Based on:"),name:"base",margin:"5 0 10 0",displayField:"name",valueField:"typeid",queryMode:"local",editable:false,store:b,allowBlank:false,forceSelection:true,afterLabelTextTpl:FT.util.getHelp(FT.i18n("What type of object to base the insight on.")),listeners:{select:function(e,d){this.fireEvent("basechanged",this.getRecord(),d[0].get("typeid"))},scope:this}},{xtype:"component",autoEl:"hr"},{fieldLabel:FT.i18n("Title:"),xtype:"textfield",margin:"10 0 0 0",name:"title",allowBlank:false},{fieldLabel:FT.i18n("Summarize:"),xtype:"combo",store:Ext.create("Ext.data.Store",{fields:["name","value"],proxy:{type:"direct",directFn:c.getInsightTypes},autoLoad:true}),allowBlank:false,editable:false,forceSelection:true,name:"type",displayField:"name",valueField:"value",afterLabelTextTpl:FT.util.getHelp(FT.i18n("What kind of summarize method to apply on the data."))},{xtype:"fieldset",margin:"10 0 0 0",padding:0,title:FT.i18n("Filter result by"),collapsible:false,border:0,defaults:{width:300,margin:"0 0 5 0",labelWidth:125,anchor:"100%"},items:[this.taskTypeSelector=Ext.widget({fieldLabel:FT.i18n("Type"),xtype:"ft-labeleditor",emptyText:FT.i18n("Filter on task type"),forceSelection:true,multiSelect:false,name:"tasktype",displayField:"name",labelWidth:125,valueField:"typeid",store:FT.util.copyStore("FT.store.TaskType"),afterLabelTextTpl:FT.util.getHelp(FT.i18n("What type to filter on."))}),this.statusSelector=Ext.widget({fieldLabel:FT.i18n("Status"),labelWidth:125,xtype:"ft-labeleditor",forceSelection:true,multiSelect:true,emptyText:FT.i18n("Filter on status"),name:"statusid",displayField:"name",valueField:"statusid",afterLabelTextTpl:FT.util.getHelp(FT.i18n("What status to filter on.")),store:this.statusStore=Ext.create("Ext.data.Store",{fields:["name","statusid"],proxy:{type:"direct",directFn:c.getStatuses}})}),{fieldLabel:FT.i18n("Task state"),xtype:"ft-labeleditor",forceSelection:true,multiSelect:false,emptyText:FT.i18n("Filter on task state."),name:"state",displayField:"name",valueField:"value",afterLabelTextTpl:FT.util.getHelp(FT.i18n("Filter objects based on task state.")),store:Ext.create("Ext.data.Store",{fields:["name","value"],proxy:{type:"direct",directFn:c.getStates},autoLoad:true})},this.onlyIsBillable=Ext.widget({xtype:"checkboxfield",fieldLabel:FT.i18n("Only billable"),labelWidth:125,name:"exclude_non_billable",afterLabelTextTpl:FT.util.getHelp(FT.i18n("Check this box to only include billable tasks."))}),{xtype:"checkboxfield",fieldLabel:FT.i18n("Exclude blocked"),name:"exclude_blocked",afterLabelTextTpl:FT.util.getHelp(FT.i18n("Check this box to exclude blocked items."))}]}]})];this.callParent(arguments)},onFormFieldsChanged:function(){var a=this.getForm();if(this._recordLoaded){a.updateRecord()}},reset:function(){this.un("change",this.onFormFieldsChanged,this);this.emptyMsg.show();this.fieldsGroup.hide();var a=this.getForm();a.reset();this._recordLoaded=false;delete a._record},loadStatusStore:function(a){Ext.apply(this.statusStore.getProxy().extraParams,{objectType:a});this.statusStore.load()},loadRecord:function(a){var e,d,b;e=Ext.data.StoreManager.lookup("FT.store.ObjectType");d=e.findExact("typeid",a.get("base"));b=e.getAt(d);this.un("change",this.onFormFieldsChanged,this);if(b.get("istypeable")===true){this.taskTypeSelector.show()}else{this.taskTypeSelector.hide()}if(b.get("isstatusable")===true){this.statusSelector.show()}else{this.statusSelector.hide()}if(a.get("base")==FT.getTaskId()){this.onlyIsBillable.show()}else{this.onlyIsBillable.hide()}this.loadStatusStore(a.get("base"));var c=this.getForm();if(this._recordLoaded){c.updateRecord()}this.emptyMsg.hide();this.fieldsGroup.show();this.callParent(arguments);this._recordLoaded=a;this.on("change",this.onFormFieldsChanged,this)}});Ext.define("FT.insights.ConfigureInsight",{extend:"Ext.Container",layout:"border",alias:"widget.ft-insightswidget_settings",initComponent:function(){var c=this,d=this.direct,b;this.removeBtn=Ext.widget({xtype:"button",glyph:FT.glyph("minus"),handler:this.onRemoveClicked,scope:this,disabled:true});b=this.store=Ext.create("Ext.data.Store",{model:"FT.data.InsightModel",proxy:{type:"direct",directFn:d.getInsightConfigs}});b.load();this.items=[this.grid=Ext.widget({xtype:"grid",region:"west",cls:"ft-window-insights-selector",width:200,padding:0,frame:true,store:b,viewConfig:{plugins:{ptype:"gridviewdragdrop",dragText:FT.i18n("Drag and drop to reorganize"),containerScroll:true},deferEmptyText:false},hideHeaders:true,emptyText:'<p class="ft-grid-emptytext-small">'+FT.i18n("No insights.")+"</p>",columns:[{text:FT.i18n("Insights"),dataIndex:"base",flex:1,menuDisabled:true,sortable:false,renderer:function(h,e,g){return g.get("title")+"<br /><i>"+FTrack.grid.ObjectTypeRenderer(h)+"&#160;</i>"}}],bbar:{cls:"background-dark border-top",items:["->",c.removeBtn,{glyph:FT.glyph("add"),handler:this.onAddClicked,scope:this}]}}),this.formPanel=Ext.create("FT.insights.ConfigureInsightForm",{region:"center",frame:true,flex:1,direct:this.direct,listeners:{basechanged:this.onBaseChanged,scope:this}})];var a=this.grid.getSelectionModel();a.on({select:this.selectionChanged,selectionchange:function(e,g){this.removeBtn.setDisabled(g.length==0)},scope:this});b.on({add:this.onStoreAdd,remove:this.onStoreRemove,scope:this});this.callParent(arguments)},onBaseChanged:function(a,b){this.store.remove(a);this.addRecord({base:b})},getSelection:function(){var a=this.grid.getSelectionModel();return a.getSelection()[0]},selectionChanged:function(b,a){var c=this.getSelection();this.formPanel.loadRecord(c)},onRemoveClicked:function(){var a=this.getSelection();this.store.remove(a)},onAddClicked:function(){this.addRecord()},addRecord:function(c){c=c||{};var a={type:"count"};Ext.apply(a,c);var b=this.store.add(a)},onStoreAdd:function(c,b){var a=this.grid.getSelectionModel();a.select(b)},onStoreRemove:function(){this.formPanel.reset()},onSave:function(){var b,a=this.formPanel.getForm();if(this.formPanel.getRecord()){a.updateRecord()}b=Ext.pluck(this.store.data.items,"data");this.direct.setInsightConfigs(b)},selectRecord:function(b){var a=this.grid.getSelectionModel();a.select([b])},onBeforeSave:function(){var a=null,b;this.store.each(function(c){if(!c.isValid()){a=c}});if(a){this.selectRecord(a);this.formPanel.getForm().isValid()}return a==null}});Ext.define("RAW.widgets.InsightsWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-insightswidget",bodyCls:"insights",maximizable:false,header:false,padding:0,validPushEntities:["task"],initWidget:function(){this.layout="auto";this.callParent(arguments);var a=this.getDirect();this.store=Ext.create("Ext.data.Store",{fields:["type","title","value","tooltip","filters",{name:"errors",defaultValue:[]},"unit","objectType","renderer"],pageSize:this.getSetting("limit"),proxy:{type:"direct",directFn:a.getInsights,reader:{root:"data"}}});this.store.on("load",this.storeOnLoad,this);this.view=Ext.create("FT.view.InsightsView",{store:this.store});this.add(this.view);this.loadData()},storeOnLoad:function(){if(this.view&&this.rendered&&this.view.getStore().getCount()===0){this.view.refresh()}},loadData:function(){Ext.apply(this.store.getProxy().extraParams,{entityId:this.getEntity().entityId,entityType:this.getEntity().entityType});this.store.load()},updateWidget:function(){this.loadData()}});Ext.define("RAW.Lists",{alias:"widget.widget_lists",title:FT.i18n("Lists"),disablePrimaryToolbar:true,header:false,extend:"FT.view.ViewContainer",validPushEntities:[],viewClasses:["FT.view.impl.ListsView"]});Ext.define("FT.ui.QuickAddTask",{extend:"Ext.Container",alias:"widget.ft-quickadd-task",layout:"card",maxWidth:800,initComponent:function(){this.addEvents("cancel");this.items=[this.getStartButton(),this.getFields()];this.callParent()},getStartButton:function(){return{xtype:"toolbar",items:["->",{xtype:"button",cls:"button-primary",text:FT.i18n("Add milestone"),glyph:FT.glyph("add"),handler:function(){this.getLayout().setActiveItem(1)},scope:this},"->"]}},getFields:function(){var a=[{xtype:"textfield",emptyText:FT.i18n("Milestone name"),name:"name",allowBlank:false,maxWidth:200,flex:1},{xtype:"textfield",emptyText:FT.i18n("Description"),name:"description",flex:1},{xtype:"datefield",emptyText:FT.i18n("Date"),name:"date",format:"Y-m-d",submitFormat:"Y-m-d H:i:s",width:100,allowBlank:false,editable:false}];this.formPanel=Ext.widget({layout:"hbox",xtype:"form",bodyCls:"background-dark border-default",border:false,defaults:{margin:5},items:Ext.Array.merge(a,[{xtype:"button",text:FT.i18n("Cancel"),handler:function(){this.close()},scope:this},{xtype:"button",text:FT.i18n("Save"),cls:"button-primary",handler:this.onCreateClicked,scope:this}])});return this.formPanel},setEntity:function(a){this.entity=a},close:function(){this.getLayout().setActiveItem(0);this.formPanel.getForm().reset()},onCreateClicked:function(){assert(this.entity,"entity must be defined");var b,c,a=this;b=this.formPanel.getForm();if(!b.isValid()){return}c=b.getValues();c.parent_id=this.entity.entityId;c.parent_type=this.entity.entityType;c.entityType="task";c.object_typeid=FT.getTaskId();FTApi.Milestone.add([c],function(d){if(d.success){a.fireEvent("taskcreated");a.close()}else{FT.notifyError(d.message)}})}});Ext.define("FT.widgets.CountDownWidget",{alias:"widget.ft-widget-countdown",extend:"RAW.widgets.TemplateWidget",pageSize:5,bodyCls:"background-default",bodyPadding:"0 10",initComponent:function(){this.callParent(arguments)},initWidget:function(){this.callParent(arguments);var a=this.getEntity();if(a.entityType!="user"){this.insertDocked(0,this.quickAdd=Ext.widget({dock:"bottom",xtype:"ft-quickadd-task",minHeight:30,entity:Ext.clone(a),listeners:{taskcreated:function(){this.loadData()},scope:this}}))}},updateWidget:function(){this.callParent(arguments);if(this.quickAdd){this.quickAdd.setEntity(this.getEntity())}},getWidgetTpl:function(){return FT.util.templates.getMilestoneTemplate()}});Ext.define("RAW.widgets.MissingLogsWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-missinglogswidget",maximizable:false,validPushEntities:[],initComponent:function(){this.bbar=this.morePager=Ext.create("FT.ui.MorePager",{margin:"0 0 15 0",padding:"0 0 0 68"});this.callParent(arguments)},initWidget:function(){this.callParent(arguments);var c=this.getDirect(),a=this.getSetting("limit"),b;this.store=Ext.create("Ext.data.Store",{pageSize:a,fields:["user","userid","days"],sorters:{property:"date",direction:"DESC"},proxy:{type:"direct",directFn:c.getUsers,reader:{type:"json",root:"items"}}});this.morePager.bindStore(this.store);b=Ext.create("Ext.grid.Panel",{ui:"ft-widget-listgrid",minHeight:175,columnLines:true,viewConfig:{stripeRows:false,deferEmptyText:false,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("No files")+"</div>"},store:this.store,disableSelection:true,columns:[{dataIndex:"user",renderer:FTrack.grid.UserImageRendererSmall,sortable:false,width:42,menuDisabled:true},{text:FT.i18n("User"),dataIndex:"userid",renderer:FTrack.grid.UserRenderer,sortable:false,flex:1,menuDisabled:true},{text:FT.i18n("Days since logging time"),dataIndex:"days",sortable:false,width:175,renderer:Ext.util.Format.numberRenderer("0"),menuDisabled:true},{xtype:"actioncolumn",width:30,menuDisabled:true,handler:function(e,h,d){var g=e.getStore().getAt(h);this.removeUser(g.get("userid"))},items:[{glyph:FT.glyph("hide"),tooltip:FT.i18n("Hide"),scope:this}]}]});this.loadData();this.add(b)},removeUser:function(a){this.getDirect().removeUser(a,this.loadData,this)}});Ext.define("RAW.widgets.MyLoggedHoursWidget",{extend:"RAW.Widget",alias:"widget.widget_my_logged_hours",maximizable:false,validPushEntities:["timelog"],header:false,margin:5,cls:"border-left",initComponent:function(){this.callParent();this.userId=FT.Settings.get("currentuser","userid")},initWidget:function(){this.callParent(arguments);this.add(this.quickLog=Ext.create("FT.component.QuickLogTime"))},updateWidget:function(){this.quickLog.loadData()},isValidPushParent:function(a){if(a&&a.user){return a.user.userid===this.userId}return false}});Ext.define("FT.widgets.MyTasksList",{extend:"RAW.BaseWidget",alias:"widget.widget_mytasklist",mixins:{storeCreator:"FT.simplegrid.StoreCreator"},header:false,validPushEntities:["task"],initWidget:function(){var a=FT.getApi("MyTasks",this.pushToken);this.store=this.createStore({api:{read:a.read,update:a.update}});this.grid=FT.SimpleGridFactory.create("my_tasks",{store:this.store});this.add(this.grid);this.callParent(arguments);this.loadData()},updateWidget:function(){this.callParent(arguments);this.loadData()},loadData:function(){var a=this.getEntity();this.store.loadEntity(a)}});Ext.define("FT.widgets.MyTasksSchedule",{extend:"RAW.widgets.IframeWidget",alias:"widget.widget_my_tasks_schedule",header:false,validPushEntities:[],layout:"fit",createIframe:function(){if(this.iframeWidget){return}var a=FT.Settings.get("currentuser","userid");var b=FT.Settings.get("ftrack","studioOverviewUrl");this.iframeWidget=Ext.create("FT.component.Iframe",{src:b,allowPostMessage:true,extraParams:{readOnly:true,scheduler:"users",userId:a},data:{entity:this._getEntity()}});this.add(this.iframeWidget)}});Ext.define("FT.widgets.ProjectAccessWidget",{extend:"RAW.Widget",alias:"widget.project_access_widget",cls:"ft-resource-settings-widget allocations-widget",layout:{type:"border"},defaults:{},header:false,validPushEntities:[],initWidget:function(){this.metaGrid=Ext.create("FT.configure.MetaGrid",{xtype:"ft-metagridpane",region:"center",plugins:[],forceMetaUpdate:true,hideHeaders:true,rowNumberer:false,border:false,padding:10,viewConfig:{cls:"row-border-selection fastrowover",enableTextSelection:false},selModel:{mode:"MULTI"},listeners:{scope:this},storeCfg:{trailingBufferZone:0,leadingBufferZone:10,pageSize:100,buffered:true}});this.projectAccessSwitch=Ext.create("FT.spark.Component",{width:400,component:"ProjectAccessSwitch",disabled:true,hidden:true,permission:{name:"UPDATE_PROJECT",allow:"enable",deny:"disable"},props:{className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},product:"studio",onChange:Ext.bind(function(b){var a=FT.app.location.getProjectId();this._confirmChangeProjectIsPrivate(a,b)},this)}});this.pageHeader=Ext.widget({xtype:"container",region:"north",height:68,padding:10,border:false,items:[this.projectAccessSwitch]});this.add([this.pageHeader,this.metaGrid]);this.updateWidget()},_confirmChangeProjectIsPrivate:function(b,d){var c;if(d==false){c=FT.i18n('Are you sure you want to change project access to "Private access off"? Users with roles set for open access projects will get access this project.')}else{c=FT.i18n('Are you sure you want to change project access to "Private access on"? Some users may lose access to this project.')}var a=Ext.create("FT.window.CancelSave",{title:FT.i18n("Change project access"),saveText:FT.i18n("Save"),message:c,saveHandler:function(){FT.spark.getSharedSession().update("Project",[b],{is_private:d}).then(Ext.bind(function(){this.projectAccessSwitch.setProps({value:d});this.updateWidget();a.close()},this))["catch"](function(e){FT.notifyError(FT.i18n("Failed to save project access"))})},cancelHandler:function(){a.close()},scope:this})},updateWidget:function(){var a={projectId:this.getEntity().entityId};this.metaGrid.reloadData("project_access",a);this.projectAccessSwitch.hide();FT.spark.getSharedSession().query(Ext.String.format('select is_private from Project where id is "{0}"',FT.app.location.getProjectId())).then(Ext.bind(function(b){this.projectAccessSwitch.show();this.projectAccessSwitch.setProps({value:b.data[0]["is_private"]})},this))}});FT.configure.customRoleRenderer=function(b){var a=[];Ext.each(b,function(c){a.push(c.name)});a.sort();return a.join(", ")};FT.configure.operator.revokeProjectAccessSingle=function(d,e,b,a){var c=[a];FT.configure.revokeProjectAccess(c,e.store)};FT.configure.operator.revokeProjectAccessMulti=function(d,e,b,a){var c=e.getSelectionModel().getSelection();FT.configure.revokeProjectAccess(c,e.store)};FT.configure.revokeProjectAccess=function(e,b){if(e.length===0){FT.notifyError(FT.i18n("Please select at least one user."));return}var d=[],h=[],a,g,c=false;Ext.each(e,function(k){var l=k.get("data");if(k.get("userid")==FT.Settings.get("currentuser","userid")){FT.notifyError(FT.i18n("You cannot remove yourself."));c=true;return false}var j=true;Ext.each(l,function(m){if(!m.can_be_revoked){j=false}else{d.push(m)}});if(j){h.push(k.get("name"))}else{FT.notifyError(FT.i18n("Unable to remove users with access to all open projects or with assignee roles."));c=true;return false}});if(c){return}g=FT.i18n("Would you like to remove access for ")+h.join(", ")+"?";handler=function(){a.close();var j=[];console.debug(d);Ext.each(d,function(k){j.push({action:"revoke_user_security_role_project",role_id:k.role_id,project_id:k.project_id,user_id:k.user_id})});FT.api._call(j,function(k){b.load()})};a=Ext.create("FT.window.CancelSave",{title:FT.i18n("Remove access"),saveHandler:handler,saveScope:this,saveAction:"delete",saveText:FT.i18n("Remove access"),message:g})};Ext.define("RAW.widgets.ProjectsWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-projectswidget",cls:"projectswidget",maximizable:false,layout:"auto",validPushEntities:["task"],bodyPadding:0,initComponent:function(){this.charts={};this.dockedItems=[Ext.create("Ext.toolbar.Toolbar",{dock:"bottom",items:["->",{xtype:"button",cls:"button-primary",text:FT.i18n("Add project"),handler:function(){this.createAddWindow()},scope:this},"->"]}),this.pager=Ext.create("FT.ui.MorePager",{docked:"bottom"})];this.callParent(arguments)},selectionChanged:function(){this.loadData()},initWidget:function(){var b=this;this.callParent(arguments);var c=this.getDirect();this.store=Ext.create("Ext.data.Store",{fields:["thumbid","name","enddate","insights","showid","milestones","link"],pageSize:this.getSetting("limit"),proxy:{type:"direct",directFn:c.getData,reader:{root:"data"}}});this.pager.bindStore(this.store);var a=Ext.create("Ext.view.View",{store:this.store,minHeight:150,deferEmptyText:false,itemSelector:"div.projectswidget__item",emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("No projects")+"</div>",tpl:new Ext.XTemplate('<tpl for=".">','<div style="width:100%;" class="projectswidget__item">',"<div>",'<button class="button projectswidget__unfollow">Unfollow project</button>','<div class="ft-dashboard-top-box-outer x-btn-plain-medium-darker">','<div class="ft-dashboard-top-box text-bigger">{[FTrack.grid.LinkRenderer(values.link)]}</div>',"</div>","{[this.renderInsights(values.insights)]}","</div>",'<div class="projectswidget__wrapper">','<div class="projectswidget__info">','<div style="margin-top:10px;">{[FTrack.grid.IconRendererFit(values.thumbid)]}</div>','<div style="display:table;border-spacing:10px;">','<button class="button projectswidget__goto">Go to project</button>','<div style="display:table-cell;padding-left:10px;vertical-align:middle;">{enddate}</div>',"</div>",'<div style="clear:both;"></div>',"</div>",'<div class="projectswidget__milestones">',"{[this.renderMilestones(values.milestones)]}","</div>",'<div class="projectswidget__chart" id="projectchart{showid}""></div>',"</div>","</div>",'<div style="clear:both;"></div>',"</tpl>",{renderInsights:function(e){var d=new Ext.XTemplate('<tpl for=".">','<div class="ft-dashboard-top-box-outer">','<div class="ft-dashboard-top-box">',"<h2>{value}</h2>",'<span class="ft-dashboard-top-box-title">{name}</span>',"</div>","</div>","</tpl>");return d.apply(e)},renderMilestones:function(e){var d=FT.util.templates.getMilestoneTemplate().apply(e);if(Ext.isEmpty(d)){d='<div class="ft-grid-emptytext-small">No milestones.</div>'}return d}}),listeners:{itemclick:function(g,d,k,h,l,j){if(l.getTarget(".projectswidget__unfollow")){this.removeProject(d.get("showid"))}if(l.getTarget(".projectswidget__goto")){FT.app.open("projects",{entityId:d.get("showid"),entityType:"show"})}return true},scope:this}});this.projectView=a;this.isFirstRun=true;a.on("refresh",this.renderCharts,this);this.add(a);this.loadData()},loadData:function(){Ext.apply(this.store.getProxy().extraParams,{entityId:this.getEntity().entityId,entityType:this.getEntity().entityType,widgetid:this.widgetid});this.store.loadPage(1)},updateWidget:function(){this.loadData()},removeProject:function(a){this.getDirect().removeProject(a,this.updateWidget,this)},addProject:function(a){this.getDirect().addProject(a,this.updateWidget,this)},createAddWindow:function(){var a=Ext.create("FT.ModalWindow",{title:FT.i18n("Select a project"),height:600,width:400,autoShow:true,layout:"fit",items:[{xtype:"dataview",emptyText:'<span style="padding-left:20px;color:#999;font-style:italic;">'+FT.i18n("No archived projects.")+"</span>",itemSelector:"tr.hidden-project",overItemCls:"over-item-cls",autoScroll:true,store:{fields:["fullname","name","thumbid","startdate","enddate","showid"],proxy:{type:"direct",directFn:this.getDirect().getProjects,reader:{root:"data"}},sorters:[{property:"fullname",direction:"ASC"}],autoLoad:true},tpl:new Ext.XTemplate('<table style="width:100%;border-spacing:0px;">','<tpl for=".">','<tr style="cursor:pointer;height:50px;" class="hidden-project">','<td style="width:80px;padding:0px 10px 0px 20px;">{[this.getIconRenderer(values.thumbid)]}</td>',"<td>","{fullname} ({name})<br>",'<span class="text-faded">',"{[FTrack.grid.dateRenderer(values.startdate)]} - ","{[FTrack.grid.dateRenderer(values.enddate)]}","</span>","</td>","</tr>","</tpl>","</table>",{getIconRenderer:function(b){if(!b){return""}b.action="";return FTrack.grid.IconRenderer(b)}}),listeners:{itemclick:function(c,b){a.close();this.addProject(b.get("showid"))},scope:this}}]})},getNewChart:function(d,g){var b=Ext.get(g);if(!b){this.on("afterlayout",function(){this.getNewChart(d,g)},this,{single:true});return}if(this.charts[d]){Ext.each(this.charts[d],function(n,l){var m=n.getEl();Ext.fly(g).appendChild(m);if(l===0){n.setHeight(n._cachedHeight);n.setWidth(n._cachedWidth)}});return}var j=Ext.create("Ext.data.Store",{fields:["DONE","IN_PROGRESS","NOT_STARTED","date"],proxy:{type:"direct",directFn:this.getDirect().getFlowchart,reader:{type:"json",root:"data"},extraParams:{entityId:d,entityType:"show"}}});j.load();var c=25;var a=b&&b.getWidth()||100;var k=b&&b.getHeight()||300;var e=Ext.create("FT.chart.FlowDiagram",{simpleMode:true,width:a-c,height:k-c,renderTo:g,store:j,fields:["DONE","IN_PROGRESS","NOT_STARTED"]});var h=Ext.create("FT.chart.Legendbox",{renderTo:g,store:j});this.charts[d]=[e,h];this.on("afterlayout",function(){e._cachedWidth=b.getWidth()-c;e._cachedHeight=b.getHeight()-c;e.setWidth(e._cachedWidth);e.setHeight(e._cachedHeight)},this,{single:true});return e},renderCharts:function(){this.store.each(function(b){var a=this.getNewChart(b.get("showid"),"projectchart"+b.get("showid"))},this)}});Ext.ns("FT.property");FT.property.convert=function(b,a){var c=false;if(a&&(a.get("ftype")=="time"||a.get("ftype")=="date")){c=true}if(Ext.isString(b)&&c){b=Ext.Date.parse(b,"c")}return b};FT.property.serialize=function(c,a){var b=a.get("editor");if(Ext.isDate(c)&&b&&b.submitFormat){c=Ext.Date.format(c,b.submitFormat)}return c};Ext.define("FT.data.PropertyModel",{extend:"Ext.data.Model",fields:["name",{name:"value",convert:FT.property.convert,serialize:FT.property.serialize},"groupName","groupSort","sort","renderer","editor","formEditor","dataIndex","id","ftype","isEditable","entityType"],isEditable:function(){return this.get("isEditable")},getEntity:function(){return{entityType:this.get("entityType"),entityId:this.get("id")}}});Ext.define("FT.data.PropertyStore",{extend:"Ext.data.Store",sorters:[{property:"groupSort"},{property:"sort"}],model:"FT.data.PropertyModel",constructor:function(){this.callParent(arguments);assert(this.propertyType,"propertyType must be set")},getEntity:function(){var a=this.getMetaData();return a.entityData},getMetaData:function(){return this.getProxy().getReader().metaData},loadFrom:function(a){Ext.apply(this.getProxy().extraParams,{data:a,propertyType:this.propertyType});this.load()}});Ext.define("FT.property.View",{extend:"Ext.view.View",padding:10,preserveScrollOnRefresh:true,itemSelector:"tr.ft-property-row",propertyType:"MAIN_PROPERTIES",enableGroup:true,editable:false,disableSelection:true,initComponent:function(){this.editors={};var me=this;var directProperty=this.direct;this.loadMask={floating:{shadow:false}};this.storeCfg=Ext.value(this.storeCfg,{});Ext.applyIf(this.storeCfg,{propertyType:this.propertyType,autoSync:true,proxy:{type:"direct",writer:{type:"json"},reader:{root:"data",type:"json"},api:{read:directProperty.get,update:directProperty.update}}});this.store=Ext.create("FT.data.PropertyStore",this.storeCfg);this.store.on("load",this.onStoreLoad,this);this.store.getProxy().on("exception",this.handleProxyException,this);delete this.storeCfg;this.tpl=new Ext.XTemplate('<table width="100%" class="ft-propertygrid">','<tpl for=".">','<tpl if="this.isRenderGroup(xindex)">','{[xindex > 1 ? "<tr><td>&nbsp;</td></tr>" : ""]}','<tr><td class="{[xindex==1?" no-border":""]} ft-property-groupheader" colspan="2">{groupName}</td></tr>',"</tpl>",'<tr class="ft-property-row{[this.getBorderCls(xindex)]}">','<tpl if="this.isRenderTitle(values.name)">','<td class="ft-property-keyfield">{name}</td>',"</tpl>",'<td class="ft-property-valuefield" <tpl if="!this.isRenderTitle(values.name)"> style="padding-left:10px;" colspan="2"</tpl>>{[this.renderValue(values.value, values.renderer)]}</td>',"</tr>",'<tr class="ft-propertygrid-rowspacing">','<td style="height:8px;"></td>',"</tr>","</tpl>","<tr>","<td>&nbsp;</td>","</tr>","</table>",{isRenderTitle:function(name){return name!==null},renderValue:function(value,renderer){if(renderer){return eval(renderer)(value)}return value},isRenderGroup:function(index){var r1=me.store.getAt(index-2);var r2=me.store.getAt(index-1);return me.enableGroup&&!me.hideGroup(r2.get("groupName"))&&(index==1||r1.get("groupName")!=r2.get("groupName"))},getBorderCls:function(index){var r=me.store.getAt(index-1),border=false,xtype,cls,editor=r.get("editor");if(Ext.isObject(editor)&&Ext.isDefined(editor.xtype)){xtype=editor.xtype;if(xtype!="ft-statusfield"&&xtype!="ft-priorityfield"&&xtype!="checkboxfield"&&xtype!="checkbox"){border=true}}cls=border?" value-borderandbg":"";if(me.isEditable()&&!r.isEditable()){cls+=" ft-disable-property-edit"}return cls}});this.callParent(arguments)},handleProxyException:function(c,b,a){var d=b&&b.data||{};if(d.success===false&&d.message){FT.notifyError(d.message)}},isEditable:function(){return this.editable},hideGroup:function(b){var a=this.store.getMetaData().hiddenGroupHeaders||[];return a.indexOf(b)!=-1},setFromMetaData:function(a){this._attributes=Ext.clone(a.attributes);this._entityData=a.entityData},onStoreLoad:function(a){this.setFromMetaData(a.getMetaData())},getEntity:function(){return this._entityData}});Ext.define("FT.property.PropertyEditor",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-propertyeditor",constructor:function(){this.callParent(arguments);this.editTask=new Ext.util.DelayedTask;this._editors={};var a=this.getCmp();a.editable=true},init:function(a){a.on({itemclick:this.onViewClicked,beforerefresh:this.onViewBeforeRefresh,scope:this});a.getStore().on({beforeload:this.onStoreBeforeLoad,scope:this});this.property=a},onStoreBeforeLoad:function(){},onViewBeforeRefresh:function(){return !Ext.isDefined(this.activeEditor)},isOneClickChange:function(b){var a=["checkbox","checkboxfield"];return a.indexOf(b)!=-1},onViewClicked:function(b,a,h,c,j,d){if(!this.isAuth(a)){return false}var g=a.get("editor");if(!g){return}if(this.isOneClickChange(g.xtype)){a.set("value",!a.get("value"));return}this.startEdit(a,h,c)},isAuth:function(b){var a=b.get("editor");return a&&a.isWritable!==false},startEdit:function(a,c,b){this.doCompleteEdit();if(!a.isEditable()){return false}this.activeEditor=this.getEditor(a,c,b);this.activeIndex=b;this.showEditor(this.activeEditor,c,b,a);return true},showEditor:function(e,g,c,a){var d=new Ext.Element(g),d=d.select("td.ft-property-valuefield").elements[0];if(e.field.editId){var b=this.property.getEntity();e.field.editId(b.entityId,b.entityType,b.objectType)}else{if(e.field.editRecord){e.field.editRecord(a)}}e.startEdit(d,a.get("value"))},doCompleteEdit:function(){if(this.activeEditor){this.activeEditor.completeEdit()}},startEditByIndex:function(d,c){var b=this.getStore(),g=b.getCount(),e,a;d+=c;if(d>=g){d=0}if(d<0){d=g-1}e=this.property.getNode(d);a=b.getAt(d);if(!this.startEdit(a,e,d)){this.startEditByIndex(d,c)}},destroy:function(){if(this._editors){this.editTask.cancel();Ext.each(this.editors,function(a){a.destroy()},this);delete this._editors}this.callParent(arguments)},getStore:function(){return this.property.getStore()},onEditComplete:function(b,e){var d=this.getStore().getAt(this.activeIndex);if(b.startValue!=e){d.set("value",e)}var c=this.activeEditor,a=this.activeIndex;delete this.activeEditor;delete this.activeIndex;this.property.refreshNode(a);Ext.defer(function(){c.destroy()},15)},onCancelEdit:function(b,c,a){delete this.activeEditor;delete this.activeIndex},completeOnClick:function(a){a.listeners=Ext.value(a.listeners,{});Ext.apply(a.listeners,{select:function(){this.doCompleteEdit()},scope:this})},getEditor:function(b,h,d){var j=Ext.clone(b.get("editor")),e=b.get("dataIndex"),c={},a=true;switch(j.xtype){case"htmlpicker":j.editDataIndex="value";break;case"combobox":this.completeOnClick(j);break;case"combo":this.completeOnClick(j);break;case"ft-statusfield":this.completeOnClick(j);break;case"ft-priorityfield":this.completeOnClick(j);break;case"ft-typefield":this.completeOnClick(j);break;case"checkboxfield":c.allowBlur=false;this.completeOnClick(j);break;case"checkbox":c.allowBlur=false;this.completeOnClick(j);break;case"numberfield":case"ft-datefield":break;case"textfield":break;case"textarea":break;case"usereditor":case"enumeratorfield":j.cls="labeleditor";break}if(a){a={width:"boundEl",height:"boundEl"}}else{a={width:"boundEl"}}var g=Ext.create("Ext.Editor",Ext.apply({field:j,autoSize:a,parentEl:this.property.getEl()},c));g.on("complete",this.onEditComplete,this);g.on("canceledit",this.onCancelEdit,this);g.on("specialkey",function(l,o,n,m){var k=n.getKey()==n.TAB;if(k&&n.shiftKey){n.stopEvent();this.doCompleteEdit();this.startEditByIndex(d,-1)}else{if(k){n.stopEvent();this.doCompleteEdit();this.startEditByIndex(d,1)}}},this);this._editors[e]=g;return g}});Ext.define("FT.widgets.PropertyWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-propertywidget",bodyCls:"ft-property-widget",title:FT.i18n("Info"),validPushEntities:[],mixins:{validPush:"RAW.SetValidPushEntities"},initComponent:function(){this.callParent(arguments)},initWidget:function(){this.view=Ext.create("FT.property.View",{loadingHeight:200,editable:true,plugins:["ft-propertyeditor"],direct:FT.getApi("Property",this.pushToken)});this.createCustomAttributeLink=Ext.create("Ext.button.Button",{ui:"link",text:FT.i18n("Create attribute"),hidden:true,handler:function(){var a=this.view.getStore();var b=FT.CreateAttributeFactory.create("dialog",Ext.clone(this.getEntity()));b.on("createdField",function(){a.load()},this)},scope:this});this.add([this.view,{xtype:"toolbar",style:"background-color:transparent;",items:["->",this.createCustomAttributeLink]}]);this.loadData()},updateWidget:function(){this.loadData()},loadData:function(){this.setValidPushEntitiesFromEntity();if(FT.Settings.get("feature","isCreateAttributeInSidebarEnabled")){this.createCustomAttributeLink.setVisible(this.getEntity().entityType!=="user")}var a=this.view.getStore(),b={entityId:this.getEntity().entityId,entityType:this.getEntity().entityType};a.loadFrom(b)}});Ext.define("FT.widgets.ResourceAllocationWidget",{extend:"RAW.Widget",alias:"widget.resource_allocation_widget",cls:"ft-resource-settings-widget allocations-widget",layout:{type:"border",regionWeights:{west:20}},defaults:{},header:false,validPushEntities:[],initWidget:function(){this.metaGrid=Ext.create("FT.configure.MetaGrid",{xtype:"ft-metagridpane",region:"center",plugins:[],forceMetaUpdate:true,hideHeaders:true,rowNumberer:false,border:false,padding:10,viewConfig:{cls:"row-border-selection fastrowover",enableTextSelection:false},selModel:{mode:"MULTI"},listeners:{subgroupcreated:this._onSubGroupCreated,scope:this}});this.outliner=Ext.create("FT.configure.ResourceOutliner",{region:"west",width:200,listeners:{select:this._onOutlinerSelect,scope:this},groupButton:{handler:this.addGroupButtonHandler,scope:this,text:FT.i18n("Add group"),cls:"button-menu",tourId:"add-group"},resizable:true,permission:{name:"MANAGE_ALLOCATION",allow:"enableEdit",deny:"disableEdit"},getContextMenu:Ext.bind(this._getContextMenu,this),defaultGroupings:[{name:FT.i18n("All team members"),id:"all",resource_type:"default"},{name:FT.i18n("Ungrouped members"),id:"ungrouped",resource_type:"default"}]});this.pageHeaderField=Ext.widget({disabled:true,fieldCls:"ft-field-large ft-field-plain",width:"100%",xtype:"textfield",emptyText:FT.i18n("Name"),name:"name"});this.pageHeader=Ext.widget({xtype:"form",plugins:["auto-sync-form"],region:"north",height:68,padding:10,border:false,tourId:"team-name",items:[this.pageHeaderField]});this.add([this.outliner,this.pageHeader,this.metaGrid]);this._loadOutliner()},_loadOutliner:function(a){this.outliner.selectOnRefresh=a||0;this.outliner.getStore().load({params:{criteria:{allocationEntity:{entityId:this.getEntity().entityId,entityType:this.getEntity().entityType,alwaysFilter:true}}}})},_onOutlinerSelect:function(b,a){var c={entity:{entityId:this.getEntity().entityId,entityType:this.getEntity().entityType},resource:{resourceType:a.get("resource_type"),resourceId:a.get("id"),local:a.get("local")}};this.metaGrid.reloadData("allocations",c);this.pageHeaderField.setDisabled(a.get("local")!==true);this.pageHeader.loadRecord(a)},updateWidget:function(){this.outliner.getSelectionModel().deselectAll(true);this._loadOutliner()},addGroupButtonHandler:function(b){var a=Ext.get(b);a.addCls("button-pressed");var c=Ext.create("Ext.menu.Menu",{items:[{text:FT.i18n("Add existing group"),handler:this.addExistingGroupHandler,scope:this},{text:FT.i18n("Create project specific group"),handler:this.createProjectGroupHandler,scope:this}],listeners:{hide:function(){a.removeCls("button-pressed");this.close()}}});c.showBy(b)},createProjectGroupHandler:function(){var a=this.getEntity().entityId,b=FT.model.Group,c=this;newGroup=b.create({name:"New group",group_id:null,local:1});newGroup.save({success:function(d){var e={resource_id:d.get("id"),context_id:a,type:"allocation"};FTApi.Appointment.create(e,function(g){if(g.success){FT.notifySuccess(FT.i18n("Successfully created project specific group."));c.outliner.addGroup(d);c.outliner.select(d);c.pageHeaderField.focus(true);FT.util.intercom("ADDED-PROJECT-GROUP-TO-TEAM")}else{FT.notifyError(FT.i18n("An error occurred."));newGroup.destroy()}})}})},addExistingGroupHandler:function(){var a=this.getEntity().entityId,b=this;saveHandler=function(c){FTApi.Appointment.query({criteria:{context_id:a,type:"allocation"}},function(d){var g=[],e=[];Ext.each(d.data,function(h){e.push(h.resource_id)});Ext.each(c,function(h){if(e.indexOf(h)===-1){g.push({resource_id:h,context_id:a,type:"allocation"})}});FTApi.Appointment.create(g,function(h){if(h.success){FT.notifySuccess(FT.i18n("Successfully added groups to team."));b.updateWidget();FT.util.intercom("ADDED-GROUPS-TO-TEAM")}else{FT.notifyError(FT.i18n("An error occurred."))}})})};openResourceSelectorWindow({title:FT.i18n("Add groups"),saveHandler:saveHandler,criteria:{resource_type:"group",group:{local:0}},emptyText:FT.i18n("It looks like you haven't created any groups yet.")+"<br>"+FT.i18n("Groups can be created from Settings.")})},_getContextMenu:function(a){var c=FT.i18n("Remove team group"),e=this._unallocateTeamGroup,b=a.get("local")===true,d;if(b){c=FT.i18n("Delete project specific group")}d=Ext.create("Ext.menu.Menu",{items:[{text:c,handler:function(){var g=a.get("id");if(b){this._removeProjectTeamGroup(g)}else{this._unallocateTeamGroup(g)}},scope:this}]});return d},_onSubGroupCreated:function(c,b,a){this._loadOutliner(b)},_unallocateTeamGroup:function(a){var b=this,c={context_id:this.getEntity().entityId,resource_id:a,type:"allocation"};FTApi.Appointment.query({criteria:c},function(d){var e=d.data[0].id;FTApi.Appointment["delete"]([{id:e}],function(g){if(g.success){FT.notifySuccess(FT.i18n("Successfully removed team group."));b.updateWidget()}else{FT.notifyError(FT.i18n("An error occurred."))}})})},_removeProjectTeamGroup:function(a){var b=this;FTApi.Group["delete"]([{id:a}],function(c){if(c.success){FT.notifySuccess(FT.i18n("Successfully deleted project specific group."));b.updateWidget()}else{FT.notifyError(FT.i18n("An error occurred."))}})}});Ext.define("FT.widgets.ResourceSettingsWidget",{extend:"RAW.Widget",alias:"widget.configure_resources",cls:"ft-resource-settings-widget",layout:{type:"border",regionWeights:{west:20}},defaults:{},header:false,initWidget:function(){this.metaGrid=Ext.create("FT.configure.MetaGrid",{xtype:"ft-metagridpane",region:"center",plugins:[],forceMetaUpdate:true,viewConfig:{cls:"row-border-selection fastrowover",enableTextSelection:false},selModel:{mode:"MULTI"},margin:10,listeners:{subgroupcreated:this._onSubGroupCreated,scope:this},layout:"fit"});this.outliner=Ext.create("FT.configure.ResourceOutliner",{region:"west",width:200,listeners:{select:this._onOutlinerSelect,scope:this},groupButton:{text:FT.i18n("Create group"),handler:this._groupButtonHandler,scope:this},getContextMenu:Ext.bind(this._onGetContextMenu,this),resizable:true,defaultGroupings:[{name:"Users",id:"users",resource_type:"default"},{name:"Ungrouped users",id:"ungrouped",resource_type:"default"}]});this.pageHeader=Ext.widget({xtype:"form",plugins:["auto-sync-form"],region:"north",height:68,padding:"15 5 5 5",border:false,items:[{fieldCls:"ft-field-large ft-field-plain",enforceMaxLength:true,maxLength:50,width:"100%",xtype:"textfield",emptyText:FT.i18n("Name"),name:"name"}]});this.add([this.outliner,this.pageHeader,this.metaGrid]);this.outliner.store.on("beforeload",function(b,a,c){Ext.apply(a,{params:{criteria:{local:0}}})});this.outliner.store.load()},_onGetContextMenu:function(a){var b=Ext.create("Ext.menu.Menu",{items:[{text:FT.i18n("Delete"),handler:function(){var c=a.get("id");FT.action.fn.removeEntity({entityId:c,entityType:"group"},Ext.pass(this.outliner.removeGroup,[c],this.outliner))},scope:this}]});return b},_onSubGroupCreated:function(c,b,a){this.outliner.load(b)},_onOutlinerSelect:function(b,a){var c={entityId:a.get("id"),entityType:"group"};this.metaGrid.reloadData("users",{entity:c,context:a.get("resource_type")});if(a.get("resource_type")==="default"){this.pageHeader.disable()}else{this.pageHeader.enable()}this.pageHeader.loadRecord(a)},_groupButtonHandler:function(){var a=FT.model.Group,b=this;newGroup=a.create({name:"New group",group_id:null,local:0});newGroup.save({success:function(c){b.outliner.addGroup(c);FT.util.intercom("CREATED-GROUP")}})},updateWidget:Ext.emptyFn});Ext.define("RAW.widgets.ResourcesWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-resourceswidget",maximizable:false,validPushEntities:["task"],bodyPadding:"0 12 12 12",bodyCls:"background-default",initWidget:function(){this.callParent(arguments);userStore=Ext.data.StoreManager.lookup("FT.store.User");var c=this.getDirect(),b,a=[{text:FT.i18n("User"),dataIndex:"userid",renderer:FTrack.grid.UserRenderer,menuDisabled:true,flex:2},{text:FT.i18n("Not started"),dataIndex:"value_NOT_STARTED",menuDisabled:true,flex:1},{text:FT.i18n("In progress"),dataIndex:"value_IN_PROGRESS",menuDisabled:true,flex:1},{text:FT.i18n("Done"),menuDisabled:true,dataIndex:"value_DONE",flex:1}];this.store=Ext.create("Ext.data.Store",{fields:[{name:"userid",sortType:function(e){var d=userStore.findRecord("userid",e);if(d){return d.get("name")}}},"value_NOT_STARTED","value_IN_PROGRESS","value_DONE"],sorters:[{property:"userid"}],proxy:{type:"direct",directFn:c.getResources}});b=Ext.create("Ext.grid.Panel",{ui:"ft-widget-listgrid",store:this.store,minHeight:175,viewConfig:{stripeRows:false,deferEmptyText:false,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("No resources")+"</div>"},disableSelection:true,columns:a});this.add(b);this.loadData()}});Ext.define("FT.widgets.ReviewSessionSetupWidget",{extend:"RAW.Widget",alias:"widget.review_session_setup_widget",cls:"ft-review-session-setup-widget",layout:{type:"border",regionWeights:{west:-20,north:10,south:-10,east:20}},header:false,initComponent:function(){this.on("beforemodulechange",this.onBeforeModuleChange,this);this.callParent(arguments)},onBeforeModuleChange:function(){if(this.child(this.grid)){return true}if(!this.transferComponent.isDirty()){this.toggleTransferView();return true}this.transferComponent.askDiscardChanges(function(a){if(a){this.toggleTransferView();FT.app.delayedOpen()}},this);return false},initWidget:function(){this.topComponent=Ext.create("RAW.reviewsession.SetupTop");this.settingsComponent=Ext.create("FT.reviewsession.SetupSettings",{region:"east",width:290,listeners:{"toggle-transfer-mode":this.toggleTransferView,scope:this}});this.grid=FT.MultiViewFactory.create("reviewSessionObjects",{pushToken:this.pushToken});this.grid.region="center";this.grid.tourId="reviewsession-content";this.grid.cls="background-default";this.add([this.topComponent,this.settingsComponent,this.grid]);this.updateWidget()},_onStartTransferClicked:function(){if(!this.transferComponent.isDirty()){FT.notifySuccess(FT.i18n("No changes to transfer."));return}var a=Ext.create("FT.window.Message",{loadingText:FT.i18n("Transferring notes and statuses...")});this.transferComponent.startTransfer(function(c,b){if(c){a.setSuccess(FT.i18n("Transfer completed successfully."),{scope:this,handler:function(){this.transferComponent.reset();this.toggleTransferView()}})}else{var d=b&&b.errors||[];a.setError(FT.i18n("Transfer failed"),{details:d.join(".<br>\n")})}},this)},_onCancelClicked:function(){if(!this.transferComponent.isDirty()){this.toggleTransferView();return}this.transferComponent.askDiscardChanges(function(a){if(a){this.toggleTransferView()}},this)},_onTransferDateChanged:function(a){if(this.transferMenu){this.transferMenu.setTransferDate(a)}},updateWidget:function(){this.topComponent.updateEntity(this.getEntity());this.settingsComponent.updateEntity(this.getEntity());this.grid.loadEntity(this.getEntity())},toggleTransferView:function(){if(!this.transferComponent){this.transferComponent=Ext.create("FT.reviewsession.transfer.Settings",{region:"center",listeners:{"transfer-date-changed":this._onTransferDateChanged,scope:this}});this.transferMenu=Ext.create("FT.reviewsession.transfer.Menu",{region:"east",width:290,listeners:{"start-transfer-clicked":this._onStartTransferClicked,"cancel-clicked":this._onCancelClicked,scope:this}})}if(this.child(this.grid)){this.remove(this.grid,false);this.remove(this.settingsComponent,false);this.add(this.transferComponent);this.add(this.transferMenu);this.transferMenu.reset();this.transferComponent.updateEntity(this.getEntity())}else{this.remove(this.transferComponent,false);this.remove(this.transferMenu,false);this.add(this.grid);this.add(this.settingsComponent)}}});Ext.define("RAW.widgets.SimpleListsWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-simplelistswidget",maximizable:false,validPushEntities:[],bodyPadding:"10 3 0 3",initComponent:function(){this.bbar=this.morePager=Ext.create("FT.ui.MorePager",{margin:"10 0 10 0"});this.callParent(arguments)},initWidget:function(){this.callParent(arguments);var c=this.getDirect(),a=this.getSetting("limit"),b;this.store=Ext.create("Ext.data.Store",{pageSize:a,fields:["link","user","date","listid"],sorters:{property:"date",direction:"DESC"},proxy:{type:"direct",directFn:c.getLists,reader:{type:"json",root:"items"}}});this.morePager.bindStore(this.store);b=Ext.create("Ext.grid.Panel",{ui:"ft-widget-listgrid",minHeight:175,viewConfig:{deferEmptyText:false,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("No lists")+"</div>",stripeRows:false},store:this.store,disableSelection:false,columns:[{text:FT.i18n("Name"),dataIndex:"link",renderer:FTrack.grid.LinkRenderer,sortable:false,flex:1,menuDisabled:true},{text:FT.i18n("Created by"),dataIndex:"user",renderer:FTrack.grid.UserRenderer,sortable:false,flex:1,menuDisabled:true},{text:FT.i18n("Date"),dataIndex:"date",renderer:Ext.util.Format.dateRenderer("Y-m-d"),sortable:false,flex:1,menuDisabled:true}],getContextMenu:function(){var d=this;if(!this.contextMenu){this.contextMenu=Ext.create("Ext.menu.Menu",{items:[],pluginInfo:{grid:this,contentType:"list"}});this.contextMenu.add(FT.plugin.Manager.getMenus(this.contextMenu))}this.contextMenu.pluginInfo={grid:this,contentType:"list"};return this.contextMenu}});b.on("itemcontextmenu",this.onItemContextMenu,b);this.loadData();this.add(b)},onItemContextMenu:function(b,a,g,c,h,d){var j=this.getContextMenu.apply(this,arguments);if(j){h.preventDefault();j.showAt(h.xy[0],h.xy[1])}}});Ext.define("RAW.widgets.StackedBarChart",{extend:"FT.widget.Chart",alias:"widget.ft-stackedbarchartwidget",title:FT.i18n("Bar chart"),validPushEntities:["task"],columnWidth:0.5,bodyPadding:"0 25 25 25",bodyCls:"background-default",autoScroll:false,layout:{type:"vbox",align:"stretch"},initWidget:function(){this.callParent();this.loadData()},getChart:function(a){return Ext.create("FT.chart.Chart",{animate:false,shadow:false,store:this.store,height:a.height,theme:null,colorSet:a.barColors,axes:[{type:"Numeric",position:"bottom",fields:a.seriesFields,title:false,grid:true},{type:"Category",position:"left",fields:[a.seriesName],title:false}],series:[{type:"bar",axis:"bottom",xField:a.seriesName,yField:a.seriesFields,title:a.barNames,stacked:a.stacked,label:{display:"insideEnd",field:a.seriesFields,renderer:function(g,e,d,h){return g!=0?g:""},orientation:"horizontal",color:"#FFF","text-anchor":"middle"},onPlaceLabel:function(){Ext.chart.series.Bar.prototype.onPlaceLabel.apply(this,arguments);var b=arguments[0];if(b.isOutside){b.setAttributes({fill:"#000"});b.redraw()}},tips:{trackMouse:true,renderer:function(e,d){var b=d.series.yField.indexOf(d.yField),g="Tasks with status {0}:<br />{1}",c=Ext.String.format(g,d.series.title[b],e.get(d.yField));this.update(c)}}}]})},updateWidget:function(){this.loadData()}});Ext.define("RAW.widgets.StatusChangesWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-statuschangeswidget",maximizable:false,validPushEntities:["task"],initWidget:function(){this.callParent(arguments);var b=this.getDirect();this.store=Ext.create("Ext.data.Store",{fields:["userid","date","status_id","from_status_id"],proxy:{type:"direct",directFn:b.getChanges}});var a=Ext.create("Ext.view.View",{store:this.store,tpl:new Ext.XTemplate('<table style="font-size:12px;border-collapse: separate;border-spacing: 4px;">','<tpl for=".">',"<tr>","<td>{[FTrack.grid.StatusRenderer(values.status_id)]}</td>",'<td style="color:#808080;"> by {[FTrack.grid.UserRenderer(values.userid)]}</td>','<td style="color:#808080;">{[FTrack.grid.dateTimeRenderer(values.date)]}</td>',"</tr>","</tpl>","</table>")});this.add(a);this.loadData()},loadData:function(){Ext.apply(this.store.getProxy().extraParams,{entityId:this.getEntity().entityId,widgetid:this.widgetid});this.store.load()},updateWidget:function(){this.loadData()}});Ext.define("RAW.widgets.StorageScenarioWidget",{extend:"RAW.Widget",alias:"widget.configure_storage_scenario",layout:"hbox",initComponent:function(){this.loadingMask=new Ext.LoadMask({msg:"Processing...",target:this});this.tbar={cls:"background-dark",items:[{xtype:"button",cls:"button-primary",text:FT.i18n("Configure Storage Scenario"),handler:this.showStorageScenarioWizard,scope:this},"->",{xtype:"button",ui:"link",text:FT.i18n("Reset to automatic storage scenario"),qtip:'<strong>Reset the storage scenario to "automatic"</strong><br /><br />The "automatic" storage scenario will use the priorities of the Locations to determine which location to use. This is recommended for advanced users with Custom locations.',handler:this.resetToAutomaticStorageScenario,scope:this}]};this.callParent(arguments);this.centeralizedContainer=Ext.create("Ext.Container",{width:800,margin:"100 0 0 0",layout:"card"});this.centeralizedContainer.add(this.storageScenarioDisplay=Ext.widget({xtype:"ft-display-storage-scenario",listeners:{"configure-storage-scenario":function(){this.showStorageScenarioWizard()},scope:this}}));this.add([{flex:1,xtype:"component"},this.centeralizedContainer,{flex:1,xtype:"component"}])},resetToAutomaticStorageScenario:function(){Ext.create("FT.ConfirmDialog",{autoShow:true,width:400,height:250,msg:'The "automatic" storage scenario will use the priorities of the Locations to determine which location to use. This is recommended for advanced users with custom locations plugins. <br /><strong>Components in a location that was configured in an existing Storage scenario, may become unavailable for common use if not replaced by a location plugin.</strong><br /><br />Do you want to reset to the "automatic" storage scenario?',actionHandler:this._doResetAutomaticStorageScenario,scope:this})},_doResetAutomaticStorageScenario:function(){var a=this;this.loadingMask.show();FT.api.update([{entity_type:"Setting",entity_key:["storage_scenario","STORAGE"],entity_data:{value:Ext.encode({scenario:"ftrack.automatic",data:{}})}}],function(){a.loadingMask.hide();a.resetAll()})},resetAll:function(){this.centeralizedContainer.getLayout().setActiveItem(0);this.centeralizedContainer.remove(1,true);this.storageScenarioDisplay.loadScenarioSetting()},showStorageScenarioWizard:function(){this.centeralizedContainer.add(Ext.create("FT.configure.StorageScenarioWizard",{width:800,listeners:{"cancel-configuration":function(){this.resetAll()},"complete-configuration":function(){this.resetAll()},scope:this}}));this.centeralizedContainer.getLayout().setActiveItem(1)}});Ext.define("RAW.widgets.TaskAssignmentsWidget",{extend:"RAW.BaseWidget",alias:"widget.ft-taskassignmentswidget",maximizable:false,validPushEntities:[],initComponent:function(){this.bbar=this.morePager=Ext.create("FT.ui.MorePager",{margin:"0 0 15 0",padding:"0 0 0 68"});this.callParent(arguments)},initWidget:function(){this.callParent(arguments);var c=this.getDirect(),a=this.getSetting("limit"),b;this.store=Ext.create("Ext.data.Store",{pageSize:a,fields:["user","userid","bid","tasks"],sorters:{property:"date",direction:"DESC"},proxy:{type:"direct",directFn:c.getFiles,reader:{type:"json",root:"items"}}});this.morePager.bindStore(this.store);b=Ext.create("Ext.grid.Panel",{ui:"ft-widget-listgrid",minHeight:175,columnLines:true,viewConfig:{stripeRows:false,deferEmptyText:false,emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("No files")+"</div>"},store:this.store,disableSelection:true,columns:[{dataIndex:"user",renderer:FTrack.grid.UserImageRendererSmall,sortable:false,width:42,menuDisabled:true},{text:FT.i18n("User"),dataIndex:"userid",renderer:FTrack.grid.UserRenderer,sortable:false,flex:1,menuDisabled:true},{text:FT.i18n("Tasks"),dataIndex:"tasks",sortable:false,width:100,menuDisabled:true},{text:FT.i18n("Bid"),dataIndex:"bid",sortable:false,renderer:Ext.util.Format.numberRenderer("0.0"),menuDisabled:true,width:100}]});this.loadData();this.add(b)}});Ext.define("FT.scrum.TaskBoard",{extend:"Ext.util.Observable",columnMinWidth:250,pageSize:20,pushToken:null,constructor:function(a){Ext.apply(this,a);this.taskDirective=Ext.create("FT.directive.kanban.TaskDirective");this.emptyDirective=Ext.create("FT.directive.kanban.EmptyDirective");this.headDirective=Ext.create("FT.directive.kanban.HeadDirective");this.expandDirective=Ext.create("FT.directive.kanban.ExpandDirective");this.kanbanStatus=Ext.create("FT.directive.kanban.KanbanStatus");this.board=a.board;this.registerPanel(this.board);this.stores=[];this.columns=[];this.store=Ext.create("FT.data.MultiStoreInterfaceExtended",{stores:this.stores});this.callParent(arguments)},getStore:function(){return this.store},getDirect:function(){return this.direct},loadEntity:function(a){this.store.loadEntity(a)},registerPanel:function(a){a.on("afterrender",function(){var b=this.body?this.body:this.el;if(b){b.ddScrollConfig={vthresh:-1,hthresh:100,frequency:100,increment:50};Ext.dd.ScrollManager.register(b);this.on("destroy",function(){Ext.dd.ScrollManager.unregister(b)})}},a)},createColumns:function(a,c){if(c!==false){c=true}var b=[];if(c){this.stores.length=0;this.columns.length=0}Ext.each(a,function(g){var d=this.createStore(g);var e=this.createColumn(g,d);b.push(e);this.stores.push(d)},this);if(c){this.board.removeAll(true)}this.board.add(b);this.columns=this.columns.concat(b)},createStore:function(b){var a=Ext.create("FT.kanban.Store",{model:"FT.directive.CompositeModel",autoLoad:false,pageSize:this.pageSize,proxy:{type:"direct",directFn:this.getDirect()[b.method],extraParams:b.extraParams}});return a},getColumnCfg:function(){return{}},createColumn:function(j,e){var d=null;if(this.pageSize>0){d=Ext.create("FT.directive.DirectiveMorePager",{store:e,params:null})}var b={store:e,enableDrag:true,directives:{kanban_task:this.taskDirective,kanban_empty:this.emptyDirective,kanban_head:this.headDirective,kanban_expand:this.expandDirective,kanban_status:this.kanbanStatus},direct:FT.getApi("Kanban",this.pushToken),infiniteScroll:this.pageSize>0};if(j.columnConfig){Ext.apply(b,j.columnConfig)}var h={cls:"kanban__column",layout:"fit",bodyBorder:false,statefulId:j.statefulId,collapsible:true,animCollapse:false,hideCollapseTool:false,titleCollapse:false,collapseDirection:"right",column:Ext.create(j.column,b),title:j.name,flex:0.5,minWidth:this.columnMinWidth,sorterGroup:j.sorterGroup,filterGroup:j.filterGroup,collapsed:j.collapsed===true};var a=this.getColumnCfg(j);Ext.apply(h,a);var g=Ext.create("FT.kanban.PanelView",h);return g}});Ext.define("RAW.TaskBoard",{layout:{type:"hbox",align:"stretch"},alias:"widget.widget_task_board",extend:"RAW.BaseWidget",header:false,autoScroll:true,initComponent:function(a){this.validPushEntities=["task"];this.bbar=Ext.create("Ext.toolbar.Toolbar",{dock:"bottom",cls:"background-default",items:FT.Kanban.TasksBoard.getCardSizeItems(this,"widget_task_board")});this.callParent(arguments);this.addCls(FT.Kanban.TasksBoard.getCardSizeCls("widget_task_board"));this.scrumBoard=Ext.create("FT.scrum.TaskBoard",{board:this,direct:this.getDirect(),pushToken:this.pushToken});this.reloadColumns()},reloadColumns:function(){var a=this.getEntity();this.getDirect().getColumns(a.entityId,a.entityType,function(b,c,d){if(d){if(this.projectId!==b.projectId){this.scrumBoard.createColumns(b.columns);this.projectId=b.projectId;this.scrumBoard.loadEntity(this.getEntity())}else{this.scrumBoard.loadEntity(this.getEntity())}}},this)},updateWidget:function(){this.reloadColumns()}});Ext.define("RAW.widgets.SimpleGridWidget",{extend:"RAW.BaseWidget",alias:"widget.widget_simplewidget",layout:"fit",header:false,autoScroll:false,initWidget:function(){assert(this.factoryId,"factoryId must be defined");var a=FT.MultiViewFactory.create(this.factoryId,{pushToken:this.pushToken,viewPlugins:this["viewPlugins"],gridPlugins:this["gridPlugins"]});this.p=a;this.add(a);this.loadData()},updateWidget:function(){this.loadData()},loadData:function(){this.p.loadEntity(this.getEntity())}});Ext.define("RAW.widgets.BaseTasksWidget",{extend:"RAW.BaseWidget",maximizable:false,validPushEntities:["task"],initComponent:function(){this.callParent();this.on("push",function(a){return this.store&&this.store.currentPage==1})},loadData:function(){if(this.store){var b=this.getEntity(),c=this.store.getProxy(),a={entityId:b.entityId,entityType:b.entityType};Ext.apply(c.extraParams,a);this.store.loadPage(1)}}});Ext.define("RAW.widgets.TasksWidget",{extend:"RAW.widgets.BaseTasksWidget",alias:"widget.ft-taskswidget",cls:"ft-widget-mytasks",initWidget:function(){this.callParent(arguments);var c=this.getDirect(),b,a;b=FT.SimpleGridFactory.create(this.widget_typeid,{directFn:c.getTasks,api:{update:c.updateTasks,read:c.getTasks}});this.store=b.getStore();this.add(b);this.loadData()}});Ext.define("RAW.LoggedHours",{extend:"FT.view.ViewContainer",alias:"widget.widget_loggedhours",title:FT.i18n("User Breakdown"),header:false,disablePrimaryToolbar:true,viewClasses:["FT.view.impl.LoggedHoursView"]});Ext.define("FTVV.mediator.Mediator",{constructor:function(a){Ext.apply(this,a);this.callParent(arguments)},getMediator:function(){return window[this.mediatorName]},invoke:function(c,a){var b=this.getMediator();if(b&&b[c]){return b[c].apply(undefined,a)}return null}},function(){FTVV.Mediator=Ext.create("FTVV.mediator.Mediator",{mediatorName:"wMediator"})});Ext.define("RAW.webview.LauncherTasksWidget",{extend:"RAW.widgets.BaseTasksWidget",alias:"widget.ft-launchertaskswidget",cls:"launcher-bright",maximizable:false,validPushEntities:["task"],layout:"fit",initComponent:function(){FTVV.Mediator.invoke("ftrackLoaded",[FT.Settings.get("currentuser","userid"),FT.Settings.get("currentuser","username")]);this.callParent(arguments)},initWidget:function(){this.callParent(arguments);var d=this.getDirect(),c,b;c=FT.SimpleGridFactory.create(this.widget_typeid,{directFn:d.getTasks,api:{update:d.updateTasks,read:d.getTasks}});c.itemId="tasks";var a=c.getSelectionModel();a.selectWithEvent=Ext.emptyFn;c.on("cellclick",this.onCellClick,this);this.store=c.getStore();this.activeProjectsStore=Ext.create("FT.data.DirectActiveProjects");this.activeProjectsListWidget=Ext.widget({text:FT.i18n("Project"),xtype:"ft-selector",field:"showid",displayField:"name",valueField:"showid",itemType:"radio",autoLoadStore:true,store:this.activeProjectsStore,listeners:{select:this.onProjectSelect,scope:this}});this.add(Ext.create("Ext.tab.Panel",{cls:"tabpanel",layout:"fit",border:false,bodyBorder:false,items:[c,this.browseAll=Ext.widget({title:FT.i18n("Browse all"),xtype:"panel",layout:"fit",itemId:"browse",tbar:Ext.create("Ext.toolbar.Toolbar",{padding:"0 13",items:[this.activeProjectsListWidget]}),items:[]})],listeners:{tabchange:this.onTabChange,scope:this}}));this.gridPanel=c;this.loadData()},loadData:function(){this.callParent(arguments);this.activeProjectsStore.load()},onTabChange:function(c,a,b){FTVV.Mediator.invoke("tabChanged",[a.itemId])},onCellClick:function(d,k,a,c,g,j,h,b){if(a<2){this.gridPanel.getSelectionModel().select(c,false,true);FTVV.Mediator.invoke("taskSelected",[c.get("entityId")])}},onProjectSelect:function(a){this.browseAll.removeAll(true);var b=Ext.create("FT.tree.EntitySelector",{searchable:false,enableSelect:false,entity:{entityId:a,entityType:"show"},selectionTypes:[FT.getTaskId()]});b.getSelectionModel().on({select:function(j,c,h,d,k,g){FTVV.Mediator.invoke("taskSelected",[c.get("entityId")])},beforeselect:function(j,c,h,d,k,g){return c.get("object_typeid")==FT.getTaskId()},scope:this});this.browseAll.add(b)}});Ext.define("RAW.webview.AppTasksWidget",{extend:"RAW.widgets.BaseTasksWidget",alias:"widget.ft-apptaskswidget",cls:"launcher-dark",maximizable:false,validPushEntities:["task"],layout:"fit",header:false,initComponent:function(){FTVV.Mediator.invoke("ftrackLoaded",[FT.Settings.get("currentuser","userid"),FT.Settings.get("currentuser","username")]);this.callParent(arguments)},initWidget:function(){this.callParent(arguments);var c=this.getDirect(),b,a;b=FT.SimpleGridFactory.create(this.widget_typeid,{directFn:c.getTasks,api:{update:c.updateTasks,read:c.getTasks}});this.add(b);this.store=b.getStore();this.loadData()}});Ext.define("FT.attachment.DroppableThumbnail",{extend:"Ext.Component",cls:"ft-droppable-thumbnail no-flicker",captionCls:"ft-droppable-thumbnail-over",thumbnailHtml:"",forceDroppable:false,THUMBNAIL_UPLOAD_COMPLETE_DELAY:1000,initComponent:function(a){this.dropUploader=Ext.create("FT.upload.DragAndDropUploader",{uploadAsThumbnail:true,listeners:{scope:this,beginupload:function(){this.setLoading(true)},failure:function(){this.setLoading(false);FT.notifyError(FT.i18n("Failed to upload thumbnail."))},afterupload:function(d,c,b){this.setEntityThumbnail(b.componentId)}}});this.on("afterrender",this.onAfterRender,this);this.html='<div class="ft-droppable-thumbnail-image">'+this.thumbnailHtml+"</div>";if(this.dropUploader.isSupported()){this.html+='<div class="caption"><p class="browse-target">'+FT.i18n("Click here or drop an image to change thumbnail.")+"</p></div>"}this.callParent(arguments)},onAfterRender:function(){var a=this.getEl(),b=a.down(".browse-target");this.dropUploader.setDropElement(a);this.dropUploader.setBrowseElement(b);this.setThumbnailHtml(this.thumbnailHtml);this.mon(a,"mouseenter",this.onMouseEnter,this);this.mon(a,"mouseleave",this.onMouseLeave,this);this.mon(a,"contextmenu",this.onMouseRightClick,this)},onMouseRightClick:function(a){a.preventDefault();var b=Ext.create("Ext.menu.Menu",{items:[{text:FT.i18n("Remove thumbnail"),scope:this,handler:this.removeThumbnail}]});b.showBy(this.getEl())},onMouseEnter:function(d,b,a){var c=this.getEl();if(c&&this.shouldShowCaption()){c.addCls(this.captionCls)}},shouldShowCaption:function(){var a=this.entity&&this.entity.entityType;if(this.forceDroppable){return true}if(a==="user"){return false}return true},onMouseLeave:function(d,b,a){var c=this.getEl();if(c){c.removeCls(this.captionCls)}},setEntity:function(a){this.entity=a},setEntityThumbnail:function(c){var a=this.entity&&this.entity.entityId,b=this.entity&&this.entity.entityType;if(b==="user"&&!this.forceDroppable){return}if(a&&b){Ext.Ajax.request({url:"/attachment/setThumbnail",params:{attachmentId:c,entityId:a,entityType:b},success:function(d,e){console.info("setEntityThumbnail success");this.setThumbnailFromComponentId(c);setTimeout(Ext.bind(this.onSetEntityThumbnailSuccess,this),this.THUMBNAIL_UPLOAD_COMPLETE_DELAY)},failure:function(d,e){console.info("setEntityThumbnail failed");FT.notifyError(FT.i18n("Failed to set thumbnail"));this.setLoading(false)},scope:this})}else{FT.notifyError(FT.i18n("Could not set thumbnail"));this.setLoading(false)}},onSetEntityThumbnailSuccess:function(){this.removeCls("ft-droppable-thumbnail-over");FT.notifySuccess(FT.i18n("Updated thumbnail"));this.setLoading(false)},setThumbnailFromComponentId:function(a){return this.setThumbnail({thumbId:a})},removeThumbnail:function(){this.setEntityThumbnail(null)},setThumbnail:function(b){b=b||{};var a;if(this.entity&&this.entity.entityType==="user"){a=FTrack.grid.UserImageRenderer(b,{size:"large"})}else{a=FTrack.grid.IconRendererFit({thumbUrl:b.thumbUrl||FT.util.getThumbnailUrl(b.thumbId),size:{y:100}})}return this.setThumbnailHtml(a)},setThumbnailHtml:function(a){var b=this.getEl();var c=b&&b.down(".ft-droppable-thumbnail-image");if(c){c.update(a)}this.thumbnailHtml=a}});Ext.define("FT.import.ResolveGrid",{extend:"Ext.grid.Panel",header:{border:false,cls:"background-default"},sortableColumns:false,initComponent:function(){this.tbar={style:"background-image:none;",itemId:"tbar",padding:"10 0 10 0",items:[this.msg=Ext.widget("tbtext",{padding:"0 0 0 10",text:FT.i18n("Some of the ")+this.title+" values could not be mapped correctly."}),"->",this.unsolvedMsg=Ext.widget("tbtext",{padding:"0 10 0 0",text:""})]};this.columns=[];this.store=Ext.create("Ext.data.Store",{fields:["word","resolveto","rate"],proxy:{type:"memory",reader:{type:"json",root:"root"}},sorters:[{property:"rate",direction:"asc"}]});this.store.on({metachange:this.onMetaChange,datachanged:this.onChange,update:this.onChange,scope:this});this.cellEditing=Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:1});this.plugins=[this.cellEditing];this.callParent(arguments);this.store.getProxy().data=this.storeData;this.store.load()},getUnResolved:function(){var a=[];this.store.each(function(b){if(!this.allowEmpty&&Ext.isEmpty(b.get("resolveto"))){a.push(b)}},this);return a},getResolved:function(){var a={};this.store.each(function(b){if(this.allowEmpty||!Ext.isEmpty(b.get("resolveto"))){a[b.get("word")]=b.get("resolveto")}},this);return a},onChange:function(){var b=this.getUnResolved(),c="",a="",d=this.getDockedComponent("tbar");if(b.length==0){c="Done";this.fireEvent("allsolved",this);a="background-success"}else{c=b.length+" not mapped";this.fireEvent("unresolved",this,b.length,b);a="background-danger"}if(d.getEl()){d.getEl().removeCls(["background-success","background-danger"]).addCls(a)}else{d.cls=a}this.unsolvedMsg.setText(c)},getColumns:function(){return[{text:FT.i18n("Unknown"),dataIndex:"word",width:200},{text:FT.i18n("Mappes to"),dataIndex:"resolveto",width:200,flex:1}]},onMetaChange:function(store,metaData){var columns=this.getColumns(),metaColumn=metaData.columns,allowEmpty=metaData.allowEmpty;this.allowEmpty=allowEmpty;if(metaColumn.renderer){metaColumn.renderer=eval(metaColumn.renderer)}Ext.each(columns,function(column){column.menuDisabled=true});Ext.apply(columns[1],metaColumn);this.reconfigure(this.getStore(),columns)}});var isForm=function(c){var a=c.target.tagName.toLowerCase();if(["textarea","input"].indexOf(a)!==-1){return true}var d=c.target.className.split(" ");var b=false;Ext.each(d,function(e){if(e=="x4-form-field"||e=="x4-form-focus"||e=="x-form-field"||e=="x-form-focus"){b=true}});if(Ext.isDefined(c.target.id)&&c.target.id.indexOf("htmleditor")!=-1){b=true}if(FT.util.isModalOpen()){b=true}return b};var keymap=new Ext.KeyMap(document,[{key:"q",ctrl:false,alt:false,shift:false,fn:function(a,b){if(isForm(b)){return true}b.stopEvent();FT.app.fireEvent("ftrackKeyEvent","search",b);return false}},{key:"s",ctrl:true,fn:function(a,b){if(isForm(b)){return true}b.stopEvent();RAW.Widget.fireEvent("key_event","save");return false}},{key:"z",ctrl:true,shift:true,fn:function(a,b){if(isForm(b)){return true}b.stopEvent();RAW.Widget.fireEvent("key_event","redo");return false}},{key:"z",ctrl:true,shift:false,fn:function(a,b){if(isForm(b)){return true}b.stopEvent();RAW.Widget.fireEvent("key_event","undo");return false}},{key:"a",ctrl:true,shift:false,fn:function(a,b){if(isForm(b)){return true}b.stopEvent();RAW.Widget.fireEvent("key_event","selectall");return false}},{key:"c",ctrl:true,shift:false,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","copy",b)==false){b.stopEvent()}return true}RAW.Widget.fireEvent("key_event","copy")}},{key:"v",ctrl:true,shift:false,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","paste",b)==false){b.stopEvent()}return true}RAW.Widget.fireEvent("key_event","paste")}},{key:"s",alt:true,ctrl:false,shift:false,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","alt-s",b)==false){b.stopEvent()}return true}b.stopEvent();RAW.Widget.fireEvent("key_event","alt-s");return false}},{key:"q",alt:true,ctrl:false,shift:false,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","alt-q",b)==false){b.stopEvent()}return true}b.stopEvent();RAW.Widget.fireEvent("key_event","alt-q");return false}},{key:"t",alt:true,ctrl:false,shift:false,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","alt-t",b)==false){b.stopEvent()}return true}b.stopEvent();RAW.Widget.fireEvent("key_event","alt-t");return false}},{key:"m",alt:false,ctrl:true,shift:false,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","move",b)==false){b.stopEvent()}return true}b.stopEvent();RAW.Widget.fireEvent("key_event","move");return false}},{key:Ext.EventObject.DELETE,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","delete",b)==false){b.stopEvent()}return true}RAW.Widget.fireEvent("key_event","delete")}},{key:Ext.EventObject.BACKSPACE,alt:false,ctrl:false,shift:false,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","delete",b)==false){b.stopEvent()}return true}b.stopEvent();RAW.Widget.fireEvent("key_event","delete")}},{key:Ext.EventObject.LEFT,alt:false,ctrl:false,shift:true,fn:function(a,b){if(!isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","navigate-left",b)==false){b.stopEvent()}return true}}},{key:Ext.EventObject.RIGHT,alt:false,ctrl:false,shift:true,fn:function(a,b){if(!isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","navigate-right",b)==false){b.stopEvent()}return true}}},{key:Ext.EventObject.ESC,alt:false,ctrl:false,shift:false,fn:function(a,b){if(FT.app.fireEvent("ftrackKeyEvent","cancel",b)==false){b.stopEvent()}return true}},{key:Ext.EventObject.UP,shift:true,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","shift-up",b)==false){b.stopEvent()}return true}b.stopEvent();RAW.Widget.fireEvent("key_event","shift-up");return false}},{key:Ext.EventObject.DOWN,shift:true,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","shift-down",b)==false){b.stopEvent()}return true}b.stopEvent();RAW.Widget.fireEvent("key_event","shift-down");return false}},{key:Ext.EventObject.ESC,alt:false,ctrl:false,shift:true,fn:function(a,b){if(FT.app.fireEvent("ftrackKeyEvent","shift-cancel",b)==false){b.stopEvent()}b.stopEvent();RAW.Widget.fireEvent("key_event","shift-esc");return false}},{key:Ext.EventObject.SPACE,alt:false,ctrl:false,shift:false,fn:function(a,b){if(isForm(b)){if(FT.app.fireEvent("ftrackKeyEvent","space",b)==false){b.stopEvent()}return true}b.stopEvent();RAW.Widget.fireEvent("key_event","space")}}]);Ext.define("FT.store.Statistics",{extend:"Ext.data.Store",constructor:function(a){Ext.apply(this,a);assert(Ext.isDefined(this.headerType),"HeaderType must be defined");this.proxy=Ext.value(this.proxy,{});Ext.applyIf(this.proxy,{type:"ajax",url:"/read/headerStats",actionMethods:{create:"POST",read:"POST",update:"POST",destroy:"POST"},reader:{type:"json",idProperty:"id",root:"data"}});Ext.applyIf(this,{fields:["id","summaryFn","value","title","tooltip"]});this.callParent(arguments)},load:function(a){a=Ext.clone(a);a.headerType=this.headerType;Ext.apply(this.getProxy().extraParams,a);this.callParent()}});Ext.define("FT.grid.HeaderStatsExpressionWindow",{extend:"FT.Window",width:400,title:FT.i18n("Expression"),layout:"fit",draggable:true,initComponent:function(){this.addEvents("expressionsave");var c,a,b=this.summaryFunction,d,g;d={autoLoad:true,fields:["name","summaryFunction"],proxy:{type:"ajax",url:"/read/expressionSummaryTypes",reader:{type:"json",root:"data"}}};assert(b,"summaryFunction must be defined");var e=Ext.widget("expressiontester",{entityConfig:{entity_key:this.objectType,entity:"task"},margin:"0 0 5 0"});a=[{fieldLabel:FT.i18n("Title"),xtype:"textfield",allowBlank:false,value:b.title,name:"title"},{fieldLabel:FT.i18n("Expression"),afterLabelTextTpl:FT.util.getHelp(FT.i18n("Custom attribute expressions can pull data from other attributes and apply a variety of functions on the result. You can also grab project/global scope attributes. (click to read more)."),"expressionHelp"),xtype:"textarea",height:100,allowBlank:false,value:b.expr,name:"expr",listeners:{change:function(j){e.testExpr(j.getValue())}}},e,{fieldLabel:FT.i18n("Tooltip"),xtype:"textfield",value:b.tooltip,name:"tooltip"},g=Ext.widget({xtype:"combo",fieldLabel:FT.i18n("Summary type"),displayField:"name",valueField:"summaryFunction",forceSelection:true,allowBlank:false,editable:false,store:d,name:"type",value:b.type})];g.getStore().on("load",function(){g.setValue(b.type)});this.items=[this.form=Ext.widget({xtype:"form",layout:{type:"vbox",align:"stretch"},padding:"0 15 15 15",labelSeparator:"",items:a})];var h=Ext.create("FT.button.Button",{text:FT.i18n("Apply"),cls:"button-primary",handler:this.onSave,scope:this});this.bbar=["->",{text:FT.i18n("Cancel"),handler:function(){this.close()},scope:this},h];this.callParent(arguments)},onSave:function(){var c=this.form,a=c.getForm(),b=a.getFieldValues();if(!a.isValid()){return}this.fireEvent("expressionsave",b.type,b.title,b.expr,b.tooltip,b.name)}});Ext.define("FT.grid.HeaderStatsFactory",{extend:"Ext.Base",constructor:function(a){Ext.apply(this,a);this.callParent()},create:function(c,b){assert(c in ["gantt","entitygrid"]!=null);b=b||{};var a=null;if(c=="gantt"){a="FT.grid.GanttHeaderStats"}if(a===null){throw"No class was found in HeaderStatsFactory for "+type}b.headerType=c;return Ext.create(a,b)}},function(){FT.HeaderStatsFactory=Ext.create("FT.grid.HeaderStatsFactory",{})});Ext.define("FT.grid.HeaderStats",{extend:"Ext.Base",headerType:null,mixins:{cleanMenu:"FT.util.CleanMenu",observable:"Ext.util.Observable"},constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this);this.addEvents(["beforeloadstats"]);this.callParent();this.summaryTypeStore=Ext.create("Ext.data.Store",{autoLoad:false,proxy:{type:"ajax",url:"/read/getSummaryTypes",reader:{root:"types"}},fields:["name","summaryFunction"]});this.summaryTypeStore.on("beforeload",this.onBeforeSummaryTypeLoad,this);this.summaryTypeStore.on("load",this.onSummaryTypeLoad,this);this.statisticsTasks=Ext.create("FT.store.Statistics",{headerType:this.headerType});this.statisticsParents=Ext.create("FT.store.Statistics",{headerType:this.headerType});this.statisticsTasks.on("load",this.onStatisticsLoad,this);this.statisticsParents.on("load",this.onStatisticsLoad,this)},createSelector:function(){if(this.selector){this.selector.destroy();delete this.selector}this.selector=Ext.create("FT.button.Selector",{store:this.summaryTypeStore,itemType:"radio",displayField:"name",valueField:"summaryFunction",selectAction:null,beforeItems:[{text:FT.i18n("Clear"),handler:this.clearFunction,scope:this},"-"],listeners:{select:this.onSelect,scope:this}})},clearFunction:function(){var c=this.getActiveColumn(),a=c.attributeid;this.setSummaryFunction(a,{type:false},true);var b=Ext.Array.findBy(this.columns,function(d){return d.attributeid===a});if(b&&b.setSum){b.setSum("")}},onSelect:function(b){var c=this.getActiveColumn(),a=c.attributeid;if(b=="expression"){this.editExpression(c);return}this.setSummaryFunction(a,{type:b})},setSummaryFunction:function(b,c,a){this.summaryFunctions=this.view.getSummaryFunctions();this.summaryFunctions[b]=c;this.view.setSummaryFunctions(this.summaryFunctions);if(!a){this.loadHeaders()}},getSummaryFunction:function(a){this.summaryFunctions=this.view.getSummaryFunctions();return this.summaryFunctions[a]},editExpression:function(e){var c=e.attributeid;var b=this.getSummaryFunction(c)||{},d;var a=c.startsWith("__")?e.objectTypeIds:FT.getTaskId();d=Ext.create("FT.grid.HeaderStatsExpressionWindow",{objectType:a,summaryFunction:b,listeners:{expressionsave:function(h,l,k,j,g){this.setSummaryFunction(c,{type:h,title:l,expr:k,tooltip:j,name:g})},scope:this}});d.show()},setGrid:function(d,a){assert(d&&a,"Grid and view must be params to setGrid");var e=this,b=d.getStore(),c=d.columns,h=d.getView(),g=h.headerCt;e.summaryFunctions=a.getSummaryFunctions();e.grid=d;e.gridView=h;e.columns=c;e.view=a;g.on("menucreate",e.onMenuCreate,e);b.on("load",e.loadHeaders,e);if(!b.isLoading()&&b.getCount()>0){e.loadHeaders()}},onBeforeSummaryTypeLoad:function(){if(this.selector){}},onSummaryTypeLoad:function(b){var c=b.getCount(),g=b.getProxy().getReader().rawData,a=g.defaultType,d=this.getActiveColumn();if(c>0){this.selectorButton.enable()}else{this.selectorButton.disable()}var e=this.getSummaryFunction(d.attributeid);if(e&&e.expr){a="expression"}else{if(e){a=e.type}}this.selector.value=a},getMenuPosition:function(h,g){var b=h.items.items,d=b.length,c,a=0,e=0;for(;a<d;a++){c=b[a];if(c.text&&c.text<g){e=a}}return e},onMenuCreate:function(c,b){var a=FT.i18n("Functions"),d=this.getMenuPosition(b,a);this.cleanMenu(b);if(this.selectorButton){this.selectorButton.destroy()}this.createSelector();b.insert(d,this.selectorButton=Ext.widget({isFtMenu:true,xtype:"menuitem",text:a,menu:this.selector.menu}));b.on("beforeshow",this.onMenuBeforeShow,this)},getActiveColumn:function(){return this.gridView.headerCt.getMenu().activeHeader},onMenuBeforeShow:function(){var b=this.getActiveColumn(),a=b.attributeid;if(this.isValidColumn(b)){this.selectorButton.enable()}else{this.selectorButton.disable();return}Ext.apply(this.summaryTypeStore.getProxy().extraParams,{attributeid:a,headerType:this.headerType,projectId:FT.app.getProjectId()});this.summaryTypeStore.load()},extractParams:function(){var a=this.grid.getStore(),c=a.getProxy().extraParams,b;log(c);b=Ext.copyTo({},c,this.keyParams);return b},getLeafAttributeIds:function(){var d=this.columns,g=d.length,c,a=0,b=[];for(;a<g;a++){c=d[a];var e=!c.objectTypeIds||c.objectTypeIds.indexOf(FT.getTaskId())!==-1;if(this.isValidColumn(c)&&e){b.push(c.attributeid)}}return b},getParentAttributeIds:function(){var d=this.columns,g=d.length,c,a=0,b=[];for(;a<g;a++){c=d[a];var e=!c.objectTypeIds||c.objectTypeIds.indexOf(FT.getTaskId())!==-1;if(this.isValidColumn(c)&&!e&&this.summaryFunctions[c.attributeid]&&this.summaryFunctions[c.attributeid].type!==false){b.push(c.attributeid)}}return b},loadHeaders:function(c,b){if(this.fireEvent("beforeloadstats",b)===false){return}var d=this,e=this.extractParams(),a=this.getLeafAttributeIds(),g=this.getParentAttributeIds();if(a.length){this.statisticsTasks.load({data:Ext.encode(e),attributeids:Ext.encode(a),summaryFunctions:Ext.encode(this.summaryFunctions)})}if(g.length){this.statisticsParents.load({data:Ext.encode(e),attributeids:Ext.encode(g),summaryFunctions:Ext.encode(this.summaryFunctions)})}},onStatisticsLoad:function(c){var b,g,e,d="",a,h=Ext.JSON.decode(c.proxy.extraParams.attributeids);Ext.each(this.columns,function(j){if(h.indexOf(j.attributeid)===-1){return}b=c.findRecord("id",j.attributeid);a="";if(b){value=b.get("value")!==null?b.get("value"):FT.i18n("N/A");e=FT.util.capitaliseFirstLetter(b.get("summaryFn"));d=e;d=this.decorateTitle(d,j.attributeid,j.objectTypeIds);if(b.get("title")){d=b.get("title")}g=FT.i18n("{summaryFunction} of {type}",{values:{summaryFunction:e,type:j.text}});if(b.get("tooltip")){g=b.get("tooltip")}a='<div data-qtip="'+g+'"><span class="text-faded">'+d+"</span><br>"+value+"</div>"}if(j.setSum){j.setSum(a)}},this)},decorateTitle:function(a){return a},prepareColumns:function(a){Ext.each(a,function(b){if(this.isValidColumn(b)){b.renderTpl=this.renderTpl;b.setPadding=this.setPadding;b.sum="";b.setSum=this.setSum;b.childEls=this.childEls}},this)},renderTpl:'<div id="{id}-titleEl" {tipMarkup}class="'+Ext.baseCSSPrefix+'column-header-inner"><span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'column-header-text">{text}</span><tpl if="!menuDisabled"><div id="{id}-triggerEl" class="'+Ext.baseCSSPrefix+'column-header-trigger"></div></tpl></div>{%this.renderContainer(out,values)%}<div class="header-stats button-text-color" id="{id}-sumEl">{sum}</div>',setSum:function(a){this.sum=a;if(this.rendered){this.sumEl.update(a);this.sumEl.on("click",function(b){FT.util.StopEvent(b)},this)}else{this.on("afterrender",Ext.pass(this.setSum,[a]),this,{single:true})}},childEls:["titleEl","triggerEl","textEl","sumEl"],setPadding:function(a){return 0}});Ext.define("FT.grid.GanttHeaderStats",{extend:"FT.grid.HeaderStats",keyParams:["entityId","entityType","filters","group","columns","filterField"],constructor:function(){this.callParent(arguments);this.on("beforeloadstats",function(a){if(a){if(a.params&&a.params.node&&a.params.node!=""){return false}}})},isValidColumn:function(a){return a.attributeid&&a.isHeaderstats!=false},decorateTitle:function(g,e,d){if(g=="Count"&&e.startsWith("__")){var b=Ext.data.StoreManager.lookup("FT.store.ObjectType");var a=b.findRecord("typeid",d);if(a){var c=a.get("name").toLowerCase();return FT.i18n("Count ({name})",{values:{name:c}})}}if(g=="Count"){g=FT.i18n("Count (task)")}return g}});Ext.define("FT.grid.column.TaskColumnCollapse",{extend:"Ext.grid.column.Column",alias:"widget.task-column-collapse",childEls:["titleEl","triggerEl","textEl","collapseExpandEl"],menuDisabled:true,renderTpl:'<div id="{id}-titleEl" {tipMarkup}class="'+Ext.baseCSSPrefix+'column-header-inner collapsible-task-column-inner"><span class="collapsible-expand-button" id="{id}-collapseExpandEl">{expandCollapseText}</span><span id="{id}-textEl" class="'+Ext.baseCSSPrefix+'column-header-text{childElCls}">{text}</span><tpl if="!menuDisabled"><div id="{id}-triggerEl" class="'+Ext.baseCSSPrefix+'column-header-trigger{childElCls}"></div></tpl></div>{%this.renderContainer(out,values)%}',initComponent:function(){this.addEvents("collapse-expand-toggle");this.callParent(arguments);this.on({element:"collapseExpandEl",click:this.onCollapseExpandToggle,scope:this});this.collapseIcon=FT.glyphIcon("left",{size:16,tooltip:FT.i18n("Hide columns")});this.expandIcon=FT.glyphIcon("right",{size:16,tooltip:FT.i18n("Show all columns")})},initRenderData:function(){var a=this.callParent(arguments);if(this.items.items.length>1){a.expandCollapseText=this.isCollapsed?this.expandIcon:this.collapseIcon}return a},onCollapseExpandToggle:function(){this.fireEvent("collapse-expand-toggle",this,!this.isCollapsed);this.isCollapsed=!this.isCollapsed;this._updateExpandeCollapse(this.isCollapsed)},_updateExpandeCollapse:function(a){Ext.suspendLayouts();Ext.each(this.items.items,function(c,b){if(b>0){c.setVisible(!a)}});Ext.resumeLayouts(true);this.collapseExpandEl.update(a?this.expandIcon:this.collapseIcon)}});Ext.define("FT.grid.TaskColumnCollapse",{extend:"Ext.Base",headerType:null,mixins:{cleanMenu:"FT.util.CleanMenu",observable:"Ext.util.Observable"},constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this);this.callParent()},onToggleExpandCollapse:function(a,c){var b=this.viewHelper.getCurrentView();b.setCollapsedColumn(a.taskColumnGroupId,c)},prepareColumns:function(b){var a=this.viewHelper.getCurrentView();Ext.each(b,function(d){if(d.isTaskColumnGroup){d.xtype="task-column-collapse";d.isCollapsed=a.getCollapsedColumn(d.taskColumnGroupId);d.listeners={"collapse-expand-toggle":this.onToggleExpandCollapse,scope:this}}},this)}});Ext.define("FT.configure.RoleEditor",{extend:"FT.Window",width:800,height:500,title:FT.i18n("Role editor"),autoShow:true,draggable:false,modal:true,resizable:false,saveHandler:Ext.emptyFn,saveScope:undefined,layout:"fit",record:null,initComponent:function(){this.height=Ext.getBody().getHeight()-100;this.roleTypes=Ext.create("Ext.data.Store",{model:"FT.data.RoleTypeListModel",proxy:{type:"ajax",url:"/role/getRoleTypeList",reader:{root:"roletypelist"}}});this.roletypecombo=Ext.create("Ext.form.ComboBox",{fieldLabel:FT.i18n("Role type"),store:this.roleTypes,displayField:"name",editable:false,allowBlank:false,labelWidth:75,value:this.record?this.record.get("typeid"):"PROJECT",disabled:this.record?true:false,listeners:{change:this.refreshPermissionAndClone,scope:this}});this.roleStates=Ext.create("Ext.data.Store",{model:"FT.data.RoleListModel",proxy:{type:"ajax",url:"/role/getRoleList",reader:{root:"rolelist"},extraParams:{typeid:this.roletypecombo.value}}});this.store=Ext.create("Ext.data.Store",{fields:[],proxy:{type:"ajax",url:"/role/readRole",reader:{type:"json",root:"data"},extraParams:{roleid:this.record?this.record.get("roleid"):-1,typeid:this.roletypecombo.value}},listeners:{beforeload:function(){this.setLoading({msg:"Loading..."})},scope:this}});this.textfield=Ext.widget("textfield",{margin:"0 0 10 15",cellCls:"ft-roleeditor-name",fieldLabel:FT.i18n("Name"),allowBlank:false,msgTarget:"side",labelWidth:50,value:this.record?this.record.get("name"):"",readonly:this.record?true:false});this.clonecombo=Ext.create("Ext.form.ComboBox",{fieldLabel:FT.i18n("Clone"),store:this.roleStates,displayField:"name",editable:false,labelWidth:50,colspan:3,margin:"10 15 10 0",cellCls:"border-top",style:"float:right;",queryMode:"local",listeners:{select:this.refreshPermissions,scope:this}});this.items=[this.createForm()];this.tbar=Ext.create("Ext.toolbar.Toolbar",{cls:"background-default",padding:0,layout:{type:"table",columns:3,tableAttrs:{style:{width:"100%"}},tdAttrs:{style:{width:"33%",verticalAlign:"top"}}},items:[this.textfield,this.roletypecombo,{xtype:"tbfill"},this.clonecombo]});this.store.on("load",this.generateView,this);this.store.load();this.roleStates.load();this.bbar=this.generateBbar();this.callParent()},createForm:function(){this.chbg=Ext.create("Ext.form.Panel",{hideHeader:true,autoScroll:true,items:[{padding:"0 15"}]});this.chbg.on("add",function(){this.textfield.focus()},this);return this.chbg},refreshPermissionAndClone:function(a,b){var c=a.findRecordByValue(b).get("value");this.store.load({params:{roleid:-1,typeid:c},scope:this});this.roleStates.load({params:{roleid:-1,typeid:c},scope:this})},refreshPermissions:function(a,b){var c=b[0].get("roleid");this.store.load({params:{roleid:c},scope:this})},generateBbar:function(){var a=["->",{xtype:"button",text:FT.i18n("Cancel"),handler:function(){this.close()},scope:this},{xtype:"button",cls:"button-primary",text:FT.i18n("Save"),handler:function(){var b=this.chbg.getForm();b.updateRecord();Ext.Ajax.request({url:"/role/saveRole",params:{storedata:Ext.encode(this.store.getAt(0).getData()),roleid:this.record?this.record.get("roleid"):-1,typeid:this.roletypecombo.value,rolename:this.textfield.value},success:function(c){var d=Ext.decode(c.responseText);if(d.success){this.fireEvent("saved");this.close()}},scope:this})},scope:this}];return a},generateView:function(){var c=this.store.getProxy().getReader().metaData.formGroups;var b=[];Ext.each(c,function(g,h){var j=[];Ext.each(g.permissions,function(m,l){var n=Ext.form.Checkbox({boxLabel:m.name,name:m.id});j.push(n)},this);var k=g.name;var e=new Ext.form.CheckboxGroup({xtype:"checkboxgroup",padding:"0 15",labelAlign:"top",columns:g.columns,items:j,labelStyle:"font-weight:bold;"});var d=Ext.create("Ext.form.FieldSet",{items:[{xtype:"component",html:k,cls:"ft-property-groupheader",style:"padding-left:15px;"},e],border:0,padding:0});b.push(d)},this);this.removeAll(true);var a=this.createForm();this.add(a);a.add(b);a.loadRecord(this.store.getAt(0));this.setLoading(false)}});Ext.define("FT.configure.AttributePermissionsField",{extend:"Ext.grid.Panel",mixins:{field:"Ext.form.field.Field"},initComponent:function(){this.store=Ext.create("Ext.data.Store",{fields:["name",{name:"read",defaultValue:true},{name:"write",defaultValue:true},"roleid"],proxy:{type:"ajax",url:"/role/listAttributeRoles",reader:{type:"json",root:"data"},extraParams:{attributeId:this.attributeId}},autoLoad:true});var a={xtype:"checkboxfield",cls:"ft-window-grid-checkbox",height:23,margin:"0 10"};var b=Ext.create("FT.grid.plugin.CellEditing",{clicksToEdit:1});this.plugins=[b];this.columns=[{flex:1,text:FT.i18n("Role"),dataIndex:"name",menuDisabled:true,hoverCls:"",sortable:false},{text:FT.i18n("Read"),dataIndex:"read",editor:a,menuDisabled:true,hoverCls:"",sortable:false,renderer:function(c){return c?"Yes":"No"}},{text:FT.i18n("Write"),dataIndex:"write",editor:a,menuDisabled:true,hoverCls:"",sortable:false,renderer:function(c){return c?"Yes":"No"}}];this.callParent(arguments)},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={};b[a.getName()]=Ext.encode(a.getValue())}return b},getValue:function(){var a=Ext.pluck(this.getStore().getRange(),"data");return a}});Ext.define("Ext.app.PortalDropZone",{extend:"Ext.dd.DropTarget",constructor:function(a,b){this.portal=a;Ext.dd.ScrollManager.register(a.body);Ext.app.PortalDropZone.superclass.constructor.call(this,a.body,b);a.body.ddScrollConfig=this.ddScrollConfig},ddScrollConfig:{vthresh:50,hthresh:-1,animate:true,increment:200},createEvent:function(a,g,d,b,j,h){return{portal:this.portal,panel:d.panel,columnIndex:b,column:j,position:h,data:d,source:a,rawEvent:g,status:this.dropAllowed}},notifyOver:function(y,x,z){var d=x.getXY(),a=this.portal,s=y.proxy;if(!this.grid){this.grid=this.getGrid()}var b=a.body.dom.clientWidth;if(!this.lastCW){this.lastCW=b}else{if(this.lastCW!=b){this.lastCW=b;this.grid=this.getGrid()}}var q=0,c=0,p=this.grid.columnX,t=p.length,o=false;for(t;q<t;q++){c=p[q].x+p[q].w;if(d[0]<c){o=true;break}}if(!o){q--}var k,j=0,u=0,n=false,m=a.items.getAt(q),w=m.items.items,l=false;t=w.length;for(t;j<t;j++){k=w[j];u=k.el.getHeight();if(u===0){l=true}else{if(k.el.getY()+u/2>d[1]){n=true;break}}}j=(n&&k?j:m.items.getCount())+(l?-1:0);var g=this.createEvent(y,x,z,q,m,j);if(a.fireEvent("validatedrop",g)!==false&&a.fireEvent("beforedragover",g)!==false){s.getProxy().setWidth("auto");if(k){y.panelProxy.moveProxy(k.el.dom.parentNode,n?k.el.dom:null)}else{y.panelProxy.moveProxy(m.el.dom,null)}this.lastPos={c:m,col:q,p:l||n&&k?j:false};this.scrollPos=a.body.getScroll();a.fireEvent("dragover",g);return g.status}else{return g.status}},notifyOut:function(){delete this.grid},notifyDrop:function(n,j,h){delete this.grid;if(!this.lastPos){return}var l=this.lastPos.c,g=this.lastPos.col,m=this.lastPos.p,a=n.panel,b=this.createEvent(n,j,h,g,l,m!==false?m:l.items.getCount());if(this.portal.fireEvent("validatedrop",b)!==false&&this.portal.fireEvent("beforedrop",b)!==false){Ext.suspendLayouts();a.el.dom.style.display="";n.panelProxy.hide();n.proxy.hide();if(m!==false){l.insert(m,a)}else{l.add(a)}Ext.resumeLayouts(true);this.portal.fireEvent("drop",b);var o=this.scrollPos.top;if(o){var k=this.portal.body.dom;setTimeout(function(){k.scrollTop=o},10)}}delete this.lastPos;return true},getGrid:function(){var a=this.portal.body.getBox();a.columnX=[];this.portal.items.each(function(b){a.columnX.push({x:b.el.getX(),w:b.el.getWidth()})});return a},unreg:function(){Ext.dd.ScrollManager.unregister(this.portal.body);Ext.app.PortalDropZone.superclass.unreg.call(this)}});Ext.define("Ext.app.PortalPanel",{extend:"Ext.panel.Panel",alias:"widget.portalpanel",requires:["Ext.layout.container.Column","Ext.app.PortalDropZone"],cls:"x-portal",bodyCls:"x-portal-body",defaultType:"portalcolumn",autoScroll:true,manageHeight:false,initComponent:function(){var a=this;this.layout={type:"column"};this.callParent();this.addEvents({validatedrop:true,beforedragover:true,dragover:true,beforedrop:true,drop:true})},beforeLayout:function(){var c=this.layout.getLayoutItems(),b=c.length,a=["x-portal-column-first","x-portal-column-last"],d,g,e;for(d=0;d<b;d++){g=c[d];g.columnWidth=1/b;e=d==b-1;if(!d){if(e){g.addCls(a)}else{g.addCls("x-portal-column-first");g.removeCls("x-portal-column-last")}}else{if(e){g.addCls("x-portal-column-last");g.removeCls("x-portal-column-first")}else{g.removeCls(a)}}}return this.callParent(arguments)},initEvents:function(){this.callParent();this.dd=Ext.create("Ext.app.PortalDropZone",this,this.dropConfig)},beforeDestroy:function(){if(this.dd){this.dd.unreg()}this.callParent()}});Ext.define("Ext.app.PortalColumn",{extend:"Ext.container.Container",alias:"widget.portalcolumn",requires:["Ext.layout.container.Anchor"],layout:"anchor",defaultType:"portlet",cls:"ft-portal-column border-right",height:"100%"});Ext.define("FT.dashboard.WidgetStandin",{extend:"Ext.panel.Panel",alias:"widget.portlet",layout:"fit",anchor:"100%",frame:true,closable:true,animCollapse:true,border:false,header:{cls:"background-default"},draggable:{moveOnDrag:false},cls:"x-portlet",title:FT.i18n("Grid Portlet"),html:"",height:200,margin:10,initComponent:function(){assert(this.record,"a record must be provided");this.title=this.record.get("name");if(this.draggable){this.title+='<span style="float:right;" class="tool">'+FT.glyphIcon("move")+"</span>"}this.tools=[{xtype:"button",glyph:FT.glyph("configure"),ui:"plain-toolbar",cls:"tool",handler:function(){this.fireEvent("settingsclicked",this.record)},scope:this}];this.callParent()},doClose:function(){this.fireEvent("deleteWidget",this)},closeWidget:function(){if(!this.closing){this.closing=true;this.el.animate({opacity:0,callback:function(){this.fireEvent("close",this);this[this.closeAction]()},scope:this})}}});Ext.define("FT.dashboard.DashboardBuilder",{extend:"Ext.panel.Panel",layout:"fit",cls:"ft-dashboard",border:false,bodyCls:"border-bottom",initComponent:function(){this.removedRecords=[];this.isDirty=false;this.widgetStore=Ext.create("Ext.data.Store",{autoLoad:false,fields:["widgetid","dashboardid","name","widget_typeid","settingsWindowHeight","settingsWindowWidth",{name:"sort",type:"int",defaultValue:0},{name:"column",type:"int",defaultValue:0},"extraSettings","icon"],proxy:{extraParams:{dashboardid:null},url:"/widget/getWidgetsFromDashboard",type:"ajax",reader:{type:"json",root:"data"}}});this.widgetStore.on("remove",this.onWidgetStoreRemove,this);this.deleteButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Delete"),handler:this.deleteDashboard,scope:this});this.editButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Edit"),handler:this.editDashboard,scope:this});this.addButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Add widget"),handler:this.addWidgetClicked,scope:this});this.shareButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Share"),handler:this.shareDashboard,scope:this});this.cancelButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Cancel"),handler:this.close,scope:this});this.saveButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Save"),cls:"button-primary",handler:this.saveDashboard,scope:this});this.bbar=Ext.create("Ext.toolbar.Toolbar",{padding:25,defaults:{padding:"4 15"},items:[this.deleteButton,{xtype:"tbspacer",width:10},this.editButton,"->",this.addButton,{xtype:"tbspacer",width:10},this.shareButton,"->",this.cancelButton,{xtype:"tbspacer",width:10},this.saveButton]});this.items=[];this.callParent();this.getStore().on("load",this.createPortal,this);this.getStore().on("add",this.rebuildPortal,this);this.getStore().on("remove",this.rebuildPortal,this)},getDashboardId:function(){return this.dashboardId},getConfig:function(){return this.getStore().getProxy().getReader().rawData.config},getTypeId:function(){return this.getStore().getProxy().getReader().rawData.typeid},getName:function(){return this.getStore().getProxy().getReader().rawData.name},loadDashboard:function(a){this.dashboardId=a;assert(a,"must be set");this.getStore().getProxy().extraParams.dashboardid=a;this.getStore().load()},getStore:function(){return this.widgetStore},rebuildPortal:function(){this.isDirty=true;this.removeAll(true);this.createPortal()},addWidgetClicked:function(){if(this.widgetSelector){return}this.widgetSelector=Ext.create("FT.widget.WidgetSelector",{dashboardStore:this.getStore(),listeners:{close:function(){delete this.widgetSelector},scope:this}})},createPortal:function(){var l=this.getStore();var c=this.getConfig();l.sort("sort","ASC");var d=[];var a=c.columns.length;for(var e=0;e<a;e++){d.push([])}var b=[];l.each(function(p){var o=p.get("column");var n=p.get("sort");var s={record:p,region:"north",listeners:{settingsclicked:this.settingsClicked,deleteWidget:this.deleteWidget,scope:this}};if(o==-1){s.draggable=false}var q=Ext.create("FT.dashboard.WidgetStandin",s);if(o>d.length-1){o=0}if(o==-1){q.setHeight(85);q.addCls("ft-portlet-top");b.push(q)}else{d[o].push(q)}},this);var m=[];Ext.each(d,function(p,n){var o={items:p};o=Ext.apply(o,c.columns[n]);m.push(o)},this);var g=Ext.widget({region:"center",xtype:"portalpanel",items:m,border:false});var h=[];h.push(g);if(b.length>0){g.addCls("ft-dashboard-divider");h.push({items:b,region:"north",border:false,height:100})}var k={xtype:"panel",layout:"border",cls:"ft-dashboard-builder",items:h,border:false,bodyBorder:false};var j=Ext.widget(k);g.on("drop",this.onDrop,this);this.add(j)},onDrop:function(g){this.isDirty=true;var e=g.columnIndex;var d=g.position;var a=g.panel.record;var c=a.get("column");a.set("column",e);var b=[];this.getStore().each(function(h){if(h.get("widgetid")!=a.get("widgetid")&&h.get("column")==c){b=Ext.Array.insert(b,h.get("sort"),[h])}},this);Ext.each(b,function(j,h){j.set("sort",h)},this);b=[];this.getStore().each(function(h){if(h.get("widgetid")!=a.get("widgetid")&&h.get("column")==e){b=Ext.Array.insert(b,h.get("sort"),[h])}},this);b=Ext.Array.insert(b,d,[a]);Ext.each(b,function(j,h){j.set("sort",h)},this)},settingsClicked:function(e){var c=Ext.create("FT.configure.BaseSettings",{name:e.get("widgetid"),autoHideToolbar:false,autoAddSaveBar:false,propertyGridCfg:{padding:0}});var d=c.getSaveBarConfig({width:"100%"});Ext.Array.insert(d.items,0,["->"]);var a=[c];var b=[];Ext.each(e.get("extraSettings")||[],function(j){var k={xtype:j.xtype,direct:RAW.BaseWidget.getDirectCfg(e.get("widget_typeid"),e.get("widgetid"))};if(Ext.isDefined(j.layout)){a=[];Ext.apply(k,{layout:j.layout});c.reloadData()}var h=Ext.widget(k);b.push(h);a.push(h)});c.on("save",function(){Ext.each(b,function(h){h.onSave()});g.close()});c.on("beforesave",function(){var h=true;Ext.each(b,function(j){h=h&&j.onBeforeSave()});return h});var g=Ext.create("FT.Window",{title:FT.i18n("Widget settings"),autoShow:true,height:e.get("settingsWindowHeight")||600,width:e.get("settingsWindowWidth")||800,layout:"fit",autoScroll:true,padding:10,bodyPadding:10,reserveScrollbar:true,items:a,bbar:Ext.Array.insert(d.items,1,[{text:FT.i18n("Cancel"),handler:function(){g.close()}}])})},deleteWidget:function(d){assert(d,"widget must be defined");var a=d.record,c=a.get("widgetid"),b=this.getStore();d.closeWidget();b.remove([a])},onWidgetStoreRemove:function(a,b){this.removedRecords.push(b.get("widgetid"))},saveDashboard:function(){var a=[];this.getStore().each(function(c){c.set("dashboardid",this.getDashboardId());a.push(c)},this);var b=[];Ext.each(a,function(c){var d={widgetid:c.get("widgetid"),changes:{dashboardid:c.get("dashboardid"),column:c.get("column"),sort:c.get("sort")}};b.push(d)},this);Ext.Ajax.request({url:"/widget/saveWidgets",params:{data:Ext.encode(b),removed:Ext.encode(this.removedRecords)},success:function(c){var d=c.responseText;this.close()},scope:this})},close:function(){var a=FT.app.getActiveModule();a.reloadDashboards(function(){a.internalUpdateMenu();if(this.isDelayedReload){FT.app.delayedOpen()}else{a.updateDashboard()}},this);this.destroy()},deleteDashboard:function(){this.confirm(FT.i18n("Delete dashboard"),FT.i18n("Are you sure you want to delete this dashboard?"),this.doDeleteDashboard)},doDeleteDashboard:function(){Ext.Ajax.request({url:"/widget/deleteDashboard",params:{dashboardid:this.getDashboardId()},success:function(a){var b=a.responseText;this.close()},scope:this})},editDashboard:function(){Ext.create("FT.dashboard.DashboardEditor",{name:this.getName(),typeId:this.getTypeId(),dashboardId:this.getDashboardId()})},confirm:function(c,b,d){var a=Ext.create("FT.window.CancelSave",{title:c,message:b,saveAction:"delete",saveText:FT.i18n("Delete"),saveHandler:function(){a.close();d.apply(this)},cancelHandler:function(){a.close()},scope:this})},shareDashboard:function(){openDashboardShareWindow({dashboardId:this.getDashboardId()})},confirmChanges:function(){if(!this.isDirty){this.close();return}var a=Ext.create("FT.window.CancelSave",{title:FT.i18n("Save changes"),message:FT.i18n("Save changes to dashboard?"),saveAction:"save",saveText:FT.i18n("Save"),saveHandler:function(){this.saveDashboard();a.close()},cancelHandler:function(){this.close();a.close()},scope:this})}});Ext.define("FT.widget.WidgetSelector",{extend:"FT.Window",height:600,width:800,autoShow:true,title:FT.i18n("Add widget"),cls:"ft-window-addwidget",bodyPadding:"0 20",autoScroll:true,initComponent:function(){assert(this.dashboardStore,"Dashboard store supplied");this.setInsertPosition();this.widgetFilterToolbar=Ext.create("Ext.Toolbar",{padding:"0 0 15 15",cls:"background-default",defaultButtonUI:"plain-toolbar",vertical:true});var c=this,b,a;b=Ext.create("Ext.data.Store",{autoLoad:true,fields:["widget_typeid","name","infoText","singleInstance",{name:"icon",defaultValue:"noicon"},"group"],proxy:{url:"/widget/getAvailableWidgets",type:"ajax",reader:{type:"json",root:"data"}}});b.on("load",this.onWidgetStoreLoad,this);a=Ext.create("Ext.view.View",{store:b,itemSelector:"div.ft-selector-card",overItemCls:"ft-selector-card-over",trackOver:true,selModel:{mode:"SIMPLE"},tpl:new Ext.XTemplate('<tpl for=".">','<div {[this.getTooltip(values.infoText)]} class="ft-selector-card ft-widgetselector-card {[this.getClass(values.widget_typeid, values.singleInstance)]}">','<div style="height:25px;float:right;">','<div class="ft-selector-card-plussign">+</div>','<div class="ft-selector-card-added">Added</div>',"</div>",'<div class="ft-selector-card-comp">',"{[this.getIcon(values.icon)]}","{name}","</div>","</div>","</tpl>",{getTooltip:function(d){if(!d){return""}return'data-qwidth="250" data-qtip="'+d+'"'},getClass:function(d,e){if(!e){return"ft-widgetselector-multi"}return"ft-widgetselector-single"},getIcon:function(d){return d=="noicon"?'<div class="ft-widgetselector-noicon"></div>':'<div style="clear:both;"></div>'+FT.glyphIcon(d)+"<br />"}}),listeners:{itemclick:Ext.bind(this.onItemClick,this)}});this.view=a;this.items=[{xtype:"component",cls:"text-faded",html:"<p>"+FT.i18n("Select widgets to add to the dashboard. Move the mouse over an item for more information.")+"</p>"},a];this.lbar=this.widgetFilterToolbar;this.bbar=["->",{text:FT.i18n("Done"),cls:"button-primary",handler:this.onDoneClicked,scope:this}];this.callParent(arguments)},onDoneClicked:function(){this.close()},setInsertPosition:function(){var a;this.insertSort=1;this.dashboardStore.each(function(b){a=b.get("sort");this.insertSort=a<this.insertSort?a:this.insertSort},this)},onFilterClicked:function(a,b){a.clearFilter();if(b){a.filterBy(function(c){return c.get("group")==b})}this.setSelection(a)},populateToolbar:function(c){this.widgetFilterToolbar.removeAll(true);var a={},e,d=[],g={xtype:"tbfill",cls:"ft-tbfill",margin:0},b=Ext.apply({maxHeight:5},g);c.each(function(h){e=h.get("group");if(e){a[e]=Ext.value(a[e],0);a[e]+=1}});d.push({margin:0,padding:"10 20",toggleGroup:"toggle-group-"+this.id,text:FT.i18n("All {count}",{values:{count:'<span class="ft-addwidget-nr">('+c.getCount()+")</span>"}}),enableToggle:true,pressed:true,allowDepress:false,handler:Ext.bind(this.onFilterClicked,this,[c,false])});d.push(b);Ext.iterate(a,function(h,j){d.push({margin:0,padding:"10 20",toggleGroup:"toggle-group-"+this.id,text:h+' <span class="ft-addwidget-nr">('+j+")</span>",enableToggle:true,allowDepress:false,handler:Ext.bind(this.onFilterClicked,this,[c,h])});d.push(b)},this);d.push(g);this.widgetFilterToolbar.add(d)},onWidgetStoreLoad:function(a){this.populateToolbar(a);this.setSelection(a)},setSelection:function(a){var b={},c=[];this.dashboardStore.each(function(d){b[d.get("widget_typeid")]=true});a.each(function(d){if(b[d.get("widget_typeid")]===true){c.push(d)}});selModel=this.view.getSelectionModel();selModel.select(c)},onItemClick:function(a,b){if(!b.get("singleInstance")){this.addWidget(b)}else{this.addOrRemoveWidget(b)}},getWidgetOfType:function(b){var a=this.dashboardStore.findExact("widget_typeid",b);if(a!=-1){return this.dashboardStore.getAt(a)}return null},addOrRemoveWidget:function(b){var a=b.get("widget_typeid");if(this.getWidgetOfType(a)!=null){this.removeWidget(a)}else{this.addWidget(b)}},removeWidget:function(a){var b=this.getWidgetOfType(a);if(b){this.dashboardStore.remove([b])}},getNewInserSort:function(){this.insertSort-=1;return this.insertSort},addWidget:function(b){var a=b.get("widget_typeid");Ext.Ajax.request({url:"/widget/createWidget",params:{widget_typeid:a},success:function(d){var c=Ext.decode(d.responseText);assert(c.widgetid,"response have widgetid");this.dashboardStore.add({widget_typeid:a,widgetid:c.widgetid,sort:this.getNewInserSort(),name:b.get("name"),column:a=="InsightsWidget_TOP"?-1:0,extraSettings:c.extraSettings,icon:c.icon})},scope:this});this.view.refresh()}});Ext.define("FT.dashboard.DashboardCreator",{extend:"FT.Window",height:375,width:600,autoShow:true,title:FT.i18n("Create dashboard"),saveButtonName:FT.i18n("Create"),bodyPadding:"0 20",initComponent:function(){var c=this,b,a;this.textfield=Ext.widget("textfield",{fieldLabel:FT.i18n("Name"),allowBlank:false,msgTarget:"side",value:this.name?this.name:"",style:{width:"100%"},margin:"10 0 25 0"});var d=Ext.create("Ext.data.Store",{autoLoad:true,fields:["icon","name","typeid"],proxy:{extraParams:{dashboardid:null},url:"/widget/getDashboardTypes",type:"ajax",reader:{type:"json",root:"data"}}});this.selectorView=Ext.create("Ext.view.View",{padding:"25 0 0 0",tpl:new Ext.XTemplate('<div style="width:510px;margin:0px auto;">','<tpl for=".">','<div class="ft-selector-card" style="width:150px;height:100px;margin:10px;display:inline-block;background-image:url({icon});"></div>',"</tpl>","</div>"),store:d,itemSelector:"div.ft-selector-card",overItemCls:"ft-selector-card-over",selectedItemCls:"ft-selector-card-selected",trackOver:true});this.items=[this.textfield,{xtype:"component",html:FT.i18n("Select a layout")},this.selectorView];this.cancelButton=Ext.widget("button",{xtype:"button",text:FT.i18n("Cancel"),handler:this.close,scope:this});this.saveButton=Ext.widget("button",{xtype:"button",cls:"button-primary",text:this.saveButtonName,handler:this.saveHandler,scope:this});d.on("load",this.onPageStoreLoad,this);c.on({afterrender:function(){c.textfield.focus(false,500)}});this.bbar=["->",this.cancelButton,this.saveButton];this.callParent(arguments)},onPageStoreLoad:function(){var a=this.selectorView.getSelectionModel();a.select(0)},saveHandler:function(){if(!this.textfield.isValid()){return}var c=this.selectorView.getSelectionModel();var a=c.getSelection();assert(a.length==1,"item must be selected");var b=a[0];this.doSave(this.textfield.getValue(),b.get("typeid"))},doSave:function(b,a){Ext.Ajax.request({url:"/widget/createDashboard",params:{name:b,typeid:a},success:function(c){var d=Ext.decode(c.responseText);if(d.success){this.currentModule=FT.app.getActiveModule();this.currentModule.reloadDashboards(function(){var g=this.currentModule.entity.entityId;var h=this.currentModule.entity.entityType;var e=d.dashboardid;this.currentModule.on("afterdashboardupdate",function(j){if(j==d.dashboardid){this.currentModule.editCurrent(true)}},this,{single:true});FT.app.open(null,{entityId:g,entityType:h,view:e})},this);this.close()}},scope:this})},editCurrentModule:function(){this.currentModule.editCurrent(true)}});Ext.define("FT.dashboard.DashboardEditor",{extend:"FT.dashboard.DashboardCreator",title:FT.i18n("Edit dashboard"),saveButtonName:FT.i18n("Save"),initComponent:function(){assert(this.name);assert(this.typeId);assert(this.dashboardId);this.callParent(arguments);this.selectorView.getStore().on("load",this.updateSelection,this)},updateSelection:function(a){var b=this.selectorView.getSelectionModel();a.each(function(c){log(c.get("typeid"));if(c.get("typeid")==this.typeId){b.select(c)}},this)},doSave:function(b,a){Ext.Ajax.request({url:"/widget/editDashboard",params:{name:b,typeid:a,dashboardid:this.dashboardId},success:function(d){var e=Ext.decode(d.responseText);if(e.success){var c=FT.app.getActiveModule();c.reloadDashboards(e.dashboardid,true,false);this.close()}},scope:this})}});Ext.define("FT.dashboard.DashboardSharer",{extend:"FT.Window",cls:"ft-window-views-share",width:600,height:600,bodyPadding:"0 20 20 20",autoShow:true,title:FT.i18n("Share dashboard"),autoScroll:true,centerOnResize:true,saveButtonName:FT.i18n("Save"),initComponent:function(){this.resources=[];this.resourceSelector=Ext.create("FT.spark.Component",{component:"ResourceSelector",props:{value:null,className:"ftrack-spark-root",users:true,groups:true,multi:true,messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onChange:Ext.bind(this._onChange,this)},hidden:true});this.isGlobal=Ext.create("Ext.form.field.Radio",{boxLabel:FT.i18n("Share with everyone"),checked:true,name:"share",fieldStyle:"margin-right:5px;border:0;",listeners:{change:function(c,b){if(b===true){this._updateResourceSelector([]);this.resourceSelector.hide()}},scope:this}});this.shareWith=Ext.create("Ext.form.field.Radio",{boxLabel:FT.i18n("Share with"),name:"share",fieldStyle:"margin-right:5px;border:0;",listeners:{change:function(c,b){if(b===true){this.resourceSelector.show()}},scope:this}});var a=Ext.create("Ext.form.Panel",{defaults:{msgTarget:"side"},border:false,items:[this.isGlobal,this.shareWith]});this.items=[a,this.resourceSelector];Ext.Ajax.request({url:"/widget/getShared",params:{dashboardid:this.dashboardId},success:function(b){var c=Ext.decode(b.responseText);if(c.success){this.isGlobal.setValue(c.isGlobal);if(!c.isGlobal&&c.resource_ids.length>0){this.shareWith.setValue(true);this.resourceSelector.show();this._updateResourceSelector(c.resource_ids);this.resources=c.resource_ids}}},scope:this});this.cancelButton=Ext.widget("button",{xtype:"button",cls:"ftrack-button-grey",text:FT.i18n("Cancel"),handler:this.close,style:{marginRight:"10px"},scope:this});this.saveButton=Ext.widget("button",{xtype:"button",cls:"button-primary",text:this.saveButtonName,handler:this.saveHandler,scope:this});this.bbar=["->",this.cancelButton,this.saveButton];this.callParent(arguments)},_updateResourceSelector:function(a){this._onChange(a);this.resourceSelector.setProps({value:a})},_onChange:function(a){this.resources=a},saveHandler:function(){var a=this.isGlobal.getValue();var b={resource_ids:this.resources,isGlobal:a};Ext.Ajax.request({url:"/widget/shareDashboard",params:{dashboardid:this.dashboardId,data:Ext.encode(b)},success:function(c){var d=Ext.decode(c.responseText);if(d.success){FT.notifySuccess(FT.i18n("Dashboard was shared"));this.close();FT.util.intercom("SHARED-DASHBOARD")}},scope:this})}});function openDashboardShareWindow(a){if(FT.isLegacyResourceSelectorEnabled){Ext.create("FT.dashboard.DashboardSharerLegacy",a)}else{Ext.create("FT.dashboard.DashboardSharer",a)}}Ext.define("FT.dashboard.DashboardSharerLegacy",{extend:"FT.Window",cls:"ft-window-views-share",width:450,maxHeight:500,bodyPadding:"0 20 20 20",autoShow:true,title:FT.i18n("Share dashboard"),autoScroll:true,centerOnResize:true,saveButtonName:FT.i18n("Save"),initComponent:function(){var e=this,c,b,d;this.resources=Ext.create("FT.form.field.ResourceEditorLegacy",{anchor:"100%",margin:"0 0 0 25",disabled:true,criteria:{group:{local:false}},submitType:"array",name:"resource_ids",autoLoad:false});this.isGlobal=Ext.create("Ext.form.field.Radio",{boxLabel:FT.i18n("Share with everyone"),checked:true,name:"share",fieldStyle:"margin-right:5px;border:0;",listeners:{change:function(h,g){this.resources.setDisabled(g)},scope:this}});this.shareWith=Ext.create("Ext.form.field.Radio",{boxLabel:FT.i18n("Share with"),name:"share",fieldStyle:"margin-right:5px;border:0;",listeners:{change:function(h,g){this.resources.setDisabled(!g)},scope:this}});var a=Ext.create("Ext.form.Panel",{defaults:{msgTarget:"side"},border:false,items:[this.isGlobal,this.shareWith]});d=Ext.create("Ext.form.Panel",{defaults:{msgTarget:"side"},border:false,items:[this.resources]});this.items=[a,this.sharedGrid,d];Ext.Ajax.request({url:"/widget/getShared",params:{dashboardid:this.dashboardId},success:function(g){var h=Ext.decode(g.responseText);if(h.success){this.isGlobal.setValue(h.isGlobal);this.resources.disable();if(!h.isGlobal&&h.resource_ids.length>0){this.shareWith.setValue(true);this.resources.store.on("load",function(){var j=[];this.resources.store.each(function(k){if(h.resource_ids.indexOf(k.get("id"))!=-1){j.push(k.get("id"))}});this.resources.enable();this.resources.setValue(j)},this,{single:true})}this.resources.store.load()}},scope:this});this.cancelButton=Ext.widget("button",{xtype:"button",cls:"ftrack-button-grey",text:FT.i18n("Cancel"),handler:this.close,style:{marginRight:"10px"},scope:this});this.saveButton=Ext.widget("button",{xtype:"button",cls:"button-primary",text:this.saveButtonName,handler:this.saveHandler,scope:this});this.bbar=["->",this.cancelButton,this.saveButton];this.callParent(arguments)},saveHandler:function(){var a=this.isGlobal.getValue();var b={resource_ids:this.resources.getValue(),isGlobal:a};Ext.Ajax.request({url:"/widget/shareDashboard",params:{dashboardid:this.dashboardId,data:Ext.encode(b)},success:function(c){var d=Ext.decode(c.responseText);if(d.success){FT.notifySuccess(FT.i18n("Dashboard was shared"));this.close();FT.util.intercom("SHARED-DASHBOARD")}},scope:this})}});Ext.define("FT.directive.inbox.StatusDirective",{extend:"FT.directive.Directive",constructor:function(c){var a=this;this.initConfig(c);var b=new Ext.XTemplate('<section class="directive status-directive">',"{[ this.format.userImage(values.createdBy) ]}",'<div class="status {[ this.unreadClass(values) ]} {[ this.blockedClass(values) ]}">','<time class="hover-appear" datetime="{createdAt}">{createdAt:this.format.date}</time>',"{[ this.format.status(values.statusId) ]}",'<div class="link text-ellipsis">{[ this.format.link(values.parent.link) ]}</div>',"</div>","</section>",{format:{userImage:FTrack.grid.UserImageRendererSmall,status:FTrack.grid.StatusRenderer,link:FTrack.grid.LinkRenderer,date:FTrack.grid.FuzzyDateRenderer},unreadClass:function(d){return d.unread?"is-unread":""},blockedClass:function(d){return d.blocked?"is-blocked":""}});this.tpl=b;return this},events:[{event:"click",selector:".is-unread",handler:function(j,a,k,c,d,g){var l=this,h=Ext.get(d.target),b=a&&a.notificationId;if(!b){FT.notifyError(FT.i18n("Failed to mark notifaction as read, unable to find notifcation."));return}h.removeCls("is-unread");a.unread=false;FTApi.Inbox.read({notificationId:b},{callback:function(e,n,m){if(m){j.fireEvent("read",a)}else{FT.notifyError(FT.i18n("Failed to mark as read."));h.addCls("is-unread");a.unread=true}}})}}]});Ext.define("FT.directive.inbox.ClientReviewStatusDirective",{extend:"FT.directive.inbox.StatusDirective",constructor:function(c){var a=this;this.initConfig(c);var b=new Ext.XTemplate('<section class="directive status-directive client-review-status-directive">',"{[ this.format.userImage(values.createdBy) ]}",'<div class="status {[ this.unreadClass(values) ]}">','<div class="client-feedback not-synced">Status update in client review</div>','<time class="hover-appear" datetime="{createdAt}">{createdAt:this.format.date}</time>','<div class="content">{[this.format.text(values)]}</div>','<div class="link text-ellipsis">{[ this.format.link(values.parent.href, values.parent.path) ]}</div>',"</div>","</section>",{format:{text:function(d){if(d.status){return Ext.String.format("{0} changed status to <b>{1}</b>.",d.createdBy.name,d.status)}return Ext.String.format("{0} has cleared the status.",d.createdBy.name)},userImage:FTrack.grid.UserImageRendererSmall,status:FTrack.grid.StatusRenderer,link:FTrack.grid.TextLinkRenderer,date:FTrack.grid.FuzzyDateRenderer},unreadClass:function(d){return d.unread?"is-unread":""}});this.tpl=b;return this}});Ext.define("FT.directive.inbox.TextDirective",{extend:"FT.directive.Directive",constructor:function(c){var a=this;this.initConfig(c);var b=new Ext.XTemplate('<section class="directive status-directive">',"{[ this.format.userImage(values.createdBy) ]}",'<div class="status {[ this.unreadClass(values) ]}">','<time class="hover-appear" datetime="{createdAt}">{createdAt:this.format.date}</time>','<span class="text">{text} </span>','<div class="link text-ellipsis">{[ this.format.link(values.parent.link) ]}</div>',"</div>","</section>",{format:{userImage:FTrack.grid.UserImageRendererSmall,link:FTrack.grid.LinkRenderer,date:FTrack.grid.FuzzyDateRenderer},unreadClass:function(d){return d.unread?"is-unread":""}});this.tpl=b;return this},events:[{event:"click",selector:".is-unread",handler:function(j,a,k,c,d,g){var l=this,h=Ext.get(d.target),b=a&&a.notificationId;if(!b){FT.notifyError(FT.i18n("Failed to mark notifaction as read, unable to find notifcation."));return}h.removeCls("is-unread");a.unread=false;FTApi.Inbox.read({notificationId:b},{callback:function(e,n,m){if(m){j.fireEvent("read",a)}else{FT.notifyError(FT.i18n("Failed to mark as read."));h.addCls("is-unread");a.unread=true}}})}}]});Ext.define("FT.directive.inbox.ClaimDirective",{extend:"FT.directive.inbox.TextDirective",constructor:function(b){this.callParent(arguments);var a=new Ext.XTemplate('<section class="directive status-directive">',"{[ this.format.userImage({}) ]}",'<div class="status {[ this.unreadClass(values) ]}">','<time class="hover-appear" datetime="{createdAt}">{createdAt:this.format.date}</time>','<span class="text">{[ this.format.user(values.userId) ]} {text} </span>','<div class="link text-ellipsis">{[ this.format.link(values.parent.link) ]}</div>',"</div>","</section>",{format:{userImage:FTrack.grid.UserImageRendererSmall,link:FTrack.grid.LinkRenderer,date:FTrack.grid.FuzzyDateRenderer,user:FTrack.grid.UserRenderer},unreadClass:function(c){return c.unread?"is-unread":""}});this.tpl=a;return this}});Ext.define("FT.module.Notification",{extend:"FT.view.MegaLayer",itemId:"notification",options:{pageSize:10},firstUpdate:true,preventCloseOnce:false,manualRefreshText:FT.i18n("New notifications received."),constructor:function(b){var a=this;Ext.apply(this,b);this.callParent();var c=new Ext.util.DelayedTask(this.updateCount,this);this.app.on("pushevent",function(d){if(FT.util.verifyEventScope(d,["socialnotification"])&&FT.util.verifyParentId(d,[FT.getUserId()])){c.delay(5000)}},this);this.on("beforeclose",function(){var d=this.preventCloseOnce;this.preventCloseOnce=false;return !d},this);this.updateCount()},isInboxOpen:function(){return this.layer&&this.layer.dom&&this.layer.isVisible()},updateCount:function(){var a=this;if(!this.isEditReplyOpen()&&this.isInboxOpen()){this.inboxStore.loadPage(1)}else{if(!this.firstUpdate&&this.isInboxOpen()){this.enableManualRefresh(true)}}this.firstUpdate=false;FTApi.Inbox.unreadCount({callback:function(c,e,d){if(d){var b=a.unreadCount;a.unreadCount=parseInt(c.count,10)||0;a.setCount(a.unreadCount);if(a.button&&a.button.el&&b<a.unreadCount){var g=FT.Notification.sendDesktop(c.header,c.text,function(){a.button.toggleHandler(a.button,true);window.focus()});if(!g){a.tip.show()}setTimeout(function(){a.tip.hide();if(g){g.close()}},10000)}}}})},isEditReplyOpen:function(){if(this.isInboxOpen()){return Ext.query(".is-edit, .is-expanded",this.layer.dom).length>0}else{return false}},onManualRefresh:function(){var d=this,c=function b(){d.manualRefreshToolbar.hide();d.inboxStore.loadPage(1)},a;if(d.isEditReplyOpen()){d.preventCloseOnce=true;a=Ext.create("FT.window.CancelSave",{message:FT.i18n("You have unsaved notes that will be lost if you refresh, do you want to continue?"),discardText:FT.i18n("Discard and continue"),cancelHandler:function(){this.close()},saveHandler:undefined,discardHandler:function(e){c();this.close()}});a.show()}else{c()}},getManualRefreshToolbar:function(){if(!this.manualRefreshToolbar){this.manualRefreshToolbar=Ext.widget("toolbar",{cls:"background-edit border-top border-bottom",height:40,dock:"top",hidden:true,items:["->",{xtype:"component",html:this.manualRefreshText},{ui:"link",text:FT.i18n("Refresh"),handler:this.onManualRefresh,scope:this},"->"]})}return this.manualRefreshToolbar},enableManualRefresh:function(a){if(a){this.getManualRefreshToolbar().show()}else{this.getManualRefreshToolbar().hide()}},readAll:function(){var a=this;FTApi.Inbox.readAll({callback:function(b,d,c){if(c){FT.notifySuccess(FT.i18n("Marked all items as read."));if(a.layer&&a.layer.isVisible()){a.inboxStore.loadPage(1)}a.unreadCount=0;a.setCount(a.unreadCount)}else{FT.notifyError(FT.i18n("Failed to mark items as read."))}}})},getTopMenuItems:function(a){var c=this;var b=[];this.inboxStore=Ext.create("Ext.data.Store",{model:"FT.directive.CompositeModel",pageSize:c.options.pageSize,proxy:{type:"direct",timeout:120000,limitParam:"pageSize",pageParam:null,startParam:"lastSeen",directFn:"FTApi.Inbox.get"}});var d=Ext.create("Ext.form.field.TextArea",{cls:"ft-widget-notes-reply ft-notes-textarea-field",emptyText:FT.i18n("Click here to send a new message..."),width:"100%",cols:null,grow:true,rows:1,height:30,listeners:{focus:function(e,h){c.textareaTbar.hide();var g=Ext.create("FT.directive.note.NoteForm",{dock:"top",entity:{},actionText:FT.i18n("Send message"),emptyText:FT.i18n("Write a message..."),enableTodo:false,isMessage:true});g.on("close",function(){c.panel.removeDocked(g,true);c.textareaTbar.show()});g.on("created",function(j){FT.notifySuccess(FT.i18n("Message sent"))});c.panel.addDocked(g,0)}}});this.textareaTbar=Ext.create("Ext.toolbar.Toolbar",{dock:"top",padding:10,items:[d]});this.button=Ext.create("Ext.button.Button",{tourId:"inbox",enableToggle:true,scale:"large",glyph:FT.glyph("inbox"),overflowText:FT.i18n("Inbox"),tooltip:FT.i18n("Inbox"),text:this.unreadCount||"",listeners:{afterrender:function(){c.tip=new Opentip(c.button.el.dom,FT.i18n("You have new notifications!"),undefined,{style:"ftNotification",offset:[0,3],showOn:null})}},toggleHandler:function(h,g){if(!c.layer){c.createLayer();c.panel=Ext.create("Ext.panel.Panel",{layout:"fit",glyph:FT.glyph("inbox"),title:FT.i18n("Inbox"),header:true,tools:[{xtype:"button",ui:"default-toolbar-small",text:FT.i18n("More"),split:true,handler:function(){var k=[{text:FT.i18n("Mark all as read"),handler:c.readAll,scope:c}];if(FT.Notification.desktopSupport()){var l=FT.Notification.getPermission();if(l===1){k.push({text:FT.i18n("Enable desktop notifications"),handler:function(){FT.Notification.requestPermission();FT.notifySuccess(FT.i18n("Desktop notifications enabled"))}})}}var m=Ext.create("Ext.menu.Menu",{items:k});m.showBy(this.getEl())}},{xtype:"button",ui:"glyph",glyph:FT.glyph("close"),handler:function(){c.close()}}],border:false,bodyBorder:false,cls:"ft-overlay-panel ft-overlay-inbox-panel",bodyCls:"timeline ft-overlay-inbox-panel-body",tbar:c.textareaTbar,renderTo:c.layer});c.panel.mon(FT.Viewport,"resize",c._resizePanel,c);var e=Ext.create("FT.directive.DirectiveDataView",{loadMask:false,emptyText:'<p class="timeline__emptytext">'+FT.i18n("Empty inbox")+"</p>",deferEmptyText:false,autoScroll:true,infiniteScroll:true,preserveScrollOnRefresh:true,bodyPadding:"0 14 0 7",directives:{note:Ext.create("FT.directive.note.NoteDirective"),inbox_note_completion:Ext.create("FT.directive.inbox.TextDirective"),inbox_status:Ext.create("FT.directive.inbox.StatusDirective"),inbox_assignment:Ext.create("FT.directive.inbox.TextDirective"),inbox_unassignment:Ext.create("FT.directive.inbox.TextDirective"),inbox_publish:Ext.create("FT.directive.inbox.TextDirective"),inbox_claim:Ext.create("FT.directive.inbox.ClaimDirective"),inbox_client_review_status:Ext.create("FT.directive.inbox.ClientReviewStatusDirective")},store:c.inboxStore});e.on("read",function(k){c.unreadCount-=1;c.unreadCount=c.unreadCount<0?0:c.unreadCount;c.setCount(c.unreadCount)});c.panel.add(e);var j=FT.FilterFactory.create("inbox");j.bindStore(c.inboxStore);c.filterBar=Ext.create("Ext.toolbar.Toolbar",{dock:"top",defaultButtonUI:"plain-toolbar",cls:"panel",enableOverflow:true,items:j.getItems()});c.panel.addDocked(c.filterBar);c.panel.addDocked(c.getManualRefreshToolbar())}if(g){c.inboxStore.load({start:null})}c.toggleShow(g)}});b.push(this.button);b.push({xtype:"tbseparator"});return b}});Ext.define("FT.directive.note.NoteDirective",{extend:"FT.directive.Directive",enableReply:true,replyMode:"textarea",replyCfg:null,displayTimeInFooter:false,displayEditInFooter:false,enableCollapseChildren:true,enableStar:true,enableDisplayRecipients:true,enableLink:true,enableUserImage:true,enableUserNameLink:true,enableCheckbox:false,reloadOnRemove:false,enableFeedbackHeader:true,enableCategoryEdit:true,enableTodo:true,isChecked:Ext.emptyFn,onChecked:Ext.emptyFn,constructor:function(c){var a=this;this.converter=Markdown.getSanitizingConverter();this.edits={};this.replies={};this.initConfig(c);this.noteTpl=new Ext.XTemplate("<h4>",'<tpl if="this.enableCheckbox(values)">','<div class="note-directive__checkbox">',"{[ this.format.checkbox(values) ]}","</div>","</tpl>",'<tpl if="this.isEditable(values) && !this.isEditInFooter()">','<span class="edit-menu">&#x25BC;</span>',"</tpl>","{[ this.format.frame(values) ]}",'<tpl if="!this.isTimeInFooter(values)">','<time datetime="{createdAt}">{[ this.format.date(values.createdAt) ]}</time>',"</tpl>",'<tpl if="this.isStarEnabled(values)">','<span class="star {[ this.starredClass(values.starred) ]}">{[ FT.glyphIcon("star", {cls: "icon--inline"})]}</span>',"</tpl>",'<tpl if="this.isDisplayRecipientsEnabled(values)">','<span class="recipients hover-appear" data-qtip="{[ this.format.recipients(values) ]}">{[ FT.glyphIcon("team", {cls: "icon--inline"})]}</span>',"</tpl>","{[ this.format.userName(values) ]}","</h4>","{[ this.format.todo(values) ]}",'<div class="{[ this.format.contentClassName(values) ]}">',"{[ this.format.content(values) ]}","</div>",'<tpl if="attachments.images && attachments.images.length">','<ul class="attachments attachments-images">','<tpl for="attachments.images">',"<li>","{[ this.format.image(values) ]}","</li>","</tpl>","</ul>","</tpl>",'<tpl if="attachments.files && attachments.files.length">','<ul class="attachments attachments-files">','<tpl for="attachments.files">',"<li>{[ this.format.file(values, xindex, xcount) ]}</li>","</tpl>","</ul>","</tpl>",'<tpl if="this.isTimeInFooter(values)">','<div class="toolbar">','<time datetime="{createdAt}">{[ this.format.date(values.createdAt) ]}</time>','<span class="reply-field"><a class="reply" href="#">{[FT.i18n("Reply")]}</a></span>','<tpl if="this.isEditable(values) && this.isEditInFooter()">','<span class="edit-menu">&#x25BC;</span>',"</tpl>","</div>","</tpl>",{format:{todo:function(d){if(a.enableTodo===false||!d.is_todo){return""}var e=a.renderTodoFragment(d.completed_at,d.completed_by_id);return Ext.String.format('<div class="{0}">{1}</div>',e.cls,e.content)},checkbox:function(d){return FTrack.grid.BooleanRenderer(a.isChecked(d))},date:FTrack.grid.FuzzyDateRenderer,image:function(e){var d={thumbUrl:e.icon.thumbUrl,attachmentid:e.attachmentid,size:{y:80},action:"inspectimage"};return FTrack.grid.IconRenderer(d)},file:function(g,d,h){var e='<a class="ft-link" href="'+g.link+'">'+g.filename+"</a>";e+=d!==h?", ":"";return e},frame:function(d){var h=d.frame,e="";if(h&&h.number&&h.time){var g=FT.i18n("frame {frameNumber}",{values:{frameNumber:h.number}});e=Ext.String.format('<span class="ft-reviewsession-note-frame-ref" data-time={0} data-number={1}>{2}</span>',h.time,h.number,g)}return e},content:function(d){result=a.converter.makeHtml(d.text);return result||""},contentClassName:function(d){var e="content ft-markdown";if(d.completed_at){e+=" text-faded"}return e},userName:function(d){if(Ext.isObject(d.invitee)){return d.invitee.name}if(a.enableUserNameLink){return FTrack.grid.UserRendererDefault(d.user,FT.i18n("Unknown user"))}if(d.user&&d.user.name){return d.user.name}else{return FT.i18n("Unknown user")}},recipients:function(g){var e=g.recipients,h=g.user,d=FT.i18n("No recipients");if(!e){return d}var j=Ext.Array.remove(Ext.clone(e),h&&h.userid||undefined);if(!j.length){return d}var k=FTrack.grid.ResourceRendererPrint(j);return FT.i18n("Recipients: {names}",{values:{names:k}})}},isEditInFooter:function(){return a.displayEditInFooter},isTimeInFooter:function(){return a.displayTimeInFooter},isStarEnabled:function(d){return a.enableStar},isDisplayRecipientsEnabled:function(){return a.enableDisplayRecipients},starredClass:function(d){return d?"is-starred":"hover-appear"},isEditable:function(e){var d=e.invitee&&e.invitee.id===FT.app.getInviteeId();if(d){return true}if(e.user&&FT.Settings.get("currentuser","userid")===e.user.userid){return true}return false},enableCheckbox:function(){return a.enableCheckbox},isChecked:function(d){return a.isChecked(d)}});var b=new Ext.XTemplate('<section class="directive note-directive">','<div class="note {[ this.unreadClass(values) ]}">',"{[ this.feedbackContent(values) ]}",'<tpl if="this.isUserImageEnabled(values)">',"{[ this.format.userImage(values) ]}","</tpl>","{[ this.renderNoteContent(values) ]}",'<tpl if="this.isLinkEnabled(values)">','<tpl if="parent.link">','<div class="link">',"{[ this.format.parentImage(values.parent) ]}","{[ this.format.category(values.labels) ]}","{[ this.format.parentLink(values) ]}","</div>","</tpl>","</tpl>",'<tpl if="this.hasFooter(values)">','<div class="footer">','<tpl if="this.hasChildren(values)">',"{[ this.renderCollapsedChildren(values) ]}",'<ul class="child-notes">','<tpl for="children">','<li data-note-id="{noteId}" class="child-note {[ this.hideChildClass(xindex, parent.children) ]} {[ this.unreadClass(values) ]}">','<tpl if="this.isUserImageEnabled(values)">',"{[ this.format.userImageSmall(values) ]}","</tpl>","{[ this.renderNoteContent(values) ]}","</li>","</tpl>","</ul>","</tpl>",'<tpl if="this.isReplyTextareaEnabled(values)">','<form class="fake-form reply-field"><textarea class="reply" rows="1" placeholder="{[FT.i18n("Reply...")]}"></textarea></form>',"</tpl>",'<tpl if="this.isReplyEnabled(values)">','<form class="reply-form is-hidden"></form>',"</tpl>","</div>","</tpl>","</div>","</section>",{format:{userImage:function(e){var d=e.user;if(Ext.isObject(e.invitee)){d=e.invitee}return FTrack.grid.UserImageRenderer(d)},userImageSmall:function(e){var d=e.user;if(Ext.isObject(e.invitee)){d=e.invitee}return FTrack.grid.UserImageRendererSmall(d)},parentImage:function(d){if(!(d&&d.thumbId)){return""}return FTrack.grid.ParentImageRendererSmall(d.thumbId)},date:FTrack.grid.FuzzyDateRenderer,parentLink:function(d){if(d.parent.href&&d.parent.path){return FTrack.grid.TextLinkRenderer(d.parent.href,d.parent.path)}else{if(d.parent.link){return FTrack.grid.LinkRenderer(d.parent.link)}}},category:function(d){return'<div class="note__label-list">'+FTrack.grid.NoteCategoryRenderer(d)+"</div>"}},renderCollapsedChildren:function(d){var e=this.hiddenChildren(d.children);if(e<=0){return""}var g=FT.i18n("Show {count, plural, one {one more comment} other {# more comments}}",{values:{count:e}});return'<a href="#" class="show-children">'+g+"</a>"},isUserImageEnabled:function(){return a.enableUserImage},isLinkEnabled:function(){return a.enableLink},isReplyEnabled:function(d){return a.enableReply&&!d.hideReply},isReplyTextareaEnabled:function(d){return this.isReplyEnabled(d)&&a.replyMode==="textarea"},renderNoteContent:function(d){return a.noteTpl.applyTemplate(d)},unreadClass:function(d){return d.unread?"is-unread":""},feedbackContent:function(d){if(a.enableFeedbackHeader){if(d.labels.indexOf("42983ba0-53b0-11e4-916c-0800200c9a66")!==-1){return'<div class="client-feedback">'+FT.i18n("Client feedback")+"</div>"}else{if(d.parent&&d.parent.type==="review_session_object"){return'<div class="client-feedback not-synced">'+FT.i18n("Comment in client review")+"</div>"}}}},hasChildren:function(d){return d.children&&d.children.length},hasFooter:function(d){return this.isReplyEnabled(d)||this.hasChildren(d)},hiddenChildren:function(d){if(!a.enableCollapseChildren){return false}var e=d.length;Ext.Array.every(d,function(h,g){if(!h.unread){return true}e=g;return false});if(e>=d.length){e-=1}return e},hideChildClass:function(d,e){var g=this.hiddenChildren(e);return d<=g?"is-hidden":""},isTimeInFooter:function(){return a.displayTimeInFooter}});this.tpl=b;this.callParent(arguments);return this},edit:function(d,a,t,m){var b=d.down(".content"),k,n,p,c,g,j,h,q,s=this,w="button-primary",x="default";if(this.replyCfg&&this.replyCfg.actionButtonStyle==="simple"){w=null;x="simple"}editRecord=a;if(d===Ext.fly(t.target).up(".child-note")){var u=d.getAttribute("data-note-id");editRecord=a.children().data.get(u);noteType="comment"}k=b.insertSibling({tag:"div",cls:"note-edit-form"});if(this.enableCategoryEdit&&editRecord.get("replyId")===null){q=Ext.create("FT.ui.NoteCategoryEditor",{value:editRecord.get("labels"),setDefaultValue:false});n=Ext.create("Ext.toolbar.Toolbar",{padding:"10 0 5 0",items:[q],enableOverflow:true,renderTo:k})}p=Ext.create("Ext.form.field.TextArea",{grow:true,width:"100%",value:editRecord.get("text"),renderTo:k});c=function(y,e){if(e.wasSuccessful()){s.refresh(m);FT.notifySuccess(FT.i18n("Updated note"))}else{FT.notifyError(FT.i18n("Failed to edit note"))}};g=function(){var z=p.getValue(),e;editRecord.set("text",z);if(q){var y=q.getValue();var A=[];if(y){A=y.split(", ")}editRecord.set("labels",A)}e=editRecord.validate();if(e.isValid()){editRecord.save({callback:c})}else{p.markInvalid("Text cannot be empty")}};j=Ext.create("Ext.Button",{text:FT.i18n("Save"),renderTo:k,handler:g,cls:w,ui:x});var l=Ext.id();var o=function(){p.destroy();j.destroy();h.destroy();if(q){q.destroy()}if(n){n.destroy()}k.destroy();d.removeCls("is-edit");b.removeCls("is-hidden");d.cancelEdit=Ext.emptyFn;delete s.edits[l]};this.edits[l]=o;h=Ext.create("Ext.Button",{text:FT.i18n("Cancel"),renderTo:k,handler:o,ui:x});d.addCls("is-edit");b.addCls("is-hidden")},renderTodoFragment:function(j,c){var g;var b="note-todo-icon";var a="note-todo";if(j){b+=" note-todo-icon--completed";var d=c?FTrack.grid.UserRendererPrint(c):FT.i18n("Unknown user");var h=FTrack.grid.FuzzyDateRenderer(j);g=[' <span class="text-faded">',FT.i18n("Marked as completed by {user} {datetime}.",{values:{user:d,datetime:h}}),". (",'<a class="note-todo-target">',FT.i18n("Change"),"</a>)</span>"].join("")}else{a+=" note-todo-target";g=' <span class="text-faded"> '+FT.i18n("Click to mark as completed.")+"</span>"}var e=FT.glyphIcon("todo",{cls:b});return{cls:a,content:e+g}},reset:function(){Ext.Object.each(this.edits,function(a,b){b()});Ext.Object.each(this.replies,function(a,b){b()});this.edits={};this.replies={}},events:[{event:"click",selector:".show-children",handler:function(g,a,d,b,h,c){Ext.fly(d).select(".child-note").removeCls("is-hidden");Ext.fly(d).down(".show-children").addCls("is-hidden");h.preventDefault()}},{event:"click",selector:".reply",handler:function(k,c,n,d,h,j){var o=this,b=Ext.fly(n).down(".reply-field"),m=Ext.fly(n).down(".reply-form");b.addCls("is-hidden");m.removeCls("is-hidden");m.addCls("is-expanded");var a=Ext.id();var g=Ext.apply(this.replyCfg||{},{isReply:true,actionText:FT.i18n("Reply"),emptyText:FT.i18n("Reply..."),replyId:c.get("noteId"),recipients:c.get("recipients"),renderTo:m,enableTodo:false,id:a});var l=Ext.create("FT.directive.note.NoteForm",g);this.replies[l.getId()]=function(){l.close();delete o.replies[a]};l.on("destroy",function(e){b.removeCls("is-hidden");m.removeCls("is-expanded");m.addCls("is-hidden")});l.on("created",function(e){c.children().add(e);if(k&&Ext.isFunction(k.refresh)){k.refresh()}});h.preventDefault()}},{event:"click",selector:".note-todo-target",handler:function(l,d,m,g,j,k){var n=!d.get("completed_at");var b=n?"complete":"remove_complete";var a=d.get("noteId");if(n){d.set({completed_at:new Date,completed_by_id:FT.getUserId()})}else{d.set({completed_at:null,completed_by_id:null})}FTApi.Note[b](a,{callback:function(e,p,o){if(!o){FT.notifyError(FT.i18n("Failed to update note."))}else{if(n){FT.notifySuccess(FT.i18n("Completed note."))}else{FT.notifySuccess(FT.i18n("Note is no longer completed."))}}}});var c=Ext.get(j.target);if(!c.hasCls("note-todo")){c=c.up(".note-todo")}var h=this.renderTodoFragment(d.get("completed_at"),d.get("completed_by_id"));c.update(h.content);c.dom.className=h.cls;if(n){FT.util.intercom("COMPLETED-NOTE")}else{FT.util.intercom("UNCOMPLETED-NOTE")}}},{event:"click",selector:".star",handler:function(k,d,m,g,h,j){var l=Ext.get(h.target);var c=l.hasCls("is-starred");var b=c?"unstar":"star";var a=d.get("noteId");l.toggleCls("is-starred");l.toggleCls("hover-appear");FTApi.Note[b](a,{callback:function(e,o,n){if(!n){FT.notifyError("Failed to "+b+" note.");l.toggleCls("is-starred")}}});h.preventDefault();if(!c){FT.util.intercom("STARED-NOTE")}}},{event:"click",selector:".edit-menu",handler:function(n,g,q,h,j,k){var s=this,c=Ext.fly(j.target).up(".child-note"),o,a,m,d,p,b=[],l;if(c){a=c.getAttribute("data-note-id");o=g.children().data.get(a)}else{c=Ext.fly(j.target).up(".note");o=g}m=function(){o.destroy({callback:function(t,e){if(e.wasSuccessful()){c.addCls("is-hidden");if(s.reloadOnRemove){if(n&&n.store&&n.store.reload){n.store.reload()}}FT.notifySuccess(FT.i18n("Removed note."))}else{FT.notifySuccess(FT.i18n("Failed to remove note."))}}})};d=function(){var e=Ext.create("FT.window.CancelSave",{title:FT.i18n("Remove note"),message:FT.i18n("Are you sure you want to remove this note?"),saveAction:"delete",saveText:FT.i18n("Remove"),saveHandler:function(){m();e.close()},cancelHandler:function(){e.close()},scope:this})};p=function(){s.edit(c,g,j,n)};l=o.get("invitee");if(!l||l.id===FT.app.getCfg().id){b.push({text:FT.i18n("Edit"),handler:p})}if(!l||!FT.app.getCfg().id||l&&l.id===FT.app.getCfg().id){b.push({text:FT.i18n("Remove"),handler:d})}if(!this.menu){this.menu=Ext.create("Ext.menu.Menu")}this.menu.removeAll();this.menu.add(b);this.menu.showBy(j.target)}},{event:"click",selector:".is-unread",handler:function(l,d,m,h,j,k){var n=this,b=Ext.get(j.target);if(b.hasCls("child-note")){var a=b.getAttribute("data-note-id");var c=d.children();d=c&&c.data.get(a)}var g=d&&d.get("notificationId");if(!g){FT.notifyError(FT.i18n("Failed to mark note as read, unable to find notifcation."));return}d.set("unread",false);b.removeCls("is-unread");FTApi.Inbox.read({notificationId:g},{callback:function(e,p,o){if(o){l.fireEvent("read",d)}else{FT.notifyError(FT.i18n("Failed to mark note as read."));b.addCls("is-unread");d.set("unread",true)}}})}},{event:"click",selector:".note-directive__checkbox",handler:function(h,a,g,b,j,c){var d=a.get("noteId");this.onChecked(d,b)}},{event:"click",selector:".ft-reviewsession-note-frame-ref",handler:function(h,a,g,b,k,c){var d=Ext.fly(g).down(".ft-reviewsession-note-frame-ref"),j=-1;if(d){j=d.getAttribute("data-time")||-1;j=parseFloat(j);if(!isFinite(j)){j=-1}}if(j!==-1){h.fireEvent("seekto",j)}}}]});Ext.define("FT.directive.activity.ActivityDirective",{extend:"FT.directive.Directive",entity:{},getMessage:function(a){return""},constructor:function(c){var a=this;this.callParent(arguments);var b=new Ext.XTemplate('<section class="directive activity-directive {expandable:this.format.expandableCls}">',"{user:this.format.userImage}",'<div class="message">',"{[this.format.message(values)]}","</div>",'<div class="information">',"{createdAt:this.format.time}",'<tpl for="parent">',"{link:this.format.link}","</tpl>","</div>",'<tpl for="parent">',"{thumbId:this.format.parentImage}","</tpl>","</section>",{format:{expandableCls:function(d){return d?"is-expandable":""},time:FTrack.grid.FuzzyDateRenderer,link:FTrack.grid.LinkRenderer,userImage:FTrack.grid.UserImageRendererSmall,parentImage:FTrack.grid.ParentImageRendererSmall,message:a.getMessage}});this.tpl=b},events:[{event:"click",selector:".activity-directive",handler:function(j,c,l,d,g,h){var k=j.getStore(),a=c&&c.expandable,b=c&&c.feedId;if(!a||!b){return}c.expandable=false;var m=Ext.get(l);m.addCls("is-loading");m.removeCls("is-expandable");FTApi.Activity.expand(b,{callback:function(n,p,o){m.removeCls("is-loading");if(o){var e=d+1;k.insert(e,n)}}})}}]});Ext.define("FT.directive.activity.ExpandedActivityDirective",{extend:"FT.directive.Directive",entity:{},getHeader:function(){return""},getMessage:function(){return""},constructor:function(){this.callParent(arguments);var a=this;var b=new Ext.XTemplate('<section class="directive expanded-activity-directive">',"{[this.format.header(values)]}","<ul>",'<tpl for="items">',"<li>{[this.format.message(values)]}</li>","</tpl>","</ul>","</section>",{format:{header:a.getHeader,message:a.getMessage}});this.tpl=b}});Ext.define("FT.directive.kanban.TaskModel",{extend:"Ext.data.Model",proxy:{type:"direct",limitParam:"pageSize",api:{read:"FTApi.Kanban.get",update:"FTApi.Kanban.update"}},idProperty:"entityId",fields:[{name:"dueDate",type:"date",dateFormat:"c"},{name:"isDueDatePassed",type:"boolean"},{name:"noteCount",type:"integer"},{name:"entityId"},{name:"user"},{name:"owner",type:"object"},{name:"link",type:"array"},{name:"userIds",type:"array"},{name:"status",type:"object"},{name:"priority",type:"object"},{name:"show",type:"object"},{name:"draggable"},{name:"thumbId"},{name:"isScheduled",type:"boolean",defaultValue:false},{name:"todos_not_completed_count"}],validations:[]});Ext.define("FT.directive.kanban.EmptyModel",{extend:"Ext.data.Model",fields:[{name:"user"},{name:"owner"},{name:"group"},{name:"text"},{name:"draggable"},{name:"status"},{name:"entity"}],validations:[]});Ext.define("FT.directive.kanban.TaskDirective",{extend:"FT.directive.Directive",entity:{},constructor:function(c){var a=this;this.initConfig(c);var b=new Ext.XTemplate('<section class="directive kanban-task-directive {[this.draggable(values)]}">','<div class="kanban-task-directive-wrapper status-bar__trigger">',"{[this.format.taskImage(values)]}",'<ul class="information">','<li class="entity-link">',"{[FTrack.grid.LinkRenderer(values.link)]}","</li>",'<li class="kanban-task-card-small--only">',"{[this.format.priority(values)]}",'<div class="entity-path">{[FTrack.grid.LinkRenderer(values.owner.link)]}</div>',"</li>",'<li class="entity-parent kanban-task-card-small--hidden">',"{[FTrack.grid.LinkRenderer(values.owner.link.slice(-1))]}","</li>",'<li class="entity-path kanban-task-card-small--hidden">',"{[FTrack.grid.LinkRenderer(values.owner.link.slice(0, -1))]}","</li>",'<li class="kanban-last-line kanban-task-card-small--hidden">',"{[this.format.priority(values)]}",'{[this.format.dueDate(values, "text-faded")]}',"</li>","</ul>",'<div class="status-bar" style="background-color:{[values.status.color]};">','<div class="kanban-status-left status-bar__name" style="{[ this.statusStyle(values) ]}">{[values.status.name]}</div>','<div class="kanban-status-right">','<span class="kanban-task-user">{[this.format.user(values.userIds)]}</span>','<span class="kanban-task-time kanban-task-label icon-only" title="{[FT.i18n("Log time")]}">',"{[this.format.logTime(0)]}","</span> ",'<span class="kanban-task-actions kanban-task-label icon-only" title="{[FT.i18n("Display available actions")]}">',"{[this.format.actionIcon()]}","</span> ",'<span class="kanban-task-duedate--small kanban-task-card-small--only">',"{[this.format.dueDate(values)]}","</span>","</div>","</div>","</div>","{[this.format.todos(values)]}","{[this.format.noteCount(values)]}","</section>",{format:{todos:function(d){var e=d.todos_not_completed_count||0;if(e){return FT.glyphIcon("todo",{cls:"kanban-task-todo-icon"})}return""},noteCount:function(e){var d=e.noteCount||0;if(d){return['<div class="count-circle count-circle--card">',d,"</div>"].join("")}return""},dueDate:function(e,d){if(!e.isScheduled){return""}if(!Ext.isDate(e.dueDate)){return""}d=d||"";var g=Ext.Date.format(e.dueDate,"M j");if(e.isDueDatePassed){d+=" text-danger"}return Ext.String.format('<span class="{0}">{1}</span>',d,g)},taskImage:function(e){var g=FT.util.getThumbnailUrl(e.thumbId);var d="background-image: url("+g+");";return'<div class="ft-kanban-task-image ft-background-cover" style="'+d+'"></div>'},priority:function(d){var g="color: "+d.priority.color,e=d.priority.name;return Ext.String.format('<span class="pull-right" style="{0}">{1}</span>',g,e)},user:function(d){var h,g="";if(d.length>2){h=FTrack.grid.UserRendererPrint(d.slice(1));g=Ext.String.format('<div class="{0}" title="{1}"><span class="{2}">+{3}</span></div>{4}',"ft-user-image ft-user-image-xtiny",h,"ft-user-image-inner",d.length-1,FTrack.grid.UserImageRenderer({id:d[0]},{size:"xtiny"}))}else{for(var e=0;e<d.length;e++){g+=FTrack.grid.UserImageRenderer({id:d[e]},{size:"xtiny"})}}return g},logTime:function(d){return FT.glyphIcon("timesheet",{cls:"icon--inline"})+" "+(d||"")},actionIcon:function(){return FT.glyphIcon("actions",{cls:"icon--inline"})}},statusStyle:function(e){var d=e.status.color;var h=FT.util.Format.textColorFromColor(d);var g="background-color: "+d+";";g+="color: "+h+";";return g},draggable:function(d){return d.draggable===false?"kanban-drag-off":""}});this.tpl=b;return this},events:[{handler:function(h,a,g,c,j,d){var b=a.get("entityId");FT.action.fn.openAndLoadTimelogger(b);j.preventDefault()},selector:".kanban-task-time",event:"click"},{handler:function(h,a,g,c,j,d){var b=a.get("entityId");FT.action.fn.openActions([{entityId:b,entityType:"task"}]);j.preventDefault()},selector:".kanban-task-actions",event:"click"},{handler:function(h,a,g,c,j,d){var b=a.get("entityId");FT.app.open(null,{slideEntityId:b,slideEntityType:"task"});j.preventDefault()},selector:".kanban-task-note",event:"click"}]});Ext.define("FT.directive.kanban.KanbanStatus",{extend:"FT.directive.Directive",entity:{},constructor:function(c){var a=this;this.initConfig(c);var b=new Ext.XTemplate('<section class="directive kanban-task-directive" style="border-top:none;">','<div class="kanban-task-directive-wrapper" style="height:30px!important; border-top: 4px solid {status.color};">','<ul class="information">',"{status.name}","</ul>","</div>","</section>");this.tpl=b;return this}});Ext.define("FT.directive.kanban.EmptyDirective",{extend:"FT.directive.Directive",entity:{},constructor:function(c){var a=this;this.initConfig(c);var b=new Ext.XTemplate('<section class="directive kanban-text-directive">',"<span>{text}</span>","</section>",{format:{user:function(d){if(d){return FTrack.grid.UserRenderer(d.id)}else{return""}}}});this.tpl=b;return this}});Ext.define("FT.directive.kanban.ExpandDirective",{extend:"FT.directive.kanban.EmptyDirective",entity:{},events:[{event:"click",selector:".kanban-show-more-user",handler:function(h,a,g,c,j,d){log("Expand all assigned tasks");var b=h.getStore();FTApi.Kanban.loadUserTasks({userId:a.get("user").id,entityId:a.get("entity").id,entityType:a.get("entity").type},{callback:function(l,n,m){if(m){var e=c;b.insert(e,l);var k=b.findBy(function(o){if(o.get("type")==="kanban_expand"&&o.get("content").internalId==a.internalId){return true}});b.removeAt(k)}}});j.preventDefault()}},{event:"click",selector:".kanban-hide-user",handler:function(l,b,n,g,h,j){var m=l.getStore(),k=-1,d=1,c=b.get("user").id;m.each(function(t,e,q){var s=t.get("content"),p=t.get("type"),o=s.user&&s.user.id||s.get("user").id;if(p==="kanban_expand"&&o===c){k=e}else{if(o===c&&k!==-1){d+=1}else{if(k!==-1){return false}}}});log("Remove from "+k+" to "+(k+d));m.removeAt(k,d);var a=new FT.directive.CompositeModel({type:"kanban_expand",content:{user:{id:c},text:'<a class="kanban-show-more-user">'+FT.i18n("Show {assingments, plural, one {one more assignment} other {# more assingments}}",{values:{assingments:d-1}})+"</a>",entity:{id:b.get("entity").id,type:b.get("entity").type}}});m.insert(k,a);h.preventDefault()}}]});Ext.define("FT.directive.kanban.HeadDirective",{extend:"FT.directive.Directive",entity:{},constructor:function(c){var a=this;this.initConfig(c);var b=new Ext.XTemplate('<section class="directive kanban-head-directive">','<div class="kanban-head-directive-wrapper">',"{[this.format.link(values)]}",'<div class="kanban-assign-information">{[FT.i18n("Drop to assign task")]}</div>',"</div>","</section>",{format:{link:function(d){if(d.group&&d.group==="user"){var e=FTrack.grid.UserImageRenderer(d.user,{size:"tiny"});return e+FTrack.grid.UserRenderer(d.user.id)}else{if(d.group&&d.group==="status"){return'<div class="status" style="background:'+d.status.color+';"></div><span>'+FTrack.grid.StatusRendererPrint(d.status.id)+"</span>"}else{if(d.group&&d.group==="priority"){return'<div class="status" style="background:'+d.status.color+';"></div><span>'+FTrack.grid.PriorityRendererPrint(d.status.id)+"</span>"}else{var g=FT.util.getThumbnailUrl(d.owner.thumbId);return'<img src="'+g+'" />'+FTrack.grid.LinkRenderer(d.owner.link)}}}}}});this.tpl=b;return this}});Ext.define("FT.kanban.Store",{extend:"Ext.data.Store",count:function(){var a=0;this.each(function(c,b,d){if(c.get("type")==="kanban_head"){}else{a+=1}});return a}});Ext.define("FT.kanban.AbstractColumn",{extend:"FT.directive.DirectiveDataView",droppable:true,enableDrop:true,enableDrag:true,autoScroll:true,reserveScrollbar:true,preserveScrollOnRefresh:true,loadMask:{floating:{shadow:false}},emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("No tasks")+"</p>",deferEmptyText:false,group:null,overlayCls:"",cls:"kanban-drop-overlay",initComponent:function(){var a=this;this.on("render",this.setupDnD,this);this.callParent(arguments);this.tpl=new Ext.XTemplate('<tpl for=".">',"{[ this.renderDirective(values) ]}","</tpl>",'<div class="ft-kanban-drop-overlay">{[ this.renderMessages() ]}</div>',{renderDirective:function(b){return a.renderRecord(b)},renderMessages:function(){return a.getMsg().join("")},wrapper:{open:function(){return a.store.getTotalCount()>0?'<div class="kanban-drop-overlay">':""},close:function(){return a.store.getTotalCount()>0?"</div>":""}}});this.store.on("add",this.recordAdded,this);this.store.on("remove",this.recordRemoved,this)},afterValidDrop:function(){this.droppedRecord=undefined;log("afterValidDrop not implemented")},afterInvalidDrop:function(){this.droppedRecord=undefined;log("afterInvalidDrop not implemented")},validDropTarget:function(){return Ext.dd.DropZone.prototype.dropAllowed},nodeEnter:function(g,a,d,c){if(this.validDropTarget(g,a,d,c)==="x-dd-drop-ok kanban-drop-proxy"){var b=Ext.fly(g).hasCls("kanban-drop-overlay")?Ext.fly(g):Ext.fly(g).up(".kanban-drop-overlay");if(b){b.addCls(this.overlayCls)}}},nodeOut:function(g,a,d,c){var b=Ext.fly(g).hasCls("kanban-drop-overlay")?Ext.fly(g):Ext.fly(g).up(".kanban-drop-overlay");if(b){b.removeCls(this.overlayCls)}},removeOverlay:function(){var a=this.overlayCls;var b=Ext.fly(Ext.dom.Query.selectNode("div.kanban-drop-overlay."+a));if(b){b.removeCls(a)}},nodeOver:Ext.emptyFn,getMsg:function(){return[]},listeners:{afterrender:function(){var a=this,b=a.getEl();b.ddScrollConfig={vthresh:100,hthresh:-1,frequency:100,increment:200};Ext.dd.ScrollManager.register(b);this.on("destroy",function(){Ext.dd.ScrollManager.unregister(b)})},itemdblclick:function(b,a){var c=a.get("content");FT.app.open(null,{slideEntityId:c.get("entityId"),slideEntityType:"task"})}},recordAdded:Ext.emptyFn,recordRemoved:Ext.emptyFn,setupDnD:function(a){var b=this;if(this.enableDrag){b.dragZone=new Ext.dd.DragZone(b.getEl(),{ddGroup:"kanban_column",proxy:Ext.create("Ext.dd.StatusProxy",{cls:"kanban-drop-proxy"}),setDragElPos:function(e,d){var c=this.getDragEl();this.alignElWithMouse(c,e-this.mouseOffset[0],d-this.mouseOffset[1])},onStartDrag:function(d,g){var c=Ext.fly(b.getNode(b.droppedRecord));if(c){c.addCls("kanban-dragged-item")}return true},getDragData:function(k){var m=k.getTarget(b.itemSelector,10);if(m){b.droppedRecord=b.getRecord(m);var l=b.droppedRecord.get("content"),o=l.draggable||l.get("draggable");if(o===false){b.droppedRecord=undefined;return false}var d=document.createElement("div");if(Ext.fly(m).findParentNode(".kanban-task-card-small")){d.className="kanban-task-card-small"}else{d.className="kanban-task-card-large"}d.appendChild(m.cloneNode(true));d.id=Ext.id();this.proxyEl=d;var n=k.getXY(),c=Ext.get(m),j=c.getXY(),h=[n[0]-j[0]+25,n[1]-j[1]+25];this.mouseOffset=h;var g=Ext.fly(d);g.setWidth(c.getWidth());return{ddel:d,repairXY:Ext.fly(m).getXY(),draggedRecord:b.droppedRecord,state:b.state,store:b.store}}},getRepairXY:function(){return this.dragData.repairXY},afterValidDrop:function(d,c,g){if(b.droppedRecord){b.afterValidDrop(d,c,g)}},afterInvalidDrop:function(g,d,h){if(b.droppedRecord){var c=Ext.fly(b.getNode(b.droppedRecord));if(c){c.removeCls("kanban-dragged-item")}b.afterInvalidDrop(g,d,h)}}})}if(this.enableDrop){b.dropZone=new Ext.dd.DropZone(b.getEl(),{ddGroup:"kanban_column",getTargetFromEvent:function(c){return c.getTarget(b.rowSelector)},onNodeEnter:function(h,c,g,d){b.nodeEnter(h,c,g,d)},onNodeOut:function(h,c,g,d){b.nodeOut(h,c,g,d)},onNodeOver:function(h,c,g,d){return b.validDropTarget(h,c,g,d)},onNodeDrop:function(h,c,g,d){return b.onRecordDrop(h,c,g,d)},notifyOver:function(d,g,c){if(b.notifyOver){b.notifyOver(d,g,c)}},notifyEnter:function(g,j,d){if(b.notifyEnter){b.notifyEnter(g,j,d);return}var h=this.getTargetFromEvent(j);if(h){var c=Ext.fly(h);var k=c&&c.hasCls("kanban-drop-overlay")&&c||c&&c.up(".kanban-drop-overlay");if(k&&b.validDropTarget(k,null,j,d)==="x-dd-drop-ok kanban-drop-proxy"){k.addCls(b.overlayCls);b.lastOverColumn=Ext.get(k)}else{log("Not a valid drop area")}}},notifyOut:function(d,g,c){if(b.notifyOut){b.notifyOut(d,g,c);return}if(b.lastOverColumn){b.lastOverColumn.removeCls(b.overlayCls);b.lastOverColumn=null}}})}}});Ext.define("FT.kanban.UnassignColumn",{overlayCls:"ft-kanban-assign",extend:"FT.kanban.AbstractColumn",getMsg:function(){return['<span class="ft-kanban-assign">',FT.i18n("Drop to unassign"),"</span>"]},onRecordDrop:function(h,m,j,d){var n=this,g=d.draggedRecord,b=g.get("content"),k=b.get("user"),c=b.get("entityId"),a=g.store,l=g.store.indexOf(g);this.removeOverlay();if(n.droppedRecord&&n.droppedRecord.internalId===d.draggedRecord.internalId){return false}g.store.remove(g);Ext.apply(k,{id:null});b.set("user",k);this.direct.updateAssignee({entityId:c,userId:null},function(e,p,o){if(!o){a.insert(l,g);FT.notifyError(FT.i18n("Error when unassigning user"))}else{n.store.addSorted(g);n.refresh();FT.notifySuccess(FT.i18n("All users unassigned"))}});return true},afterValidDrop:function(){this.callParent()},validDropTarget:function(g,a,d,c){var b=this;if(b.droppedRecord&&b.droppedRecord.internalId===c.draggedRecord.internalId){return Ext.dd.DropZone.prototype.dropNotAllowed+" kanban-drop-proxy"}return Ext.dd.DropZone.prototype.dropAllowed+" kanban-drop-proxy"}});Ext.define("FT.kanban.StateAssignColumn",{overlayCls:"ft-kanban-status",extend:"FT.kanban.AbstractColumn",onRecordDrop:function(h,a,g,d){var c=this;if(c.droppedRecord&&c.droppedRecord.internalId===d.draggedRecord.internalId){return false}var b=d.draggedRecord,j=b.store,k=b.store.indexOf(b);b.store.remove(b);this.direct.updateStateAndAssign({entityId:b.get("content").get("entityId"),state:c.state!==d.state?c.state:null,userId:b.get("content")&&b.get("content").get("user")&&b.get("content").get("user").id},function(e,m,n){if(n){var l=b.get("content");if(e.status){l.set("status",e.status)}if(e.user){l.set("user",e.user)}FT.notifySuccess(e.message);c.store.addSorted(b);c.refresh();j.load();c.store.load()}else{j.insert(k,b)}});return true},validDropTarget:function(h,a,g,d){var c=this;if(c.droppedRecord&&c.droppedRecord.internalId===d.draggedRecord.internalId){return Ext.dd.DropZone.prototype.dropNotAllowed+" kanban-drop-proxy"}var b=d.draggedRecord;if(!b.get("content").get("user").id&&c.state!=d.state){this.overlayCls="ft-kanban-claim-status"}else{if(!b.get("content").get("user").id){this.overlayCls="ft-kanban-claim"}else{this.overlayCls="ft-kanban-status"}}return Ext.dd.DropZone.prototype.dropAllowed+" kanban-drop-proxy"},recordAdded:function(){},recordRemoved:function(){}});Ext.define("FT.scrum.StateColumn",{overlayCls:"ft-scrum-state",extend:"FT.kanban.AbstractColumn",validDropTarget:function(h,a,g,d){var c=this;if(c.droppedRecord&&c.droppedRecord.internalId===d.draggedRecord.internalId){return Ext.dd.DropZone.prototype.dropNotAllowed+" kanban-drop-proxy"}var b=d.draggedRecord;if(!b.get("content").get("user").id&&c.state!=d.state){this.overlayCls="ft-kanban-claim-status"}else{this.overlayCls="ft-kanban-status"}return Ext.dd.DropZone.prototype.dropAllowed+" kanban-drop-proxy"},recordAdded:function(){},recordRemoved:function(){},onRecordDrop:function(k,a,j,h){if(this.droppedRecord&&this.droppedRecord.internalId===h.draggedRecord.internalId){return false}var c=h.draggedRecord;var b=[this.store,h.store];var d=c.get("content").get("entityId");var g=this.ids;this.removeOverlay();this.presentStatusSelector(d,g,b);return true},getDirect:function(){return this.direct},presentStatusSelector:function(c,d,a){var b=Ext.create("Ext.data.Store",{fields:["name","color","statusid"],proxy:{type:"direct",directFn:this.getDirect().getValidStatusesFromIdsAndEntity,reader:{root:"data"},extraParams:{ids:d,entityId:c}},sorters:[{property:"sort",direction:"ASC"}],autoLoad:true});var e=Ext.create("FT.ModalWindow",{header:false,modal:true,width:300,autoShow:false,items:[{xtype:"dataview",emptyText:'<span style="padding-left:20px;color:#999;font-style:italic;">'+FT.i18n("No archived projects.")+"</span>",itemSelector:"tr.ft-kanban-status-change",overItemCls:"over-item-cls",autoScroll:true,store:b,tpl:new Ext.XTemplate('<table style="width:100%;border-spacing:0px;">','<tpl for=".">','<tr class="ft-kanban-status-change">','<td style="{[ this.rowStyle(values) ]} font-size:20px;text-align:center;">',"{name}","</td>","</tr>","</tpl>","</table>",{rowStyle:function(g){var j=FT.util.Format.textColorFromColor(g.color);var h="cursor: pointer; height: 75px;";h+="background-color: "+g.color+";";h+="color: "+j+";";return h}}),listeners:{itemclick:function(h,g){this.updateCard(c,g.get("statusid"),function(j,k,l){e.close()},this)},scope:this}}]});e.on("close",function(){this.reloadStores(a)},this);b.on("load",function(g){if(g.getCount()===0){FT.notifyError(FT.i18n("There are no valid statuses for this task and column."));return}else{if(g.getCount()===1){this.updateCard(c,g.first().get("statusid"),function(h,j,k){this.reloadStores(a)},this);return}}e.show()},this)},reloadStores:function(a){Ext.each(a,function(b){b.reload({start:0,limit:this.lastOptions.start+this.lastOptions.limit,addRecords:false})})},updateCard:function(a,c,d,b){this.getDirect().setTaskStatus({entityId:a,statusId:c},Ext.Function.createSequence(Ext.bind(d,b),FT.util.notifyOperationMessage({defaultErrorMessage:FT.i18n("Failed to update status")})))}});Ext.define("FT.scrum.StateColumnAssign",{overlayCls:"ft-scrum-state",extend:"FT.scrum.StateColumn",getMsg:function(){return['<span class="ft-kanban-claim">',FT.i18n("Drop to claim task"),"</span>",'<span class="ft-kanban-status">',FT.i18n("Drop to change status"),"</span>",'<span class="ft-kanban-claim-status">',FT.i18n("Drop to claim task and change status"),"</span>"]},validDropTarget:function(h,a,g,d){var c=this;if(c.droppedRecord&&c.droppedRecord.internalId===d.draggedRecord.internalId){return Ext.dd.DropZone.prototype.dropNotAllowed+" kanban-drop-proxy"}var b=d.draggedRecord;if(!b.get("content").get("user").id&&c.state!=d.state){this.overlayCls="ft-kanban-claim-status"}else{if(!b.get("content").get("user").id){this.overlayCls="ft-kanban-claim"}else{this.overlayCls="ft-kanban-status"}}return Ext.dd.DropZone.prototype.dropAllowed+" kanban-drop-proxy"},updateCard:function(a,c,d,b){this.getDirect().setTaskStatus({entityId:a,statusId:c,isAssign:true},Ext.Function.createSequence(Ext.bind(d,b),FT.util.notifyOperationMessage({defaultErrorMessage:FT.i18n("Failed to update status")})));FT.util.intercom("CHANGED-STATUS-IN-MY-TASKS")}});Ext.define("FT.kanban.Configure",{overlayCls:"ft-kanban-status",extend:"FT.kanban.AbstractColumn",alias:"widget.kanban_configurecolumn",emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("No statuses")+"</p>",getMsg:function(){return['<span class="ft-kanban-status">',FT.i18n("Drop to set status"),"</span>"]},validDropTarget:function(h,a,g,d){var c=this;if(c.droppedRecord&&c.droppedRecord.internalId===d.draggedRecord.internalId){return Ext.dd.DropZone.prototype.dropNotAllowed+" kanban-drop-proxy"}var b=d.draggedRecord;return Ext.dd.DropZone.prototype.dropAllowed+" kanban-drop-proxy"},recordAdded:function(){},recordRemoved:function(){},onRecordDrop:function(g,k,h,c){var l=this;if(l.droppedRecord&&l.droppedRecord.internalId===c.draggedRecord.internalId){return false}var d=c.draggedRecord,a=d.store,j=d.store.indexOf(d);d.store.remove(d);var b=d.get("content").get("entityId");this.store.add(d);this.removeOverlay();return true}});Ext.define("FT.kanban.ResourceColumn",{overlayCls:"ft-kanban-assign",extend:"FT.kanban.AbstractColumn",getRecordLength:function(a){var b=0;Ext.Array.each(a,function(c){if(c.get("type")==="kanban_head"){b+=1}});return b},onRecordDrop:function(n,q,o,h){var t=this,c=o.getTarget(".directive"),b=c&&t.getRecord(c),m=b&&b.get("content").get("user").id;if(!m||!t._validDropTarget(n,o,h)){return false}var j=h.draggedRecord,k,a=h.store,p=a.indexOf(j);if(j.store){j.store.remove(j)}var d=j.get("content"),s=d.get("user"),g=d.get("entityId"),l=s.id;Ext.apply(s,{id:m});d.set("user",s);this.direct.updateAssignee({entityId:g,userId:m},function(u,x,w){if(!w){a.insert(p,j)}else{var e=t.store.findBy(function(y,z){if(y.get("content").get("user").id===m&&y.get("type")==="kanban_head"){return true}});t.store.insert(e+1,j);t.store.each(function(A,y,z){if(A.get("type")==="kanban_empty"&&A.get("content").get("user").id===m){k=A;return false}});if(k){t.store.remove(k)}t.refresh();t.userId=l;FT.notifySuccess(FT.i18n("User assigned"));FT.util.intercom("ASSIGNED-WITH-TEAMBOARD")}});return true},afterValidDrop:function(c,b,d){var a=this;a.droppedRecord=undefined},validDropTarget:function(j,h,d){var b=this;if(j===this.prevTarget){return}else{this.prevTarget=j}var a=b._validDropTarget(j,h,d);if(a&&a!==this.prevRecord){var g=b.store.findBy(function(k,e){if(k.get("type")==="kanban_head"&&k.get("content").get("user").id===a.get("content").get("user").id){return true}});g=g===-1?undefined:b.store.getAt(g);if(this.prevHeadRecord){var c=Ext.fly(b.getNode(this.prevHeadRecord));if(c){c.removeCls("kanban-head-hover")}}if(g){Ext.fly(b.getNode(g)).addCls("kanban-head-hover")}this.prevHeadRecord=g}},_validDropTarget:function(g,h,d){var l=this,k,b,j,a;k=h.getTarget(".directive");if(!k){return false}a=l.getRecord(k);if(!a){return false}if(l.droppedRecord&&l.droppedRecord.internalId===d.draggedRecord.internalId){b=d.draggedRecord.get("content").get("user").id;j=d.draggedRecord.get("content").get("entityId");if(a){var c=a.get("content").get("user").id;if(c===b){return false}}}return a},notifyOver:function(c,b,a){var d=b.getTarget(".directive");this.validDropTarget(d,b,a)},notifyEnter:function(c,b,a){},notifyOut:function(d,c,b){this.prevHeadRecord=undefined;var a=Ext.dom.Query.select(".kanban-head-hover");Ext.Array.each(a,function(h,e,g){Ext.fly(h).removeCls("kanban-head-hover")})},recordRemoved:function(c,a,d){var b=this,h=0,g=a.get("content").get("user").id,e;c.each(function(l,j,k){if(l.get("content").get("user").id===g){if(!e){e=j}h=h+1}});if(h===1){log("Add empty record since all other tasks are gone...")}}});Ext.define("FT.kanban.PanelView",{extend:"Ext.Panel",alias:"widget.kanban_panelview",statefulId:null,initComponent:function(){var a=this.beforeItems||[];if(this.cls){this.cls+=" kanban-panel-view"}else{this.cls="kanban-panel-view"}if(this.statefulId!==null){this.collapsed=FT.getVar("sc-collapse-"+this.statefulId,this.collapsed)}if(this.sorterGroup){this.sorter=FT.SorterFactory.create(this.sorterGroup,{stateful:this.statefulId});this.sorter.bindStore(this.column.getStore());a=Ext.Array.merge(a,this.sorter.getItems())}if(this.filterGroup){this.filter=FT.FilterFactory.create(this.filterGroup,{stateful:this.statefulId});this.filter.bindStore(this.column.getStore());a=Ext.Array.merge(a,this.filter.getItems())}else{if(this.filter){this.filter.bindStore(this.column.getStore());a=Ext.Array.merge(a,this.filter.getItems())}}if(this.groupGroup){this.grouper=FT.SorterFactory.create(this.groupGroup,{filterParam:"metagroupers",stateful:this.statefulId});this.grouper.bindStore(this.column.getStore());a=Ext.Array.merge(a,this.grouper.getItems())}if(this.afterItems){a=Ext.Array.merge(a,this.afterItems)}if(!this.tbar){this.tbar={defaultButtonUI:"plain-toolbar",cls:"background-default",items:a,enableOverflow:true}}this.items=[this.column];if(this.morePager){this.bbar={defaultButtonUI:"plain-toolbar",cls:"background-default",items:[this.morePager]}}this.callParent(arguments);if(this.statefulId!==null){this.on("beforecollapse",function(){FT.setVar("sc-collapse-"+this.statefulId,true);this.toggeling=true},this);this.on("beforeexpand",function(){FT.setVar("sc-collapse-"+this.statefulId,false);this.toggeling=true},this);this.on("resize",function(){if(this.toggeling){log("Refresh the layout");this.toggeling=false}},this)}}});Ext.define("RAW.PeopleView",{layout:{type:"hbox",align:"stretch"},alias:"widget.widget_people_view",extend:"RAW.BaseWidget",header:false,initComponent:function(b){this.bbar=Ext.create("Ext.toolbar.Toolbar",{dock:"bottom",cls:"background-default",items:FT.Kanban.TasksBoard.getCardSizeItems(this,"widget_people_view")});this.callParent(arguments);this.addCls(FT.Kanban.TasksBoard.getCardSizeCls("widget_people_view"));var j=this.getEntity();var h=Ext.create("FT.kanban.Store",{model:"FT.directive.CompositeModel",autoLoad:true,pageSize:20,proxy:{type:"direct",directFn:this.getDirect("Kanban").notAssigned,extraParams:{entityId:j.entityId,entityType:j.entityType}}}),l=Ext.create("FT.directive.DirectiveMorePager",{store:h,params:j}),n=Ext.create("Ext.data.Store",{model:"FT.directive.CompositeModel",autoLoad:true,proxy:{type:"direct",directFn:this.getDirect("Kanban").resources,extraParams:{entityId:j.entityId,entityType:j.entityType}}});var m=Ext.create("FT.directive.kanban.TaskDirective"),k=Ext.create("FT.directive.kanban.EmptyDirective"),a=Ext.create("FT.directive.kanban.HeadDirective"),d=Ext.create("FT.directive.kanban.ExpandDirective");var g=FT.FilterFactory.create("people_unassigned");var c=FT.FilterFactory.create("people_resources");var e=[Ext.create("FT.kanban.PanelView",{layout:"fit",column:Ext.create("FT.kanban.UnassignColumn",{store:h,infiniteScroll:true,enableDrop:true,directives:{kanban_task:m,kanban_empty:k,kanban_head:a},direct:this.getDirect("Kanban")}),title:FT.i18n("Tasks not assigned"),flex:0.5,sorterGroup:"people_unassigned",groupGroup:"people_unassigned_group",filter:g,statefulId:"pw-ua"}),Ext.create("FT.kanban.PanelView",{layout:"fit",column:Ext.create("FT.kanban.ResourceColumn",{store:n,enableDrag:true,infiniteScroll:true,directives:{kanban_task:m,kanban_empty:k,kanban_head:a,kanban_expand:d},direct:this.getDirect("Kanban")}),title:FT.i18n("Resources"),flex:0.5,statefulId:"pw-r",filter:c})];this.store=Ext.create("FT.data.MultiStoreInterface",{stores:[n,h]});this.add(e)},updateWidget:function(){this.store.loadEntity(this.getEntity())}});Ext.define("FT.kanban.MyTasksBoard",{extend:"RAW.BaseWidget",alias:"widget.widget_my_tasks_kanban",header:false,layout:"fit",initWidget:function(){this.filters=FT.FilterFactory.create("kanban_global_filter");this.filters.on("filterschanged",this._handleFilterChanged,this);this.createTaskBoard();this.add(this.taskBoard);this.addTaskBoardToolbar();this.callParent(arguments)},updateWidget:function(){this.callParent(arguments);this.loadData()},loadData:function(){Ext.each(this.taskBoard.store.stores,function(a){a.reload({start:0,limit:this.lastOptions.start+this.lastOptions.limit,addRecords:false})})},createTaskBoard:function(){this.taskBoard=FT.Kanban.TasksBoard.create("my_tasks",{pushToken:this.pushToken});this.addCls(FT.Kanban.TasksBoard.getCardSizeCls("my_tasks"))},addTaskBoardToolbar:function(){var a=[this.getTaskboardCardButton("small"),this.getTaskboardCardButton("large")];Ext.each(this.filters.getItems(),function(b){b.ui="plain";a.push(b)});this.taskBoardToolbar=Ext.create("Ext.toolbar.Toolbar",{dock:"top",items:a});this.addDocked(this.taskBoardToolbar)},getTaskboardCardButton:function(b){var c=FT.Kanban.TasksBoard.getCardSizeId("my_tasks");var a=FT.Kanban.TasksBoard.getCardSizeButtonConfig(c,b,Ext.bind(function(){FT.Kanban.TasksBoard.setCardSize(this,c,b);FT.setVar("my_tasks",0)},this));return a},_handleFilterChanged:function(a){Ext.each(this.taskBoard.store.stores,function(b){Ext.apply(b.getProxy().extraParams,{metafilters:a.getFilterData()});b.reload({start:0,addRecords:false})})}});Ext.ns("FT.Kanban.TasksBoard");FT.Kanban.TasksBoard.getCardSizeItems=function(b,a){var c=FT.Kanban.TasksBoard.getCardSizeId(a);return["->",FT.Kanban.TasksBoard.getCardSizeButtonConfig(c,"small",function(){FT.Kanban.TasksBoard.setCardSize(b,c,"small")}),FT.Kanban.TasksBoard.getCardSizeButtonConfig(c,"large",function(){FT.Kanban.TasksBoard.setCardSize(b,c,"large")})]};FT.Kanban.TasksBoard.setCardSize=function(a,e,b){var d="kanban-task-card-small",c="kanban-task-card-large";FT.setVar(e,b);if(b==="small"){a.removeCls(c).addCls(d);if(Ext.isFunction(a.updateWidget)){a.updateWidget()}}else{a.removeCls(d).addCls(c)}};FT.Kanban.TasksBoard.getCardSizeButtonConfig=function(g,a,c){var b=FT.getVar(g,"large"),d=a+"cards",e=FT.i18n("Show {size, select, small {small} large {large}} task cards in task board",{values:{size:a}});return{glyph:FT.glyph(d),cls:"button-card",toggleGroup:g,enableToggle:true,allowDepress:false,tooltip:e,pressed:b===a,handler:c}};FT.Kanban.TasksBoard.getCardSizeId=function(a){return"kanban-task-card-size-"+a};FT.Kanban.TasksBoard.getCardSize=function(a){var c=FT.Kanban.TasksBoard.getCardSizeId(a),b=FT.getVar(c,"large");return b};FT.Kanban.TasksBoard.getCardSizeCls=function(a){return"kanban-task-card-"+FT.Kanban.TasksBoard.getCardSize(a)};FT.Kanban.TasksBoard.create=function(b,a){var g=Ext.create("Ext.Container",{cls:a.cls,layout:{type:"hbox",align:"stretch"},autoScroll:true,getStore:function(){return this.store},cardGlyph:FT.glyph("largerow")});var e=FT.getApi("Kanban",a.pushToken);var d=Ext.create("FT.scrum.TaskBoard",{board:g,direct:e,pushToken:a.pushToken});g.store=d.getStore();e.getMyTasksColumns(function(c,h,j){if(j){d.createColumns(c.columns);d.loadEntity({entityId:FT.Settings.get("currentuser","userid"),entityType:"user"})}},this);return g};Ext.define("FT.kanban.KanbanConfigureDropTarget",{extend:"Ext.dd.DropTarget",constructor:function(b,a){this.panel=b;Ext.dd.ScrollManager.register(b.body);Ext.app.PortalDropZone.superclass.constructor.call(this,b.body,a);b.body.ddScrollConfig=this.ddScrollConfig},removeCls:function(){this.panel.items.each(function(b,a){b.removeCls("taskboardconfig-over").addCls("taskboardconfig")})},isValidDrop:function(j,g){var c=Ext.get(j.getTarget(".kanban-panel-view"));if(!Ext.isDefined(c)||c===null){return false}var d=Ext.getCmp(c.id);var m=j.getXY();var k=m[0];if(d==g.column){return false}var l=g.column.getWidth()/2;var b=g.column.getEl().getX()-l;var a=g.column.getEl().getX()+l*3;if(k>b&&k<a){return false}var h=this.panel.items.indexOf(d);if(h===0){return false}if(k<d.getEl().getX()+l){this.currentIndex=h}else{this.currentIndex=h+1}return true},notifyOver:function(a,c,b){this.removeCls();if(!this.isValidDrop(c,b)){return Ext.dd.DropZone.prototype.dropNotAllowed}this.panel.items.getAt(this.currentIndex-1).removeCls("taskboardconfig").addCls("taskboardconfig-over");return Ext.dd.DropZone.prototype.dropAllowed},notifyDrop:function(a,c,b){this.removeCls();if(!this.isValidDrop(c,b)){return}this.panel.remove(b.column,false);this.panel.insert(this.currentIndex,b.column)}});Ext.define("FT.kanban.KanbanConfigure",{extend:"FT.ModalWindow",autoShow:true,cls:"ftrack-remove-window x-unselectable",width:830,height:500,bodyPadding:"10 15 15 15",closable:false,modal:true,boardName:null,initComponent:function(){assert(this.boardName!==null);this.layout={type:"hbox",align:"stretch"};this.autoScroll=true;this.addEvents("itemremoved");this.tbar=Ext.create("Ext.toolbar.Toolbar",{padding:"0 8 5 0",style:"background:transparent;border-bottom-width:0!important;",items:["->",{xtype:"button",text:FT.i18n("Add column"),handler:function(){this.addColumn()},scope:this}]});this.bbar=Ext.create("Ext.toolbar.Toolbar",{items:["->",{xtype:"button",text:FT.i18n("Cancel"),style:"margin-right:10px;",handler:function(){this.close()},scope:this},{xtype:"button",cls:"button-primary",text:FT.i18n("Save"),handler:this.save,scope:this}]});var a=this;this.direct=FT.getApi("KanbanConfigure");this.scrumBoard=Ext.create("FT.scrum.TaskBoard",{board:this,direct:this.direct,columnMinWidth:200,pageSize:0,getColumnCfg:function(d){if(d.extraParams.statusids=="unmapped"){return{bodyPadding:"5 3",columnId:"unmapped",header:false,bodyCls:"panel",tbar:{items:[{xtype:"component",html:d.name}],height:50}}}var b=Ext.create("Ext.form.field.Text",{xtype:"textfield",name:"name",value:d.name,selectOnFocus:true,flex:1,listeners:{afterrender:function(c){if(d.name=="New column"){c.focus(true,10)}}}});return{header:false,bodyPadding:"5 3",tbar:{items:[b,{xtype:"image",cls:"kanban-configure-column ft-move-cursor",glyph:FT.glyph("move"),qtip:FT.i18n("Move by dragging horizontally")},{xtype:"button",glyph:FT.glyph("remove"),ui:"plain",qtip:FT.i18n("Remove"),cls:"ft-kanban-column-remove",handler:function(c){Ext.create("FT.ConfirmDialog",{autoShow:true,modal:true,msg:'Are you sure you want to remove the column "'+b.getValue()+'"?',actionHandler:Ext.bind(this.removeColumn,this,[c])})},scope:a}],height:50}}}});this.on("afterrender",function(){var b=new Ext.dd.DragZone(this.getEl(),{panel:this,proxy:Ext.create("Ext.dd.StatusProxy",{cls:"kanban-drop-proxy-column"}),setDragElPos:function(e,d){var c=this.getDragEl();this.alignElWithMouse(c,e-this.mouseOffset[0],d-this.mouseOffset[1])},getDragData:function(m){var n=m.getTarget(".kanban-configure-column"),d;if(n===null){return}var o=m.getTarget(".kanban-panel-view",10);var g=Ext.get(m.getTarget(".kanban-panel-view"));if(!Ext.isDefined(g)||g===null){return}var l=Ext.getCmp(g.id);if(this.panel.items.indexOf(l)===0){return}if(o){d=o.cloneNode(true);d.id=Ext.id();d.style.left=0;d.style.top=0;this.proxyEl=d;var p=m.getXY(),c=Ext.get(n),k=c.getXY(),j=k;this.mouseOffset=[165,40];var h=Ext.fly(d);h.setWidth(g.getWidth());return{ddel:d,repairXY:Ext.fly(g).getXY(),column:l}}},getRepairXY:function(){return this.dragData.repairXY}})},this);this.callParent(arguments);this.createColumns()},addColumn:function(){this.scrumBoard.createColumns([{extraParams:{setting:null,statusids:null},name:FT.i18n("New column"),column:"FT.kanban.Configure",method:"getMyTasksStatuses"}],false)},removeColumn:function(b,g){var c=b.up("kanban_panelview");var a=c.items.first().store;var d=this.scrumBoard.columns[0].items.first().store;a.each(function(e){d.add(e)});a.removeAll();this.remove(c)},createColumns:function(){this.direct.getColumns(this.boardName,function(a,b,c){if(c){this.scrumBoard.createColumns(a.columns);this.scrumBoard.loadEntity({entityId:"",entityType:"user"})}},this)},save:function(){var a=[];this.items.each(function(e){if(e.isVisible()===false){return true}if(e.columnId=="unmapped"){return true}var d={ids:[]};e.items.first().store.each(function(c){d.ids.push(c.get("content").get("entityId"))},this);var b=e.down("textfield");d.name=b.getValue();a.push(d)},this);this.direct.saveColumns(this.boardName,a,function(){FT.notifySuccess(FT.i18n("Columns were saved."));if(this.callback){this.callback()}this.close()},this)},initEvents:function(){this.callParent();this.dd=Ext.create("FT.kanban.KanbanConfigureDropTarget",this,{})}});Ext.define("FT.model.ReviewSession",{extend:"Ext.data.Model",fields:["id","name","description",{name:"start",type:"date",dateFormat:"c",defaultValue:null},{name:"end",type:"date",dateFormat:"c",defaultValue:null}],validations:[{type:"presence",field:"name"},{type:"presence",field:"start"},{type:"presence",field:"end"}],proxy:{type:"direct",api:{create:"FTApi.ReviewSession.create",read:"FTApi.ReviewSession.get",update:"FTApi.ReviewSession.update","delete":"FTApi.ReviewSession.delete"},reader:{type:"json",root:"data"},writer:{writeAllFields:false}},_validateDates:function(){var a=[];if(this.get("start")>this.get("end")){a.push({field:"start",message:"The scheduled start date and time must be before the end date and time."});a.push({field:"end",message:"The scheduled end date and time must be after the start date and time."})}return a},validate:function(){var a=this.callParent(arguments);if(!this.isPhantom||this.get("end")||this.get("start")){a.addAll(this._validateDates())}return a}});Ext.define("FT.model.Group",{extend:"Ext.data.Model",proxy:{type:"direct",api:{read:"FTApi.Group.query",create:"FTApi.Group.create",update:"FTApi.Group.update"},reader:{root:"data"},writer:{writeAllFields:false}}});Ext.define("FT.timelogging.FavoriteGrouping",{extend:"Ext.grid.feature.Grouping",alias:"feature.favoritegrouping",groupHeaderTpl:"Favorites",collapsible:false,enableGroupingMenu:false,setupRowData:function(b,a,c){this.callParent(arguments);if(b.get("favorite")===false){c.isFirstRow=false}}});Ext.define("FT.timelogging.TimesheetWeekView",{extend:"Ext.grid.Panel",cls:"timesheet-week-view",sortableColumns:false,disableSelection:true,enableColumnMove:false,enableDaySummary:true,enableRowSummary:true,initComponent:function(){this.store={autoLoad:false,fields:[],groupField:"favorite",proxy:{type:"direct",api:{read:"FTApi.Timelog.getTimesheetWeek",update:"FTApi.Timelog.updateTimesheetWeekRow",destroy:Ext.emptyFn},reader:{root:"rows"},writer:{writeAllFields:false}},autoSync:true};this.columns=[];this.viewConfig={trackOver:false,stripeRows:false};this.features=[{ftype:"favoritegrouping"}];if(this.enableDaySummary){this.features.push({ftype:"summary"})}this.cellEditing=Ext.create("Ext.grid.plugin.CellEditing",{clicksToEdit:1});this.plugins=[this.cellEditing];this.callParent();this.store.on("metachange",this._onMetaChange,this);this.setDate(new Date);this.cellEditing.on("beforeedit",function(a,b){if(b.column.blockRefreshOnEdit===true){this.getView().blockRefresh=true}},this);this.cellEditing.on("edit",function(){this.getView().blockRefresh=false;FT.util.intercom("USED-TIMESHEET")},this)},setDate:function(a){this.store.load({params:{date:moment(a).format("YYYY-MM-DD")}})},_onMetaChange:function(a,c){var b=this._getColumns(c.dateColumns);this.reconfigure(a,b)},_getColumns:function(c){var d=[],a=[],b;a.push({dataIndex:"name",width:300,text:"",menuDisabled:true,summaryType:"sum",summaryRenderer:function(h,e,g){return"Total"},renderer:this._linkRenderer});Ext.each(c,function(k){var h=moment(k.date),g=moment().startOf("day"),e="",j=h.isSame(g);d.push(k.dataIndex);if(j){e="ft-timesheet-today-column"}a.push({blockRefreshOnEdit:true,width:90,cls:e,tdCls:e,dataIndex:k.dataIndex,text:Ext.Date.format(h.toDate(),"D, M d"),renderer:function(m,n,l){n.tdCls="ft-timesheet-cell text-faded";return FTrack.grid.DurationRenderer(m)},summaryType:"sum",summaryRenderer:function(o,l,m){var n=FT.Settings.get("TIME","workday_length");if(j){l.tdCls+=" ft-timesheet-today-column"}if(Ext.isNumber(o)&&o>n){l.tdCls=" ft-timesheet-summary-over"}else{l.tdCls=" ft-timesheet-summary"}return FTrack.grid.DurationRenderer(o)},editor:{xtype:"ft-duration-field",selectOnFocus:true},resizable:false,menuDisabled:true})});if(this.enableRowSummary){b=function(j,h,e){var g=0;Ext.iterate(e.data,function(k,l){if(d.indexOf(k)!==-1){g+=l}});return FTrack.grid.DurationRenderer(g)};a.push({dataIndex:"summary",text:FT.i18n("Total"),summaryType:"sum",summaryRenderer:b,renderer:b,menuDisabled:true})}a.push({xtype:"glyphactioncolumn",iconCls:"timesheet-week-view__actionicon",minWidth:100,flex:1,menuDisabled:true,items:[{glyph:"star-outline",handler:function(h,j,g){var e=h.getStore().getAt(j);e.set("favorite",!e.get("favorite"))}},{glyph:"timer",handler:this._startTimer}]});return a},_startTimer:function(b,d){var a=b.getStore().getAt(d),c={user_id:FT.Settings.get("currentuser","userid"),context_id:a.get("id"),start:new Date};FTApi.Timer.start(c,function(e){if(e.success===true){FT.notifySuccess(FT.i18n("Timer started"));FT.util.intercom("STARTED-TIMER")}else{FT.notifyError(FT.i18n("Failed to start timer"))}})},_linkRenderer:function(e,d,a){var b,c,g;b=["<div>",'<div class="entity-link">{0}</div>','<div class="entity-path">{1}</div>',"</div>"].join("");c=function(h){var j=h.link||[];if(j.length>0){return FTrack.grid.SimpleLinkRenderer(j.slice(-1))}else{return h.name||""}};g=function(h){var j=h.link||[];if(j.length>1){return FTrack.grid.LinkRenderer(j.slice(0,-1))}else{return"&nbsp;"}};return Ext.String.format(b,c(a.data),g(a.data))}});Ext.define("FT.timelogging.TimelogDirective",{extend:"FT.directive.Directive",enableActions:true,enableUserLink:false,enableContextLink:true,enableEditDuration:true,constructor:function(a){var b=this;this.tpl=new Ext.XTemplate('<div class="directive ft-timelog-directive">','<tpl if="this.isActionsEnabled()">','<div class="ft-timelogslist-actions pull-right actionicon">','<span class="ft-timelogslist-remove" data-qtip="{[FT.i18n("Remove timelog")]}">','{[FT.glyphIcon("remove")]}',"</span> ",'<span class="ft-timelogslist-play" data-qtip="{[FT.i18n("Start timer")]}">','{[FT.glyphIcon("timer")]}',"</span>","</div>","</tpl>",'<div class="ft-timelogslist-time {[this.isEditDurationEnabled() ? "pointer" : ""]} " style="padding-left: 30px">',"<div>{[this.renderDuration(values.duration)]}</div>",'<div class="text-faded">{[this.renderTime(values)]}</div>',"</div>",'<tpl if="this.isContextLinkEnabled()">',"<div>",'<div class="entity-link">{[this.renderName(values)]}</div>','<div class="entity-path">{[this.renderLink(values)]}</div>',"</div>","</tpl>",'<tpl if="this.isUserLinkEnabled()">',"<div>","{[this.renderUserImage(values.user_id)]} ",'<span class="userrenderer--inline-small">{[FTrack.grid.UserRendererDefault(values.user_id)]}</span>',"</div>","</tpl>","</div>",{isActionsEnabled:function(){return b.enableActions},isUserLinkEnabled:function(){return b.enableUserLink},isContextLinkEnabled:function(){return b.enableContextLink},isEditDurationEnabled:function(){return b.enableEditDuration},renderUserImage:function(c){return FTrack.grid.UserImageRendererSmall({id:c})},renderDuration:function(d){var c=moment.duration(d,"seconds");return c.format("H:mm:ss",{trim:false})},renderTime:function(d){var g=d.duration,h=moment(d.start),c=moment(d.start).add(g,"seconds"),e="HH:mm";return Ext.String.format("{0} - {1}",h.format(e),c.format(e))},renderLink:function(c){var d=c.link||[];if(c.name&&c.context_id){return FTrack.grid.LinkRenderer(d.slice(0,-1))}else{if(c.context_id&&d.length>2){return FTrack.grid.LinkRenderer(d.slice(0,-2))}else{if(d.length>1){return FTrack.grid.LinkRenderer(d.slice(0,-1))}else{return"&nbsp;"}}}},renderName:function(c){var d=c.link||[];if(c.name){return c.name}else{if(c.context_id&&d.length>2){return FTrack.grid.LinkRenderer(d.slice(-2,-1))}else{if(d.length>1){return FTrack.grid.LinkRenderer(d.slice(0,-1))}else{return"&nbsp;"}}}}});this.callParent(arguments);return this},events:[{handler:function(b,a,g,c,j,d){var h={user_id:a.get("user_id"),context_id:a.get("context_id"),start:new Date};FTApi.Timer.start(h,function(e){if(e.success===true){FT.notifySuccess(FT.i18n("Timer started"));a.store.loadPage(1);FT.util.intercom("STARTED-TIMER")}else{var k=e&&e.message||"Failed to start timer";FT.notifyError(k)}});j.preventDefault()},selector:".ft-timelogslist-play",event:"click"},{handler:function(b,a,h,d,j,g){var c=a.store;this.fadeOut(h,function(){c.remove(a);c.sync({callback:function(k){var e=k.operations[0].response;if(e&&e.data&&e.data.success){FT.notifySuccess(FT.i18n("Timelog removed"))}else{FT.notifyError(FT.i18n("Failed to remove timelog"));c.reload()}}})});j.preventDefault()},selector:".ft-timelogslist-remove",event:"click"},{selector:".ft-timelogslist-time",event:"click",handler:function(b,a,g,c,k,d){if(this.enableEditDuration===false){return}var j=Ext.create("Ext.Editor",{autoSize:{width:"boundEl"},field:{xtype:"ft-timer-field"}});var h=a.getData();j.startEdit(k.target,{timeRange:Ext.create("FT.timelogging.TimeRange",{start:(new moment(h.start)).toDate(),duration:h.duration}),comment:h.comment});j.on("complete",function(e,l){a.set({start:l.timeRange.getStart(),duration:l.timeRange.getDuration(),comment:l.comment});a.store.sync();e.destroy()},this);j.on("canceledit",function(e){e.destroy()});j.mon(b.getEl(),"scroll",function(){j.cancelEdit()},this,{single:true});k.preventDefault()}}]});Ext.define("FT.timelogging.TimelogsList",{extend:"FT.directive.DirectiveDataView",deferEmptyText:false,emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("No time logged yet.")+"</p>",disableSelection:true,autoScroll:true,infiniteScroll:true,preserveScrollOnRefresh:true,loadMask:false,criteria:null,enableActions:true,enableUserLink:false,enableContextLink:true,enableEditDuration:true,initComponent:function(){this.directives={timelog:Ext.create("FT.timelogging.TimelogDirective",{enableActions:this.enableActions,enableUserLink:this.enableUserLink,enableContextLink:this.enableContextLink,enableEditDuration:this.enableEditDuration})};if(this.criteria===null){this.criteria={user_id:FT.Settings.get("currentuser","userid")}}this.store=Ext.create("Ext.data.Store",{proxy:{type:"direct",api:{create:"FTApi.Timelog.create",read:"FTApi.Timelog.query",update:"FTApi.Timelog.update",destroy:"FTApi.Timelog.delete"},reader:{root:"data"},writer:{writeAllFields:false},extraParams:{criteria:this.criteria,order:[["start","descending"]]}},autoLoad:true});this.callParent()},renderBeforeTpl:function(a,c,h){var j=moment(a.start).startOf("day"),b="",g=null,e=this.store.getAt(c-2);if(e){g=moment(e.get("start")).startOf("day")}if(g===null||j<g){var d=FT.util.Format.day(j);b=Ext.String.format('<h4 class="timelogslist-header border-bottom">{0}</h4>',d)}return b}});Ext.define("FT.timelogging.Timer",{singleton:true,mixins:{observable:"Ext.util.Observable"},config:{interval:100,elapsed:0},constructor:function(a){this.mixins.observable.constructor.call(this,a);this.addEvents("started","stopped","tick");this._tick=null;this._timer=Ext.TaskManager.newTask({run:Ext.Function.bind(this.tick,this),interval:this.interval});this.on("stopped",function(){FT.util.intercom("STOPPED-TIMER")})},start:function(){if(this.isRunning()){return}this._tick=(new Date).getTime();this._timer.start();this.fireEvent("started")},stop:function(){if(!this.isRunning()){return}this._timer.stop();this.tick();this._tick=null;this.fireEvent("stopped")},toggle:function(){if(this.isRunning()){this.stop()}else{this.start()}},isRunning:function(){return this._timer.stopped===false},reset:function(){this.stop();this.elapsed=0;this.fireEvent("tick",this.elapsed)},tick:function(){var a=(new Date).getTime();this.elapsed+=(a-this._tick)/1000;this._tick=a;this.fireEvent("tick",this.elapsed)}});Ext.define("FT.timelogging.TimeRange",{constructor:function(a){var a=a||{};this._start=new Date;this._duration=0;this._end=this._start;if(Ext.isDefined(a.start)&&Ext.isDefined(a.end)){this.setStart(Ext.clone(a.start));this.setEnd(Ext.clone(a.end))}else{if(Ext.isDefined(a.start)&&Ext.isDefined(a.duration)){this.setStart(Ext.clone(a.start));this.setDuration(a.duration)}else{if(Ext.isDefined(a.end)&&Ext.isDefined(a.duration)){this.setEnd(Ext.clone(a.end));this.setDuration(a.duration,"start")}else{if(Ext.isDefined(a.start)){this.setStart(Ext.clone(a.start))}if(Ext.isDefined(a.end)){this.setEnd(Ext.clone(a.end))}if(Ext.isDefined(a.duration)){this.setDuration(a.duration)}}}}},get:function(a){switch(a){case"start":return this.getStart();case"duration":return this.getDuration();case"end":return this.getEnd();default:throw new Error("Missing key: "+a)}},set:function(a,b,c){switch(a){case"start":return this.setStart(b,c);case"duration":return this.setDuration(b,c);case"end":return this.setEnd(b,c);default:throw new Error("Missing key: "+a)}},getStart:function(){return this._start},setStart:function(b,a){var a=a||"duration";this._start=b;if(a==="duration"){this._updateDuration()}else{this._updateEnd()}},getEnd:function(){return this._end},setEnd:function(a,b){var b=b||"duration";this._end=a;if(b==="duration"){this._updateDuration()}else{this._updateStart()}},getDuration:function(){return this._duration},setDuration:function(a,b){var b=b||"end";this._duration=a;if(b==="start"){this._updateStart()}else{this._updateEnd()}},_updateStart:function(){if(!this._end){this._start=null}else{this._start=(new moment(this._end)).subtract(this._duration,"seconds").toDate()}},_updateEnd:function(){if(!this._start){this._end=null}else{this._end=(new moment(this._start)).add(this._duration,"seconds").toDate()}},_updateDuration:function(){if(!this._start||!this._end){this._duration=0}else{this._duration=(new moment(this._end)).diff(this._start,"seconds")}}});Ext.define("FT.form.field.DurationField",{extend:"Ext.form.field.Text",cls:"ft-duration-field",alias:"widget.ft-duration-field",value:0,valueToRaw:function(a){if(a){a=FT.timelogging.Duration.format(a)}return this.callParent([a])},rawToValue:function(c){var b;try{b=FT.timelogging.Duration.parse(c)}catch(a){b=null}return this.callParent([b])},getErrors:function(b){var c=this.callParent([b]);try{b=FT.timelogging.Duration.parse(b)}catch(a){c.push("Invalid duration.")}return c}});Ext.define("FT.timelogging.CalendarDateField",{extend:"Ext.picker.Date",alias:"widget.ft-calendar-date-field",mixins:{field:"Ext.form.field.Field"},hideOnSelect:false,focusOnShow:false,floating:false,focusOnToFront:false,initComponent:function(){this.startDay=Ext.Number.from(FT.Settings.get("TIME","week_startday"),0);this.callParent(arguments);this.initField();this.on("select",function(b,a){this.setValue(a)},this)},setValue:function(a){this.doCancelFocus=true;this.callParent([a]);delete this.doCancelFocus;this.checkChange();return this}});Ext.define("FT.timelogging.TimeField",{extend:"Ext.form.field.Text",alias:"widget.ft-time-field",value:"",regex:/^(\d+)(:(\d\d))?\s*((a|(p))m?)?$/i,date:"2008-01-01",initComponent:function(){this.callParent(arguments);this.on("blur",function(){this.setValue(this.getValue())},this)},parse:function(d){if(d==""){return null}var c=d.match(this.regex);if(c==null){throw new Error("Failed to parse time "+d)}var a=parseInt(c[1],10);if(a==12&&!c[6]){a=12}else{a+=a<12&&c[6]?12:0}var b=new Date(this.date);b.setHours(a);b.setMinutes(parseInt(c[3],10)||0);b.setSeconds(0,0);return b},valueToRaw:function(a){if(Ext.isDate(a)){a=Ext.Date.format(a,"H:i")}return this.callParent([a])},rawToValue:function(c){var b;try{b=this.parse(c)}catch(a){b=null}return this.callParent([b])},getErrors:function(b){var c=this.callParent([b]);try{b=this.parse(b)}catch(a){c.push("Invalid time.")}return c}});Ext.define("FT.timelogging.TimerField",{extend:"Ext.form.field.Picker",cls:"ft-timer-field",alias:"widget.ft-timer-field",hideTrigger:true,selectOnFocus:false,matchFieldWidth:false,pickerAlign:"t-b?",enableKeyEvents:true,value:null,modify:null,disablePickerFields:null,doAlign:function(){var e=this,d=e.picker,h,b,a,g,c;h=d.getAlignToXY(e.triggerWrap,e.pickerAlign,e.pickerOffset);b=e.triggerWrap.getRegion();a=d.getHeight();g=d.getWidth();c=Ext.Element.getViewHeight();if(h[1]+a>c){h[0]=b.left-g;h[1]=b.top-a/2;h[1]=Math.max(0,h[1]);h[1]=Math.min(c-a,h[1])}d.setXY(h)},initComponent:function(){this.callParent(arguments);this._suspendSynchroniseField=0;this._suspendSynchronisePicker=0;this._observedFieldChanges=[];if(!this.value){this.value={}}Ext.applyIf(this.value,{timeRange:Ext.create("FT.timelogging.TimeRange"),comment:""});if(!this.modify){this.modify={}}Ext.applyIf(this.modify,{duration:"end",start:"end",end:"duration"});this.on("keyup",this._onKeyUp,this);this.on("blur",function(){this.setValue(this.getValue());if(this.isExpanded){this.collapse()}},this);this.on("focus",function(c,b,a){if(!this.isExpanded){c.expand();c.focus(true,30)}});this.on("specialkey",this._onSpecialKey,this)},_onSpecialKey:function(b,a){if(a.getKey()==a.ENTER&&b.isValid()){b.triggerBlur();b.blur();this._onKeyUp(this,a)}},setValue:function(a){if(a===null){a={timeRange:Ext.create("FT.timelogging.TimeRange"),comment:""}}this.callParent([a]);this._synchronisePicker()},valueToRaw:function(a){var b=null;if(a){b=FT.timelogging.Duration.format(a.timeRange.getDuration())}return this.callParent([b])},rawToValue:function(c){var b=Ext.clone(this.value);try{b.timeRange.setDuration(FT.timelogging.Duration.parse(c),this.modify.duration)}catch(a){b.timeRange.setDuration(0,this.modify.duration)}return this.callParent([b])},getErrors:function(b){var c=this.callParent([b]);try{b=FT.timelogging.Duration.parse(b)}catch(a){c.push("Invalid duration.")}return c},_eventIsFromChildPicker:function(e){var c=this.getPicker().query("timefield");var b=0;var d=c.length;var a;for(b;b<d;b++){a=c[b].getPicker();if(a&&a.rendered&&e.within(a.el)){return true}}return false},collapseIf:function(a){if(!this._eventIsFromChildPicker(a)){this.callParent(arguments)}},mimicBlur:function(a){if(!this._eventIsFromChildPicker(a)){this.callParent(arguments)}},createPicker:function(){var a=Ext.create("FT.timelogging.TimerFormPanel",{pickerField:this,hidden:true,floating:true,focusOnToFront:true,ownerCt:this.ownerCt,renderTo:document.body,modify:this.modify,listeners:{change:this._onPickerFieldChange,accept:this._onAccept,reject:this._onReject,scope:this}});this.picker=a;if(this.disablePickerFields){Ext.Array.each(this.disablePickerFields,function(b){a.getForm().findField(b).disable()})}this._synchronisePicker();return a},_synchronisePicker:function(){if(!this.picker){return}if(this._suspendSynchronisePicker>0){return}this._suspendSynchroniseField+=1;var c=this.getValue();var e=c.timeRange.getStart();var a=c.timeRange.getEnd();var d=c.timeRange.getDuration();var b=e;this.picker.setValues({start:e,end:a,duration:d,date:b,comment:c.comment});this._suspendSynchroniseField-=1},_synchroniseField:function(){if(!this.picker){return}if(this._suspendSynchroniseField>0){return}this._suspendSynchronisePicker+=1;var d=this.getValue();var c=Ext.Array.unique(this._observedFieldChanges);this._observedFieldChanges=[];var b=Ext.Array.contains;var a=this.getPicker().getValues(false,false,false,true);if(b(c,"comment")){d.comment=a.comment}if(b(c,"start")||b(c,"end")||b(c,"duration")||b(c,"date")){d.timeRange=Ext.create("FT.timelogging.TimeRange",{start:a.start,duration:a.duration})}if(c.length){this.setValue(d)}this._suspendSynchronisePicker-=1},onExpand:function(){this._observedFieldChanges=[];this.callParent(arguments)},onCollapse:function(){this.callParent(arguments);this.focus()},_onKeyUp:function(b,a){if(b.isValid()&&this.getPicker()){this._synchronisePicker()}},_onPickerFieldChange:function(d,c,b,a){if(d.isValid()){this._observedFieldChanges.push(d.getName());this._synchroniseField()}},_onAccept:function(){this._synchroniseField();this.collapse()},_onReject:function(){this.collapse()}});Ext.define("FT.timelogging.TimerFormPanel",{extend:"Ext.form.Panel",alias:"widget.ft-timer-form-panel",layout:{type:"vbox",align:"center"},bodyPadding:15,modify:null,initComponent:function(){var a=this;this._settingValues=0;this.on("change",this._onFieldChange,this);this.callParent(arguments);if(!this.modify){this.modify={}}Ext.applyIf(this.modify,{duration:"end",start:"end",end:"start"});this.addEvents("accept","reject");this.on("afterRender",function(){this.nav=Ext.create("Ext.util.KeyNav",this.el,{esc:function(c){this.fireEvent("reject")},scope:this})});var b={labelStyle:"text-align: center;",labelSeparator:"",padding:"0, 0, 8, 0",bubbleEvents:["change"],listeners:{specialkey:this._onFieldSpecialKey,scope:this}};this.add({xtype:"fieldcontainer",layout:{type:"hbox"},defaults:Ext.apply({labelAlign:"top",width:80},b),items:[{xtype:"ft-time-field",fieldLabel:FT.i18n("Start"),name:"start",allowBlank:false,margins:"0, 70, 0, 0"},{xtype:"numberfield",name:"duration",allowBlank:false,hidden:true},{xtype:"ft-time-field",fieldLabel:FT.i18n("Stop"),allowBlank:false,name:"end"}]});this.add(Ext.apply({xtype:"textfield",emptyText:FT.i18n("Comment"),name:"comment",width:230},b));this.add(Ext.apply({xtype:"ft-calendar-date-field",name:"date",width:230},b));this.add({xtype:"ftrack-button",cls:"action",name:"save",text:FT.i18n("Apply"),width:100,margins:"10, 0, 0, 0",handler:Ext.Function.bind(function(){this.fireEvent("accept")},this)})},_onFieldSpecialKey:function(b,a){if(a.getKey()==a.ENTER&&b.isValid()){this.fireEvent("blur");this.fireEvent("accept")}},_onFieldChange:function(k,b,a,o){if(!k.isValid()){return}if(!b){return}if(this._settingValues>0){return}var c=this.getForm();var n=k.getName();var l;var m=this.getValues(false,false,false,true);var g={};var j=this.modify[n];if(n==="start"||n==="end"){var e="duration";if(j=="duration"){if(n=="start"){e="end"}else{e="start"}}var d={};d[e]=m[e];b=this._applyDate(b,m.date);if(n=="end"&&(new moment(b)).isBefore(m.start)){b=(new moment(b)).add(1,"day").toDate()}d[n]=b;l=Ext.create("FT.timelogging.TimeRange",d);var h=l.get(j);if(j=="start"&&(new moment(h)).isAfter(new moment(m.date),"day")){h=(new moment(h)).subtract(1,"day").toDate()}g[j]=h}else{if(n==="duration"){l=Ext.create("FT.timelogging.TimeRange",{start:m.start,end:m.end});l.setDuration(b,j);g[j]=l.get(j)}}if(!Ext.Object.isEmpty(g)){this.setValues(g)}},_applyDate:function(b,a){var c=(new moment(b)).diff((new moment(b)).startOf("day"));return(new moment(a)).add(c).toDate()},getValues:function(e,b,d,a){var c=this.callParent([e,b,d,a]);if(a){c.start=this._applyDate(c.start,c.date);c.end=this._applyDate(c.end,c.date);if((new moment(c.end)).isBefore(c.start)){c.end=(new moment(c.end)).add(1,"day").toDate()}}return c},setValues:function(a){if(Ext.Object.isEmpty(a)){return}this._settingValues+=1;this.getForm().setValues(a);this._settingValues-=1}});Ext.define("FT.form.field.TaskEditor",{extend:"Ext.form.field.ComboBox",criteria:null,emptyText:FT.i18n("Select task"),displayField:"name",valueField:"id",queryMode:"local",typeAhead:false,minChars:0,queryDelay:10,forceSelection:true,autoSelect:true,initComponent:function(){this.tpl=new Ext.XTemplate('<tpl for=".">','<div class="x-boundlist-item">','<div class="entity-link">{[this.renderName(values)]}</div>','<div class="entity-path">{[this.renderLink(values)]}</div>',"</div>","</tpl>",{renderName:function(b){var a=b;if(a&&a.name){return"<span data-qtip='"+a.name+"'>"+a.name+"</span>"}return"Unknown name"},renderLink:function(b){var a=b;if(a){if(a.link){var d=a.link.slice(0,-1);var c=FTrack.util.link(d,false,false,false).join(" / ");var e=FTrack.util.link(d,false,false).join(" / ");return"<span title='"+e.replace(/'/g,"&#39;")+"'>"+c+"</span>"}}return"Unknown path"}});this.store=Ext.create("Ext.data.Store",{autoLoad:false,proxy:{type:"direct",directFn:"FTApi.Task.query",extraParams:{criteria:this.criteria,order:[["link","ascending"]],limit:null},reader:{type:"json",root:"data"}},remoteSort:true});this.on("focus",this.expand,this);this.on("expand",this.store.load,this.store);this.callParent();this.queryFilter=new Ext.util.Filter({filterFn:function(e){var h=e.get("link"),a=this.value.split(/[ /]/),g=Ext.Array.pluck(h,"name"),b=g.join("").toLowerCase(),d,c;for(d=0;d<a.length;d++){c=a[d].toLowerCase();if(b.indexOf(a[d])===-1){return false}}return true}});this.store.filter(this.queryFilter)}});Ext.define("FT.timelogging.EntityComponent",{extend:Ext.Component,entity:null,initComponent:function(){this.tpl=new Ext.XTemplate('<div class="entity-link">{name}</div>','<div class="entity-path">{path}</div>');this.callParent();this.setEntity(this.entity)},setEntity:function(a){this.entity=a;var b={};if(a&&a.link){b.name=FTrack.grid.SimpleLinkRenderer(a.link);b.path=FTrack.grid.LinkRenderer(a.link.slice(0,-1))}this.update(b)},getEntity:function(){return this.entity}});Ext.define("FT.timelogging.TimerComponent",{extend:Ext.container.Container,cls:"ft-timer-component",layout:{type:"hbox"},value:null,states:{STOPPED:"STOPPED",PAUSED:"PAUSED",RUNNING:"RUNNING",MANUAL:"MANUAL"},initialState:"STOPPED",timer:"GLOBAL",initComponent:function(){this.addEvents("started","paused","resumed","stopped","reset");this._state=this.initialState;if(this.timer==="GLOBAL"){this._timer=FT.timelogging.Timer}else{if(this.timer){this._timer=this.timer}}if(this._timer){this.mon(this._timer,"tick",this.onTick,this)}this._linkedEntityEditor=Ext.create("FT.form.field.TaskEditor",{criteria:FT.Settings.get("currentuser","userid"),listeners:{select:Ext.Function.bind(this.onLinkedEntitySelected,this)},tourId:"select-task-drop-down"});this._linkedEntityRenderer=Ext.create("FT.timelogging.EntityComponent",{flex:1});this._timerField=Ext.create("FT.timelogging.TimerField",{value:this.value,width:100,listeners:{focus:Ext.Function.bind(this.onDurationFieldFocused,this),blur:Ext.Function.bind(this.onDurationFieldBlurred,this),validitychange:Ext.Function.bind(this.onDurationFieldValidityChange,this)}});this._actionButton=Ext.create("FT.button.Button",{cls:"action",text:FT.i18n("Start"),minWidth:80,handler:Ext.Function.bind(this.onActionButton,this)});this._cancelButton=Ext.create("FT.button.Button",{glyph:FT.glyph("remove"),ui:"plain-toolbar",margin:0,handler:Ext.Function.bind(this.reset,this)});this._selectorGroup=Ext.create("Ext.container.Container",{flex:1,layout:{type:"fit"},items:[this._linkedEntityEditor]});this._timerGroup=Ext.create("Ext.container.Container",{flex:1,layout:{type:"hbox",align:"middle",defaultMargins:{right:15}},items:[this._linkedEntityRenderer,this._timerField,this._actionButton,this._cancelButton]});this.items=[this._selectorGroup,this._timerGroup];this.callParent();this.resetInterface()},_fireEvent:function(a){var c={};var b=this._timerField.getValue();c.user_id=FT.Settings.get("currentuser","userid");c.started=b.timeRange.getStart();c.duration=b.timeRange.getDuration();c.comment=b.comment;c.entity=this._linkedEntityRenderer.getEntity();this.fireEvent(a,c)},getState:function(){return this._state},setState:function(a){this._state=a;if(a===this.states.STOPPED){this._timerField.getPicker().getForm().findField("end").enable();this._timerField.getPicker().getForm().findField("date").show();this._actionButton.setText(FT.i18n("Start"));this._actionButton.removeCls("button-danger");this._actionButton.addCls("button-primary")}else{if(a===this.states.RUNNING){this._timerField.getPicker().getForm().findField("end").disable();this._timerField.getPicker().getForm().findField("date").hide();this._actionButton.setText(FT.i18n("Stop"));this._actionButton.removeCls("button-primary");this._actionButton.addCls("button-danger")}else{if(a===this.states.MANUAL){this._timerField.getPicker().getForm().findField("end").enable();this._timerField.getPicker().getForm().findField("date").show();this._actionButton.setText(FT.i18n("Save"));this._actionButton.removeCls("button-primary","button-danger")}}}},resetInterface:function(){this.setState(this.initialState);this._linkedEntityEditor.reset();this._timerGroup.hide();this._selectorGroup.show()},reset:function(){if(this._timer){this._timer.reset()}this._timerField.setValue(null);this.resetInterface();this._fireEvent("reset")},start:function(){if(this._timer){if(this._timer.elapsed===0){this._timerField.setValue(null)}this._timer.start()}this.setState(this.states.RUNNING);this._fireEvent("started")},stop:function(){if(this._state!==this.states.STOPPED){if(this._timer){this._timer.stop()}this.setState(this.states.STOPPED);this._fireEvent("stopped")}},pause:function(){if(this._timer){this._timer.stop()}this._timerField.modify.start="duration";this._timerField.modify.end="start";this._timerField.modify.duration="start";var a=this._timerField.getValue();a.timeRange.setEnd((new moment).add(1,"second").toDate(),"start");this._timerField.setValue(a);this.setState(this.states.PAUSED);this._fireEvent("paused")},resume:function(){this._timerField.modify.start="end";this._timerField.modify.end="duration";this._timerField.modify.duration="end";var a=this._timerField.getValue();a.timeRange.setEnd(new Date,"duration");this._timerField.setValue(a);if(this._timer){this._timer.start()}this.setState(this.states.RUNNING);this._fireEvent("resumed")},setLinkedEntity:function(a){if(a){this._selectorGroup.hide();this._timerGroup.show();this._linkedEntityRenderer.setEntity(a)}else{this.reset()}},onTick:function(b){var a=this._timerField.getValue(false);a.timeRange.setDuration(b,"end");this._timerField.setValue(a)},onLinkedEntitySelected:function(c,b){var a=b[0];this.setLinkedEntity(a.data)},onActionButton:function(){var a=this.getState();if(a===this.states.STOPPED){this.start()}else{if(a===this.states.RUNNING||a===this.states.MANUAL){if(a===this.states.MANUAL){FT.util.intercom("CREATED-TIMELOG")}this.stop();this.reset()}}},onDurationFieldFocused:function(){var a=this.getState();if(a===this.states.RUNNING){this.pause()}else{if(a===this.states.STOPPED){this.setState(this.states.MANUAL)}}},onDurationFieldBlurred:function(){var a=this.getState();if(a===this.states.PAUSED){this.resume()}if(this._timerField.isValid()&&this._timer){var b=this._timerField.getValue().timeRange.getDuration();this._timer.elapsed=b;this.onTick(this._timer.elapsed)}},onDurationFieldValidityChange:function(b,a){if(a){this._actionButton.enable()}else{this._actionButton.disable()}},destroy:function(){if(this._timer){this._timer.stop()}this.callParent()}});Ext.define("FT.timelogging.PersistedTimerComponent",{extend:"FT.timelogging.TimerComponent",initComponent:function(){this._timerId=null;this.addEvents("persistedTimerStarted","persistedTimerUpdated","persistedTimerStopped","persistedTimelogCreated");this.on("started",this._onStarted,this);this.on("resumed",this._onResumed,this);this.on("stopped",this._onStopped,this);this.on("reset",this._onReset,this);this.callParent();if(this._timer){FT.EventHub.subscribe("topic=ftrack.update",Ext.Function.bind(this._onExternalTimerEvent,this))}},_onExternalTimerEvent:function(b){if(b.topic!="ftrack.update"){return}var c=b.data.entities;if(!c){return}var a=FT.Settings.get("currentuser","userid");c.forEach(function(e){if(e.entityType=="timer"){var d=e.parents[1];if(d&&d.entityType=="user"&&d.entityId==a){this._setFromEvent(e)}}},this)},_setFromEvent:function(a){if(a.action=="add"){this.setFromTimerId(a.entityId)}else{if(a.action=="update"){this.setFromTimerId(a.entityId)}else{if(a.action=="remove"&&this._timerId&&this._timerId==a.entityId){this.setFromTimer(null)}}}},setFromTimer:function(e){this.suspendEvents(false);if(!e){this._timerId=null;this.reset()}else{this._timerId=e.id;var d={id:e.context_id,link:e["#context_link"]};this.setLinkedEntity(d);var b=new moment,a=new moment(e.start),c=(b-a)/1000;this._timer.elapsed=c;this.start()}this.resumeEvents()},setFromTimerId:function(a){FTApi.Timer.get({id:a,fields:["id","name","start","context_id","#context_link"]},function(b){if(!b||!b.success||!b.data){return}var c=b.data[0];this.setFromTimer(c)},this)},_onStarted:function(a){FTApi.Timer.start({user_id:a.user_id,context_id:a.entity.id,start:a.started,comment:a.comment},function(b){if(!b.success){var c=b.message||"Failed to start timer.";FT.notifyError(c);this.reset()}else{this._timerId=b.data[0].id;this.fireEvent("persistedTimerStarted");FT.util.intercom("STARTED-TIMER")}},this)},_onResumed:function(a){if(this._timerId){FTApi.Timer.update({id:this._timerId,start:a.started,comment:a.comment},function(b){if(!b.success){var c=b.message||"Failed to update timer.";FT.notifyError(c)}else{this.fireEvent("persistedTimerUpdated")}},this)}},_onStopped:function(a){this._onReset();FTApi.Timelog.create({duration:a.duration,user_id:a.user_id,context_id:a.entity.id,start:a.started,comment:a.comment},function(b){if(!b.success){var c=b.message||"Failed to add timelog.";FT.notifyError(c)}else{this.fireEvent("persistedTimelogCreated")}},this)},_onReset:function(a){if(this._timerId){FTApi.Timer["delete"]({id:this._timerId},function(b){if(!b.success){var c=b.message||"Failed to clear timer.";FT.notifyError(c)}else{this.fireEvent("persistedTimerStopped")}},this);this._timerId=null}}});Ext.define("FT.timelogging.TimerButton",{extend:"Ext.button.Button",cls:"ft-timer-button",initComponent:function(){this.callParent();this._internalInit()},_internalInit:function(){FT.EventHub.subscribe("topic=ftrack.update",Ext.Function.bind(this._onExternalTimerEvent,this));this._timer=FT.timelogging.Timer;FT.timelogging.Timer.on("tick",this.setDuration,this);FTApi.Timer.query({criteria:FT.Settings.get("currentuser","userid")},function(a){if(!a||!a.data){return}this.setFromTimer(a.data[0])},this)},_onExternalTimerEvent:function(b){if(b.topic!="ftrack.update"){return}var c=b.data.entities;if(!c){return}var a=FT.Settings.get("currentuser","userid");c.forEach(function(e){if(e.entityType=="timer"){var d=e.parents[1];if(d&&d.entityType=="user"&&d.entityId==a){this._setFromEvent(e)}}},this)},_setFromEvent:function(a){if(a.action=="add"){this.setFromTimerId(a.entityId)}else{if(a.action=="update"){this.setFromTimerId(a.entityId)}else{if(a.action=="remove"&&this._timerId&&this._timerId==a.entityId){this.setFromTimer(null)}}}},setFromTimer:function(d){if(!d){this._timerId=null;this._timer.reset()}else{this._timerId=d.id;var b=new moment,a=new moment(d.start),c=(b-a)/1000;this._timer.elapsed=c;this._timer.start()}},setFromTimerId:function(a){FTApi.Timer.get({id:a,fields:["id","name","start","context_id","#context_link"]},function(b){if(!b||!b.success||!b.data){return}var c=b.data[0];this.setFromTimer(c)},this)},setDuration:function(a){if(a===0&&!this._timer.isRunning()){this.setText(null);this.removeCls("button--icon-active")}else{this.addCls("button--icon-active");this.setText(FT.timelogging.Duration.format(a))}}});Ext.ns("FT.reviewsession");FT.reviewsession.openReviewSession=function(b,e){var d,c,a;c=FT.Settings.get("currentuser","email");a=FT.Settings.get("currentuser","fullname");d=window.open("about:blank");d.blur();FTApi.ReviewSessionInvitee.query({criteria:{review_session_id:b,email:c}},function(g){if(g.data&&g.data.length){d.location="/review/"+g.data[0].id;d.focus()}else{FTApi.ReviewSessionInvitee.create({review_session_id:b,email:c,name:a},function(h,j,k){if(k&&h.data&&h.data.length){d.location="/review/"+h.data[0].id;d.focus();if(e){e()}}else{FT.notifyError(FT.i18n("Error opening session."));d.close()}},this)}},this)};FT.reviewsession.confirmCloneReviewSession=function(b){var a=Ext.create("FT.window.CancelSave",{title:FT.i18n("Clone session?"),message:"Would you like to create a new review session with the same description and collaborators?",saveText:FT.i18n("Clone"),saveAction:"save",saveHandler:function(){FT.reviewsession.cloneReviewSession(b);a.close()},cancelHandler:function(){a.close()},scope:this})};FT.reviewsession.cloneReviewSession=function(a){FT.api.query('select name, description, start_date, end_date, project_id, review_session_invitees.email, review_session_invitees.name from ReviewSession where id is "'+a+'"',function(c){var b,e=[],d=0;if(!c||!c.data||c.data.length!==1){FT.notifyError(FT.i18n("Something went wrong when cloning the review session."));return}b=c.data[0];FT.api.create([{entity_type:"ReviewSession",entity_data:{name:FT.i18n("Copy of ")+b.name,description:b.description,project_id:b.project_id}}],function(g){var h,j;if(!g||g.length!==1||!g[0].data){FT.notifyError(FT.i18n("Something went wrong when cloning the review session."));return}h=g[0].data.id;for(;d<b.review_session_invitees.length;d++){j=b.review_session_invitees[d];e.push({entity_type:"ReviewSessionInvitee",entity_data:{review_session_id:h,name:j.name,email:j.email}})}FT.api.create(e,function(k){FT.app.open(null,{entityId:h,entityType:"reviewsession"});FT.util.intercom("cloned-clientreview")})})})};Ext.define("RAW.reviewsession.SetupTop",{extend:"Ext.panel.Panel",region:"north",autoScroll:false,layout:"fit",tourId:"reviewsession-setuptop",initComponent:function(){this.callParent(arguments);this.add(this.form=Ext.widget({xtype:"form",plugins:[{ptype:"auto-sync-form",pluginId:"autoSyncForm"}],padding:"15 15 5",layout:{type:"vbox",align:"stretch"},items:this.createFields()}));this.on("beforemodulechange",this._onBeforeModuleChange,this)},createFields:function(){this.nameField=Ext.create("Ext.form.field.Text",{emptyText:FT.i18n("Name"),name:"name",fieldCls:"ft-field-large ft-field-plain",permission:{name:"MANAGE_REVIEW_SESSION",allow:"enable",deny:"disable"}});this.descriptionField=Ext.create("Ext.form.field.TextArea",{emptyText:FT.i18n("Description"),name:"description",fieldCls:"ft-field-plain",rows:2,resizable:false,permission:{name:"MANAGE_REVIEW_SESSION",allow:"enable",deny:"disable"}});return[this.nameField,this.descriptionField]},initWidget:function(){this.loadData()},updateWidget:function(){this.loadData()},_onBeforeModuleChange:function(){this.form.getPlugin("autoSyncForm").saveRecordData()},loadData:function(){var a;a=Ext.ModelManager.getModel("FT.model.ReviewSession");a.load(this.getEntity().entityId,{success:function(b){this.form.loadRecord(b)},scope:this})},getEntity:function(){return this.entity},updateEntity:function(a){this.entity=a;this.loadData()}});Ext.define("FT.reviewsession.Settings",{extend:"Ext.panel.Panel",ui:"plain",title:'<span class="title--small">'+FT.i18n("Settings")+"</span>",padding:"10 0 0 0",initComponent:function(){this.allowDownload=Ext.create("Ext.form.field.Checkbox",{name:"allow_download",boxLabel:FT.i18n("Allow download of original media"),qtip:FT.i18n("If enabled the collaborators will be able to download the uploaded files."),value:false,uncheckedValue:false,cls:"ft-review-settings-checkbox",permission:{name:"MANAGE_REVIEW_SESSION",allow:"enable",deny:"disable"}});this.enableNotifications=Ext.create("Ext.form.field.Checkbox",{name:"enable_invitee_notifications",boxLabel:FT.i18n("Send notifications to collaborators"),qtip:FT.i18n("If enabled, emails notifications will be sent out to collaborators when a status is changed or a new note is added."),value:true,uncheckedValue:false,cls:"ft-review-settings-checkbox",permission:{name:"MANAGE_REVIEW_SESSION",allow:"enable",deny:"disable"}});this.enablePassphrase=Ext.create("Ext.form.field.Checkbox",{name:"passphrase_enabled",boxLabel:FT.i18n("Passphrase protection"),qtip:FT.i18n("Collaborators will have to enter the passphrase to access the Review."),value:false,uncheckedValue:true,cls:"ft-review-settings-checkbox",permission:{name:"MANAGE_REVIEW_SESSION",allow:"enable",deny:"disable"}});this.passphraseInput=Ext.create("Ext.form.field.Text",{emptyText:FT.i18n("Type a passphrase"),qtip:FT.i18n("This will be used as the passphrase for this review."),width:218,allowBlank:false,blankText:FT.i18n("Passphrase can't be empty."),inputType:"password",enableKeyEvents:true,value:""});this.glyph_visible=FT.glyph("visibility");this.glyph_hidden=FT.glyph("visibility-off");this.visibilityButton=Ext.create("Ext.button.Button",{glyph:this.glyph_hidden,cls:"ft-review-settings-visibility-button"});this.passphraseContainer=Ext.create("Ext.form.FieldContainer",{width:300,border:false,frame:false,hidden:true,layout:"column",items:[this.passphraseInput,this.visibilityButton]});this.items=[this.allowDownload,this.enableNotifications,this.enablePassphrase,this.passphraseContainer];this.callParent();this.allowDownload.on("change",this._handleChange,this);this.enableNotifications.on("change",this._handleChange,this);this.enablePassphrase.on("change",this._handleEnablePassphraseChange,this);this.visibilityButton.on("click",this._visibilityToggle,this);this.passphraseInput.on("change",this._updatePassphrase,this,{buffer:500})},updateEntity:function(a){var b=this;this._entity=a;FT.spark.getSharedSession().query('select name, value from EntitySetting where name in ("allow_download","enable_invitee_notifications") and parent_id is '+a.entityId).then(function(c){if(c&&c.data&&c.data.length){Ext.each(c.data,function(d){if(d.name==="allow_download"){b._updateCheckbox(b.allowDownload,d.value)}else{if(d.name==="enable_invitee_notifications"){b._updateCheckbox(b.enableNotifications,d.value)}}},this);b.show()}else{b.hide()}});FT.spark.getSharedSession().query("select passphrase_enabled, passphrase from ReviewSession where id is "+a.entityId).then(function(d){if(d&&d.data&&d.data.length){var c=d.data[0];b.passphraseInput.suspendEvents();b.enablePassphrase.suspendEvents();b.passphraseInput.setValue(c.passphrase);b.enablePassphrase.setValue(c.passphrase_enabled);b.passphraseInput.resumeEvents(false);b.enablePassphrase.resumeEvents(false);b.passphraseContainer.show();if(!c.passphrase_enabled){b.passphraseContainer.hide()}}})},_updatePassphrase:function(c,b){var a=this;if(c.wasValid){FT.spark.getSharedSession().update("ReviewSession",[a._entity.entityId],{passphrase:b}).then(function(d){if(!(d&&d.data)){FT.notifyError(FT.i18n("Failed to update passphrase."));a.updateEntity(a._entity)}})}},_visibilityToggle:function(){var a=this.passphraseInput.inputEl.dom;if(a.type=="text"){a.type="password";this.visibilityButton.setGlyph(this.glyph_hidden)}else{a.type="text";this.visibilityButton.setGlyph(this.glyph_visible)}},_handleEnablePassphraseChange:function(d,c){var a=this,b={passphrase_enabled:c};if(this.passphraseInput.value===""&&c){b.passphrase=Math.random().toString(36).slice(-6)}FT.spark.getSharedSession().update("ReviewSession",[a._entity.entityId],b).then(function(e){if(e&&e.data){var g=e.data.passphrase_enabled;a.enablePassphrase.setValue(g);if(g){if(e.data.passphrase){a.passphraseInput.suspendEvents();a.passphraseInput.setValue(e.data.passphrase);a.passphraseInput.resumeEvents(false)}a.passphraseContainer.show()}else{a.passphraseContainer.hide()}}else{FT.notifyError(FT.i18n("Failed to set passphrase."));a.updateEntity(a._entity)}})},_handleChange:function(c,b){var a=this;console.debug(b);FT.spark.getSharedSession().update("EntitySetting",[a._entity.entityId,"REVIEW",c.name],{value:b?"1":"0"}).then(function(d){if(d&&d.data){a._updateCheckbox(c,d.data.value)}else{FT.notifyError(FT.i18n("Failed to change setting."));a.updateEntity(a._entity)}})},_updateCheckbox:function(b,a){b.suspendEvents(false);if(a==="1"){b.setValue(true)}else{b.setValue(false)}b.resumeEvents()}});Ext.define("FT.reviewsession.SetupSettings",{extend:"Ext.container.Container",cls:"background-light border-left",layout:{type:"vbox",align:"stretch",defaultMargins:"5 0",padding:20},initComponent:function(){this.scheduler=Ext.create("FT.reviewsession.Scheduler",{permission:{name:"MANAGE_REVIEW_SESSION",allow:"enable",deny:"disable"},tourId:"reviewsession-schedule"});this.items=[{xtype:"button",text:FT.i18n("Open session"),handler:this.openSessionClicked,scope:this,tourId:"reviewsession-opensession",permission:{name:"MANAGE_REVIEW_SESSION",allow:"show",deny:"hide"}},{xtype:"button",text:FT.i18n("Clone session"),handler:this.cloneSessionClicked,scope:this,permission:{name:"MANAGE_REVIEW_SESSION",allow:"show",deny:"hide"}},{xtype:"button",text:FT.i18n("Actions"),handler:this.openActionsClicked,scope:this,tourId:"reviewsession-actions",permission:{name:"MANAGE_REVIEW_SESSION",allow:"show",deny:"hide"}},this.settingsForm=this.createSettingsForm(),this.scheduler,this.createInviteeView(),this.createSendInvitesButton(),this.createGenerateReportButton(),this.createTransferButton()];this.callParent(arguments)},createSettingsForm:function(){var a=Ext.create("FT.reviewsession.Settings");return a},createInviteeView:function(){this.inviteeView=Ext.create("FT.reviewsession.InviteeView",{flex:1,permission:{name:"MANAGE_REVIEW_SESSION",allow:"enable",deny:"disable"},tourId:"reviewsession-collaborators",cls:"background-light"});this.inviteeView.on("sendinvite",this.onSendInvite,this);return this.inviteeView},onSendInvite:function(b){var a=this.getEntity().entityId,c=b.get("id");FTApi.ReviewSession.sendInvites({reviewSessionId:a,inviteeIds:[c]},this.onInvitesSent,this)},openSessionClicked:function(){FT.reviewsession.openReviewSession(this.getEntity().entityId,Ext.bind(this.inviteeView.reload,this.inviteeView))},cloneSessionClicked:function(){var a=this.getEntity().entityId;FT.reviewsession.confirmCloneReviewSession(a)},sendInvitesButtonHandler:function(){var a=this.getEntity().entityId;this.sendInvitesButton.setText(this.sendInvitesButton.loadingText);this.sendInvitesButton.setDisabled(true);FTApi.ReviewSession.sendInvites({reviewSessionId:a},this.onInvitesSent,this)},onInvitesSent:function(a,b,d){if(d&&a.success){FT.notifySuccess(FT.i18n("Review session invites sent."));this.inviteeView.updateEntity(this.getEntity())}else{var c=a.message||"Failed to send invites, please verify the details and try again.";FT.notifyError(c)}this.sendInvitesButton.setText(this.sendInvitesButton.defaultText);this.sendInvitesButton.setDisabled(false)},createSendInvitesButton:function(){this.sendInvitesButton=Ext.create("Ext.button.Button",{text:FT.i18n("Send invites"),defaultText:FT.i18n("Send invites"),loadingText:FT.i18n("Sending..."),scope:this,handler:this.sendInvitesButtonHandler,permission:{name:"MANAGE_REVIEW_SESSION",allow:"show",deny:"hide"},tourId:"reviewsession-sendinvites"});return this.sendInvitesButton},generateReportButtonHandler:function(){FT.grid.exporthelper.exportReviewSession(this.getEntity().entityId)},createGenerateReportButton:function(){this.generateReportButton=Ext.create("Ext.button.Button",{text:FT.i18n("Generate report"),scope:this,handler:this.generateReportButtonHandler,tourId:"reviewsession-generatereport"});return this.generateReportButton},createTransferButton:function(){this.transferButton=Ext.create("Ext.button.Button",{cls:"button-primary",text:FT.i18n("Transfer feedback"),scope:this,handler:function(){this.fireEvent("toggle-transfer-mode")},permission:{name:"MANAGE_REVIEW_SESSION",allow:"show",deny:"hide"},tourId:"reviewsession-transferfeedback"});return this.transferButton},getEntity:function(){return this.entity},updateEntity:function(a){var b;this.entity=a;b=Ext.ModelManager.getModel("FT.model.ReviewSession");b.load(a.entityId,{success:Ext.bind(this.scheduler.setModel,this.scheduler)});this.inviteeView.updateEntity(a);this.settingsForm.updateEntity(a)},openActionsClicked:function(){Ext.create("FT.window.Actions",{selection:[this.getEntity()],autoShow:true})}});Ext.define("FT.reviewsession.Scheduler",{extend:"FT.configure.MetaPropertyGrid",cls:"ft-reviewsessionsetup-scheduler",padding:false,title:'<span class="title--small">'+FT.i18n("Schedule")+"</span>",clicksToEdit:1,nameColumnWidth:50,initComponent:function(){this.clearErrors();var a=Ext.util.Format.dateRenderer(Ext.String.format("{0} H:i",FT.Settings.get("FORMAT","date")));Ext.apply(this,{propertyCfg:[{dataIndex:"start",text:FT.i18n("Start"),renderer:a,editor:{xtype:"datetimefield"}},{dataIndex:"end",text:FT.i18n("End"),renderer:a,editor:{xtype:"datetimefield"}}]});Ext.apply(this.viewConfig,{getRowClass:Ext.bind(function(b,e,d,c){if(this.errors&&this.errors.getByField(b.get("name")).length){return"row-error"}},this)});this.callParent(arguments)},clearErrors:function(){this.errors=null},setModel:function(a){this.clearErrors();this.updateData(this.propertyCfg,a)},onPropertyChange:function(a,b){this.callParent(arguments);this.errors=this.model.validate();if(this.errors.length===0){this.model.save()}this.getView().refresh()}});Ext.define("FT.reviewsession.transfer.Settings",{extend:"Ext.panel.Panel",alias:"widget.ft-reviewsession-transfer-settings",cls:"ft-reviewsession-transfer-settings",header:false,autoScroll:true,initComponent:function(){var c,b,a;a=Ext.create("Ext.form.field.Checkbox",{margin:"0 10 0 12",listeners:{change:this.toggleAll,scope:this}});c=Ext.create("FT.reviewsession.transfer.BatchStatusEditor",{text:FT.i18n("Set approved to"),transferSettingsPanel:this,qtip:FT.util.tips.getTip("transfer-review-session-set-approved"),listeners:{select:Ext.bind(this.setStatusTo,this,["approved"],true)}});b=Ext.create("FT.reviewsession.transfer.BatchStatusEditor",{text:FT.i18n("Set require changes to"),transferSettingsPanel:this,qtip:FT.util.tips.getTip("transfer-review-session-set-require-changes"),listeners:{select:Ext.bind(this.setStatusTo,this,["require_changes"],true)}});this.tbar=[a,"->",b,c];this.store=Ext.create("Ext.data.Store",{fields:["id","statusid",{name:"transfer_note_ids",defaultValue:null},{name:"new_note_content",defaultValue:null},"status_entity","thumbid","version","name","description","review_statuses","version_link","isLocal"],proxy:{type:"direct",directFn:FTApi.ReviewSession.getTransferSessionData,reader:{root:"data"}},listeners:{load:this.reloadInterfaceFromStore,bulkremove:this.reloadInterfaceFromStore,metachange:this._onMetaDataChanged,scope:this}});this.callParent(arguments);if(this.ownerCt){this.createLoadingMask()}else{this.on("added",this.createLoadingMask,this,{single:true})}},createLoadingMask:function(){this.loadMask=new Ext.LoadMask(this.ownerCt,{msg:"Loading...",store:this.store})},setStatusTo:function(e,b,a,c,h){var d,g=e;this.items.each(function(j){d=j.record.get("review_statuses");if(h==="require_changes"&&d.require_changes){j.statusEditor.setValue(g)}if(h==="approved"&&!d.require_changes&&d.approved){j.statusEditor.setValue(g)}})},toggleAll:function(b,c,a){this.items.each(function(d){d.select(c)})},updateEntity:function(a){this.removeAll(true);this.store.load({params:{id:a.entityId}});this.reviewSessionId=a.entityId},_onMetaDataChanged:function(a,b){this.fireEvent("transfer-date-changed",Ext.Date.parse(b.lastTransferDate,"c"))},reloadInterfaceFromStore:function(a){this.suspendLayout=false;var b=[];this.removeAll(true);a.each(function(c){b.push({xtype:"ft-reviewssion-transfer-settingsitem",record:c,disabled:c.get("isLocal")})});this.add(b);this.suspendLayout=true},askDiscardChanges:function(d,a){var b=this,c;c=Ext.create("FT.window.CancelSave",{message:FT.i18n("Any unsaved changes will be lost if you navigate away from this page."),discardText:FT.i18n("Leave"),saveText:FT.i18n("Stay here"),cancelHandler:false,saveHandler:function(){d.apply(a,[false]);this.close()},discardHandler:function(){d.apply(a,[true]);b.reset();this.close()}});c.show()},isDirty:function(){return !Ext.isEmpty(this.getTransferRecords())},getTransferRecords:function(){var c=this.getSelectedItems(),b=Ext.pluck(c,"record"),a=this.store.getModifiedRecords();return Ext.Array.intersect(b,a)},getSelectedItems:function(){var a=[];if(!Ext.isDefined(this.items)){return[]}this.items.each(function(d,b,c){if(d.isSelected()){a.push(d)}});return a},startTransfer:function(e,b){var a=this.getTransferRecords(),d=[],c;Ext.each(a,function(g){if(g.dirty!==true){return}c=g.getChanges();c.id=g.getId();c.status_entity=g.get("status_entity");d.push(c)});FTApi.ReviewSession.transfer({reviewSessionId:this.reviewSessionId,transferData:d},function(g){var h=g&&g.success||false;e.apply(b,[h,g])},this,{timeout:99999999})},reset:function(){this.store.removeAll()}});Ext.define("FT.reviewsession.transfer.SettingsItem",{extend:"Ext.container.Container",alias:"widget.ft-reviewssion-transfer-settingsitem",cls:"ft-reviewsession-transfer-settingsitem",layout:{type:"column"},record:null,dirtyCls:"dirty-item",selectionDirty:false,disabled:false,initComponent:function(){var a=this.record;Ext.Function.interceptAfter(a,"endEdit",this._onRecordEdit,this);this.statusEditor=this._createStatusEditor(a);this.thumbnail=Ext.create("FT.template.ThumbnailDetails",{detailItemConfigs:[{dataIndex:"version_link",renderer:"FTrack.grid.SimpleLinkRenderer"},{dataIndex:"name"},{dataIndex:"description"},{dataIndex:"version"}],toolbarItems:[]});this.selectionComponent=Ext.create("Ext.form.field.Checkbox",{margin:"0 10 0 0",disabled:this.disabled,listeners:{change:this._onSelectionChanged,scope:this}});Ext.Function.interceptAfter(this.selectionComponent,"onBoxClick",this._onUserSelectionChange,this);this.notes=Ext.create("FT.reviewsession.transfer.SettingsItemNotes",{columnWidth:0.9,padding:"0 10",reviewSessionId:this.record.get("id")});this.notes.on("updatenewnote",this._onNotesNew,this,{buffer:500});this.notes.on({updatenoteselection:this._onNoteSelectionUpdate,storeload:this._onNotesStoreLoad,scope:this});this.items=[this.selectionComponent,{xtype:"container",layout:{type:"vbox",align:"stretch"},items:[{xtype:"component",tpl:this.thumbnail,data:a.data},{margin:"10 0 10 0",xtype:"component",tpl:Ext.create("FT.template.ReviewSessionObjectStatusBar"),data:a.data.review_statuses},this.statusEditor]},this.notes];this.callParent(arguments)},_onUserSelectionChange:function(a){this.selectionDirty=true},isSelected:function(){return this.selectionComponent.getValue()},_createStatusEditor:function(a){var c,b=a.get("status_entity")!==null;c=Ext.create("FT.ui.StatusEditor",{statusType:"assetversion",displayField:"name",valueField:"statusid",listeners:{change:this._onStatusEditorChanged,scope:this}});if(b){c.emptyText=FT.i18n("No changes");c.editId(a.get("status_entity").id,a.get("status_entity").type)}else{c.disable();c.emptyText="No task attached";c.applyEmptyText()}return c},_onSelectionChanged:function(d,c,a){var b=c!==this.hasCls(this.dirtyCls);if(b){if(c){this.addCls(this.dirtyCls)}else{this.removeCls(this.dirtyCls)}}},_onRecordEdit:function(a){if(a){return}this.softSelect()},getStatusIds:function(){return Ext.pluck(Ext.pluck(this.statusEditor.getStore().data.items,"data"),"statusid")},softSelect:function(){if(!this.selectionDirty){this.selectionComponent.setValue(true)}},select:function(a){if(!this.disabled){this.selectionComponent.setValue(a)}},_onStatusEditorChanged:function(){this.record.beginEdit();this.record.set("statusid",this.statusEditor.getValue());this.record.endEdit()},_onNotesNew:function(a){var b=a;if(Ext.isEmpty(a.text)&&a.attachments.length===0){b=null}this.record.beginEdit();this.record.set("new_note_content",b);this.record.endEdit()},_onNoteSelectionUpdate:function(a){var b=a;if(a.length===0){b=null}this.record.beginEdit();this.record.set("transfer_note_ids",b);this.record.endEdit()},_onNotesStoreLoad:function(){var a=Ext.clone(this.notes.selectedNotes);if(a.length===0){a=null}this.record.beginEdit();this.record.set("transfer_note_ids",a);this.record.endEdit(true)}});Ext.define("FT.reviewsession.transfer.SettingsItemNotes",{cls:"reviewsession-transfer-notesview",extend:"FT.directive.DirectiveDataView",alias:"widget.ft-reviewssion-transfer-settingsitemnotes",autoScroll:true,loadMask:false,initComponent:function(){this.addEvents("updatenoteselection","updatenewnote");this.footerTemplate=new Ext.XTemplate('<div class="note-directive">','<form class="new-note fake-form" style="width: 100%;">','<textarea class="reply" rows="1" placeholder="Click here to type a new note..."></textarea>',"</form>","</div>");this.on("containerclick",this._onContainerClick,this);this.store=Ext.create("Ext.data.Store",{model:"FT.directive.CompositeModel",pageSize:1000000,autoLoad:true,proxy:{type:"direct",limitParam:"pageSize",directFn:"FTApi.Note.get",extraParams:{entityId:this.reviewSessionId,entityType:"reviewsessionobject"}}});this.relayEvents(this.store,["load"],"store");Ext.Function.interceptBefore(this.store,"onProxyLoad",this._onProxyLoad,this);this.directives={note:Ext.create("FT.directive.note.NoteDirective",{enableCollapseChildren:false,enableReply:false,enableStar:false,enableDisplayRecipients:false,enableLink:false,enableUserNameLink:false,enableCheckbox:true,onChecked:Ext.bind(this.onChecked,this),isChecked:Ext.bind(this.isChecked,this),enableFeedbackHeader:false})};this.selectedNotes=[];this.callParent(arguments)},_onProxyLoad:function(b){var a=b.getRecords();this.selectedNotes=Ext.pluck(Ext.pluck(a,"data"),"itemId")},isChecked:function(a){return this.selectedNotes.indexOf(a.noteId)!==-1},onChecked:function(b,a){if(this.selectedNotes.indexOf(b)===-1){this.selectedNotes.push(b)}else{Ext.Array.remove(this.selectedNotes,b)}this.refreshNode(a);this.fireEvent("updatenoteselection",Ext.clone(this.selectedNotes))},renderHeader:Ext.emptyFn,renderFooter:function(){return this.footerTemplate.apply()},_onContainerClick:function(a,d){var c;if(d.getTarget(".new-note")!==null){if(Ext.isDefined(this.newNoteForm)===false){c=Ext.fly(this.getEl()).down(".new-note");c.setHTML("");this.newNoteForm=Ext.create("FT.directive.note.NoteForm",{renderTo:c,buttonsUi:"plain",enableCategory:false,enableRecipients:false,allowBlank:true,bodyPadding:0});var b=FT.glyphIcon("todo",{cls:"note-todo-icon"});this.noteTodo=Ext.create("Ext.Component",{cls:"note-todo",hidden:true,html:b+' <span class="text-faded"> This note can be marked as completed.</span>'});this.newNoteForm.add(this.noteTodo);this.isNoteformOpen=true;this.newNoteForm.on({close:this._destroyNotesForm,beforesubmit:this._onSubmitNote,updateattachments:this._persistNote,scope:this})}}},_destroyNotesForm:function(){this.refresh();this.newNoteForm.destroy();this.newNoteForm=undefined},_onSubmitNote:function(){this.isNoteformOpen=false;this.newNoteForm.dockedItems.each(function(a){a.hide()});this.newNoteForm.setItemsEnabled(true);this.newNoteForm.textareaField.on("focus",function(){this.newNoteForm.dockedItems.each(function(a){a.show()});this.isNoteformOpen=true;this.noteTodo.hide()},this,{single:true});this.newNoteForm.cancelButton.hide();this.newNoteForm.submitButton.setText(FT.i18n("Update note"));if(this.newNoteForm.getNoteRecord().get("is_todo")){this.noteTodo.show()}else{this.noteTodo.hide()}this._persistNote();return false},_persistNote:function(){var c,d,a,b;if(this.isNoteformOpen===true){return}c=this.newNoteForm.getNoteRecord();d=c.get("text");a=c.get("attachments");b=c.get("is_todo");this.fireEvent("updatenewnote",{text:d,attachments:a,is_todo:b});if(Ext.isEmpty(d)&&a.length===0){this._destroyNotesForm();return}},selectAll:function(){if(this.selectedNotes.length===this.store.getCount()){this.selectedNotes=[]}else{this.selectedNotes=[];this.store.each(function(b,a){this.selectedNotes.push(b.get("itemId"))},this)}this.store.each(function(b,a){this.refreshNode(a)},this);this.fireEvent("updatenoteselection",Ext.clone(this.selectedNotes))}});Ext.define("FT.reviewsession.transfer.Menu",{extend:"Ext.container.Container",cls:"background-light border-left",layout:{type:"vbox",align:"stretch",defaultMargins:"5 0",padding:20},initComponent:function(){this.items=[{xtype:"button",text:FT.i18n("Start transfer"),cls:"button-primary",handler:function(){this.fireEvent("start-transfer-clicked")},scope:this,permission:{name:"MANAGE_REVIEW_SESSION",allow:"show",deny:"hide"}},{xtype:"button",text:FT.i18n("Cancel"),handler:function(){this.fireEvent("cancel-clicked")},scope:this,permission:{name:"MANAGE_REVIEW_SESSION",allow:"show",deny:"hide"}},this.informationPane=Ext.create("Ext.Component",{xtype:"component",tpl:new Ext.XTemplate('<div class="reviewsession-transfer-menu__date">','<tpl if="Ext.isDate(date)">',"Last transferred ","{[FTrack.grid.FuzzyDateRenderer(values.date)]}","</tpl>","</div>"),flex:1})];this.callParent(arguments)},setTransferDate:function(a){this.informationPane.update({date:a})},reset:function(){this.informationPane.update({date:null})}});Ext.define("FT.reviewsession.transfer.BatchStatusEditor",{extend:"FT.button.Selector",editable:false,forceSelection:true,displayField:"name",valueField:"statusid",queryMode:"local",transferSettingsPanel:null,initComponent:function(){this.store=FT.util.copyStore("FT.store.TaskStatus");this.callParent(arguments)},onBeforeMenuShow:function(){var a=this.transferSettingsPanel.items.items,c=0,g=a.length,e,d={};function b(h){d[h]=true}for(;c<g;c++){e=a[c];if(e.getStatusIds()!==null){Ext.each(e.getStatusIds(),b)}}this.store.filterBy(function(h){return Ext.isDefined(d[h.get("statusid")])});this.doGenerateMenu()}});Ext.define("FT.newfilters.FilterPanel",{extend:"Ext.panel.Panel",layout:{type:"form"},cls:"x-unselectable",enableFilterControls:true,initComponent:function(){var a=[];if(!this.bodyPadding){this.bodyPadding=Ext.String.format("15 {0} 10 10",10+Ext.getScrollbarSize().width)}Ext.each(this.tools,function(b){a.push(Ext.apply(b,{filterPanel:this,availableStore:this.availableStore}))},this);delete this.tools;this.dockedItems=[{xtype:"toolbar",dock:"top",overflow:"auto",enableOverflow:true,items:a}];this.callParent(arguments);this.activeStore=Ext.create("FT.newfilters.ActiveStore",{defaultFilters:this.defaultFilters,listeners:{add:this._onFilterAdd,remove:this._onFilterRemove,update:this._onUpdate,scope:this}});this.activeStore.bindAvailableStore(this.availableStore,true);this.getSerialized=Ext.bind(this.activeStore.getSerialized,this.activeStore);this.getMetafilters=Ext.bind(this.activeStore.getMetafilters,this.activeStore);this.resetDefaultFilters=Ext.bind(this.activeStore.resetDefaultFilters,this.activeStore)},addFilter:function(a){this.activeStore.insert(0,{field:a})},_onFilterRemove:function(b,a){},_onFilterAdd:function(c,b,e){var h=[],g,j,a=[],d;if(this.enableFilterControls){a.push({ptype:"ft-filter-control-plugin",enableExtendedControls:true,reserveSpace:false})}Ext.each(b,function(k,l,m){if(k.get("presentation")!="basic"){return}if(!k.getFilterInstance()){return}j=k.available().get("group");if(j.length){j="("+j.join(" / ")+")"}d="";if(k.available().get("help")){d=Ext.String.format('<img src="/resources/icons/question-mark.png" data-qtip="{0}" style="margin-bottom: -4px; margin-left: 4px;" class="x-form-item-label-questionmark" />',k.available().get("help"))}g=k.getFilterInstance().getRenderable({labelAlign:"top",labelStyle:"margin: 0px 0 5px;",labelSeparator:"",margin:"0px 0px 15px 0px",plugins:a,fieldBodyCls:"ft-filter-field",fieldLabel:Ext.String.format('<div class="text-ellipsis"><strong>{0}</strong> <span class="text-faded">{1}</span>{2}</div>',k.available().get("label"),j,d)});h.push(g)},this);this.insert(e,h)},loadSerialized:function(b,a){this.activeStore.loadSerialized(b,a)},_onUpdate:function(){this.fireEvent("filterschanged",this.getMetafilters())},onRender:function(){this.callParent(arguments);this.mon(this.getTargetEl(),"scroll",function(c,b,a){this._scrollPosition=this.getTargetEl().getScroll()},this);this.on("afterlayout",function(){if(this._scrollPosition){var b=this.getTargetEl(),a=this._scrollPosition;b.scrollTo("left",a.left);b.scrollTo("top",a.top)}},this)}});Ext.define("FT.newfilters.Model",{extend:"Ext.data.Model",fields:["field",{name:"value",defaultValue:null},{name:"comparison",defaultValue:"is"},{name:"presentation",defaultValue:"basic"},{name:"or",defaultValue:false},{name:"disabled",defaultValue:false},{name:"reversed",defaultValue:false}],getFilterInstance:function(){if(this.instance){return this.instance}var c=this.available(),b=c.get("type"),a="ft-filter."+b;if(!Ext.ClassManager.getByAlias(a)){return null}this.instance=Ext.createByAlias(a,{config:c.get("config"),initialValue:this.get("value"),initialComparison:this.get("comparison"),disabled:this.get("disabled"),reversed:this.get("reversed")});this.instance.on("value-changed",function(d){this.set("value",d)},this);this.instance.on("disabled-changed",function(d){this.set("disabled",d)},this);this.instance.on("reversed-changed",function(d){this.set("reversed",d)},this);this.instance.on("comparison-changed",function(e){var d=this.isActive();this.beginEdit();this.set("comparison",e);this.endEdit(!this.isActive()&&!d)},this);this.instance.on("remove",function(){var d=!this.isActive();this.store.removeFilter(this,d)},this);return this.instance},isActive:function(){var a=this.getFilterInstance();return a.isActive(this.get("value"),this.get("comparison"))&&a.isDisabled()==false},available:function(){return this.store.availableStore.findRecord("field",this.get("field"),undefined,undefined,undefined,true)},getMetafilters:function(){return Ext.applyIf({field:this.get("field"),value:this.getFilterInstance().getValidValue(this.get("value")),type:this.getFilterInstance().type,comparison:this.get("comparison"),or:this.get("or"),invert:this.get("reversed")},this.available().get("extra"))},getSerialized:function(){return{field:this.get("field"),value:this.get("value"),comparison:this.get("comparison"),or:this.get("or"),presentation:this.get("presentation"),disabled:this.get("disabled"),reversed:this.get("reversed")}},destroy:function(){this.callParent(arguments);if(this.instance){this.instance.destroy()}}});Ext.define("FT.newfilters.ActiveStore",{extend:"Ext.data.Store",proxy:{type:"memory"},defaultFilters:null,constructor:function(){this.model="FT.newfilters.Model";this.callParent(arguments);this.defaultFilters=Ext.value(this.defaultFilters,[])},_addDefaultFilters:function(c){var d=[],a=Ext.clone(this.defaultFilters),b;Ext.each(a,function(h,e,g){if(!c){delete h.value}if(this.isAvailable(h.field)){b=this.findBy(function(j){return j.get("field")===h.field&&j.get("presentation")===h.presentation});if(!h.presentation||b===null){d.push(h)}}},this);this.add(d)},_clean:function(){var a=[];this.each(function(b){if(!this.isAvailable(b.get("field"))){a.push(b)}},this);this.remove(a)},bindAvailableStore:function(a){this.availableStore=a;this.availableStore.on("load",this._clean,this);if(this.availableStore.getCount()===0||this.availableStore.isLoading()){this.availableStore.on("load",Ext.pass(this._addDefaultFilters,[true]),this,{single:true})}else{this._addDefaultFilters(true)}},isAvailable:function(a){return this.availableStore.findExact("field",a)!==-1},loadSerialized:function(b,a){if(this.availableStore.getCount()===0||this.availableStore.isLoading()){this.availableStore.on("load",Ext.pass(this._doLoadSerialized,[b,a]),this,{single:true})}else{this._doLoadSerialized(b,a)}},_doLoadSerialized:function(b,a){var c=[];Ext.each(b,function(g,d,e){if(this.isAvailable(g.field)){c.push(g)}},this);this.removeAll();this.add(c);if(b.length===0){this._addDefaultFilters(false)}if(!a){this.fireEvent("update",this)}},remove:function(a){if(Ext.isDefined(a.start)&&Ext.isDefined(a.end)){a=this.getRange(a.start,a.end)}this.callParent(arguments);Ext.each(a,function(b){b.destroy()})},getSerialized:function(b){var a=[];this.each(function(c){if(b||c.isActive()){a.push(c.getSerialized())}});return a},getMetafilters:function(){var a=[];this.each(function(b){if(b.isActive()){a.push(b.getMetafilters())}});return a},removeFilter:function(b,a){if(!Ext.isArray(b)){b=[b]}this.remove(b);if(!a){this.fireEvent("update",this)}},resetDefaultFilters:function(){this.removeAll();this._addDefaultFilters(true);this.fireEvent("update",this)}});Ext.define("FT.newfilters.AvailableStore",{extend:"Ext.data.Store",fields:["label","field","type","config",{name:"enableAny",defaultValue:false},{name:"extra",defaultValue:null},{name:"group",defaultValue:[]},{name:"help",defaultValue:null}],constructor:function(){this.callParent(arguments)}});Ext.define("FT.newfilters.ConfigureFilterButton",{extend:"Ext.Button",alias:"widget.ft-configure-filter-button",iconAlign:"right",glyph:FT.glyph("filter"),border:false,filterPanel:null,highlightCls:"ft-filter-highlight",initComponent:function(){this.callParent(arguments);if(this.filterPanel){this.filterPanel.activeStore.on({datachanged:this._onFiltersChanged,update:this._onFiltersChanged,scope:this})}},_onFiltersChanged:function(){var a=this.filterPanel.getSerialized().length;this.updateState(a)},updateState:function(a){if(a){this.addCls(this.highlightCls);this.setText(FT.i18n("{numberOfFilters, plural, one {1 filter} other {# filters}}",{values:{numberOfFilters:a}}))}else{this.removeCls(this.highlightCls);this.setText("")}}});Ext.define("FT.newfilters.Comparison",{extend:"Ext.form.field.ComboBox",alias:"widget.filter-comparisons",displayField:"name",valueField:"key",allComparisons:[{key:"lt",name:FT.i18n("less than")},{key:"gt",name:FT.i18n("greater than")},{key:"eq",name:FT.i18n("contains")},{key:"neq",name:FT.i18n("does not contain")},{key:"is",name:FT.i18n("is")},{key:"isnt",name:FT.i18n("is not")},{key:"nset",name:FT.i18n("is empty")},{key:"set",name:FT.i18n("is not empty")}],initComponent:function(){var a=[];Ext.each(this.allComparisons,function(b){if(this.comparisons.indexOf(b.key)!==-1){a.push(b)}},this);this.store=Ext.create("Ext.data.Store",{fields:["key","name"],data:a});this.callParent(arguments)}});Ext.define("FT.newfilters.SearchField",{extend:"Ext.form.field.Text",emptyText:FT.i18n("Type to filter..."),tooltip:null,delay:500,initComponent:function(){this.delayedFilterFieldChanged=new Ext.util.DelayedTask(this.onFilterChanged,this);if(this.tooltip){this.inputAttrTpl='data-qtip="'+this.tooltip+'"'}this.callParent(arguments);this.on("change",function(){this.delayedFilterFieldChanged.delay(this.delay)},this)},onFilterChanged:function(){this.fireEvent("filter-changed",this.getValue())}});Ext.define("FT.newfilters.AdvancedDialog",{extend:"FT.ModalWindow",autoScroll:true,layout:{type:"vbox",align:"stretch"},bodyPadding:"0 10 10",cls:"x-unselectable",activeStore:null,availableStore:null,initComponent:function(){var a;a={hidden:true,bodyPadding:"0 10 10",listeners:{add:this.autoToggleVisible,remove:this.autoToggleVisible,scope:this}};this.items=[this.emptyText=Ext.create("Ext.Component",{cls:"ft-grid-emptytext",margin:"20px 0 0 0 ",html:["<p>",FT.i18n("It looks like you haven't configured any filters yet."),"</p><p>",FT.i18n("Add one by choosing a condition above."),"</p>"].join("")}),this.allCondition=Ext.create("Ext.form.Panel",Ext.apply({title:Ext.String.format('<span class="title--small">{0}</span>',FT.i18n("All of the following conditions must match"))},a)),this.anyCondition=Ext.create("Ext.form.Panel",Ext.apply({title:Ext.String.format('<span class="title--small">{0}</span>',FT.i18n("Any of the following conditions must match"))},a))];this.anyConditionStore=Ext.create("FT.newfilters.AvailableStore",{proxy:{type:"memory"}});this.mon(this.availableStore,"load",this.populateAnyConditionStore,this);this.populateAnyConditionStore();this.tbar=Ext.create("Ext.toolbar.Toolbar",{padding:"10 15",items:[{xtype:"ft-add-filter-tool",text:FT.i18n('Add "all" condition'),availableStore:this.availableStore,selectHandler:function(c,b){this.addFilter(c,false)},scope:this},{xtype:"ft-add-filter-tool",text:FT.i18n('Add "any" condition'),hidden:this.anyConditionStore.getCount()===0,availableStore:this.anyConditionStore,selectHandler:function(c,b){this.addFilter(c,"ANY")},scope:this}]});this.callParent(arguments);this._onFilterAdd(this.activeStore,this.activeStore.data.items,0);this.mon(this.activeStore,"add",this._onFilterAdd,this)},populateAnyConditionStore:function(){this.anyConditionStore.removeAll();this.availableStore.each(function(a){if(a.get("enableAny")){this.anyConditionStore.add(Ext.clone(a.data))}},this)},autoToggleVisible:function(a,b){if(a.items.getCount()){a.show()}else{a.hide()}if(this.anyCondition.hidden&&this.allCondition.hidden){this.emptyText.show()}else{this.emptyText.hide()}},addFilter:function(b,a){this.activeStore.insert(0,{field:b,or:a,presentation:"advanced"})},_onFilterAdd:function(j,c,g){var h=[],a=[],b,k,d=[],e;d.push("ft-filter-control-plugin");Ext.each(c,function(l,m,n){if(l.get("presentation")!="advanced"){return}if(!l.getFilterInstance()){return}k=l.available().get("group");if(k.length){k="("+k.join(" / ")+")"}e="";if(l.available().get("help")){e=Ext.String.format('<img src="/resources/icons/question-mark.png" data-qtip="{0}" style="margin-bottom: -4px;" class="x-form-item-label-questionmark" />',l.available().get("help"))}b=l.getFilterInstance().getRenderable({labelAlign:"left",labelSeparator:"",fieldStyle:"width:100%",margin:"0 0 15px 0",plugins:d,fieldLabel:Ext.String.format('<div class="text-ellipsis"><strong>{0}</strong> <span class="text-faded">{1}</span></div>{2}',l.available().get("label"),k,e)},"advanced");if(l.get("or")){h.push(b)}else{a.push(b)}},this);this.anyCondition.insert(g,h);this.allCondition.insert(g,a)}});Ext.define("FT.newfilters.AdvancedFilterPanel",{extend:"FT.newfilters.FilterPanel",initComponent:function(){this.advancedLabel=Ext.create("Ext.Component",{tpl:'<h4 class="title--condensed">Advanced filters</h4><span class="text-faded">{count:plural("advanced filter")}</span>'});this.advancedEditButton=Ext.create("Ext.Button",{text:FT.i18n("Edit"),ui:"link",handler:this.showDialog,scope:this});this.advancedRemoveButton=Ext.create("Ext.Button",{glyph:FT.glyph("remove"),tooltip:FT.i18n("Remove"),margin:"0 2",ui:"plain",cls:"tool",handler:this.clearAdvancedFilters,scope:this});this.tbar=Ext.create("Ext.toolbar.Toolbar",{padding:10,items:[this.advancedLabel,"->",this.advancedEditButton,this.advancedRemoveButton]});this.callParent(arguments);this.activeStore.on({add:this.toggleShow,remove:this.toggleShow,scope:this})},clearAdvancedFilters:function(){var a=[];this.activeStore.each(function(b){if(b.get("presentation")==="advanced"){a.push(b)}});this.activeStore.remove(a);this._onUpdate()},toggleShow:function(){var a=0;this.activeStore.each(function(b){if(b.get("presentation")==="advanced"){a+=1}});this.advancedLabel.update({count:a});if(a){this.advancedEditButton.show();this.advancedLabel.show();this.advancedRemoveButton.show()}else{this.advancedEditButton.hide();this.advancedLabel.hide();this.advancedRemoveButton.hide()}},showDialog:function(){var a=this;this.dialog=Ext.create("FT.newfilters.AdvancedDialog",{width:600,height:600,title:FT.i18n("Advanced filter settings"),autoShow:true,availableStore:this.availableStore,activeStore:this.activeStore,listeners:{destroy:function(){delete a.dialog}},bbar:["->",{text:FT.i18n("Done"),cls:"button-primary",handler:function(){this.dialog.destroy();this._onUpdate()},scope:this}]})},_onUpdate:function(){if(this.dialog){return}this.callParent(arguments)}});Ext.define("FT.newfilters.Add",{extend:"FT.button.Selector",alias:"widget.ft-add-filter-tool",text:FT.i18n("Add filter"),displayField:"label",valueField:"field",sortItems:true,initComponent:function(){this.store=this.availableStore;this.callParent(arguments)},selectHandler:function(b,a){this.filterPanel.addFilter(b)}});Ext.define("FT.newfilters.Configure",{extend:"Ext.Button",alias:"widget.ft-configure-filter-tool",border:false,glyph:FT.glyph("configure"),filterPanel:null,menuItems:null,initComponent:function(){this.menu=[{text:FT.i18n("Reset default"),handler:function(){this.filterPanel.resetDefaultFilters()},scope:this}];if(this.filterPanel&&this.filterPanel.showDialog){this.menu.push({text:FT.i18n("Advanced filters"),handler:function(){this.filterPanel.showDialog()},scope:this})}if(this.menuItems){this.menu=this.menu.concat(this.menuItems)}this.callParent(arguments)}});Ext.define("FT.newfilters.tool.AutoUpdate",{extend:"Ext.button.Split",alias:"widget.ft-autoupdate-filter-tool",text:FT.i18n("Apply"),autoApplyEnabledCls:"ft-filter-autoupdate-enabled",highlightCls:"toolbar-button-highlight",stateId:"",initComponent:function(){this.VARIABLE_NAME="filter-autoupdate"+this.stateId;this._autoUpdateEnabled=FT.getVar(this.VARIABLE_NAME,true);if(this._autoUpdateEnabled){this.cls=this.autoApplyEnabledCls}this.menu=[{xtype:"menucheckitem",checked:this._autoUpdateEnabled,checkHandler:this._handleAutoUpdateClicked,scope:this,text:FT.i18n("Apply filters automatically")}];this.callParent(arguments);this.filterPanel.on("filterschanged",function(){if(this.rendered&&!this._autoUpdateEnabled){this.addCls(this.highlightCls)}},this);this.on("click",this._handleClickEvent,this)},isAutoUpdateEnabled:function(){return this._autoUpdateEnabled},_handleAutoUpdateClicked:function(b,a){this._autoUpdateEnabled=a;FT.setVar(this.VARIABLE_NAME,a);if(a){this.addCls(this.autoApplyEnabledCls)}else{this.removeCls(this.autoApplyEnabledCls)}this.fireEvent("autoupdate-filters",this,a)},_handleClickEvent:function(){this.removeCls(this.highlightCls);this.fireEvent("apply-filters",this)}});Ext.define("FT.newfilters.field.FilterControl",{extend:"Ext.AbstractPlugin",alias:"plugin.ft-filter-control-plugin",cls:"ft-control-filter-button",enableExtendedControls:false,reserveSpace:true,constructor:function(c){this.callParent(arguments);var a=this.getCmp(),b,d,g,e=[];g=FT.glyphIcon("remove",{cls:this.cls+" remove",tooltip:FT.i18n("Remove")});e.push(g);if(this.enableExtendedControls){d=FT.glyphIcon("iso",{cls:Ext.String.format("{0} reverse {1}",this.cls,this.getCmp().instance.isReversed()?"pressed":""),tooltip:FT.i18n("Invert")});b=FT.glyphIcon("pause",{cls:Ext.String.format("{0} disable {1}",this.cls,this.getCmp().instance.isDisabled()?"pressed":""),tooltip:FT.i18n("Disable")});e.push(d,b)}if(this.reserveSpace){Ext.apply(a,{labelableRenderTpl:Ext.Array.insert(Ext.clone(Ext.form.Labelable.prototype.labelableRenderTpl),-2,'<td width="30">'+e.join("")+"</td>")})}else{Ext.apply(a,{beforeLabelTextTpl:e.join("")})}},init:function(a){if(a.rendered){a.el.on("click",this._onLabelClick,this)}else{a.on("afterrender",function(){a.el.on("click",this._onLabelClick,this)},this)}},_onLabelClick:function(b,d,a){var c=b.getTarget("."+this.cls);if(c){if(b.getTarget(".remove")){this.getCmp().instance.remove()}if(b.getTarget(".reverse")){this.getCmp().instance.toggleReversed();Ext.fly(c).toggleCls("pressed")}if(b.getTarget(".disable")){this.getCmp().instance.toggleDisabled();Ext.fly(c).toggleCls("pressed")}}}});Ext.define("FT.newfilters.field.Base",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},initialComparison:"is",disabled:false,reversed:false,getValidValue:function(a){return a},constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this);this.callParent(arguments);this.on("value-changed",function(c,b){this.initialValue=c},this);this.on("comparison-changed",function(c,b){this.initialComparison=c},this);this.on("disabled-changed",function(c,b){this.disabled=c},this);this.on("reversed-changed",function(c,b){this.reversed=c},this)},remove:function(){this.fireEvent("remove")},isValid:function(){return true},isActive:function(b,a){return b!==null},isDisabled:function(){return this.disabled},isReversed:function(){return this.reversed},valueChanged:function(c,b,a){this.fireEvent("value-changed",b)},comparisonChanged:function(c,b,a){this.fireEvent("comparison-changed",b)},toggleDisabled:function(c,b,a){this.fireEvent("disabled-changed",this.isDisabled()==false)},toggleReversed:function(c,b,a){this.fireEvent("reversed-changed",this.isReversed()==false)},destroy:function(){if(this.component){this.component.destroy()}},getRenderable:function(a,c){var b=Ext.applyIf(this.getRenderableConfig(c),a);b.instance=this;this.component=Ext.widget(b);return this.component}});Ext.define("FT.newfilters.field.Boolean",{extend:"FT.newfilters.field.Base",alias:["ft-filter.boolean"],type:"boolean",constructor:function(){var a=[["true",FT.i18n("Yes")],["false",FT.i18n("No")]];this.callParent(arguments);this.store=Ext.create("Ext.data.ArrayStore",{fields:["value","name"]});if(Ext.isObject(this.config)&&this.config.options){a=this.config.options}this.store.getProxy().data=a;this.store.load()},valueChanged:function(c,b,a){if(b.length===0){b=null}else{b=b[0]==="true"}this.fireEvent("value-changed",b)},getRenderableConfig:function(){var a=this.initialValue;if(a!==null){a=[a.toString()]}return Ext.apply({value:a,xtype:"ft-checkboxlist",singleSelection:true,store:this.store,listeners:{change:this.valueChanged,scope:this}},this.config)}});Ext.define("FT.newfilters.field.Checkboxlist",{extend:"FT.newfilters.field.Base",alias:["ft-filter.checkboxlist","ft-filter.list"],type:"list",buffer:500,displayField:"name",valueField:"value",constructor:function(){this.callParent(arguments);this.options=Ext.value(this.config.options,[]);this.valueField=Ext.value(this.config.valueField,this.valueField);this.displayField=Ext.value(this.config.displayField,this.displayField);if(!this.config.store){this.store=Ext.create("Ext.data.ArrayStore",{fields:[this.valueField,this.displayField]});this.store.getProxy().data=this.options;this.store.load()}else{this.store=this.config.store}},getValidValue:function(b){var a=this.store.collect(this.valueField,true,true);return Ext.Array.intersect(b,a)},isActive:function(b,a){return b&&this.getValidValue(b).length>0},valueChanged:function(c,b,a){if(b.length===0){b=null}if(Ext.isString(b)){b=b.split(", ")}this.fireEvent("value-changed",b)},getRenderableConfig:function(b){var e="ft-checkboxlist",a=this.initialValue,d,c;if(this.store.isLoading()||this.store.getCount()>10||b==="advanced"){e="ft-labeleditor";if(a){a=a.join(", ")}}d={xtype:"filter-comparisons",width:100,hidden:b!=="advanced",value:this.initialComparison,comparisons:["is","isnt","set","nset"],margin:"0 10 0 0",listeners:{change:this.comparisonChanged,scope:this}};c=Ext.apply({value:a,xtype:e,valueField:this.valueField,displayField:this.displayField,labelSeparator:"",flex:1,store:this.store,listeners:{change:{fn:this.valueChanged,scope:this,buffer:this.buffer}}},this.config);return{xtype:"fieldcontainer",layout:"hbox",items:[d,c]}}});Ext.define("FT.newfilters.field.Date",{extend:"FT.newfilters.field.Base",alias:"ft-filter.date",type:"date",dynamicFilters:[{name:FT.i18n("This month"),value:"THIS_MONTH",mode:["PAST"]},{name:FT.i18n("This week"),value:"THIS_WEEK",mode:["PAST"]},{name:FT.i18n("Today"),value:"TODAY",mode:["PAST","FUTURE"]},{name:FT.i18n("Next month"),value:"NEXT_MONTH",mode:["FUTURE"]},{name:FT.i18n("Next week"),value:"NEXT_WEEK",mode:["FUTURE"]},{name:FT.i18n("Tomorrow"),value:"TOMORROW",mode:["FUTURE"]},{name:FT.i18n("Date"),value:"CUSTOM",mode:["PAST","FUTURE","CUSTOM"]},{name:FT.i18n("Date range"),value:"CUSTOM_RANGE",mode:["PAST","FUTURE","CUSTOM"]}],getCustomDate:function(){var b,a;a=this.initialValue;if(Ext.isString(a)){a=Ext.Date.parse(a,"c")}b={xtype:"filter-comparisons",width:100,value:this.initialComparison,comparisons:["is","isnt","lt","gt"],margin:"0 10 0 0",listeners:{change:this.comparisonChanged,scope:this}};return Ext.widget({xtype:"fieldcontainer",layout:"hbox",hidden:!Ext.isDate(a),items:[b,{xtype:"datefield",allowBlank:false,format:FT.Settings.get("FORMAT","date"),value:a,submitFormat:"Y-m-d",startDay:Number(FT.Settings.get("TIME","week_startday")),flex:1,listeners:{change:this._onCustomDateValueChanged,scope:this}}]})},_onCustomDateValueChanged:function(d,c,a){var b=d.getSubmitValue();this.fireEvent("value-changed",b)},_onCustomRangeValueChanged:function(){fromDateField=this.customRange.items.first();toDateField=this.customRange.items.last();if(fromDateField.getErrors().length===0&&toDateField.getErrors().length===0){valueFrom=fromDateField.getSubmitValue();valueTo=toDateField.getSubmitValue();if(valueFrom&&valueTo){this.fireEvent("value-changed",[valueFrom,valueTo])}}else{return false}},getCustomRange:function(){var b,a;if(Ext.isArray(this.initialValue)){b=Ext.Date.parse(this.initialValue[0],"c");a=Ext.Date.parse(this.initialValue[1],"c")}return Ext.widget({xtype:"fieldcontainer",layout:"hbox",hidden:!(b&&a),items:[{xtype:"datefield",padding:"0 5 0 0",allowBlank:false,format:FT.Settings.get("FORMAT","date"),value:b,submitFormat:"Y-m-d",startDay:Number(FT.Settings.get("TIME","week_startday")),flex:1,listeners:{change:this._onCustomRangeValueChanged,scope:this}},{xtype:"datefield",padding:"0 0 0 5",allowBlank:false,submitFormat:"Y-m-d",format:FT.Settings.get("FORMAT","date"),value:a,startDay:Number(FT.Settings.get("TIME","week_startday")),flex:1,listeners:{change:this._onCustomRangeValueChanged,scope:this}}]})},onCheckboxChanged:function(b,a){var c;if(this.lastCheckedItem&&this.lastCheckedItem!==b){this.lastCheckedItem.suspendEvent("change");this.lastCheckedItem.setValue(false);this.lastCheckedItem.resumeEvent("change")}this.lastCheckedItem=b;if(a===false){this.customDate.hide();this.customRange.hide();this.fireEvent("value-changed",null)}else{if(b.name==="CUSTOM"){this.customDate.show();this.customRange.hide();c=this.customDate.items.last();if(c.getErrors().length===0){a=c.getSubmitValue();if(a){this.fireEvent("value-changed",a)}}else{return}}else{if(b.name==="CUSTOM_RANGE"){this.customDate.hide();this.customRange.show();if(this._onCustomRangeValueChanged()===false){return}}else{this.customDate.hide();this.customRange.hide();this.fireEvent("value-changed",b.name)}}}},getRenderableConfig:function(){var b=[],a,c=this.initialValue,d=["PAST","FUTURE"];if(this.config&&Ext.isArray(this.config.mode)){d=this.config.mode}if(Ext.isDate(this.initialValue)||Ext.Date.parse(this.initialValue,"c")){c="CUSTOM"}if(Ext.isArray(this.initialValue)){c="CUSTOM_RANGE"}delete this.lastCheckedItem;Ext.each(this.dynamicFilters,function(e){if(Ext.Array.intersect(d,e.mode).length===0){return}b.push(a=Ext.widget({xtype:"checkboxfield",boxLabelAttrTpl:'style="line-height:normal;"',labelSeparator:"",boxLabel:e.name,name:e.value,checked:e.value===c,listeners:{change:this.onCheckboxChanged,scope:this}}));if(a.checked){this.lastCheckedItem=a}if(e.value=="CUSTOM"){b.push(this.customDate=this.getCustomDate())}else{if(e.value=="CUSTOM_RANGE"){b.push(this.customRange=this.getCustomRange())}}},this);return Ext.apply({xtype:"fieldcontainer",layout:"anchor",items:b,vertical:true,columns:1,listeners:{change:this.valueChanged,scope:this}},this.config)}});Ext.define("FT.newfilters.field.Number",{extend:"FT.newfilters.field.Base",alias:["ft-filter.number","ft-filter.numeric"],type:"numeric",getRenderableConfig:function(){var b=Ext.apply({xtype:"numberfield",flex:1,value:this.initialValue,listeners:{change:this.valueChanged,scope:this}},this.config);var a={xtype:"filter-comparisons",width:100,value:this.initialComparison,comparisons:["is","isnt","lt","gt"],margin:"0 10 0 0",listeners:{change:this.comparisonChanged,scope:this}};return{xtype:"fieldcontainer",layout:"hbox",items:[a,b]}}});Ext.define("FT.newfilters.field.Resource",{extend:"FT.newfilters.field.Base",alias:"ft-filter.resource",type:"list",valueChanged:function(a){if(a.length===0){a=null}if(Ext.isString(a)){a=a.split(", ")}this.fireEvent("value-changed",a)},isActive:function(b,a){return this.callParent(arguments)||a=="nset"||a=="set"},getRenderableConfig:function(b){var a=this.initialValue,d,c;if(a){a=a.join(", ")}d=Ext.create("FT.spark.Component",{component:"ResourceSelector",flex:1,props:{value:a,className:"ftrack-spark-root",multi:true,messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),onChange:Ext.bind(this.valueChanged,this),users:true,groups:true}});c={xtype:"filter-comparisons",width:100,hidden:b!=="advanced",value:this.initialComparison,comparisons:["is","isnt","set","nset"],margin:"0 10 0 0",listeners:{change:this.comparisonChanged,scope:this}};return{xtype:"fieldcontainer",layout:"auto",items:[c,d]}}});Ext.define("FT.newfilters.field.ResourceLegacy",{extend:"FT.newfilters.field.Base",alias:"ft-filter.resource-legacy",type:"list",valueChanged:function(c,b,a){if(b.length===0){b=null}if(Ext.isString(b)){b=b.split(", ")}this.fireEvent("value-changed",b)},isActive:function(b,a){return this.callParent(arguments)||a=="nset"||a=="set"},getRenderableConfig:function(b){var a=this.initialValue,d,c;if(a){a=a.join(", ")}d=Ext.apply({xtype:"ft-resource-editor-legacy",flex:1,value:a,autoLoad:a&&a.length>0,listeners:{change:Ext.bind(this.valueChanged,this),beforequery:function(g){var e=FT.app.location.getProjectId();if(Ext.isEmpty(g.query)||this.store.getCount()===0){this.editId(e,"show")}}}},this.config);c={xtype:"filter-comparisons",width:100,hidden:b!=="advanced",value:this.initialComparison,comparisons:["is","isnt","set","nset"],margin:"0 10 0 0",listeners:{change:this.comparisonChanged,scope:this}};return{xtype:"fieldcontainer",layout:"hbox",items:[c,d]}}});Ext.define("FT.newfilters.field.String",{extend:"FT.newfilters.field.Base",alias:"ft-filter.string",type:"string",valueChanged:function(c,b,a){if(Ext.isEmpty(b)){b=null}this.fireEvent("value-changed",b)},isActive:function(b,a){return b!==null||["set","nset"].indexOf(a)!==-1},getRenderableConfig:function(){var b,a;b=Ext.apply({value:this.initialValue,xtype:"textfield",flex:1,listeners:{change:this.valueChanged,scope:this}},this.config);this.textField=Ext.widget(b);a={xtype:"filter-comparisons",width:100,value:this.initialComparison,comparisons:["is","isnt","eq","neq","set","nset"],margin:"0 10 0 0",listeners:{change:this.comparisonChanged,scope:this}};return{xtype:"fieldcontainer",layout:"hbox",items:[a,this.textField]}}});Ext.define("FT.newfilters.field.ApiQuery",{extend:"FT.newfilters.field.Base",alias:"ft-filter.api-query",type:"api-query",valueChanged:function(c,b,a){if(Ext.isEmpty(b)){b=null}this.fireEvent("value-changed",b)},isActive:function(b,a){return !!b},getRenderableConfig:function(){var b,a;b=Ext.apply({value:this.initialValue,xtype:"ft-api-query-text-area",listeners:{change:this.valueChanged,scope:this}},this.config);return b}});Ext.define("FT.newfilters.field.DynamicEnumerator",{extend:"FT.newfilters.field.Base",alias:"ft-filter.dynamic-enumerator",type:"list",valueChanged:function(c,b,a){if(b.length===0){b=null}if(Ext.isString(b)){b=b.split(", ")}this.fireEvent("value-changed",b)},isActive:function(b,a){return this.callParent(arguments)||a=="nset"||a=="set"},getRenderableConfig:function(b){var a=this.initialValue,d,c;if(a){a=a.join(", ")}d=Ext.apply({xtype:"ft-dynamicenumerator",loadWithoutRecord:true,flex:1,value:a,autoLoad:a&&a.length>0,listeners:{change:Ext.bind(this.valueChanged,this)}},this.config);c={xtype:"filter-comparisons",width:100,hidden:b!=="advanced",value:this.initialComparison,comparisons:["is","isnt","set","nset"],margin:"0 10 0 0",listeners:{change:this.comparisonChanged,scope:this}};return{xtype:"fieldcontainer",layout:"hbox",items:[c,d]}}});Ext.define("FT.directive.insight.InsightValueDirective",{extend:"FT.directive.Directive",constructor:function(config){this.tpl=new Ext.XTemplate('<tpl for=".">','<tpl if="!values.errors || !values.errors.length">','<div class="directive ft-dashboard-top-box-outer">','<div class="ft-dashboard-top-box" {[this.getTooltip(values)]}>',"<h2>{[this.render(values)]}{[this.getUnit(values)]}</h2>",'<span class="ft-dashboard-top-box-title">{title}</span>',"</div>","</div>","</tpl>","</tpl>",{getUnit:function(values){if(values.unit){return' <span class="insights__unit">'+values.unit+"</span>"}},getTooltip:function(values){if(values.tooltip){return'data-qtip="'+values.tooltip+'"'}},render:function(values){var value=values.value;if(values.renderer){value=eval(values.renderer)(value)}return value}});this.callParent(arguments)},events:[]});Ext.define("FT.view.InsightsView",{extend:"FT.directive.DirectiveDataView",deferEmptyText:false,emptyText:'<p class="ft-grid-emptytext-small">'+FT.i18n("No insights")+"</p>",disableSelection:true,loadMask:false,initComponent:function(){this.directives={insights_value:Ext.create("FT.directive.insight.InsightValueDirective")};this.callParent(arguments)}});Ext.define("FT.report.ReportWidget",{extend:"RAW.Widget",alias:"widget.report_widget",validPushEntities:[],mixins:{storeCreator:"FT.simplegrid.StoreCreator"},plugins:[{ptype:"ft-proxy-exception-mask-message",defaultErrorMessage:"Failed to load report data",documentationText:FT.i18n("Read more about reports"),documentationLink:"https://help.ftrack.com/using-ftrack/the-basics/reporting"}],header:false,layout:{type:"border",regionWeights:{west:-20,north:10,south:-10,east:20}},initWidget:function(){var a=[this._createGrid(),this._createInsightsView()];this.add(a);this.addDocked(this.getToolbar());this.updateWidget()},onBeforeModuleChange:Ext.emptyFn,updateWidget:function(){this.loadGrid();this.loadInsights();if(this.detailsPanel&&!this.detailsPanel.getCollapsed()){this.loadDetailsPanel()}},getToolbar:function(){var a=this.getToolbarItems();a.push("->",this.getExportButton(),this.getFilterButton());var b=Ext.create("Ext.toolbar.Toolbar",{dock:"top",items:a});return b},getToolbarItems:function(){return[]},getExportButton:function(){var a=[];if(this.exportTypes.length){Ext.Array.each(this.exportTypes,function(b){a.push({text:Ext.String.capitalize(b),handler:Ext.bind(this._onExport,this,[b])})},this);this.exportButton=Ext.create("Ext.button.Button",{glyph:FT.glyph("export"),qtip:FT.tip("toolbar-button-icononly-export"),ui:"plain",menu:a});return this.exportButton}},_onExport:function(b){var a=FTApi[this.controller];if(!a){return null}Ext.create("FT.report.ExportWindow",{exportType:b,reportId:this.reportId,directFn:a["export"],data:{filters:this.filters,sort:this.grid.store.getSorters()},items:[{xtype:"textfield",name:"filename",fieldLabel:FT.i18n("Filename"),allowBlank:true,style:{margin:"0 0 20px 0"}},{cls:"ft-info-text",html:"<p>"+FT.i18n('Note: If no date range filter is selected "This month" will be used.')+"</p>"}]}).show()},loadGrid:function(a){if(!this.grid){return}this.loadStore(this.grid.store,a)},loadInsights:function(){if(!this.insightsView){return}this.loadStore(this.insightsView.store)},loadDetailsPanel:function(a){},loadStore:function(a,c){var b=a.getProxy();if(!c){c={}}c.filters=this.filters;Ext.apply(b.extraParams,c);a.loadPage(1)},getGridStore:function(){var a=FTApi[this.controller];if(!a){return null}var b=this.createStore({api:{read:a.read}});b.on("beforeload",function(){var c=b.getProxy().activeRequest;Ext.Ajax.abort(c);delete c;this.enableLoadMask()},this);b.on("load",this.disableLoadMask,this);return b},getTitleFromRecord:function(a){return"Details Panel"},updateDetailsPanelForRecord:function(a){if(a){var b=this.getTitleFromRecord(a);this.detailsPanel.setTitle(b);if(this.detailsPanel.getCollapsed()){this.detailsPanel.expand()}this.loadDetailsPanel(a)}},_onRecordClicked:function(c,a){if(!this.detailsPanel){var b=this.getDetailsItems();if(b&&b.length){this.add(this._createDetailsPanel(b))}}if(this.detailsPanel){this.updateDetailsPanelForRecord(a)}},updateFilters:function(a){this.filters=a;this.updateWidget()},_createGrid:function(){var a=this.getGridStore();if(!a){log("Failed to get grid store, aborting.");return}var b=this.findPlugin("ft-proxy-exception-mask-message");b.setupProxyExceptionMessage(a.getProxy());var c={cls:"report-widget-grid",region:"center",alwaysReconfigure:true,store:a,headerLines:true,columnLines:false,disableSelection:false,selModel:Ext.create("Ext.selection.RowModel",{mode:"SINGLE",allowDeselect:false})};this.grid=FT.SimpleGridFactory.create("simple",c);this.grid.on({scope:this,itemclick:this._onRecordClicked});return this.grid},getInsightsStore:function(c){var a=FTApi[this.controller];if(!a){return null}var b=Ext.create("Ext.data.Store",{fields:["value","title","unit","errors","tooltip","type","renderer"],proxy:{type:"direct",api:{read:Ext.valueFrom(c,a.getInsights)},reader:{root:"data"}},autoLoad:false});return b},_createInsightsView:function(){var a=this.getInsightsStore();if(!a){log("Failed to get insights store, aborting.");return}this.insightsView=Ext.create("FT.view.InsightsView",{store:a,region:"north",height:60,padding:10});return this.insightsView},getDetailsItems:function(){return[]},_createDetailsPanel:function(a){this.detailsPanel=Ext.create("Ext.panel.Panel",{region:"east",resizable:{handles:"w"},collapsible:true,collapseMode:"mini",animCollapse:false,layout:{type:"vbox",align:"stretch"},collapsed:true,width:this.getWidth()/2-100,minWidth:100,maxWidth:this.getWidth()-100,padding:"0 10",defaults:{padding:"10"},cls:"border-left",title:FT.i18n("Details Panel"),hideCollapseTool:true,tools:[{type:"collapse",tooltip:FT.i18n("Close details panel"),scope:this,handler:function(){this.detailsPanel.collapse()}}],items:a});return this.detailsPanel}});Ext.define("FT.report.TimeTrackingReportWidget",{extend:"FT.report.ReportWidget",alias:"widget.time_tracking_report_widget",initWidget:function(){this.groupId="user";this.detailsGroupId="timelog";this.callParent(arguments)},getDetailsGroupByMenu:function(){var b=[];var a=[{groupId:"user",text:FT.i18n("User"),handler:this.onDetailsGroupBy,scope:this},{groupId:"project",text:FT.i18n("Project"),handler:this.onDetailsGroupBy,scope:this},{groupId:"task_type",text:FT.i18n("Task type"),handler:this.onDetailsGroupBy,scope:this},{groupId:"date",text:FT.i18n("Date"),handler:this.onDetailsGroupBy,scope:this},{groupId:"task",text:FT.i18n("Task"),handler:this.onDetailsGroupBy,scope:this},{groupId:"timelog",text:FT.i18n("Timelog"),handler:this.onDetailsGroupBy,scope:this}];a.sort(function(e,d){return e.text>=d.text?1:-1});var c=Ext.create("Ext.button.Button",{ui:"plain",text:FT.i18n("Timelog"),menu:a});b.push({xtype:"tbtext",text:FT.i18n("Group by"),cls:"text-faded"});b.push(c);return b},getToolbarItems:function(){var b=[];var a=[{groupId:"user",text:FT.i18n("User"),handler:this.onGroupBy,scope:this},{groupId:"project",text:FT.i18n("Project"),handler:this.onGroupBy,scope:this},{groupId:"task_type",text:FT.i18n("Task type"),handler:this.onGroupBy,scope:this},{groupId:"date",text:FT.i18n("Date"),handler:this.onGroupBy,scope:this}];a.sort(function(e,d){return e.text>=d.text?1:-1});var c=Ext.create("Ext.button.Button",{ui:"plain",text:FT.i18n("User"),menu:a});b.push({xtype:"tbtext",text:FT.i18n("Group by"),cls:"text-faded"});b.push(c);return b},onGroupBy:function(a){if(this.detailsPanel){this.detailsPanel.collapse()}a.parentMenu.ownerButton.setText(a.text);this.groupId=a.groupId;this.grid.store.sorters.clear();this.loadGrid()},loadGrid:function(){this.callParent([{groupId:this.groupId}])},getDetailsItems:function(){var a=FTApi[this.controller];if(!a){return null}var b=this.createStore({api:{read:a.read}});var c={preserveScollbar:true,tbar:this.getDetailsGroupByMenu(),region:"center",alwaysReconfigure:true,store:b,headerLines:true,columnLines:false,disableSelection:true,selModel:Ext.create("Ext.selection.RowModel",{mode:"SINGLE",allowDeselect:true}),flex:1};this.detailsGrid=FT.SimpleGridFactory.create("simple",c);return[this.detailsGrid]},onDetailsGroupBy:function(a){a.parentMenu.ownerButton.setText(a.text);this.detailsGroupId=a.groupId;this.detailsGrid.store.sorters.clear();this._loadDetailsPanel()},loadDetailsPanel:function(a){if(a){this.detailsRecord=a}this._loadDetailsPanel()},_loadDetailsPanel:function(){var a=this.detailsGrid.store.getProxy();var b={groupId:this.detailsGroupId};b.filters=Ext.valueFrom(Ext.clone(this.filters),[]);if(this.groupId=="user"){b.filters.push({comparison:"is",field:"User.userid",or:false,type:"list",value:[this.detailsRecord.get("user_id")]})}else{if(this.groupId=="project"){b.filters.push({comparison:"is",field:"Show.id",or:false,type:"list",value:[this.detailsRecord.get("projectid")]})}else{if(this.groupId=="date"){b.filters.push({comparison:"is",field:"Timelog.start",or:false,type:"date",value:this.detailsRecord.get("date")})}else{if(this.groupId=="task_type"){b.filters.push({comparison:"is",field:"TaskType.typeid",or:false,type:"string",value:this.detailsRecord.get("task_typeid")})}}}}Ext.Ajax.abort(a.activeRequest);delete a.activeRequest;Ext.apply(a.extraParams,b);this.detailsGrid.store.loadPage(1)},getTitleFromRecord:function(a){var b="",c="";if(this.groupId=="user"){b="user";c=FTrack.grid.UserRendererPrint(a.get("user_id"))}else{if(this.groupId=="project"){b="project";c=FTrack.grid.LinkRendererPrint(a.get("project"))}else{if(this.groupId=="date"){b="date";c=a.get("date")}else{if(this.groupId=="task_type"){b="task";c=a.get("task_typename")}}}}return Ext.String.format("{0} {1}",FT.glyphIcon(b),c)}});Ext.define("FT.report.ProjectReportWidget",{extend:"FT.report.ReportWidget",alias:"widget.project_report_widget",getDetailsItems:function(){var a=FTApi[this.controller];if(!a){return null}this.projectInsightsView=Ext.create("FT.view.InsightsView",{store:this.getInsightsStore(Ext.emptyFn),height:60});this.tasksAndMilestonesInsightsView=Ext.create("FT.view.InsightsView",{store:this.getInsightsStore(a.getTaskAndMilestoneInsights),height:60});return[this.projectInsightsView,{xtype:"component",html:"<h3>Tasks & milestones</h3>"},this.tasksAndMilestonesInsightsView]},loadDetailsPanel:function(a){var d=Ext.valueFrom(Ext.clone(this.filters),[]),c,b,e;if(a){this.detailsRecord=a}d.push({comparison:"is",field:"Show.id",or:false,type:"list",value:[this.detailsRecord.get("project_fullname")[0].id]});b=Ext.util.Format.numberRenderer("0%");e=FTrack.grid.DurationRendererSimple(this.detailsRecord.get("tracked"));c=this.projectInsightsView.getStore();c.loadData([{value:b(this.detailsRecord.get("completion")),title:FT.i18n("Task completion"),type:"insights_value",tooltip:FT.i18n("Percentage of completed tasks.")},{value:Ext.valueFrom(this.detailsRecord.get("users"),0),title:FT.i18n("Users"),type:"insights_value"},{value:Ext.isEmpty(e)?0:e,title:FT.i18n("Hours tracked"),type:"insights_value"}]);c=this.tasksAndMilestonesInsightsView.getStore();c.getProxy().extraParams.filters=d;c.load()},getTitleFromRecord:function(a){var b="project",c=FTrack.grid.LinkRendererPrint(a.get("project_fullname"));return Ext.String.format("{0} {1}",FT.glyphIcon(b),c)}});Ext.define("FT.report.WorkloadReportWidget",{extend:"FT.report.ReportWidget",alias:"widget.workload_report_widget",initWidget:function(){this.groupId="user";this.detailsGroupId="task";this.callParent(arguments)},getTitleFromRecord:function(a){var b="user",c=FTrack.grid.UserRendererPrint(a.get("user_id"));return Ext.String.format("{0} {1}",FT.glyphIcon(b),c)},getDetailsItems:function(){var a=FTApi[this.controller];if(!a){return null}this.workloadInsightsView=Ext.create("FT.view.InsightsView",{store:this.getInsightsStore(a.getDetailsInsights),height:60});var b=this.createStore({api:{read:a.readDetailsGrid}});var c={preserveScollbar:true,region:"center",alwaysReconfigure:true,store:b,headerLines:true,columnLines:false,disableSelection:true,selModel:Ext.create("Ext.selection.RowModel",{mode:"SINGLE",allowDeselect:true}),flex:1};this.detailsGrid=FT.SimpleGridFactory.create("simple",c);this.detailsGrid.store.on("beforeload",function(){this.setLoading(true)},this.detailsGrid);this.detailsGrid.store.on("load",function(){this.setLoading(false)},this.detailsGrid);return[this.workloadInsightsView,this.detailsGrid]},loadDetailsPanel:function(a){if(a){this.detailsRecord=a}this._loadDetailsPanel()},_loadDetailsPanel:function(){var b=this.detailsGrid.store.getProxy(),d={groupId:this.detailsGroupId},a,c=Ext.valueFrom(Ext.clone(this.filters),[]);c.push({comparison:"is",field:"User.userid",or:false,type:"list",value:[this.detailsRecord.get("user_id")]});d.filters=c;Ext.Ajax.abort(b.activeRequest);delete b.activeRequest;Ext.apply(b.extraParams,d);this.detailsGrid.store.loadPage(1);a=this.workloadInsightsView.getStore();b=a.getProxy();Ext.Ajax.abort(b.activeRequest);delete b.activeRequest;Ext.apply(b.extraParams,d);this.workloadInsightsView.store.load()}});Ext.define("FT.plugin.AddCollapseComponentButton",{alias:"plugin.ft-add-collapse-component-button",extend:"Ext.AbstractPlugin",collapseComponentQuery:null,buttonTourId:null,init:function(a){var c=this.getToggleRightButton();var b=a.getDockedItems();var d=b&&b[0];if(d){d.add(["->",c])}this.callParent()},getToggleRightButton:function(){var a=Ext.create("Ext.button.Button",{glyph:FT.glyph("menu"),scale:"medium",ui:"plain",cls:"button-card",enableToggle:true,pressed:false,handler:this.collapseComponent,scope:this});if(this.buttonTourId){a.tourId=this.buttonTourId}return a},getCollapsibleComponent:function(){var a=Ext.ComponentQuery.query(this.collapseComponentQuery);if(a&&a.length){return a[0]}},collapseComponent:function(){var a=this.getCollapsibleComponent();if(a){a.toggleCollapse()}}});Ext.define("FT.plugin.ProxyExceptionMaskMessage",{alias:"plugin.ft-proxy-exception-mask-message",extend:"Ext.AbstractPlugin",defaultErrorMessage:"Failed to load data",documentationText:null,documentationLink:null,setupProxyExceptionMessage:function(a){if(!a){return}a.on("exception",this._onProxyException,this);a.on("metachange",this._onProxyMetaChangeHideMask,this)},_onProxyException:function(d,b,a,c){var e=(b||{}).data||{};this._showMaskMessage(e.message||this.defaultErrorMessage)},_getMaskElement:function(){var a=this.getCmp();return a&&a.el||null},_showMaskMessage:function(b){var a=this._getMaskElement();if(!a){return}var c=Ext.String.format('<h2 class="mask-message__header">{0}</h2>',b);if(this.documentationText&&this.documentationLink){c+=Ext.String.format('<p class="mask-message__link"><a href="{0}" target="_blank">{1}</a></p>',this.documentationLink,this.documentationText)}a.mask(c,"mask-message")},_onProxyMetaChangeHideMask:function(){var a=this._getMaskElement();if(a){a.unmask()}}});Ext.define("FT.form.ActionCancelButtonPlugin",{extend:"Ext.AbstractPlugin",handler:Ext.emptyFn,scope:undefined,init:function(a){var b=a.getDockedItems('toolbar[dock="bottom"]')[0];b.insert(0,{xtype:"button",text:FT.i18n("Cancel"),handler:this.handler,scope:this.scope})}});Ext.define("FT.form.Action",{extend:"Ext.form.Panel",autoScroll:true,bodyPadding:10,layout:"anchor",defaults:{anchor:"100%",padding:5},submitButtonText:FT.i18n("Submit"),initComponent:function(){var b,c;this.items=[];this.hiddenData={};for(b=0;b<this.formData.items.length;b++){c=this.formData.items[b];if(c.type==="text"){this.items.push({xtype:"textfield",fieldLabel:c.label,emptyText:c.empty_text,value:c.value,name:c.name})}else{if(c.type==="textarea"){this.items.push({xtype:"textarea",fieldLabel:c.label,emptyText:c.empty_text,value:c.value,name:c.name,height:150})}else{if(c.type==="number"){this.items.push({xtype:"numberfield",fieldLabel:c.label,emptyText:c.empty_text,value:c.value,name:c.name})}else{if(c.type==="date"){this.items.push({xtype:"datefield",fieldLabel:c.label,emptyText:c.empty_text,value:c.value,name:c.name,startDay:Number(FT.Settings.get("TIME","week_startday")),format:FT.Settings.get("FORMAT","date")})}else{if(c.type==="boolean"){this.items.push({xtype:"checkboxfield",fieldLabel:c.label,checked:c.value===true,inputValue:true,uncheckedValue:false,name:c.name})}else{if(c.type==="enumerator"){var a=Ext.create("Ext.data.Store",{fields:["label","value",{name:"description",defaultValue:""}],data:c.data});this.items.push({xtype:"combobox",fieldLabel:c.label,multiSelect:c.multi_select||false,emptyText:c.empty_text,value:c.value,name:c.name,store:a,queryMode:"local",displayField:"label",valueField:"value",tpl:Ext.create("Ext.XTemplate",'<tpl for=".">','<div class="x-boundlist-item">',"<div>{label}</div>","<div>{description}</div>","</div>","</tpl>")})}else{if(c.type==="hidden"){this.hiddenData[c.name]=c.value}else{if(c.type==="label"){this.items.push({html:FTrack.grid.markdownRenderer(c.value)})}}}}}}}}}this.bbar=["->",{cls:"button-primary",xtype:"button",text:this.submitButtonText,formBind:true,disabled:true,handler:function(){var e=this.getForm(),d={};if(e.isValid()){d=this.getValues();Ext.apply(d,this.hiddenData);this.fireEvent("submit-form",d)}},scope:this}];this.callParent()}});Ext.ns("FT.spark");FT.spark.getSharedSession=function(){if(!FT.spark._session){FT.spark._session=new ftrackSparkLegacy.Session(FT.util.getServerUrl(),FT.apiUser,FT.csrfToken,{autoConnectEventHub:false,clientToken:FT.clientToken})}return FT.spark._session};FT.spark._session=null;Ext.define("FT.spark.Component",{extend:"Ext.Component",cls:"ftrack-spark-root",initComponent:function(a){this.callParent(arguments);this.on("afterrender",this.renderComponent,this);this.on("beforedestroy",this.destroyComponent,this)},renderComponent:function(){ftrackSparkLegacy.render(Ext.getDom(this.getEl()),this.component,this.props||{})},destroyComponent:function(){ftrackSparkLegacy.destroy(Ext.getDom(this.getEl()))},setProps:function(a){this.props=Ext.merge(this.props,a);if(this.rendered){this.renderComponent()}}});Ext.override(Ext.data.proxy.Ajax,{actionMethods:{create:"POST",read:"POST",update:"POST",destroy:"POST"}});Ext.override(Ext.data.Connection,{timeout:120000});Ext.override(Ext.grid.property.Store,{getReader:function(){if(!this.reader){Ext.grid.property.Store.prototype.reader=new Ext.data.reader.Reader({model:Ext.grid.property.Property,buildExtractors:Ext.emptyFn,read:function(a){return this.readRecords(a)},readRecords:function(b){var d,c,a={records:[],success:true};for(c in b){if(b.hasOwnProperty(c)){d=b[c];if(this.isEditableValue(d)){a.records.push(new Ext.grid.property.Property({name:c,value:d},c))}}}a.total=a.count=a.records.length;return new Ext.data.ResultSet(a)},isEditableValue:function(a){return true}})}return this.reader}});Ext.enableFx=false;FT.clone=function(g){if(g===null||g===undefined){return g}if(g.nodeType&&g.cloneNode){return g.cloneNode(true)}var e=Ext.toString.call(g);if(e==="[object Date]"){return new Date(g.getTime())}var d,b,a,h,c;if(e==="[object Array]"){d=g.length;h=[];while(d--){h[d]=FT.clone(g[d])}}else{if(e==="[object Object]"&&g.constructor===Object){h={};for(c in g){h[c]=FT.clone(g[c])}if(Ext.enumerables){for(b=Ext.enumerables.length;b--;){a=Ext.enumerables[b];h[a]=g[a]}}}else{if(Ext.isDefined(g.$className)&&g.$className=="Ext.data.Store"){return FT.util.copyStore(g)}}}return h||g};Ext.override(Ext.form.field.ComboBox,{cls:"ft-combobox",triggerCls:"ft-form-trigger",triggerWidth:23,infoText:null,fieldSubTpl:['<div class="{hiddenDataCls}" role="presentation"></div>','<input id="{id}" type="{type}" {inputAttrTpl} class="{fieldCls} {typeCls}" autocomplete="off"','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="name"> name="{name}"</tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','<tpl if="size"> size="{size}"</tpl>','<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',"/>",'<tpl if="infoText!=null"><span id="{id}-infoText" style="font-size:10px;color:grey;">{infoText}</span></tpl>',{compiled:true,disableFormats:true}],setInfoText:function(c,a){var b=Ext.get(this.el.getById(this.getId()+"-inputEl-infoText"));b.dom.innerHTML=c;b.dom.style.color=a}});Ext.override(Ext.form.field.Checkbox,{infoText:null,fieldSubTpl:["<tpl if=\"boxLabel && boxLabelAlign == 'before'\">","{beforeBoxLabelTpl}",'<label id="{cmpId}-boxLabelEl" {boxLabelAttrTpl} class="{boxLabelCls} {boxLabelCls}-{boxLabelAlign}" for="{id}">',"{beforeBoxLabelTextTpl}","{boxLabel}","{afterBoxLabelTextTpl}","</label>","{afterBoxLabelTpl}","</tpl>",'<input type="button" id="{id}" {inputAttrTpl}','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls} {typeCls}" autocomplete="off" hidefocus="true" />','<tpl if="infoText!=null"><div id="{id}-infoText" style="font-size:10px;color:grey;">{infoText}</div></tpl>',"<tpl if=\"boxLabel && boxLabelAlign == 'after'\">","{beforeBoxLabelTpl}",'<label id="{cmpId}-boxLabelEl" {boxLabelAttrTpl} class="{boxLabelCls} {boxLabelCls}-{boxLabelAlign}" for="{id}">',"{beforeBoxLabelTextTpl}","{boxLabel}","{afterBoxLabelTextTpl}","</label>","{afterBoxLabelTpl}","</tpl>",{disableFormats:true,compiled:true}],getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{disabled:a.readOnly||a.disabled,boxLabel:a.boxLabel,boxLabelCls:a.boxLabelCls,boxLabelAlign:a.boxLabelAlign,infoText:a.infoText})},setInfoText:function(c,a){var b=Ext.get(this.el.getById(this.getId()+"-inputEl-infoText"));b.dom.innerHTML=c;b.dom.style.color=a}});Ext.override(Ext.form.field.Text,{infoText:null,fieldSubTpl:['<input id="{id}" type="{type}" {inputAttrTpl}',' size="1"','<tpl if="name"> name="{name}"</tpl>','<tpl if="value"> value="{[Ext.util.Format.htmlEncode(values.value)]}"</tpl>','<tpl if="placeholder"> placeholder="{placeholder}"</tpl>','<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>','<tpl if="readOnly"> readonly="readonly"</tpl>','<tpl if="disabled"> disabled="disabled"</tpl>','<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>','<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>',' class="{fieldCls} {typeCls} {editableCls}" autocomplete="off"/>','<tpl if="infoText!=null"><span id="{id}-infoText" style="font-size:10px;color:grey;">{infoText}</span></tpl>',{disableFormats:true}],getSubTplData:function(){var a=this,b=a.getRawValue(),d=a.emptyText&&b.length<1,c;if(d){if(Ext.supports.Placeholder){c=a.emptyText}else{b=a.emptyText}}return Ext.apply(a.callParent(),{maxLength:a.enforceMaxLength?a.maxLength:undefined,readOnly:a.readOnly,placeholder:c,value:b,fieldCls:a.fieldCls+(d&&(c||b)?" "+a.emptyCls:""),infoText:a.infoText})},setInfoText:function(c,a){var b=Ext.get(this.el.getById(this.getId()+"-inputEl-infoText"));b.dom.innerHTML=c;b.dom.style.color=a}});Ext.apply(Ext.form.field.VTypes,{email:function(a){var b=/^(")?(?:[^\."])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,32}$/;return b.test(a)},password:function(c,b){if(b.initialPassField){var a=b.up("form").down("#"+b.initialPassField);return c==a.getValue()}return true},passwordText:FT.i18n("Passwords do not match"),bigger:function(c,b){var a=b.up("form");if(!Ext.isDefined(a)){return true}var d=a.down("#"+b.biggerThan);if(!Ext.isDefined(d)){return true}return b.getValue()>=d.getValue()},biggerText:FT.i18n("End must be after start")});Ext.override(Ext.form.Basic,{isValidFocus:function(){var a=this,b;Ext.suspendLayouts();b=a.getFields().filterBy(function(c){return !c.validate()});Ext.resumeLayouts(true);if(b.getCount()>0){b.get(0).focus()}return b.length<1}});FT.initPush=function(){if(!FT.usePush){return}var a=["websocket"];var c=true;if(Ext.isWebKit&&Ext.webKitVersion<535){c=false}var b=Ext.String.format("{0}//{1}:{2}",location.protocol,location.hostname,location.port);FT.socket=new io.connect(b,{rememberTransport:false,transports:a,"max reconnection attempts":Infinity,"reconnection limit":10000,"reconnection delay":5000,"auto connect":c,query:Ext.String.format("api_user={0}",encodeURIComponent(FT.apiUser))});FT.socket.on("disconnect",function(){log("Disconnected from push server.");FT.socket.socket.reconnect()});FT.socket.on("connect",function(d){log("Connected to push server")});FT.socket.on("reconnect",function(d){log("Reconnected to push server")});FT.socket.on("reconnecting",function(d){log("Reconnecting to push server")});FT.socket.on("reconnect_failed",function(d){log("Reconnect to push server failed")});FT.EventHub.subscribe("topic=ftrack.update",function(d){if(FT.usePush){FT.validateSocketUpdateEvent(d.data)}});FT.EventHub.subscribe("topic=ftrack.action.trigger-user-interface",function(g){var e={},d=["selection","actionIdentifier"];Ext.iterate(g.data,function(h,j){if(d.indexOf(h)!=-1){e[h]=j}});FT.Connect.handleResponse({data:g.data},e)})};FT.validateSocketUpdateEvent=function(g){if(!Ext.isDefined(FT.app)){return}var a=false;var m=FT.app.getCfg();if(Ext.isDefined(m.entityId)&&Ext.isDefined(m.entityType)||Ext.isDefined(m.slideEntityId)&&Ext.isDefined(m.slideEntityId)){var b=Ext.isDefined(m.itemId)&&m.itemId=="projects";var d=FT.util.getEntityFromEvent(g,m.entityId);var c=FT.util.getEntityFromEvent(g,m.slideEntityId);var p=FT.util.getDeletedIdsFromEvent(g);var j=false;if(b&&p.indexOf(FT.app.location.getProjectId())!=-1){FT.app.open(FT.app.defaultModule,{});j=true}else{if(b&&d&&d.action=="remove"){if(d.parents.length>1){var h=d.parents[1].entityId;var o=d.parents[1].entityType;var n=FT.app.location._location;for(var e=0;e<n.length;e++){if(p.indexOf(n[e].id)==-1){h=n[e].id;o=n[e].type}}a=true;FT.app.open("projects",{entityId:h,entityType:o,slideEntityId:null,slideEntityType:null});j=true}}else{if(c&&c.action=="remove"){a=true;var k={slideEntityId:null,slideEntityType:null};if(Ext.isDefined(m.view)){k.view=m.view}FT.app.open(null,k);j=true}}}if(j){if(g.clientToken!=FT.clientToken){var l=Ext.create("FT.window.CancelSave",{modal:true,cancelHandler:null,saveText:FT.i18n("Ok"),saveHandler:function(q){this.close()},message:FT.i18n("The object you are looking at was removed."),title:FT.i18n("Object removed")})}}}if(Ext.isFunction(RAW.Widget.fireEvent)){RAW.Widget.fireEvent("reloadwidget",g)}FT.app.safeFireEvent("pushevent",g,a)};FT.usePush=true;FT.websocketDebug=false;FT.stateful=true;FT.debug=false;Ext.override(Ext.menu.Menu,{maxHeight:Ext.Element.getViewHeight(),setVerticalPosition:function(){var d=this,g,e=d.el.getY(),h=e,k=d.getHeight(),b=Ext.Element.getViewHeight(),c=null,a=b,j=d.getPosition(true)[1];c=null;if(d.floating){g=d.maxHeight?d.maxHeight:a-j;if(k>a){h=e-j}else{if(g<k){h=e-(k-g)}else{if(e+k>b){h=b-k}}}}d.el.setY(h)}});Ext.override(Ext.grid.feature.Grouping,{onGroupClick:function(a,c,g,d){var b=this;if(!b.collapsible||!b.collapsedState){return}if(!Ext.isDefined(b.collapsedState[g])){b.collapsedState[g]=true}if(b.collapsedState[g]){b.expand(g)}else{b.collapse(g)}}});Ext.override(Ext.chart.Chart,{redraw:function(){try{if(this.getEl().isVisible(true)){this.callParent(arguments)}}catch(a){}}});Ext.override(Ext.slider.Tip,{onSlide:function(c,d,a){var b=this;b.show();b.update(b.getText(a));b.el.alignTo(c.el,b.align,b.offsets)}});delete Ext.tip.Tip.prototype.minWidth;Ext.Component.prototype._onRender=Ext.Component.prototype.onRender;Ext.override(Ext.Component,{onRender:Ext.Function.createSequence(Ext.Component.prototype._onRender,function(b,a){var c=this,d=c.qtip||c.qTip;if(c.rendered){if(d){if(Ext.quickTipsActive&&Ext.isObject(d)){d=Ext.apply({target:c.el.id},d)}else{if(Ext.isString(d)){d={text:d,target:c.el.id}}}Ext.tip.QuickTipManager.register(d);c.qtip=d}}else{c.qtip=d}})});Ext.override(Ext.Editor,{onSpecialKey:function(c,b){var a=this.completeOnEnter;key=b.getKey();if(key==b.ENTER&&c.isExpanded){this.completeOnEnter=false}this.callParent(arguments);this.completeOnEnter=a}});Ext.override(Ext.panel.Tool,{initComponent:function(){if(Ext.isDefined(this.type)){this.renderTpl=['<span id="{id}-toolEl">'+FT.glyphIcon(this.type)+"</span>"]}this.callParent()}});Ext.override(Ext.grid.column.Action,{defaultRenderer:function(p,t,d,a,c,o,n){var l=this,b=0,j=l.items,g=j.length,s,k,q,h="",e=Ext.baseCSSPrefix,m=true;for(;b<g;b++){s=j[b];if(s.glyph){tooltip=s.tooltip;q=s.cls;if(s.glyph.indexOf("ftrack")==-1){k=FT.glyph(s.glyph).replace("@ftrack","")}else{k=s.glyph.replace("@ftrack","")}h+='<span class="'+e+"action-col-icon "+(q?q+" ":"")+e+"action-col-"+String(b)+' ftrack-font-face"'+(tooltip?' data-qtip="'+tooltip+'"':"")+">&#"+k+";</span>"}else{m=false;break}}if(!m){return l.callParent(arguments)}return h}});Ext.override(Ext.util.LruCache,{filterBy:function(c,b){var d=this,a=new Ext.util.MixedCollection;d.forEach(function(g,e){if(c.call(b||d,g,e)){a.add(e,g)}});return a}});Ext.define("patches.ExtZIndexManager",{override:"Ext.ZIndexManager",_showModalMask:function(a){this.callParent(arguments);if(a.maskUi){this.mask.removeCls(this.customMaskCls);this.customMaskCls="modal-mask-"+a.maskUi;this.mask.addCls(this.customMaskCls)}else{this.mask.removeCls(this.customMaskCls)}}});Ext.override(Ext.grid.plugin.CellEditing,{getEditor:function(a,g){var j=this,h=j.editors,e=g.getItemId(),d=h.getByKey(e),c=j.grid.ownerLockable||j.grid,b;if(!d){d=g.getEditor(a);if(!d){return false}b={floating:true,editorId:e,field:d,isForTree:j.grid.isTree,autoSize:{width:"field",height:"boundEl"}};Ext.apply(b,j.editorCfg);if(d instanceof Ext.grid.CellEditor){d.floating=true;d.isForTree=j.grid.isTree}else{d=new Ext.grid.CellEditor(b)}c.add(d);d.on({scope:j,specialkey:j.onSpecialKey,complete:j.onEditComplete,canceledit:j.cancelEdit});g.on("removed",j.cancelActiveEdit,j);h.add(d)}d.editingPlugin=j;return d}});Ext.override(Ext.form.field.HtmlEditor,{afterRender:function(){var b=this,a=b.inputCmp;Ext.form.field.HtmlEditor.prototype.superclass.afterRender.apply(this,arguments);b.iframeEl=a.iframeEl;b.textareaEl=a.textareaEl;b.inputEl=b.iframeEl;if(b.enableFont){b.initDefaultFont()}b.monitorTask=Ext.TaskManager.start({run:b.checkDesignMode,scope:b,interval:100})}});Ext.override(Ext.LoadMask,{initComponent:function(){this.callParent(arguments);this.on("beforeshow",function(){return this.target&&this.target.el&&Ext.isFunction(this.target.el.isVisible)&&this.target.el.isVisible(true)},this)}});Ext.override(Ext.grid.plugin.BufferedRenderer,{getViewRange:function(){var a=this.callParent(arguments);if(!a){return[]}return a}});Ext.override(Ext.view.View,{handleMouseOverOrOut:function(d){var c=this,b=d.type==="mouseout",g=b?d.getRelatedTarget:d.getTarget,a=g.call(d,c.itemSelector)||g.call(d,c.dataRowSelector);if(!c.mouseOverItem||a!==c.mouseOverItem){if(c.el&&c.el.contains(c.mouseOverItem)){if(c.mouseOverItem){d.item=c.mouseOverItem;d.newType="mouseleave";c.handleEvent(d)}}if(c.el&&c.el.contains(a)){c.mouseOverItem=a;if(c.mouseOverItem){d.item=c.mouseOverItem;d.newType="mouseenter";c.handleEvent(d)}}}}});FT.disableLoadMasks=false;Ext.override(Ext.LoadMask,{floating:{shadow:false},show:function(){if(FT.disableLoadMasks){return}this.callParent(arguments)}});Ext.override(Ext.menu.Menu,{onMouseLeave:function(b){var a=this;visibleSubmenu=false;a.items.each(function(c){if(c.menu&&c.menu.isVisible()){visibleSubmenu=true}});if(visibleSubmenu){return}a.deactivateActiveItem();if(a.disabled){return}a.fireEvent("mouseleave",a,b)}});Ext.override(Ext.view.Table,{focusRow:function(c){var b=this,e,d=b.ownerCt&&b.ownerCt.collapsed,a;if(b.isVisible(true)&&!d&&(e=b.getNode(c,true))&&b.el){a=b.getRecord(e);c=b.indexInStore(e);b.selModel.setLastFocused(a);this.saveScrollState();e.focus();this.restoreScrollState();b.focusedRow=e;b.fireEvent("rowfocus",a,e,c)}}});Ext.define("FT.AbstractMediator",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},NAVIGATION_PANEL:3,ACTION_PANEL:1,constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this,a);this.widgets=Ext.create("Ext.util.HashMap");this.addEvents("entitychanged","showpanels","hidepanels");this.initHotkeys()},getEntity:function(){return this.entity},registerNav:function(a){this.nav=a;this.nav.on({changedActiveGroup:this.changedActiveGroup,updatedPlaylist:this.updatedPlaylist,toggleDocking:this.toggleDocking,togglePlay:this.togglePlay,jumpToIndex:this.jumpToIndex,navigationLoaded:this.navigationLoaded,scope:this})},register:function(a){if(a.ftrId==="ftr-action-panel"){var b=Ext.getCmp("ftr-action-panel");this.on("showpanels",function(){b.expand()});this.on("hidepanels",function(){b.collapse()});return this}this.widgets.add(a.ftrId,a);if(a.ftrId==="versions"){a.on({compareOn:this.compareOn,loadOne:this.loadOne,compareOff:this.compareOff,scope:this})}if(a.ftrId==="notes"||a.ftrId==="ftr-session-notes"){a.on({beforesubmit:this.attachFrameInformation,scope:this})}if(a.ftrId==="information"){a.on({toggleDocking:this.toggleDocking,scope:this})}return this},registerPlayer:function(a){this.player=a;this.player.on({changedIndex:this.changedPlayerIndex,attachedFrame:this.attachedFrame,canplaythrough:this.canPlayThrough,loadingerror:this.canPlayThrough,scope:this})},setEntity:function(b,a){this.entity=b;this.widgets.each(function(c,d){if(d.isCreated&&d.updateWidget){d.updateWidget()}});if(a!==true){this.fireEvent("entitychanged",this.entity)}},_getNotesForm:function(){return this.widgets.get("notes").ensureForm()},getUploadCallbacks:function(){var a=this._getNotesForm();return{scope:a,beginupload:a._onUploadBegin,afterupload:a._onUploadComplete,progress:a._onUploadProgress,failure:a._onUploadFailure}},enableLoadAll:function(){return true},breakItem:function(a){if(this.nav){this.nav.getTimeline().breakItem(a,"location")}var b=this.widgets.get("versions");if(b&&b.rendered){this.widgets.get("versions").setBroken(a)}},ftrackEvent:Ext.emptyFn,isWidgetUndockable:function(a){return false},getSupportedFormats:function(){return false},isVersionWipeSupported:function(){return true},isVersionTileSupported:function(){return true},attachFrameInformation:function(c){var a=this._getNotesForm();if(a){a.ensureText();var b=FT.Mediator.currentFrame();if(b){a.setFrame(b)}}return this.beforeNoteCreate(c)},currentFrame:Ext.emptyFn,beforeNoteCreate:Ext.emptyFn,validateLocation:Ext.emptyFn,changedActiveGroup:Ext.emptyFn,updatedPlaylist:Ext.emptyFn,changedVersion:Ext.emptyFn,compareOn:Ext.emptyFn,compareOff:Ext.emptyFn,loadOne:Ext.emptyFn,updatedWipe:Ext.emptyFn,attachFrame:Ext.emptyFn,attachAllFrames:Ext.emptyFn,attachedFrame:Ext.emptyFn,changedPlayerIndex:Ext.emptyFn,versionInContext:Ext.emptyFn,togglePlay:Ext.emptyFn,jumpToIndex:Ext.emptyFn,navigationLoaded:Ext.emptyFn,toggleDocking:Ext.emptyFn,canPlayThrough:Ext.emptyFn,initHotkeys:Ext.emptyFn});Ext.define("FTR.BrowserModel",{extend:"Ext.data.Model",fields:["entityId","entityType","link","text","object_typeid","parent",{name:"leaf",type:"boolean"}],hasMany:{model:"FTR.BrowserModel",name:"children"},proxy:{type:"ajax",url:"/plugin/run",extraParams:{method:"getBrowserTree",plugin:"ftrackreview"},reader:{type:"json",root:"result.children"}}});Ext.define("FTR.BrowserPanel",{extend:"Ext.panel.Panel",bodyBorder:false,cls:"ftr-browser-panel",layout:"fit",autoScroll:true,initComponent:function(){var b=this,c=FT.util.copyStore("FT.store.Projects").findRecord("name","active").get("value"),h=Ext.create("Ext.data.Store",{fields:["text","entityId"],data:c}),d=Ext.create("Ext.Button",{title:FT.i18n("Back"),cls:"ftr-btn-large",glyph:FT.glyph("back"),text:FT.i18n("Back"),handler:function(){b.onBack()}}),g=Ext.create("FT.button.Selector",{displayField:"text",itemType:"radio",selectfirst:true,valueField:"entityId",setTextToName:true,text:FT.i18n("Projects"),store:h,listeners:{select:function(l,m,j){var k=b.browserView.entity;k.entityId=l;b.fireEvent("changedproject",l);b.browserView.loadStore()}}});var e=Ext.create("Ext.form.Label",{text:""});this.tbar=Ext.create("Ext.toolbar.Toolbar",{defaultButtonUI:"plain-toolbar",items:[d,"->",g,e,"->"]});this.callParent();var a=this.entity;this.browserView=Ext.create("FTR.BrowserView",{entity:a});this.relayEvents(this.browserView,["addrecord","replacerecord"]);this.browserView.on("browserchange",function(k,j){if(j){d.enable();e.setText(b.browserView.getHeader());e.show();g.hide()}else{d.disable();g.setValue(k.entityId);e.hide();g.show()}});this.add(this.browserView)},onBack:function(){this.browserView.back()}});Ext.define("FTR.BrowserView",{extend:"Ext.view.View",emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("No project selected")+"</p>",defaultEmptyText:'<p class="ft-grid-emptytext">'+FT.i18n("No objects")+"</p>",deferEmptyText:false,itemSelector:"li.child",cls:"ftr-browser",initComponent:function(){var a=this;this.tpl=new Ext.XTemplate('<div class="list-container">','<div class="list-item">','<ul class="children">','<tpl for=".">','<li class="child {[ this.leafClass(values.leaf) ]}">',"<span>",'<tpl if="this.canAddEntity(object_typeid, leaf)">','<button title="Add" class="button button-small add-record">Add</button>',"</tpl>",'<tpl if="this.canReplaceEntity(object_typeid, leaf)">','<button title="Replace" class="button button-small replace-record">Replace</button>',"</tpl>","</span>","{text}","</li>","</tpl>","</ul>","</div>","</div>",{getHeader:function(){var b=a.getRootNode();return b&&b.text||""},leafClass:function(b){return b?"leaf":""},canAddEntity:function(c,b){if(c&&(!b||c===FT.getTaskId())){return true}},canReplaceEntity:function(c,b){if(c==="list"){return true}}});this.store=Ext.create("Ext.data.Store",{model:"FTR.BrowserModel"});this.store.on("beforeload",function(){if(this.entity.entityId){this.emptyText=this.defaultEmptyText}},this);this.loadStore();this.callParent();this.store.on("datachanged",function(e){var c=a.getRootNode(),g=c&&c.parent,b=!!g,d=a.entity;a.fireEvent("browserchange",d,b)})},getRootNode:function(){var a=this.store&&this.store.getProxy(),b=a&&a.getReader().rawData;if(b&&b.result){return b.result}},loadStore:function(){if(Ext.isDefined(this.entity)&&Ext.isDefined(this.entity.entityId)){this.store.getProxy().extraParams.entity=Ext.encode(this.entity);this.store.getProxy().extraParams.forceRoot=this.forceRoot;this.store.load()}},back:function(){var a=this.getRootNode(),b=a&&a.parent;if(b&&b.entityId&&b.entityType){this.store.getProxy().extraParams.entity=Ext.encode(b);this.store.load()}},onItemClick:function(a,g,c,h,d){var b;if(h.getTarget(".add-record")){this.fireEvent("addrecord",a)}else{if(h.getTarget(".replace-record")){this.fireEvent("replacerecord",a)}else{if(!a.get("leaf")){b={entityId:a.get("entityId"),entityType:a.get("entityType")};this.store.getProxy().extraParams.entity=Ext.encode(b);this.store.load()}}}},getHeader:function(){var b=this,a=b.getRootNode();return a&&a.text||""}});Ext.define("FTR.filter.List",{alias:"widget.ftr-filter-list",extend:"FT.filter.BaseFilter",multiSelect:false,emptyText:"",displayField:"name",valueField:"id",hideComparison:true,keys:[],layout:"fit",getFieldConfig:function(){var c=this,b;if(Ext.isDefined(this.store)){b=this.store}else{b=Ext.create("Ext.data.ArrayStore",{autoDestroy:true,data:this.config&&this.config.options,idIndex:0,fields:[this.valueField,this.displayField]})}if(this.data){b.loadData(this.data)}var a=[];b.each(function(e,d,g){a.push({boxLabel:Ext.util.Format.ellipsis(e.get("name"),15),name:c.field,id:Ext.id()+"__"+e.get("id"),listeners:{change:function(){c.fireEvent("change",c)}}})});return{xtype:"fieldcontainer",width:125,fieldLabel:this.label,labelAlign:"top",defaultType:"checkboxfield",items:a}},getValue:function(){var b=[];var a=this.getComponent("filterField");Ext.Array.each(a.items.items,function(e,c,d){if(e.checked){b.push(e.id.split("__")[1])}});return b}});Ext.define("FTR.filter.Filter",{extend:"Ext.form.Panel",cls:"ftr-filter-panel",filtersExpand:false,filtersExpandHeight:200,filtersCollapseHeight:40,bodyPadding:"10 25",layout:"hbox",overflowY:"visible",autoLoadStore:true,enableEmpty:false,onAvailableFiltersChanged:function(){this.renderFilters()},notifyListeners:function(){this.fireEvent("filterschanged",this.computedFilters)},initComponent:function(){this.defaults=Ext.value(this.defaults,{});Ext.apply(this.defaults,{});this.height=this.filtersExpand?this.filtersExpandHeight:this.filtersCollapseHeight;this.filters=Ext.value(this.filters,[]);this.filterModel.on({activefilterschanged:this.onActiveFiltersChanged,activefiltersload:this.onActiveFiltersLoad,activefiltersadded:this.onActiveFiltersAdded,activefiltersremoved:this.onActiveFiltersRemoved,availablefilterschanged:this.onAvailableFiltersChanged,scope:this});var b=this;this.addEvents("filterschanged","filterdataupdated");var a;this.filterBtn=Ext.create("Ext.button.Split",{text:FT.i18n("Filter"),handler:function(){b.toggleFilterPanel()},menu:new Ext.menu.Menu({items:[{text:FT.i18n("Clear"),handler:function(){b.renderFilters();b.computedFilters=undefined;b.filterBtn.removeCls("ftr-highlight");b.notifyListeners()}}]})});this.tbar=Ext.create("Ext.toolbar.Toolbar",{defaultButtonUI:"plain-toolbar",cls:"ftr-filter-toolbar"});if(this.beforeItems){this.tbar.add(this.beforeItems)}this.tbar.add(this.filterBtn);if(this.afterItems){this.tbar.add(this.afterItems)}log(this.afterItems);this.items=[];this.callParent(arguments);this.on({filterschanged:function(c){if(this.store&&this.autoLoadStore){this.store.load()}}},this);this.renderFilters()},generateFilters:function(){var a=[];Ext.Array.each(this.items.items,function(g,b,e){var d=g.field;var c=g.getValue();if(c.length>0){var h=Ext.create("Ext.util.Filter",{filterFn:function(j){return c.indexOf(j.get(d))!=-1}});a.push(h)}});this.computedFilters=a;if(this.computedFilters.length>0){this.filterBtn.addCls("ftr-highlight")}else{if(this.computedFilters.length===0){this.filterBtn.removeCls("ftr-highlight")}}this.notifyListeners()},resetDirty:function(){this.activeFiltersChangedByUser=false;this.items.each(function(a){if(Ext.isFunction(a.resetOriginalValue)){a.resetOriginalValue()}},this)},isDirty:function(){return this.getForm().isDirty()||this.activeFiltersChangedByUser},toggleFilterPanel:function(){this.filtersExpand=!this.filtersExpand;var a=this.filtersExpand?this.filtersExpandHeight:this.filtersCollapseHeight;this.setHeight(a)},createFilters:function(c){var e,b,a;var d=[];listeners={change:this.generateFilters,scope:this};if(!Ext.isArray(c)){c=Ext.decode(c)}else{c=Ext.clone(c)}Ext.each(c,function(j,h,g){if(j.type!="list"||this.filterTypes.indexOf(j.field)==-1){return}e="ftr-filter-"+j.type;b=Ext.ClassManager.getByAlias("widget."+e);if(!b){log("Filter with doesn't "+e+" exist");return}a="";if(j.group){a='<span class="ft-filtergroup"> ('+j.group+")</span>"}j.label=FT.util.string.cleanAttributeName(j.label)+a;j.xtype=e;j.labelWidth=150;j.labelSeparator="";j.filterbox=this;j.margin="0 0 5 3";j.enableEmpty=this.enableEmpty;if(Ext.isDefined(j.listeners)){Ext.apply(j.listeners,listeners)}else{j.listeners=listeners}if(Ext.isDefined(j.help)){j.afterLabelTextTpl='<img style="vertical-align:middle;margin-left:5px;" src="/resources/icons/question-mark.png" data-qtip="'+j.help+'" />'}d.push(j)},this);return d},renderFilters:function(){this.filters=this.createFilters(this.filterModel.getActiveFilters());this.suspendLayout=true;this.removeAll(true);this.suspendLayout=false;this.addFilters(this.filters)},addFilters:function(e){var d=e.length,a=0,c=[],b;for(;a<d;a++){b=e[a];c.push(b)}this.add(c)},onActiveFiltersAdded:function(b){var a=this.createFilters(b);this.filters.concat(a);this.addFilters(a)},onActiveFiltersRemoved:function(a){var b=this.getAllFilterComponents(),c=null;Ext.each(b,function(d){if(d.fieldId==a.fieldId){c=d}});if(c){c.ownerCt.remove(c,true)}},onActiveFiltersLoad:function(){this.renderFilters()},onActiveFiltersChanged:function(a){if(this.addButton){this.addButton.select(this.filterModel.getActiveFilterFields())}},getAllFilterComponents:function(){var a=[];if(this.enableAny){a=a.concat(this.fieldsAny.items.items)}a=a.concat(this.fieldsAll.items.items);return a},setFiltersById:function(a){this.filterModel.setActiveFiltersById(a);this.notifyListeners();this.activeFiltersChangedByUser=false},setFilters:function(b,c,a){b=Ext.isArray(b)?b:[b];this.filterModel.setActiveFilters(b);this.notifyListeners()}});Ext.ns("FT.freview");Ext.define("FT.freview.FReviewHelper",{extend:"Ext.Base",statics:{getReviewButton:function(d,c){var a=function(e){FT.freview.FReviewHelper.open(d(),c(),e)};var b=[{text:FT.i18n("Launch Web Player"),handler:Ext.pass(a,["web"])},{text:FT.i18n("Launch RV"),handler:Ext.pass(a,["rv"])}];if(FT.freview.FReviewHelper.isHieroPlayerEnabled()){b.push({text:FT.i18n("Launch HieroPlayer"),handler:Ext.pass(a,["hieroplayer"])})}return Ext.create("Ext.button.Split",{text:FT.i18n("Review"),handler:Ext.pass(a,["default"]),menu:b})},isHieroPlayerEnabled:function(){return FT.Settings.get("feature","isHieroPlayerEnabled")},createPlaylist:function(b,a,c){a=a||null;FTApi.Review.Playlist.create({type:"selected",selected:a,entityType:b},function(d,g,e){if(e){c(d)}else{FT.notifyError(FT.i18n("Could not create ftrackreview playlist"))}})},getSelModel:function(a){if(Ext.isFunction(a.pluginInfo.grid)){return a.pluginInfo.grid().getSelectionModel()}else{return a.pluginInfo.grid.getSelectionModel()}},createWebPlayerWindow:function(g){var c,d="_blank";if(g){var b=window.screen&&window.screen.availWidth||2000;var a=window.screen&&window.screen.availHeight||1500;windowNmame="ftrackreview",c="left=0,top=0,width="+b+",heigth="+a+",menubar=no,location=no,resizable=no,scrollbars=no,status=no"}var e=window.open("about:blank",d,c);var h=e.document.createElement("h1");h.innerHTML="Loading Web Player...";h.style.color="white";h.style.margin="50px";h.style.fontSize="25px";h.style.fontFamily="sans-serif";h.style.textAlign="center";e.document.body.style.backgroundColor="#232A2F";e.document.body.appendChild(h);return e},getDefaultApplication:function(){var a=FT.Settings.get("REVIEW","default_player");if(a==="hiero"&&FT.freview.FReviewHelper.isHieroPlayerEnabled()){return"hieroplayer"}else{if(a==="web"){return"web"}}return"rv"},open:function(h,g,d,b){var e,a,c=Ext.value(b,{});if(d==="default"){d=FT.freview.FReviewHelper.getDefaultApplication()}if(d==="web"){if(c.externalWindow){e=c.externalWindow}else{e=FT.freview.FReviewHelper.createWebPlayerWindow()}}a=function(k,j){if(d=="rv"){FT.freview.FReviewHelper.openRV(k,j)}else{if(d=="hieroplayer"){FT.freview.FReviewHelper.openHieroPlayer(k,j)}else{if(d==="web"){FT.freview.FReviewHelper.openWebPlayer(k,j,e)}}}};if(["list","temp"].indexOf(g)===-1){FT.freview.FReviewHelper.createPlaylist(g,h,function(j){a(j,"tempdata")})}else{a(h[0],g)}},openHieroPlayer:function(b,a){FT.Connect.launchAction({applicationIdentifier:"hieroplayer_with_review",actionIdentifier:"ftrack-connect-launch-hieroplayer_with_review",selection:[{entityId:b,entityType:a}],applicationData:{}})},openRV:function(b,a){FT.notifySuccess(FT.i18n("Loading ftrack review for RV"));FT.util.security.generateToken(function(d){var g="rvlink://",c=window.location.protocol+"//"+window.location.host;rvLinkArguments=Ext.String.format(' -flags ModeManagerPreload=ftrack ftrackUrl={0} params=\'{"entityId":["{1}"],"auth_token":["{2}"],"entityType":["{3}"]}\'',c,b,d,a);if(FT.Settings.get("REVIEW","bake_rvlink")==="1"){g+="baked/";rvLinkArguments=FT.freview.FReviewHelper.bakeString(rvLinkArguments)}completeCommand=Ext.String.format("{0}{1}",g,rvLinkArguments);var e=encodeURI(completeCommand);window.location.href=e})},bakeString:function(b){var a="";for(var c=0;c<b.length;c++){a+=""+b.charCodeAt(c).toString(16)}return a},openWebPlayer:function(d,c,b){var a=window.location.protocol+"//"+window.location.host+"/widget/#view=freview_webplayer_v1&itemId=freview&entityType="+c+"&entityId="+d+"&controller=widget";b.location.replace(a);b.focus()},getSelectedItems:function(b,c){var a=b.selected.items;var d=[];Ext.each(a,function(e){if(c==="list"){d.push(e.get("listid"))}else{d.push(e.get("entityId"))}},this);return d},openPublishCompontents:function(a){var b=Ext.create("FTR.Publish",{autoShow:true,selected:a})},openWindow:function(d){var b={temp:d,type:"freview_webplayer_v1",dm:true};var a=FT.freview.FReviewHelper.openDashboard(b);var c=Ext.create("FT.ModalWindow",{items:a,width:960,height:600,bodyStyle:{background:"#383838"}});c.show()},openDashboard:function(g){var k="freview";var j=g.type;var b=Ext.create("FT.AbstractModule",{itemId:k});var e=Ext.widget("container",{itemId:k,isEdit:function(){return true}});var c=Ext.create("FT.util.DashboardManager",{style:{backgroundColor:"transparent"}});c.loadDashboards(e,b.getDashboards());var d={entityType:"freview",entityId:"freview"};if(g.temp){d.temp=g.temp}var a=c.updateDashboard(d,j,true);if(g.dm){return c}var h=Ext.create("Ext.container.Viewport",{layout:"fit",items:c});return h},generateGridParams:function(g){var d,b,c;d={action:"read",filters:g.store.filters.items,sorters:g.store.getSorters()};b=new Ext.data.Operation(d);var e=Ext.create("Ext.data.proxy.Server",{});c=e.getParams(b);var a={};Ext.apply(a,c);Ext.apply(a,g.store.getProxy().extraParams);return a},openOverlayPlayer:function(a){var b=Ext.create("FTR.OverlayPlayer",{autoShow:true,data:a})},validateFormat:function(c){var b=FT.freview.FReviewHelper.testVideoFormat();if(b){var a=[];Ext.Array.each(c.formats,function(g,d,e){a.push(g.format)});if(Ext.Array.contains(a,"image")){return true}else{if(b.h264){return Ext.Array.contains(a,"mp4")}else{if(b.webm){return Ext.Array.contains(a,"webm")}}}}},testVideoFormat:function(){var b=document.createElement("video");var a=false;try{if(a=!!b.canPlayType){a=new Boolean(a);a.ogg=b.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,"");a.h264=b.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,"");a.webm=b.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}}catch(c){}return a},testVideoAutoPlay:function(k){var g=1000;var j;function e(l,m){clearTimeout(j);k(l,m)}try{var j=setTimeout(function(){return e(false,new Error("Timeout "+g+" ms has been reached"))},g);var h=new Blob([new Uint8Array([0,0,0,28,102,116,121,112,105,115,111,109,0,0,2,0,105,115,111,109,105,115,111,50,109,112,52,49,0,0,0,8,102,114,101,101,0,0,2,239,109,100,97,116,33,16,5,32,164,27,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,33,16,5,32,164,27,255,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,167,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,2,194,109,111,111,118,0,0,0,108,109,118,104,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,232,0,0,0,47,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,236,116,114,97,107,0,0,0,92,116,107,104,100,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,101,100,116,115,0,0,0,28,101,108,115,116,0,0,0,0,0,0,0,1,0,0,0,47,0,0,0,0,0,1,0,0,0,0,1,100,109,100,105,97,0,0,0,32,109,100,104,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,68,0,0,8,0,85,196,0,0,0,0,0,45,104,100,108,114,0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0,0,0,1,15,109,105,110,102,0,0,0,16,115,109,104,100,0,0,0,0,0,0,0,0,0,0,0,36,100,105,110,102,0,0,0,28,100,114,101,102,0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1,0,0,0,211,115,116,98,108,0,0,0,103,115,116,115,100,0,0,0,0,0,0,0,1,0,0,0,87,109,112,52,97,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,16,0,0,0,0,172,68,0,0,0,0,0,51,101,115,100,115,0,0,0,0,3,128,128,128,34,0,2,0,4,128,128,128,20,64,21,0,0,0,0,1,244,0,0,1,243,249,5,128,128,128,2,18,16,6,128,128,128,1,2,0,0,0,24,115,116,116,115,0,0,0,0,0,0,0,1,0,0,0,2,0,0,4,0,0,0,0,28,115,116,115,99,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,28,115,116,115,122,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,115,0,0,1,116,0,0,0,20,115,116,99,111,0,0,0,0,0,0,0,1,0,0,0,44,0,0,0,98,117,100,116,97,0,0,0,90,109,101,116,97,0,0,0,0,0,0,0,33,104,100,108,114,0,0,0,0,0,0,0,0,109,100,105,114,97,112,112,108,0,0,0,0,0,0,0,0,0,0,0,0,45,105,108,115,116,0,0,0,37,169,116,111,111,0,0,0,29,100,97,116,97,0,0,0,1,0,0,0,0,76,97,118,102,53,54,46,52,48,46,49,48,49])],{type:"video/mp4"});var d=document.createElement("video");var a=URL.createObjectURL(h);d.src=a;var b=d.play();b.then(function(){e(true)},function(l){e(false,l)})}catch(c){e(false,c)}}}});Ext.define("FT._HieroMediator",{extend:"FT.AbstractMediator",validateLocation:function(b,a){hierosession.validateComponentLocation(b,a)},updatedPlaylist:function(a){hierosession.loadSequence(Ext.encode(a));eventData={type:"changedVersion",version:a[0].versionId,forceUnlock:true};hierosession.sendEvent("ftrackEvent",FT.encode64(Ext.encode(eventData)))},versionInContext:function(a){hierosession.sendEvent("ftrackEvent",FT.encode64(Ext.encode(a)))},compareOn:function(b,a,c){this.myLockVar=true;hierosession.compareMode(b.componentId,a.componentId,c)},compareOff:function(a){eventData={type:"compareOff",version:a};hierosession.sendEvent("ftrackEvent",FT.encode64(Ext.encode(eventData)));this.myLockVar=false},loadOne:function(a){this.myLockVar=true;hierosession.compareMode(a.componentId,null,"load")},navigationLoaded:function(){hierosession.loadActionPanel()},changedVersion:function(a){if(!this.myLockVar&&this.entity&&this.entity.entityId!==a){this.entity={entityId:a,entityType:"assetversion"};this.widgets.each(function(b,c){c.updateWidget()})}},jumpToIndex:function(b,a){hierosession.jumpToIndex(a);eventData={type:"changedVersion",version:b};hierosession.sendEvent("ftrackEvent",FT.encode64(Ext.encode(eventData)))},ftrackEvent:function(c){if(c.type=="changedVersion"){if(c.forceUnlock&&!this.navigation){this.myLockVar=false}this.changedVersion(c.version)}else{if(c.type=="compareOff"&&this.nav){var b=this.nav.getTimeline().getIndexFromVersion(c.version);hierosession.compareOff(b)}else{if(c.type=="compareOn"){this.nav.getTimeline().setLocked(true)}else{if(c.type=="uploadStarted"){this.action.uploadStarted(c.attachment)}else{if(c.type=="uploadEnded"){this.action.uploadEnded(c.id)}else{if(c.type=="changedGroup"){if(true||!this.nav.isLocked()){this.remoteUpdateActiveGroup=true;var a=this.nav.getTimeline().getVersionFromIndex(c.index);c.type="changedVersion";c.version=a;this.sendFtrackEvent(c)}}else{if(c.type=="toggleDocking"){if(c.panel==this.NAVIGATION_PANEL){this.nav.toggleDocking(c.floating)}else{if(c.panel==this.ACTION_PANEL){this.action.toggleDocking(c.floating)}}}else{if(c.type=="context"&&this.nav){this.nav.getTimeline().inContext(c)}}}}}}}}}},function(){if(window.hierosession){FT.Mediator=FT.HieroMediator=Ext.create("FT._HieroMediator")}});Ext.define("FTR.plugin.InformationNavigation",{alias:"plugin.ftr-information-navigation",extend:"Ext.AbstractPlugin",init:function(b){this.callParent();var a=this;FT.Mediator.on("entitychanged",function(){a.updateLink.call(b)},this);this.updateLink.call(b)},updateLink:function(){var b=this;var a=this.getEntity();if(!a||!a.entityId||!a.entityType){return}Ext.Ajax.request({url:"/browse/getLink",params:{entity:Ext.JSON.encode(a)},success:function(e){var h=e.responseText;var d=h&&Ext.JSON.decode(h);var g=d&&d.entity&&d.entity.link||[];var c=[];Ext.Array.forEach(g,function(m,l){var k=m.id,n=m.type;if(l!==0){c.push({xtype:"tbtext",margin:2,text:"/"})}c.push({ui:"plain",margin:0,padding:3,text:Ext.util.Format.ellipsis(m.name,15),qtip:m.name,enableToggle:true,pressed:l===g.length-1,allowDepress:false,toggleGroup:"ftr-information-navigation",toggleHandler:function(o,p){if(!p){return}b.mediator.setEntity({entityId:k,entityType:n},true)}})});var j=b.getDockedComponent(0);j.removeAll();Ext.Array.forEach(c,function(l,k){j.insert(k,l)})}})}});Ext.define("RAW.ftr.Information",{autoScroll:true,validPushEntities:["assetversion"],alias:"widget.ftr-information",disablePrimaryToolbar:true,maximizable:false,extend:"RAW.Widget",mode:"fit",id:"ftr-information-widget",bodyCls:"background-inherit",header:false,initComponent:function(cfg){var me=this,entity=this.getEntity(),previousKey="assetPreviousView",viewSettings=Ext.data.StoreManager.lookup("FT.store.EntityGridView_asset");this.viewHelper=new FT.scheduler.ViewHelper({store:viewSettings,saveable:false,manageable:false,previousId:FT.getVar(previousKey,null),defaultView:{name:"my view",columns:Ext.encode(["userids","statusid","typeid","bid","Duration","StartDate","EndDate","description"])}});this.viewSelector=this.viewHelper.getViewSelector();this.viewSelector.addCls("ftr-button-plain");var tbarItems=["->",this.viewSelector];if(FT.Mediator.isWidgetUndockable(this.id)){this.dockBtn=Ext.create("FT.button.Button",{ui:"plain",qtip:FT.i18n("Undock"),glyph:FT.glyph("maximize"),handler:function(){me.fireEvent("toggleDocking",1)}});tbarItems.push(this.dockBtn)}this.tbar=Ext.create("Ext.toolbar.Toolbar",{padding:"0 8",ui:"plain",items:tbarItems});this.viewSelector.on("viewChanged",function(view,dataChanged){this.updateView()},this);this.store=Ext.create("Ext.data.Store",{fields:["value","key","renderer","text","showid","entityType","entityId","statusid","objectType","typeid"],autoLoad:false,proxy:{type:"direct",directFn:"FTApi.Review.informationView",extraParams:{entityId:entity.entityId,entityType:entity.entityType},reader:{type:"json",root:"rawData"}},listeners:{load:function(){me.fireEvent("loadedVersion",me.entityId,me.store.getTotalCount()>0)}}});this.updateView();var versionTpl=new Ext.XTemplate('<table class="ftr-versions">','<tpl for=".">','<tpl if="xindex == 1 || xindex == 2">','<tpl if="xindex == 1 && xcount &gt; 1">',"<tr>",'<td rowspan="{[xcount-1]}" class="valignTop versionAttribute"><img src="{value}" />',"<tpl else>",'<td class="ftr-versions-table-title ftr-versions-table-row valignTop">{text}</td>','<td class="versionAttribute ftr-versions-table-row ftr-versions-table-value">{[this.renderValue(values)]}</td>',"</tr>","</tpl>","<tpl else>","<tr{[this.checkKey(values.key)]}>",'<td class="ftr-versions-table-title ftr-versions-table-row">{text}</td>','<td class="versionAttribute ftr-versions-table-row ftr-versions-table-value">{[this.renderValue(values)]}</td>',"</tr>","</tpl>","</tpl>","</table>",{checkKey:function(key){return["componentPath","versionNumber"].indexOf(key)==-1?"":' class="ftr-hide-attribute"'},renderValue:function(attribute,idx){if(attribute.key=="statusid"||attribute.key=="taskstatusid"||attribute.key=="shot__statusid"){me.rendererEditor=Ext.create("FT.ui.TaskStatusRendererEditor");me.renderer=me.rendererEditor.getStatusRenderer(attribute.statusid);return me.renderer}else{try{var fn=eval(attribute.renderer);if(Ext.isFunction(fn)){return fn(attribute.value)}else{return attribute.value}}catch(e){return"Error"}}}});this.view=Ext.create("Ext.view.View",{store:this.store,tpl:versionTpl,itemSelector:".versionAttribute",autoScroll:true,disableSelection:true,emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("No data found")+"</p>",listeners:{itemclick:function(view,record,item,index,e,eOpts){if(e.getTarget("div.statusrenderer",null,true)){this.rendererEditor.setEntity({entityId:record.get("entityId"),entityType:record.get("entityType")});this.rendererEditor.setStatusType(record.get("entityType"));var obj=e.getTarget("div.statusrenderer",null,true);this.rendererEditor.editor=this.rendererEditor.getEditor(this.rendererEditor,record);this.rendererEditor.editor.startEdit(obj,record.get("statusid"))}if(e.getTarget("span.ftr-context-button")){var t=e.getTarget("span.ftr-context-button",null,true);if(t.hasCls("ftr-active-comparison")){t.removeCls("ftr-active-comparison")}else{t.addCls("ftr-active-comparison");var entity={entityId:me.entity.entityId,entityType:"assetversion",type:"context"};me.fireEvent("versionInContext",entity)}}},scope:this}});this.view.on("afterrender",function(){if(this.view.getStore().getTotalCount()===0){this.view.refresh()}},this);this.store.on("load",function(){if(this.store.getTotalCount()>0&&entity.entityType=="assetversion"){this.versionNumber=this.store.findRecord("key","versionNumber").get("value")}},this);this.callParent(arguments);this.add(this.view)},updateView:function(){var a=this.viewHelper.getCurrentView();assert(a,"No view found");Ext.apply(this.store.proxy.extraParams,{viewId:a.get("viewid")});this.store.load()},updateWidget:function(){var a=this.getEntity();if(this.entityId!==a.entityId){this.entityId=a.entityId;Ext.apply(this.store.proxy.extraParams,this.getEntity())}this.store.load()}});Ext.define("FT.module.Job",{extend:"FT.view.MegaLayer",itemId:"jobs",init:function(a){},constructor:function(a){Ext.apply(this,a);this.store=Ext.create("Ext.data.Store",{fields:["status","title",{name:"created_at",dateFormat:"c",type:"date"},{name:"finished_at",dateFormat:"c",type:"date"},"text","action","not_finished","type","itemId","components","jobId"],proxy:{type:"direct",limitParam:"pageSize",pageParam:null,startParam:"lastSeen",directFn:"FTApi.Job.get"}});FT.app.on("pushevent",function(b){this.pushUpdate(b)},this)},updateCount:function(){var a=this;FTApi.Job.count({callback:function(e){var b=e,j=b&&b.count,h=b&&b.hasJob,d=a.jobCount;a.state=b&&b.state||"waiting";a.jobCount=parseInt(j,10)||0;a.setCount(a.jobCount,a.state);if(a.button&&a.button.el){var c=function g(){a.tip.show();setTimeout(function(){a.tip.hide()},5000)};if(d<a.jobCount){a.tip.setContent(FT.i18n("Job added to your queue"));c()}else{if(d>a.jobCount){a.tip.setContent(FT.i18n("Job completed!"));c()}}}a.toggleButton(h);a.updateButtonStateStyle()}})},toggleButton:function(a){if(self.button){if(a){self.button.show()}else{self.button.hide()}}},updateButtonStateStyle:function(){if(!this.button){return}if(this.state==="running"){this.button.addCls("button--icon-active")}else{this.button.removeCls("button--icon-active")}},pushUpdate:function(a){Ext.Array.each(a.entities,function(d,b,c){if(d.action==="job_updated"&&FT.getUserId()===d.entityId){this.updateCount();if(this.layer&&this.layer.isVisible()){this.store.loadPage(1)}}},this)},getTopMenuItems:function(a){this.updateCount();var b=this;this.button=Ext.create("Ext.button.Button",{enableToggle:true,scale:"large",glyph:FT.glyph("job"),overflowText:FT.i18n("Jobs"),tooltip:FT.i18n("Jobs"),text:this.jobCount||"",tourId:"jobs",listeners:{afterrender:function(){b.tip=new Opentip(this.el.dom,FT.i18n("Job added to queue"),undefined,{style:"ftNotification",offset:[0,3],showOn:null})}},toggleHandler:function(d,c){if(c){b.store.loadPage(1);b.updateCount()}if(!b.layer){b.createLayer();b.createPanel()}b.toggleShow(c)}});return[this.button]},createPanel:function(){var self=this;this.tpl=new Ext.XTemplate("<table>","<thead>","<tr>",'<th>{[FT.i18n("Status")]}</th>','<th>{[FT.i18n("Job")]}</th>','<th>{[FT.i18n("Started")]}</th>',"</tr>","</thead>","<tbody>",'<tpl for=".">','<tr class="job-item {status:this.faded}">','<td style="width:90px;"><span style="background-color:{[this.statusColor(values.status)]};" class="status status-{status}"><span class="status-icon">{status:this.statusIcon}</span>{status:this.statusLabel}</span></td>','<td class="text"><h4>{title}</h4><p data-qtip="{text}" class="text-ellipsis">{text}</p></td>','<td style="width:160px;">{[FTrack.grid.FuzzyDateRenderer(values.created_at)]}</td>',"</tr>","</tpl>","</tbody>","</table>",{statusLabel:function(status){var statusLabels={running:FT.i18n("Running"),waiting:FT.i18n("Waiting"),done:FT.i18n("Done"),failed:FT.i18n("Failed"),queued:FT.i18n("Queued")};return statusLabels[status]||""},statusColor:function(status){var stateMapper={running:"IN_PROGRESS",waiting:"NOT_STARTED",done:"DONE",failed:"BLOCKED"};return FT.stateColor()[stateMapper[status]]},faded:function(status){return status!=="done"?"":"faded"},statusIcon:function(status){if(status==="running"||status==="waiting"){return FT.glyphIcon("job")}return""}});this.morePager=Ext.create("FT.directive.DirectiveMorePager",{store:this.store});var view=Ext.create("Ext.view.View",{emptyText:'<div class="ft-grid-emptytext">'+FT.i18n("No jobs")+"</div>",deferEmptyText:false,store:this.store,tpl:this.tpl,itemSelector:".job-item",padding:0,reserveScrollbar:true,autoScroll:true,preserveScrollOnRefresh:true,loadMask:false});view.on("itemclick",function(view,record,item,index,e){if(record.get("status")!=="done"&&record.get("type")!=="api_job"){FT.notifySuccess(record.get("not_finished"))}else{FTApi.Job.action({entityId:record.get("jobId")},function(data,operation,success){if(success&&data){eval(data)}else{if(record.get("components").length>0){Ext.each(record.get("components"),function(component){FT.action.fn.downloadComponent(component.id)})}}})}});this.panel=Ext.create("Ext.panel.Panel",{glyph:FT.glyph("job"),title:FT.i18n("Jobs"),header:true,tools:[{xtype:"button",ui:"glyph",glyph:FT.glyph("close"),handler:function(){self.close()}}],cls:"ft-overlay-panel",bodyCls:"ft-overlay-job-panel-body",layout:"fit",items:[view],bbar:["->",this.morePager,"->"],renderTo:this.layer});this.panel.mon(FT.Viewport,"resize",this._resizePanel,this);var filter=FT.FilterFactory.create("job");this.filterBar=Ext.create("Ext.toolbar.Toolbar",{dock:"top",defaultButtonUI:"plain-toolbar",cls:"border-top border-bottom",items:filter.getItems()});filter.bindStore(this.store);this.panel.addDocked(this.filterBar)}});Ext.define("RAW.FReviewNavigation",{validPushEntities:[],alias:"widget.widget_freview_navigation",disablePrimaryToolbar:true,cls:"ftr-window ftr-navigation x-unselectable",maximizable:false,extend:"RAW.Widget",mode:"fit",layout:"border",preventHeader:true,margin:0,bodyPadding:0,header:false,locked:false,forceMargin:0,register:function(){FT.Mediator.registerNav(this)},pushUpdate:function(d){var a=-1;Ext.Array.each(d.entities,function(h,e,g){if(h.action==="encoded"){a=e;return true}});if(a!==-1){var b=d.entities[a].entityId,c=this.getTimeline();if(c.inTimeline(b,"versionId")){c.updateTimelineItem(b,"versionId")}}},initComponent:function(a){var b=this;this.getParams();this.timeline=Ext.create("FTR.Timeline",{entityId:b.entity.entityId,entityType:b.entity.entityType,region:"center",undockable:this.undockable});FT.app.on("pushevent",function(c){this.pushUpdate(c)},this);this.timeline.on("togglebrowser",this.toggleBrowser,this);this.timeline.on("updatedshowid",this.setShow,this);this.relayEvents(this.timeline,["updatedPlaylist","toggleDocking","jumpToIndex"]);this.callParent();this.register();FT.Mediator.on("showpanels",function(){this.expand()},this);FT.Mediator.on("hidepanels",function(){this.collapse()},this);this.fireEvent("navigationLoaded");this.add([this.timeline]);this.on("shortcut",function(c){if(c=="space"){this.fireEvent("togglePlay")}},this)},setShow:function(a){this.showid=a},toggleBrowser:function(){var a=this;if(!Ext.isDefined(this.browser)){this.browser=Ext.create("FTR.BrowserPanel",{entity:{entityId:a.showid,entityType:"show"},region:"west",width:360,collapsible:false});this.browser.on("addrecord",this.timeline.addRecord,this.timeline);this.browser.on("replacerecord",function(b){this.replaceRecord(b)},this.timeline);this.timeline.toggleBrowserBtn.addCls("pressed");this.browser.on("changedproject",this.timeline.updateShowid,this.timeline);this.insert(0,this.browser)}else{if(this.browser.isHidden()){this.timeline.toggleBrowserBtn.addCls("pressed");this.browser.show()}else{this.timeline.toggleBrowserBtn.removeCls("pressed");this.browser.hide()}}},getParams:function(){this.entity=this.getEntity();if(Ext.isDefined(this.entity.widgetCfg)){this.undockable=Ext.decode(FT.decode64(this.entity.widgetCfg)).undockable}else{this.undockable=FT.Mediator.isWidgetUndockable(this.id)}},setLocked:function(a){this.locked=a},isLocked:function(){return this.locked},toggleDocking:function(a){a=="true"?this.timeline.dockBtn.setText(FT.i18n("dock")):this.timeline.dockBtn.setText(FT.i18n("undock"))},getTimeline:function(){return this.timeline}});Ext.define("FTR.OverlayPlayer",{extend:"FT.ModalWindow",modal:true,centerOnResize:true,cls:"ftr-overlay-window",closeOnClick:true,resizable:false,closable:false,bodyCls:"ftr-overlay-window-body",loadMask:true,shadow:false,initComponent:function(){var d=this,e=this.data,h="",a=RegExp("^(https?:)?//"),b="",c="video";this.entityId=e.versionId;Ext.Array.each(e.formats,function(l,j,k){if(a.test(l.src)){b='crossorigin="Anonymous"'}if(l.format==="image"){h='src="'+l.src+'"';c="image";return false}else{h+='<source src="'+l.src+'" type="video/'+l.format+'">';this.meta=l}},this);this.html=this.getPlayerElement(c,h,b);var g='<div id="ftr-overlay-player-information" class="ftr-hidden" style="margin:0 auto">';g+='<div style="width:60%;float:left;">'+e.name+"</div>";g+='<button id="ftr-overlay-player-open-btn" class="button button-primary">Open in Web Player</button>';g+='<div style="width:60%;float:left;">Published '+FTrack.grid.FuzzyDateRenderer(e.created_at)+" by "+FTrack.grid.UserRenderer(e.user)+"</div>";g+="</div>";this.html+=g;this.loadingTimeout=new Ext.util.DelayedTask(function(){this.loadingMask.msg='<span class="text-white">Media is taking longer than expected to load, please wait a while longer or click to abort</span>';if(this.loadingMask.isDestroyed!==true&&this.loadingMask.getEl()){this.loadingMask.hide();this.loadingMask.show()}},this);this.playerType=c;this.callParent();d.mon(Ext.getBody(),"keyup",function(j){if(j.keyCode===Ext.EventObject.ESC){d.close();j.stopEvent()}})},getPlayerElement:function(c,d,a){var b="";if(c==="video"){b+='<video data-prevent-right-click-if-necessary id="ftr-overlay-player" class="ftr-hidden" autoplay loop '+a+">";b+=d;b+="Your browser does not support the <code>video</code> element.";b+="</video>"}else{if(c==="image"){b="<img data-prevent-right-click-if-necessary "+d+" "+a+' class="ftr-hidden" id="ftr-overlay-player"/>'}else{}}return b},resizePlayer:function(b,c,e){var a=c.getWidth(),g=this;if(a>b.width-100){a=b.width-100;c.setWidth(a)}var d=c.getHeight(),k=d;if(d>b.height-150){d=b.height-150;a=a*(d/k);c.setWidth(a)}var j=g.getPosition();g.setPagePosition((b.width-a)/2,j[1]-d/2);g.setHeight(d+g.controls.getHeight());g.setWidth(a);e.setWidth(a);this.controls.setWidth(a)},togglePlay:function(){if(this.playerDom.paused){this.playerDom.play()}else{this.playerDom.pause()}},toggleFullscreen:function(){FT.toggleFullscreen(this.playerDom)},onPlay:function(){var a=this;if(this.timeUpdateInterval){window.clearInterval(this.timeUpdateInterval)}this.timeUpdateInterval=setInterval(function(){a.onTimeUpdate()},32);this.controls.setPlaying(true)},onPause:function(){if(this.timeUpdateInterval){window.clearInterval(this.timeUpdateInterval)}this.controls.setPlaying(false)},onSeek:function(a){var c=this.playerDom&&this.playerDom.duration||0,b=a*c||0;if(this.playerDom&&c){this.playerDom.pause();this.playerDom.currentTime=b}},onTimeUpdate:function(){var c=this.playerDom.currentTime,e=this.playerDom.duration||0,b=e&&c/e||0,a=1/this.meta.frameRate,d=Math.floor(c/a)+1;this.controls.updateProgress(b,d)},step:function(a){a=a||1;var b=this.meta.frameRate,c=this.playerDom.currentTime;c+=a/b;if(c<=0||c>=this.playerDom.duration){return}this.playerDom.pause();this.playerDom.currentTime=c},addPlayerListeners:function(c,d){var g=this,b=Ext.getBody(),a=Ext.get("ftr-overlay-loader"),e=function(){g.loadingTimeout.cancel();c.removeCls("ftr-hidden");g.shadow=true;g.loadingMask.hide();d.removeCls("ftr-hidden");g.resizePlayer(b.getViewSize(),c,d)};if(this.playerType==="video"){this.mon(c,"loadedmetadata",function(){g.controls.show();e();g.playerDom=c.dom});g.mon(c,"timeupdate",this.onTimeUpdate,this);g.mon(c,"play",this.onPlay,this);g.mon(c,"pause",this.onPause,this);g.mon(c,"progress",this.onBufferProgress,this);g.mon(c,"click",function(h){this.togglePlay();h.stopEvent()},this)}else{c.el.dom.onload=e}},onBufferProgress:function(){try{if(!this.playerDom||!this.playerDom.buffered.length){return}var a=this.playerDom.buffered.end(0)/this.playerDom.duration;this.controls.updateBufferProgress(a)}catch(b){log(b)}},listeners:{render:function(){this.loadingTimeout.delay(15*1000);var c=this,b=Ext.get("ftr-overlay-player-information"),d=Ext.get("ftr-overlay-player-open-btn");this.player=Ext.get("ftr-overlay-player");this.controls=Ext.create("FTR.PlayerControls",{dock:"bottom",hidden:true,enableAnnotations:false,enableFullscreen:!FT.Settings.get("feature","isPreventMediaDownloadEnabled"),listeners:{scope:this,togglePlay:this.togglePlay,step:this.step,toggleFullscreen:this.toggleFullscreen,seek:this.onSeek}});var e=this.meta&&this.meta.frameOut-this.meta.frameIn;var a=this.meta&&this.meta.frameRate;this.controls.setClipInfomation(e,a);if(this.playerType==="image"){this.controls.disableHotkeys()}this.addDocked(this.controls);this.addPlayerListeners(this.player,b);d.dom.onclick=function(){if(c.playerType==="video"){c.player.dom.pause()}FT.freview.FReviewHelper.open([c.entityId],"assetversion","web")};b.dom.onclick=function(h){var g=h||window.event;g.stopPropagation()}},destroy:function(){if(this.player&&this.player.dom){if(Ext.isFunction(this.player.dom.pause)){this.player.dom.pause()}this.player.dom.src="";this.player.removeAllListeners();this.player.remove()}if(this.timeUpdateInterval){window.clearInterval(this.timeUpdateInterval)}},show:function(){this.loadingMask=Ext.create("Ext.LoadMask",{maskCls:"",target:this,msg:"&nbsp;",autoShow:true})}}});Ext.define("FTR.PlayerControls",{extend:"Ext.toolbar.Toolbar",border:false,style:"border: none !important",cls:"ftr-controls",layout:"hbox",padding:"6 15",enableClipNavigation:false,enableFullscreen:true,disableHotkeys:function(){this.keymap.disable()},enableHotkeys:function(){this.keymap.enable()},initComponent:function(){this.items=[];if(this.enableClipNavigation){this.prevBtn=Ext.create("Ext.button.Button",{ui:"plain",glyph:FT.glyph("prev"),scope:this,handler:function(){this.fireEvent("changeclip",-1)}});this.items.push(this.prevBtn)}this.loadingIndicator=Ext.create("FT.component.LoadingIndicator",{cls:"loading-indicator-reset-position",hidden:true});this.items.push(this.loadingIndicator);this.showLoadingIndicatorDelayedTask=new Ext.util.DelayedTask(this.setLoadingImmediate,this,[true]);this.playBtn=Ext.create("Ext.button.Button",{enableToggle:true,ui:"plain",glyph:FT.glyph("play"),scope:this,toggleHandler:this.onTogglePlay});this.items.push(this.playBtn);if(this.enableClipNavigation){this.nextBtn=Ext.create("Ext.button.Button",{ui:"plain",glyph:FT.glyph("next"),scope:this,handler:function(){this.fireEvent("changeclip",1)}});this.items.push(this.nextBtn)}this.progressBar=Ext.create("Ext.Component",{html:'<div class="ftr-seeker"><ul class="clips"><li style="width: 100%"></li></ul><span class="ftr-seeker__buffer-indicator"></span><span class="progress"></span></div>',flex:1});this.items.push(this.progressBar);this.frameCounter=Ext.create("Ext.Component",{cls:"ftr-framecounter",frameCount:this.totalFrameCount||"0",currentFrame:"0",tpl:"{current} / {total}",minWidth:40,height:29,padding:6,mode:"standard",STORAGE_PREFIX:"ft-review-",STORAGE_KEY:"time-format",qtip:FT.i18n("Click to toggle between formats"),_calculateTime:function(j){var e=Math.floor(j/this.frameRate);var c=Math.floor(e/(60*60));e=e%(60*60);var d=Math.floor(e/60);e=e%60;var h=Math.round(e);var g=Math.floor(j%this.frameRate);return{hours:c,minutes:d,seconds:h,frames:g}},_updateTime:function(){var g,h,e,c,d="00:00",j="00:00";g=function(k){return Ext.String.leftPad(k,2,"0")};e=this._calculateTime(this.currentFrame);c=this._calculateTime(this.frameCount);if(this.mode=="frames"){h=(""+this.frameCount).length;j=Ext.String.leftPad(this.currentFrame,h,"0");d=this.frameCount}else{if(this.mode=="standard"){d=Ext.String.format("{0}:{1}",g(c.minutes+c.hours*60),g(c.seconds));j=Ext.String.format("{0}:{1}",g(e.minutes+e.hours*60),g(e.seconds))}else{if(this.mode=="timecode"){d=Ext.String.format("{0}:{1}:{2}:{3}",g(c.hours),g(c.minutes),g(c.seconds),g(c.frames));j=Ext.String.format("{0}:{1}:{2}:{3}",g(e.hours),g(e.minutes),g(e.seconds),g(e.frames))}}}this.update({current:j,total:d})},updateTime:function(){this.suspendLayout=true;this._updateTime();this.suspendLayout=false},initComponent:function(){try{this.storage=Ext.create("Ext.state.LocalStorageProvider",{prefix:this.STORAGE_PREFIX});this.mode=this.storage.get(this.STORAGE_KEY,this.mode)}catch(c){log("Failed to read state",c)}this.frameCount=this._adjustFrameCount(this.frameCount||0);this.frameRate=25;this.updateTime();this.on("render",function(){this.getEl().dom.addEventListener("click",Ext.bind(this.handleClick,this))},this)},setCurrentFrame:function(c){c=Ext.util.Format.round(c,0);if(c!==0){c=c||1}this.currentFrame=c;this.updateTime()},setFrameInformation:function(c,d){this.frameCount=this._adjustFrameCount(c);this.frameRate=d;this._updateTime()},_adjustFrameCount:function(c){return Ext.util.Format.round(c,0)},handleClick:function(){var e=["frames","standard","timecode"];var d=e.indexOf(this.mode)+1;this.mode=e[d%3];try{this.storage.set(this.STORAGE_KEY,this.mode)}catch(c){log("Failed to set state",c)}this._updateTime()}});this.items.push(this.frameCounter);if(this.enableFullscreen){this.fullscreenBtn=Ext.create("FT.button.Button",{ui:"plain",glyph:FT.glyph("fullscreen"),scope:this,handler:this.onToggleFullscreen});this.items.push(this.fullscreenBtn)}if(this.enableAnnotations){var b=FT.Mediator.isAnnotationsSupported(),a;if(b){a="Toggle annotations"}else{a="Annotations not supported in your browser"}this.annotationsBtn=Ext.create("Ext.button.Button",{enableToggle:true,ui:"plain",glyph:FT.glyph("pen"),scope:this,toggleHandler:this.onToggleDraw,disabled:!b,qtip:a});this.items.push(this.annotationsBtn)}this.initHotkeys();this.callParent();this.on("afterrender",function(c){c.createSeeker();c.setupSeekerListener()})},setClipInfomation:function(a,b){this.frameCounter.setFrameInformation(a,b)},performActionUnlessForm:function(e,d,a,b){var c=e.target&&e.target.tagName||"";if(c!=="INPUT"&&c!=="TEXTAREA"&&c!=="SELECT"){d.call(this,a,b)}},initHotkeys:function(){this.keymap=new Ext.util.KeyMap({target:document,binding:[{key:Ext.EventObject.SPACE,scope:this,fn:function(a,b){this.performActionUnlessForm(b,this.fireEvent,"togglePlay")}},{shift:true,ctrl:false,key:Ext.EventObject.LEFT,scope:this,fn:function(a,b){this.performActionUnlessForm(b,this.fireEvent,"jumpRelative",-1)}},{shift:true,ctrl:false,key:Ext.EventObject.RIGHT,scope:this,fn:function(a,b){this.performActionUnlessForm(b,this.fireEvent,"jumpRelative",1)}},{shift:false,ctrl:false,key:Ext.EventObject.LEFT,scope:this,fn:function(a,b){this.performActionUnlessForm(b,this.fireEvent,"step",-1)}},{shift:false,ctrl:false,key:Ext.EventObject.RIGHT,scope:this,fn:function(a,b){this.performActionUnlessForm(b,this.fireEvent,"step",1)}}]})},onToggleDraw:function(a,b){var c=this.fireEvent("toggleDraw",b);if(c===false){a.toggle(!b,true)}},onPrevious:function(){this.fireEvent("previous")},onNext:function(){this.fireEvent("next")},onToggleFullscreen:function(a){var b=this.fireEvent("toggleFullscreen");if(b===false){a.toggle(!state,true)}},onTogglePlay:function(a,b){var c=this.fireEvent("togglePlay",b);if(c!==false){this.setPlaying(b)}else{a.toggle(!b,true)}},setPlaying:function(b){var a=b?FT.glyph("pause"):FT.glyph("play");this.playBtn.toggle(b,true);this.playBtn.setGlyph(a)},createSeeker:function(g,h){var d=this.progressBar.getEl(),c=d&&d.down(".clips"),b="",e;if(!c){return}g=g||0;if(h&&h.length){for(var a=0;a<h.length;++a){clip=h[a];e=g&&100*(clip.out-clip["in"])/g||0;b+='<li style="width:'+e+'%"></li>'}}else{b+='<li style="width: 100%"></li>'}c.update(b)},setupSeekerListener:function(){var a=Ext.getBody();this.mon(this.el,"mousedown",function(b){var c=this.fireEvent("seekStart",b);if(c===false){return}this.onSeekerMoved(b);this.mon(a,"mousemove",this.onSeekerMoved,this);this.mon(a,"mouseup",function(d){this.fireEvent("seekEnd",d);this.mun(a,"mousemove",this.onSeekerMoved,this)},this,{single:true});b.preventDefault()},this,{delegate:".ftr-seeker"})},_clamp:function(c,b,a){return Math.min(Math.max(c,b),a)},updateProgress:function(b,d){var a=this.getEl(),c=a&&a.down(".progress");if(this.progressBar.disabled===false&&c){b=this._clamp(b,0,1);c.setWidth(100*b+"%")}this.frameCounter.setCurrentFrame(d)},updateBufferProgress:function(b){var a=this.getEl(),c=a&&a.down(".ftr-seeker__buffer-indicator");if(this.progressBar.disabled===false&&c){b=this._clamp(b,0,1);c.setWidth(100*b+"%")}},onSeekerMoved:function(j){var h=this.el.down(".progress"),a=h&&h.parent(),b=a&&a.getWidth()||1,d=a&&a.getX()||0,g=j&&j.getX()||0,c=(g-d)/b||0;this.updateProgress(c);this.fireEvent("seek",c)},imageMode:function(a){if(a){this.setPlaying(false);this.updateProgress(0,0);this.updateBufferProgress(0);this.playBtn.disable();this.frameCounter.hide();this.progressBar.disable()}else{this.playBtn.enable();this.frameCounter.show();this.progressBar.enable()}},setLoadingImmediate:function(a){Ext.suspendLayouts();if(a){this.loadingIndicator.setActive(true);this.loadingIndicator.show();this.playBtn.hide()}else{this.loadingIndicator.setActive(false);this.loadingIndicator.hide();this.playBtn.show()}Ext.resumeLayouts(true)},setLoading:function(a){if(a){this.showLoadingIndicatorDelayedTask.delay(500)}else{this.showLoadingIndicatorDelayedTask.cancel();this.setLoadingImmediate(a)}},enableNvigationButtons:function(a){if(this.prevBtn&&this.nextBtn){this.prevBtn.setDisabled(!a);this.nextBtn.setDisabled(!a)}},setAnnotationToolState:function(a){if(this.annotationsBtn){this.annotationsBtn.toggle(a,true)}}});Ext.define("FTR.Publish",{extend:"FT.Window",title:FT.i18n("Upload videos for review"),width:700,height:650,overflowY:"auto",modal:true,initComponent:function(){var a=this;this.createBtn=Ext.create("FT.button.Button",{text:FT.i18n("Create"),action:"save",disabled:true,scope:this,handler:this.uploadForm});this.reviewBtn=Ext.create("FT.button.Button",{text:FT.i18n("Create and review"),action:"save",disabled:true,hidden:true,scope:this,handler:this.createAndReview});this.bbar=["->",{xtype:"ftrack-button",text:FT.i18n("Cancel"),handler:function(){a.close()}},this.createBtn,this.reviewBtn];this.callParent();this.store=Ext.create("Ext.data.Store",{fields:["entityId","name","tasks","assets","preSelectedTask"],autoLoad:true,proxy:{type:"direct",directFn:"FTApi.Review.entityPublishInfo",extraParams:{selected:this.selected},reader:{type:"json",root:"entities"},listeners:{exception:function(g,c,b,e){var j=c&&c.responseText,h=j&&Ext.decode(j),d=h&&h.errors&&h.errors.length&&h.errors[0],k=d&&d.msg||"Failed to create review components";FT.notifyError(k)}}}});this.store.on("beforeload",this.onBeforeLoad,this);this.store.on("load",this.createContent,this);this.beforeUnloadEvent();this.on("beforedestroy",function(){this.cleanUp()},this)},onBeforeLoad:function(){this.loadingMask=new Ext.LoadMask(this.el,{msg:"Loading..."});this.loadingMask.show()},cleanUp:function(){FT.app.un("beforeunload",this.stopUnload);if(!this.keepAttachments){Ext.Array.each(this.dropZones,function(c,a,b){c.removeAttachments()})}Ext.Array.each(this.dropZones,function(b,a,c){b.cancelUpload()});if(this.loadingMask){this.loadingMask.destroy();delete this.loadingMask}},beforeUnloadEvent:function(){FT.app.on("beforeunload",this.stopUnload)},stopUnload:function(){return false},createContent:function(){var c=this;var b=[];c.dropZones=[];c.infoForms=[];try{this.projectParent=this.store.getProxy().getReader().rawData.projectParent}catch(d){this.projectParent=false}this.store.each(function(h,e,k){var g=h.get("preSelectedTask");if(g===""&&h.get("tasks").length>0){g=h.get("tasks")[0].id}var l=Ext.create("FT.attachment.DropZoneComponent",{width:240,height:120,margin:20,style:"float: left; ",dropText:FT.i18n("Drag and drop a file here, or ")});c.dropZones.push(l);l.on("attachmentadd",c.fileChanged,c);l.on("attachmentremove",c.fileChanged,c);var j=Ext.create("Ext.form.Panel",{ui:"info",title:h.get("name")||"",itemId:"ftr-infoarea-"+e,cls:"ftr-infoarea",index:e,items:[{xtype:"textfield",emptyText:FT.i18n("Write description"),fieldLabel:FT.i18n("Description"),width:360,name:"note"},{xtype:"textfield",value:h.get("entityId"),name:"entityId",hidden:true},{xtype:"textfield",value:null,name:"attachmentId",hidden:true,id:"attachmentfield-"+e},{xtype:"textfield",value:null,name:"filename",hidden:true,id:"filename-"+e},{xtype:"combobox",emptyText:FT.i18n("No tasks to select"),name:"taskId",valueField:"id",displayField:"name",store:Ext.create("Ext.data.Store",{fields:["id","name"],data:h.get("tasks")}),fieldLabel:FT.i18n("Select task"),editable:false,width:360,allowBlank:false,value:g}]});c.infoForms.push(j);b.push(l);b.push(j)});var a=this.store.getAt(0);this.reviewBtn.show();if(b.length===0&&this.projectParent){this.createBtn.setDisabled(true);this.reviewBtn.setDisabled(true);this.update('<div class="ftr-no-ffmpeg"><h2>Project as parent<h2/><p>You cannot upload videos to a project or to tasks directly on a project</p></div>')}else{if(b.length===0){this.createBtn.setDisabled(true);this.reviewBtn.setDisabled(true);this.update('<div class="ftr-no-ffmpeg"><h2>Nothing selected<h2/></div>')}else{if(!FT.Settings.get("feature","isCloudStorageEnabled")){this.createBtn.setDisabled(true);this.reviewBtn.setDisabled(true);this.update('<div class="ftr-no-ffmpeg"><h2>Cloud storage and encoding disabled<h2/><p>Cloud storage and encoding is disabled. Please contact support@ftrack.com</p></div>')}else{this.add(b)}}}this.loadingMask.hide()},fileChanged:function(){var b=this,a=true;Ext.Array.each(this.dropZones,function(g,d,e){var h=g.getAttachmentId(),k=g.getAttachmentName(),j=b.infoForms[d].getComponent("attachmentfield-"+d),c=b.infoForms[d].getComponent("filename-"+d);if(j){j.setValue(h)}if(c){c.setValue(k)}if(!h){a=false}});this.setButtonState(a)},uploadForm:function(a,d,b){this.setButtonState(false);var c=[];Ext.Array.each(this.infoForms,function(h,e,g){c.push(h.getValues())});this.loadingMask.show();FTApi.Review.publishVersions({items:c},function(e,h,g){this.loadingMask.hide();if(g){if(Ext.isFunction(b)){b(e)}FT.notifySuccess(FT.i18n("Versions are being encoded"));this.keepAttachments=true;this.close()}else{this.setButtonState(true);FT.notifyError(FT.i18n("Could not create reviewable versions"))}},this)},createAndReview:function(b,c){var a={externalWindow:FT.freview.FReviewHelper.createWebPlayerWindow()};this.uploadForm(b,c,function(d){FT.freview.FReviewHelper.open(d,"assetversion","web",a)})},setButtonState:function(a){if(a){this.createBtn.enable();this.reviewBtn.enable()}else{this.createBtn.disable();this.reviewBtn.disable()}}});Ext.define("FTR.widget.Registerable",{alias:"plugin.ftr-registerable",extend:"Ext.AbstractPlugin",init:function(a){this.callParent();this.registerToMediator(a);if(a.mediator&&!a.mediator.entity){a.mediator.entity=a.getEntity()}if(a.disableEntityOverride!==true){a.getEntity=function(){return a.mediator&&a.mediator.getEntity()||a.entity&&a.entity||FT.app.getCfg()}}},registerToMediator:function(a){a.mediator=FT.Mediator.register(a)}});Ext.define("FT._RVMediator",{extend:"FT.AbstractMediator",remoteUpdateActiveGroup:false,validateLocation:function(a,b){rvsession.pyevaluate('__import__("ftrack_rv_api").validateComponentLocation("'+a+'", "'+b+'")')},navigationLoaded:function(){rvsession.evaluate('sendInternalEvent("ftrack-timeline-loaded")')},togglePlay:function(){rvsession.evaluate("extra_commands.togglePlay()")},toggleDocking:function(a){rvsession.evaluate('sendInternalEvent("ftrack-toggle-floating", "'+a+'")')},changedActiveGroup:function(a,b){eventData={type:"changedVersion",version:a};rvsession.evaluate('sendInternalEvent("ftrack-event","'+FT.encode64(Ext.encode(eventData))+'","")')},jumpToIndex:function(a,b){rvsession.evaluate("commands.setInPoint(frameStart())");rvsession.evaluate("commands.setOutPoint(frameEnd())");rvsession.pyevaluate('__import__("ftrack_rv_api").ftrackJumpTo("'+b+'")')},updatedPlaylist:function(c,b,a){if(!b){b=0}if(a!==true){a=false}rvsession.pyevaluate('__import__("ftrack_rv_api").loadPlaylist('+Ext.encode(c)+', "'+b+'", "'+a+'")');if(c.length>0){eventData={type:"changedVersion",version:c[b].versionId,forceUnlock:true};rvsession.evaluate('sendInternalEvent("ftrack-event","'+FT.encode64(Ext.encode(eventData))+'","")')}},changedVersion:function(a){if(!this.myLockVar){this.entity={entityId:a,entityType:"assetversion"};this.widgets.each(function(b,c){c.updateWidget()})}},versionInContext:function(a){this.sendFtrackEvent(a)},ftrackEvent:function(c){if(c.type==="changedVersion"){if(!this.nav){if(c.forceUnlock===true){this.myLockVar=false}this.changedVersion(c.version)}}else{if(c.type=="compareOff"){if(this.nav){this.loadCurrentPlaylist(c.version,true);this.nav.setLocked(false)}}else{if(c.type=="compareOn"){if(this.nav){this.nav.setLocked(true)}}else{if(c.type=="uploadStarted"){if(this.widgets.get("notes")){this.widgets.get("notes").addAttachment({attachmentid:c.attachment,uploading:true,filename:"annotaded frame"})}}else{if(c.type=="uploadEnded"){if(this.widgets.get("notes")){this.widgets.get("notes").uploadComplete(c.id);this.uploadCount=this.uploadCount-1;if(this.uploadCount===0&&this.noteCallback){this.noteCallback();this.noteCallback=undefined}}}else{if(c.type=="changedGroup"){if(this.nav&&!this.nav.isLocked()){this.remoteUpdateActiveGroup=true;var a=this.nav.getTimeline().getVersionFromIndex(c.index);c.type="changedVersion";c.version=a;this.sendFtrackEvent(c)}}else{if(c.type=="toggleDocking"){}else{if(c.type=="context"){this.nav.getTimeline().inContext(c)}else{if(c.type=="uploadCount"){var b=parseInt(c.count,10);if(b===0){this.noteCallback();this.noteCallback=undefined}else{this.uploadCount=b}}else{if(c.type=="breakItem"){this.breakItem(c.versionId)}}}}}}}}}}},compareOn:function(c,b,d){this.myLockVar=true;eventData={type:"compareOn"};rvsession.evaluate('sendInternalEvent("ftrack-event","'+FT.encode64(Ext.encode(eventData))+'","")');var a={componentIdA:c.componentId,componentIdB:b.componentId,mode:d};rvsession.pyevaluate('__import__("ftrack_rv_api").ftrackCompare('+Ext.encode(a)+")")},compareOff:function(a){this.myLockVar=false;eventData={type:"compareOff",version:a};rvsession.evaluate('sendInternalEvent("ftrack-event","'+FT.encode64(Ext.encode(eventData))+'","")')},loadOne:function(a){this.myLockVar=true;var b={componentIdA:a.componentId,mode:"load"};rvsession.pyevaluate('__import__("ftrack_rv_api").ftrackCompare('+Ext.encode(b)+")")},updatedWipe:function(b,a){this.wipeOn(b,a)},loadCurrentPlaylist:function(a,b){var c=0;if(a){c=this.nav.getTimeline().getIndexFromVersion(a)}var d=this.nav.getTimeline().getPlaylist();this.updatedPlaylist(d,c,b)},attachFrame:function(a){rvsession.evaluate('sendInternalEvent("ftrack-upload-frame","'+a+'","")')},attachAllFrames:function(a){rvsession.evaluate('sendInternalEvent("ftrack-upload-frames","'+a+'","")');return false},sendFtrackEvent:function(a){rvsession.evaluate('sendInternalEvent("ftrack-event","'+FT.encode64(Ext.encode(a))+'","")')},beforeNoteCreate:function(a){this.noteCallback=a;FT.util.security.generateToken(function(b){rvsession.evaluate('sendInternalEvent("ftrack-upload-frames","'+b+'","")')});return false},isWidgetUndockable:function(a){return true}},function(){if(window.rvsession){FT.Mediator=FT.RVMediator=Ext.create("FT._RVMediator")}});Ext.define("FTR.Timeline",{extend:"Ext.panel.Panel",bodyBorder:false,autoScroll:true,id:"ftr-timeline",initComponent:function(){var c=this;this.backupTimelines=[];this.playlist=[];if(this.undockable){this.dockBtn=Ext.create("FT.button.Button",{qtip:FT.i18n("Undock"),glyph:FT.glyph("maximize"),handler:function(){c.fireEvent("toggleDocking",3)}})}this.reloadButton=Ext.create("FT.button.Button",{qtip:FT.i18n("Reload timeline"),glyph:FT.glyph("refresh"),handler:function(){c.store.load()}});this.sortBtn=Ext.create("FTR.Sort",{setTextToName:true,displayField:"name",itemType:"radio",valueField:"id",text:FT.i18n("Sort"),beforeItems:[{text:FT.i18n("Clear"),handler:function(){c.sortBtn.select(undefined);c.updateStore()}},"-"],listeners:{select:function(h,j,g){c.updateStore()}}});this.groupBtn=Ext.create("FTR.Group",{setTextToName:true,displayField:"name",itemType:"radio",selectfirst:true,valueField:"id",text:FT.i18n("Group"),beforeItems:[{text:FT.i18n("Clear"),handler:function(){c.groupBtn.select(undefined);c.updateStore()}},"-"],listeners:{select:function(h,j,g){c.updateStore()}}});this.loadBtn=this.getLoadButton();if(FT.isAuth("PROJECTS")){this.toggleBrowserBtn=Ext.create("FT.button.Button",{qtip:FT.i18n("Toggle Browser"),glyph:FT.glyph("browse"),handler:function(){c.fireEvent("togglebrowser")}})}this._tbar=[this.loadBtn,"->",this.reloadButton,this.groupBtn,this.sortBtn];if(this.dockBtn){this._tbar.push(this.dockBtn)}var d=[];if(FT.isAuth("PROJECTS")){d.push(this.toggleBrowserBtn,{xtype:"tbspacer",width:10})}d=d.concat(this._tbar);this.availableFilters=Ext.create("Ext.data.Store",{fields:["field","label","type","cfg",{name:"enableAny",defaultValue:true},"group"],proxy:{type:"direct",directFn:"FTApi.Review.Playlist.filter",extraParams:{entityId:c.showid},reader:{type:"json"}},autoLoad:false});var e=Ext.data.StoreManager.lookup("FT.store.AssetVersionFilters");this.filterBar=Ext.create("FTR.filter.Filter",{enableInvert:true,enableRemove:false,enableAdd:false,enableAny:false,enableEmpty:false,enableTextField:false,filterTypes:["tasktypeid","taskstatusid","assettypename","statusid"],filterModel:c.filterModel=Ext.create("FT.filter.FilterModel",{rawSettingsStore:e,allFiltersActive:true,availableFilters:c.availableFilters}),quickFilters:[],afterItems:[],beforeItems:d});this.filterBar.on("filterschanged",function(g){this.activeFilters=g;this.updateStore()},this);this.tbar=this.filterBar;this.callParent();this.format=FT.Mediator.getSupportedFormats();this.store=Ext.create("FTR.timeline.Store",{proxy:{type:"direct",directFn:"FTApi.Review.Playlist.get",extraParams:{entityId:c.entityId,entityType:c.entityType,format:this.format,replace:true},reader:{type:"json",root:"items"}}});this.store.on("load",function(){this.showid=this.store.getProxy().getReader().rawData.projectId;this.fireEvent("updatedshowid",this.showid);this.availableFilters.proxy.extraParams.entityId=this.showid;this.filterModel.setAvailableFilters([]);this.updateStore()},this);this.store.on("update",function(){this.view.refresh()},this);this.store.load();this.currentGroup=undefined;var a=new Ext.XTemplate('<div class="ftr-timeline">','<tpl for=".">',"{[this.groupStart(values, xindex)]}",'<div class="ftr-slot-item {[this.inPlayer(values)]}" data-version="{versionId}" data-path="{path}">',"{[this.mediaType(values)]}","{[this.disabled(values)]}",'<div class="ftr-slot-item-header"><div class="ftr-slot-assetname" title="{assetName} {[this.format.version(values.version)]}">{[this.renderCube(values.statuscolor)]}{assetName} {[this.format.version(values.version)]}</div></div>','<div style="background-image: url(\'{thumbnail}\');" class="ftr-slot-item-thumbnail"></div>','<div class="ftr-slot-item-footer">','<div class="ftr-slot-assetname" title="{taskName}"><div style="float:right;">{[this.format.version(values.version)]}</div>{[this.renderCube(values.taskstatuscolor)]}{taskName}</div>',"</div>","</div>","</tpl>","{[this.groupEnd(values)]}","</div>",{format:{version:function(g){return g?"v"+FTrack.grid.AssetVersionRenderer(g):""}},inPlayer:function(g){return c.getIndexFromVersion(g.versionId)==-1?"":"ftr-in-player"},groupStart:function(h,g){var j="";if(c.grouping===undefined&&g!=1||c.currentGroup!==undefined&&c.currentGroup!=h[c.grouping]){j+="</div>"}if(c.grouping===undefined||c.currentGroup!=h[c.grouping]){j+='<div class="ftr-slot-group">';j+='<div class="ftr-slot-header">';j+=this.renderCube(h.parentStatusColor)+h.parentName;j+="</div>";c.currentGroup=h[c.grouping]}return j},groupEnd:function(){c.currentGroup=undefined;return"</div>"},renderCube:function(g){return g?'<span class="cube" style="background-color:'+g+';"></span>':""},disabled:function(h){if(h["FTR.PlaylistItem"].error&&h["FTR.PlaylistItem"].error!==""){var j=FTR.PlaylistItem.getError(h["FTR.PlaylistItem"].error),m=j.longDesc,l=j.shortDesc,k=j.iconCls,g=j.animationCls;return'<div class="ftr-item-overlay" title="'+m+'"><p>'+FT.glyphIcon(k,{cls:g,size:"x-large"})+"<br />"+l+"</p></div>"}else{return""}},mediaType:function(g){var h=FTR.PlaylistItem.getIcon(g["FTR.PlaylistItem"].format);return'<div class="ftr-media-type-overlay">'+FT.glyphIcon(h)+"</div>"}});var b=function(h,g,j){if(g.getPlaylistItem().get("error")!==""){if(!this.shiftKey){FT.notifyError(FTR.PlaylistItem.getError(g.getPlaylistItem().get("error")).longDesc)}return false}};this.view=Ext.create("Ext.view.View",{store:this.store,autoScroll:true,tpl:a,itemSelector:"div.ftr-slot-item",selectedItemCls:"ftr-selected-item",emptyText:'<p class="emptytext">'+FT.i18n("No data found")+"</p>",selModel:{mode:"MULTI"},listeners:{beforeitemclick:function(h,g,l,j,m,k){this.shiftKey=m.shiftKey},beforeitemdblclick:b,beforeselect:function(h,g,k){if(b(h,g,k)===false){return false}if(Ext.isDefined(c.grouping)){var j=this.groupingInSelection(g.get(c.grouping),c.grouping,true);if(j!=-1&&!this.shiftKey){this.view.getSelectionModel().deselect(j)}else{return j==-1}}},itemclick:function(j,h,m,k,n,l){var g=this.getIndexFromVersion(h.get("versionId"));if(g!=-1&&!n.shiftKey){c.fireEvent("jumpToIndex",h.get("versionId"),g)}},itemdblclick:function(h,g,k,j,l){c.loadBtn.removeCls("ftr-highlight");c.fireEvent("updatedPlaylist",c.generatePlaylist(),0,false)},selectionchange:function(g,h){var j=false;Ext.Array.each(h,function(l,k,m){if(c.getIndexFromVersion(l.get("versionId"))==-1){j=true}});if(j){c.loadBtn.addCls("ftr-highlight")}else{c.loadBtn.removeCls("ftr-highlight")}},scope:this}});this.on("recordMoved",function(){this.view.refresh()},this);this.originalTimelineBtn=Ext.create("Ext.Component",{html:'<div id="ftr-load-original">Click here to load original timeline</div>',listeners:{afterrender:function(){this.el.dom.onclick=function(){c.resetStore()}}},hidden:true});this.add([this.originalTimelineBtn,this.view])},resetStore:function(){var a=this;if(a.originalStore){a.store=a.originalStore.copyStore();delete a.originalStore;a.view.bindStore(a.store);a.view.refresh();a.originalTimelineBtn.hide()}},updateShowid:function(a){this.availableFilters.proxy.extraParams.entityId=a;this.filterModel.setAvailableFilters([])},inContext:function(a){var d=this;var b=a.entityId;var c=a.entityType;if(!this.originalStore){this.originalStore=this.store.copyStore()}this.originalTimelineBtn.show();this.store.proxy.extraParams={entityId:b,entityType:c,replace:false,format:this.format};this.store.load()},replaceRecord:function(b){var e=this;var a=b.get("object_typeid");var c=b.get("entityId");var d=b.get("entityType");if(!this.originalStore){this.originalStore=this.store.copyStore()}this.originalTimelineBtn.show();this.store.proxy.extraParams={entityId:c,entityType:d,replace:true,format:this.format};this.store.load()},addRecord:function(b){var a=b.get("object_typeid");var c=b.get("entityId");var d=b.get("entityType");this.getAndAddRecord(c,d,a)},getAndAddRecord:function(h,g,b,j){var k=this;var d=this.inTimeline(h,g);var e=Ext.ModelManager.getModel("FTR.TimelineItemModel");var a=Ext.create("FTR.TimelineItemModel");e.proxy=Ext.clone(a.getProxy());Ext.apply(e.proxy.extraParams,{format:k.format});var c=h+"__"+g;e.load(c,{success:function(l){if(k.validateNewRecord(l)){if(Ext.isDefined(j)){k.store.insert(j,l)}else{k.store.addSorted(l)}FT.notifySuccess(FT.i18n("Object added to timeline"));k.fireEvent("recordMoved")}},failure:function(){FT.notifyError(FT.i18n("Object could not be added to timeline"))}})},validateNewRecord:function(a){if(!a){FT.notifyError(FT.i18n("Could not add record"));return false}var c=a.validate();if(c.items.length>0){FT.notifyError(FT.i18n("Could not add record"));return false}var b=a.get("versionId");if(this.inTimeline(b,"versionId")){FT.notifyError(FT.i18n("Object is already loaded in timeline"));return false}return true},updateTimelineItem:function(d,c){var b=this;var a=this.store.findRecord(c,d);a.reload(d+"__assetversion",this.format)},updateStore:function(){this.currentGroup=undefined;var a=[],c;if(this.groupBtn.getValue()!==undefined){var b=[{property:this.groupBtn.getValue(),direction:"ASC"},{property:"version",direction:"DESC"}];this.store.group(b);this.grouping=this.groupBtn.getValue()}else{log("Clear grouping");this.grouping=undefined}if(this.sortBtn.getValue()!==undefined){c=[{property:this.sortBtn.getValue(),direction:"ASC"}];this.store.group(c)}else{c=[{property:"internalSort",direction:"ASC"}];this.store.sort(c)}this.store.clearFilter();if(Ext.isDefined(this.activeFilters)&&this.activeFilters.length!==0){this.store.filter(this.activeFilters)}},getIndexFromVersion:function(a){var b=-1;Ext.Array.each(this.playlist,function(e,c,d){if(a==e.versionId){b=c;return false}});return b},generatePlaylist:function(){this.playlist=[];var b="video",a=this.view.getSelectionModel().getSelection();Ext.Array.each(a,function(e,c,g){var h=e.getPlaylistItem().getData();if(c===0&&h.format!==b){b=h.format}else{if(c!==0&&"image"===b){return}}if(h.format===b){this.playlist.push(h)}},this);if(this.playlist.length<a.length){FT.notifySuccess(FT.i18n("Multiple load is only supported with videos"))}this.view.refresh();return this.playlist},groupingInSelection:function(d,e,a){var c=this.view.getSelectionModel().getSelection();var b=-1;Ext.Array.each(c,function(j,g,h){if(d==j.get(e)){b=g;return false}});return a&&b!=-1?c[b]:-1},inTimeline:function(b,a){return this.store.findExact(a,b)==-1?false:true},changeSelectedVersion:function(b,a){b.beginEdit();Ext.Array.each(b.get("versions"),function(e,c,d){if(e.id==a){b.set("selected",e);return false}});b.endEdit(true)},getIndexFromField:function(b,c){var a=-1;Ext.Array.each(this.playlist,function(g,d,e){if(b==g[c]){a=d;return false}});return a},setActiveGroup:function(b,a,c){if(b){b.set("selected",{id:a,path:c})}},getPlaylist:function(){return this.playlist},getVersionFromIndex:function(a){return this.playlist[a].versionId},getLoadButton:function(){var a=this;var b=function(){a.removeCls("ftr-highlight");var c=a.generatePlaylist();if(c.length){a.fireEvent("updatedPlaylist",c,0,false)}else{FT.notifyError(FT.i18n("Nothing selected."))}};if(FT.Mediator.enableLoadAll()){return Ext.create("Ext.button.Split",{glyph:FT.glyph("play"),text:FT.i18n("Load selected"),handler:b,menu:[{text:FT.i18n("Load all"),handler:function(){a.view.getSelectionModel().selectAll();b()},glyph:FT.glyph("play")}]})}else{return Ext.create("Ext.button.Button",{glyph:FT.glyph("play"),text:FT.i18n("Load selected"),handler:b})}},breakItem:function(b,d){var a=this.store.findRecord("versionId",b);if(this.playlist){var c=Ext.Array.findBy(this.playlist,function(h,e,g){if(h.versionId===b){return true}});Ext.Array.remove(this.playlist,c)}if(a){a.setBroken(d);this.view.refresh()}}});Ext.define("FTR.Sort",{extend:"FT.button.Selector",store:Ext.create("Ext.data.Store",{fields:["name","id"],data:[{name:FT.i18n("Project hierarchy"),id:"parentName"}]})});Ext.define("FTR.Group",{extend:"FT.button.Selector",store:Ext.create("Ext.data.Store",{fields:["name","id"],data:[{name:FT.i18n("Asset parent"),id:"parentId"},{name:FT.i18n("Asset"),id:"assetId"}]})});Ext.define("FTR.Filter",{extend:"FT.button.Selector",store:Ext.create("Ext.data.Store",{fields:["name","id"],data:[{name:FT.i18n("Compositing(Task)"),id:"tasktype"}]})});Ext.define("FTR.PlaylistItem",{extend:"Ext.data.Model",fields:[{name:"source",convert:function(b,a){return b}},"frameOut","frameIn","versionId","frameRate","error","format","location","componentId"],statics:{getIcon:function(a){if(a==="image"){return"image"}else{return"movie"}},getError:function(a){var b={};b.shortDesc="Not available";switch(a){case"no-component":b.iconCls="error";b.longDesc="No playable component found";break;case"no-version":b.iconCls="error";b.longDesc="No versions found";break;case"no-web-component":b.iconCls="error";b.longDesc="No web player component found";break;case"encoding":b.iconCls="job";b.animationCls="animate-spin";b.shortDesc="Encoding";b.longDesc="Component is being encoded.";break;case"failed":b.iconCls="error";b.shortDesc="Encoding failed";b.longDesc="The encoding has failed.";break;case"location":b.iconCls="error";b.shortDesc="File not found";b.longDesc="Could not access file";break;default:b.iconCls="error";b.longDesc="Not available";break}return b}}});Ext.define("FTR.VersionItem",{extend:"Ext.data.Model",fields:["name","version","userid","thumbnail","created_at","description","versionId"],hasOne:{model:"FTR.PlaylistItem",getterName:"getPlaylistItem",setterName:"setPlaylistItem",associationKey:"playlistItem"},setBroken:function(a){var b=this&&this.getPlaylistItem();b.set("error",a);this.setPlaylistItem(b)}});Ext.define("FTR.TimelineItemModel",{extend:"Ext.data.Model",fields:["parentName","parentStatusid","parentStatusColor","parentId","version","taskName","taskstatusid","taskstatuscolor","tasktypeid","thumbnail","versionId","thumbnail","assettypename","assetName","statusid","statuscolor","assetId","internalSort"],hasOne:{model:"FTR.PlaylistItem",getterName:"getPlaylistItem",setterName:"setPlaylistItem",associationKey:"playlistItem"},validations:[],proxy:{type:"direct",directFn:"FTApi.Review.Item.get"},reload:function(d,c){var b=this;var a=Ext.ModelManager.getModel("FTR.TimelineItemModel");a.proxy=Ext.clone(b.getProxy());Ext.apply(a.proxy.extraParams,{format:c});a.load(d,{success:function(e){b.data=Ext.clone(e.data);b["FTR.PlaylistItemHasOneInstance"]=e["FTR.PlaylistItemHasOneInstance"];b.commit()}})},setBroken:function(a){var b=this&&this.getPlaylistItem();b.set("error",a);this.setPlaylistItem(b)}});Ext.define("FTR.timeline.Store",{extend:"Ext.data.Store",model:"FTR.TimelineItemModel",constructor:function(){this.callParent(arguments);this.on("load",this.validateRecordLocation,this)},copyStore:function(){var c={model:this.model,sorters:this.sorters,autoLoad:false,autoDestroy:this.autoDestroy,proxy:{type:"direct",directFn:"FTApi.Review.Playlist.get",extraParams:Ext.clone(this.getProxy().extraParams),reader:{type:"json",root:"items"}}};var b=Ext.create("FTR.timeline.Store",c);var a=function(d,e){var g=d.data.clone().items;g=Ext.clone(g);e.removeAll(true);e.loadData(g)};if(!this.isLoading()){a(this,b)}return b},validateRecordLocation:function(){this.each(function(b,a,c){var d=b.getPlaylistItem();if(!d.get("error")){FT.Mediator.validateLocation(d.get("componentId"),b.get("versionId"))}})}});Ext.define("RAW.ftr.Versions",{validPushEntities:[],alias:"widget.ftr-versions",disablePrimaryToolbar:true,maximizable:false,extend:"RAW.Widget",mode:"fit",id:"ftr-versions-widget",bodyCls:"background-light",title:FT.i18n("Versions"),autoScroll:true,initComponent:function(){this.callParent()},initWidget:function(){var b=this,a=this.getEntity();this.cycleCount=-1;this.wipe=false;this.tile=false;this.replace=false;this.internalPath_A="";this.location_A="";this.store=Ext.create("FTR.timeline.Store",{model:"FTR.VersionItem",proxy:{type:"direct",directFn:"FTApi.Review.getVersions",extraParams:{entityId:a&&a.entityId,format:FT.Mediator.getSupportedFormats()},reader:{type:"json",root:"items"}},listeners:{load:function(){b.view.refresh();var c=this.getProxy().getReader();if(c&&c.rawData&&c.rawData.path){b.compareItem={path:decodeURIComponent(c.rawData.path),location:c.rawData.location,componentId:c.rawData.componentId}}}}});this.cycleTask=new Ext.util.DelayedTask(function(){b.findRecordAndFireEvent()});this.view=Ext.create("Ext.view.View",{padding:10,store:this.store,itemSelector:"div.ftr-versions-item",selectedItemCls:"ftr-versions-open",allowDeselect:true,autoScroll:true,selModel:{mode:"SINGLE",enableKeyNav:false},emptyText:'<p class="ft-grid-emptytext">'+FT.i18n("No versions")+"</p>",tpl:new Ext.XTemplate('<div class="ftr-versions">','<tpl for=".">','<div class="ftr-versions-item">',"{[this.disabled(values)]}",'<div class="ftr-versions-details">','<img src="{thumbnail}" class="ftr-versions-item-thumbnail" />','<table class="ftr-versions-item-information">',"<tr>",'<td class="ftr-versions-table-title">Asset name:</td>','<td class="ftr-versions-table-value">{name}</td>',"</tr>","<tr>",'<td class="ftr-versions-table-title">Version:</td>','<td class="ftr-versions-table-value">{[FTrack.grid.AssetVersionRenderer(values.version)]}</td>',"</tr>","<tr>",'<td class="ftr-versions-table-title">Published by:</td>','<td class="ftr-versions-table-value">{[FTrack.grid.UserRendererPrint(values.userid)]}</td>',"</tr>","<tr>",'<td class="ftr-versions-table-title">Published:</td>','<td class="ftr-versions-table-value">{[FTrack.grid.FuzzyDateRenderer(values.created_at)]}</td>',"</tr>","<tr>",'<td class="ftr-versions-table-title">Description:</td>','<td class="ftr-versions-table-value" data-qtip="{description}">{description}</td>',"</tr>","</table>",'<div style="clear:both;"></div>','<div class="ftr-versions-buttons">','<button class="button button-small ftr-versions-wipe ftr-compare-button {[this.wipeEnabledClassName()]}">Wipe</button> ','<button class="button button-small ftr-versions-tile ftr-compare-button {[this.tileEnabledClassName()]}">Tile</button> ','<button class="button button-small ftr-versions-load ftr-compare-button">Load</button> ','<button class="button button-small ftr-versions-cancel ftr-compare-button">Cancel</button> ',"</div>","</div>","</div>","</tpl>","</div>",{wipeEnabledClassName:function(){if(FT.Mediator.isVersionWipeSupported()){return""}else{return"ftr-compare-button-hidden"}},tileEnabledClassName:function(){if(FT.Mediator.isVersionTileSupported()){return""}else{return"ftr-compare-button-hidden"}},disabled:function(d){if(d["FTR.PlaylistItem"]){if(d["FTR.PlaylistItem"].error){var e=FTR.PlaylistItem.getError(d["FTR.PlaylistItem"].error),j=e.longDesc,h=e.shortDesc,g=e.iconCls,c=e.animationCls;return'<div class="ftr-item-overlay ftr-versions-overlay" title="'+j+'"><p>'+FT.glyphIcon(g,{cls:c,size:"x-large"})+"<br />"+h+"</p></div>"}}}}),listeners:{itemclick:function(k,c,j,d,l,g){if(l.getTarget(".ftr-versions-buttons")&&!l.getTarget(".ftr-versions-cancel")){var h=l.getTarget(".ftr-versions-buttons",null,true);h.child(".ftr-versions-wipe").removeCls("ftr-active-comparison");h.child(".ftr-versions-tile").removeCls("ftr-active-comparison");h.child(".ftr-versions-load").removeCls("ftr-active-comparison");var m=c.getPlaylistItem().getData();j=l.getTarget(".ftr-compare-button",null,true);if(l.getTarget(".ftr-versions-wipe")){if(!this.wipe){this.wipe=true;l.getTarget(".ftr-versions-wipe",null,true).addCls("ftr-active-comparison");b.fireEvent("compareOn",b.compareItem,m,"wipe")}else{b.reset()}}else{if(l.getTarget(".ftr-versions-tile")){if(!this.tile){this.tile=true;l.getTarget(".ftr-versions-tile",null,true).addCls("ftr-active-comparison");b.fireEvent("compareOn",b.compareItem,m,"tile")}else{b.reset()}}else{if(l.getTarget(".ftr-versions-load")){if(!this.replace){this.replace=true;l.getTarget(".ftr-versions-load",null,true).addCls("ftr-active-comparison");b.fireEvent("loadOne",m)}else{b.reset()}}}}return false}},beforedeselect:function(){this.view.toggleButtons()},beforeselect:function(d,c){var e=c.getPlaylistItem();if(e){if(e.get("error")){FT.notifyError(FTR.PlaylistItem.getError(e.get("error")).longDesc);return false}}},select:function(d,c){this.view.toggleButtons()},scope:this},toggleButtons:function(c){var d=this.getSelectedNodes();if(d.length>0){d=Ext.get(d[0]);c=d.down(".ftr-versions-buttons");if(c.getHeight()===0){if(b.replace||b.forceReplace){c.child(".ftr-versions-load").addCls("ftr-active-comparison");b.replace=true;b.forceReplace=false}if(b.wipe){c.child(".ftr-versions-wipe").addCls("ftr-active-comparison")}if(b.tile){c.child(".ftr-versions-tile").addCls("ftr-active-comparison")}c.setStyle("display","inline-block");c.animate({duration:300,to:{opacity:1,height:20}})}else{b.reset();c.animate({duration:200,to:{opacity:0,height:0},listeners:{afteranimate:function(){c.setStyle("display","none");c.child(".ftr-versions-wipe").removeCls("ftr-active-comparison");c.child(".ftr-versions-tile").removeCls("ftr-active-comparison");c.child(".ftr-versions-load").removeCls("ftr-active-comparison")}}})}}}});this.store.load();this.add(this.view)},reset:function(a){if(this.wipe||this.tile||this.replace){this.wipe=false;this.tile=false;this.replace=false;if(a===undefined||!a){this.fireEvent("compareOff",this.getEntity().entityId)}}this.view.getSelectionModel().deselectAll(true)},updateEntity:function(a){this.entity=a||this.entity;if(this.entityId!==a.entityId){this.entityId=a.entityId;Ext.apply(this.store.proxy.extraParams,this.entity);this.store.load()}},cycleDown:function(){log("Cycle down: "+this.cycleCount);this.cycleCount+=1;if(this.cycleCount>=this.store.getTotalCount()){log(this.cycleCount+" > "+this.store.getTotalCount());this.cycleCount=0}this.cycleTask.delay(5)},cycleUp:function(){log("Cycle up: "+this.cycleCount);this.cycleCount-=1;if(this.cycleCount<=0){this.cycleCount=0}this.cycleTask.delay(5)},findRecordAndFireEvent:function(){log("Get at index: "+this.cycleCount);var a=this.store.getAt(this.cycleCount);if(a){this.forceReplace=true;this.view.getSelectionModel().select(a);this.fireEvent("loadOne",decodeURIComponent(a.get("path")))}else{FT.notifyError(FT.i18n("End of version list"))}},updateWidget:function(){if(this.store){var a=this.getEntity();this.reset(true);if(this.entityId!==a.entityId){this.entityId=a.entityId;Ext.apply(this.store.proxy.extraParams,this.getEntity());this.store.load()}}},setBroken:function(b){var a=this;this.store.each(function(d,c,e){var g=d.getPlaylistItem();if(g){if(g.get("versionId")===b){d.setBroken("location");return false}}});a.view.refresh()}});Ext.define("FT._WebMediator",{extend:"FT.AbstractMediator",isWeb:true,remoteUpdateActiveGroup:false,loadingFeedback:true,hiddenPanels:false,constructor:function(a){this.callParent(arguments)},register:function(a){if(a.ftrId==="ftr-action-panel"){this.actionPanel=a}if(a.ftrId==="ftr-navigation-panel"){this.navigationPanel=a}if(a.ftrId==="ftr-session-notes"||a.ftrId==="notes"){a.on({seekto:this.seekTo,scope:this})}this.callParent(arguments);if(!this._registerFullscreen){FT.app.on("fullscreen",this.handleFullscreen,this);this._registerFullscreen=true}return this},enableLoadAll:function(){return false},versionInContext:function(a){this.nav.getTimeline().inContext(a)},initHotkeys:function(){this.keymap=new Ext.util.KeyMap({target:document,binding:[{key:Ext.EventObject.T,ctrl:true,shift:true,scope:this,fn:function(b,c){var a=c.target&&c.target.tagName||"";if(a!=="INPUT"&&a!=="TEXTAREA"&&a!=="SELECT"){if(this.hiddenPanels){this.fireEvent("showpanels")}else{this.fireEvent("hidepanels")}this.hiddenPanels=!this.hiddenPanels}}}]})},compareOff:function(a){var c=this.nav.getTimeline(),d=c&&c.getPlaylist(),b=c&&c.getIndexFromVersion(a);if(d){this.loadPlaylist(d)}if(this.player){this.player.jumpToIndex(b)}},updatedPlaylist:function(b,a){version=b&&b.length&&b[0].versionId;if(b){this.loadPlaylist(b,version,a)}},loadPlaylist:function(e,a,c){var b=this;var d=function d(){b.player.clearPlaylist();Ext.Object.each(e,function(g,j,h){b.player.addSource(j)});b.player.beginLoad(c);if(a){b.changedVersion(a)}};if(this.player&&this.player.rendered){d()}if(this.player&&!this.player.rendered){this.player.on("afterrender",function(){d()})}},loadOne:function(a){this.player.clearPlaylist();this.player.addSource(a);this.player.beginLoad()},changedVersion:function(a){this.setEntity({entityId:a,entityType:"assetversion"})},changedPlayerIndex:function(b){var c=this.nav.getTimeline(),a=c&&c.getVersionFromIndex(b);if(a){this.changedVersion(a)}},jumpToIndex:function(a,b){this.player.jumpToIndex(b)},beforeNoteCreate:function(a){if(this.player&&this.player.drawing&&this.player.draw.hasDrawn){log("Player is in draw mode..");this.player.attachFrame();this.noteCallback=a;return false}return true},attachFrame:function(){this.player.attachFrame()},attachAllFrames:function(){if(this.player.drawing){this.player.saveCanvas();return false}else{return true}},attachedFrame:function(){if(this.widgets.get("notes")&&this.noteCallback){this.noteCallback.call();this.noteCallback=undefined}},getVideoFormat:function(){var a=FT.freview.FReviewHelper.testVideoFormat();if(a){if(a.h264){return"ftrackreview-mp4"}else{if(a.webm){return"ftrackreview-webm"}}}FT.notifyError(FT.i18n("Your browser does not seem to support HTML5 video."));return false},getSupportedFormats:function(){var a=this.getVideoFormat();return[a,"ftrackreview-image"]},isVersionWipeSupported:function(){return false},isVersionTileSupported:function(){return false},canPlayThrough:Ext.emptyFn,isAnnotationsSupported:function(){var a=Ext.isIE||!!window.navigator.userAgent.match(/Trident\/7\./);if(a||Ext.safariVersion&&Ext.safariVersion<11||Ext.firefoxVersion&&Ext.firefoxVersion<12||Ext.chromeVersion&&Ext.chromeVersion<13){return false}return true},handleFullscreen:function(a){if(a){this.navigationPanel.collapse();this.actionPanel.collapse()}else{this.navigationPanel.expand();this.actionPanel.expand()}},seekTo:function(a){if(this.player){this.player.seekTo(a)}},currentFrame:function(){if(this.player&&!this.player.isPlaying()){return this.player.currentFrameInformation()}return}},function(){if(!FT.Mediator){FT.Mediator=FT.WebMediator=Ext.create("FT._WebMediator")}});Ext.define("FTR.WebPlayerDraw",{extend:"Ext.util.Observable",hasDrawn:false,lineWidth:5,exportSize:{width:1920,height:1080},constructor:function(a){Ext.apply(this,a);this.callParent(arguments)},tools:{pen:{start:function(a,b){a.beginPath();a.moveTo(b.x,b.y)},move:function(a,c,b){a.lineTo(b.x,b.y);a.stroke()}},ellipse:{move:function(c,k,j){var a=Math.min(j.x,k.x),g=Math.min(j.y,k.y),b=Math.abs(j.x-k.x),d=Math.abs(j.y-k.y),e=function(B,u,t,z,o){var s=0.5522848,n=z/2*s,l=o/2*s,A=u+z,q=t+o,p=u+z/2,m=t+o/2;B.beginPath();B.moveTo(u,m);B.bezierCurveTo(u,m-l,p-n,t,p,t);B.bezierCurveTo(p+n,t,A,m-l,A,m);B.bezierCurveTo(A,m+l,p+n,q,p,q);B.bezierCurveTo(p-n,q,u,m+l,u,m);B.closePath();B.stroke()};e(c,a,g,b,d)}},arrow:{move:function(l,c,h){var g=4*l.lineWidth,a=Math.PI/6,e=Math.atan2(h.y-c.y,h.x-c.x),d=g*Math.cos(e-a),k=g*Math.sin(e-a),b=g*Math.cos(e+a),j=g*Math.sin(e+a);l.beginPath();l.moveTo(c.x,c.y);l.lineTo(h.x,h.y);l.lineTo(h.x-d,h.y-k);l.moveTo(h.x,h.y);l.lineTo(h.x-b,h.y-j);l.closePath();l.stroke()}}},init:function(b){if(this.canvasPaint){return}var k=this,l=b.getContext("2d"),h,a,j={x:0,y:0},e={x:0,y:0},g,d=function(m){a.clearRect(0,0,h.width,h.height);var n=(k.tools[k.tool]||{}).move;if(n){n(a,e,j)}};this.tool=this.tool||"pen";this.color=this.color||"#FF9900";this.canvas=b;h=document.createElement("canvas");h.className="temp-canvas";h.width=b.width;h.height=b.height;b.parentNode.appendChild(h);var c=h.offsetTop;g=new Ext.Element(h);a=h.getContext("2d");this.ctxPaint=a;this.canvasPaint=h;this.ctx=b.getContext("2d");h.onmousemove=function(m){var o=k.zoomAndPanController.scale,n=g.getXY();j.x=(m.pageX-n[0])/o/k.initialZoomScale;j.y=(m.pageY-n[1])/o/k.initialZoomScale};h.onmousedown=function(n){if(n.button!==0){return}k.hasDrawn=true;k.fireEvent("beforedraw");a.strokeStyle=k.color||"#FF9900";e.x=j.x;e.y=j.y;var m=(k.tools[k.tool]||{}).start;if(m){m(a,j)}h.addEventListener("mousemove",d,false);n.preventDefault()};h.onmouseup=function(m){h.removeEventListener("mousemove",d,false);l.drawImage(h,0,0);a.clearRect(0,0,h.width,h.height)};return a},cleanUp:function(){Ext.removeNode(this.canvasPaint);this.canvasPaint=null;this.ctxPaint=null;this.canvas=null;this.ctx=null;this.initialZoomScale=1;this.hasDrawn=false;this.fireEvent("cleardraw")},resizeCanvas:function(b,c){var a=b.getContext("2d");var d=a.getImageData(0,0,b.width-1,b.height-1);b.width=c.width;b.height=c.height;a.putImageData(d,0,0)},resize:function(a,b){if(!this.canvas){return}this.initialZoomScale=b;this.resizeCanvas(this.canvas,a);this.resizeCanvas(this.canvasPaint,a);this.setLineWidth(this.lineWidth)},clear:function(a){if(!a||!this.ctx||!this.ctxPaint){return}this.ctx.drawImage(a,0,0,this.canvas.width,this.canvas.height);this.ctxPaint.clearRect(0,0,this.canvasPaint.width,this.canvasPaint.height);this.hasDrawn=false;this.fireEvent("cleardraw")},getDownsampledCanvas:function(c){var d=document.createElement("canvas");var b=Math.min(this.exportSize.width/c.width,this.exportSize.height/c.height);b=Math.min(b,1);d.width=c.width*b;d.height=c.height*b;var a=d.getContext("2d");a.drawImage(c,0,0,d.width,d.height);return d},setLineWidth:function(a){this.lineWidth=a;if(this.ctxPaint){this.ctxPaint.lineWidth=this.lineWidth/this.initialZoomScale;this.ctxPaint.lineJoin="round";this.ctxPaint.lineCap="round"}},setColor:function(a){this.color=a},setTool:function(a){this.tool=a;if(this.tool){this.canvasPaint.style.cursor="crosshair"}else{this.canvasPaint.style.cursor="inherit"}}});Ext.define("RAW.WebPlayer",{extend:"RAW.Widget",alias:"widget.widget_webplayer",validPushEntities:[],disablePrimaryToolbar:true,maximizable:false,mode:"fit",items:[],cls:"ftr-window",playerComponentCls:"",layout:"fit",forceMargin:0,bodyStyle:null,preventHeader:true,header:false,addZoomAndPanTools:true,playlist:[],sequence:null,loop:true,drawing:false,videoPlaceholder:null,enableClipNavigation:false,isAutoplaySupported:true,initComponent:function(){var a;this.savedFrames=[];this.initialZoomScale=1;this.zoomAndPanController=new FT.ftrackreview.ZoomAndPanController;this.userZoomAndPanControl=Ext.create("FT.ftrackreview.ZoomAndPanInterfaceToolkit",{zoomAndPanController:this.zoomAndPanController});this.on("videoplay",function(){this.userZoomAndPanControl.setInactive()},this);this.on("resize",this.resetInitialZoom,this);this.on("loadedmetadata",this.resetInitialZoom,this);this.on("canplaythrough",this.resetInitialZoom,this);this.callParent();this.isAnnotationsSupported=FT.Mediator.isAnnotationsSupported();FT.freview.FReviewHelper.testVideoAutoPlay(Ext.bind(this.isAutoplaySupportedCallback,this));this._copyToCanvasIssue=Ext.isSafari&&Ext.safariVersion<8;a=new Ext.util.KeyMap({target:document,ignoreInputFields:true,binding:[{key:"z",fn:this.userZoomAndPanControl.setZoomActive,scope:this.userZoomAndPanControl},{key:"h",fn:this.userZoomAndPanControl.setPanActive,scope:this.userZoomAndPanControl},{key:"p",fn:Ext.bind(this.setActiveAnnotationTool,this,["pen"])},{key:"a",fn:Ext.bind(this.setActiveAnnotationTool,this,["arrow"])},{key:"c",fn:Ext.bind(this.setActiveAnnotationTool,this,["ellipse"])}]})},isAutoplaySupportedCallback:function(a,b){if(a){this.isAutoplaySupported=true}else{this.isAutoplaySupported=false;this.controls.setLoading(false)}},setActiveAnnotationTool:function(a){this.ensureAnnotationsMode();if(!this.drawing){return}if(a=="pen"){this.annotatePenToolButton.toggle(true)}if(a=="arrow"){this.annotateArrowToolButton.toggle(true)}if(a=="ellipse"){this.annotateCircleToolButton.toggle(true)}},ensureAnnotationsMode:function(){this.userZoomAndPanControl.setInactive();if(!this.drawing){this.toggleDraw()}},showDrawToolbar:function(){if(this.drawToolbar){return}this.drawToolbar=Ext.create("Ext.toolbar.Toolbar",{cls:"ftr-draw-toolbar",dock:"left",padding:5,items:[this.annotatePenToolButton=Ext.widget({ui:"plain",xtype:"button",padding:5,glyph:FT.glyph("pen"),qtip:{align:"right",text:FT.i18n("Pen tool (P)")},pressed:!this.draw.tool||this.draw.tool==="pen"?true:false,enableToggle:true,toggleGroup:"video-tool",scope:this,toggleHandler:function(a,b){if(b){this.draw.setTool("pen")}else{this.draw.setTool(null)}}}),this.annotateArrowToolButton=Ext.widget({ui:"plain",xtype:"button",padding:5,glyph:FT.glyph("arrow"),qtip:{align:"right",text:FT.i18n("Arrow tool (A)")},pressed:this.draw.tool==="arrow"?true:false,enableToggle:true,toggleGroup:"video-tool",scope:this,toggleHandler:function(a,b){if(b){this.draw.setTool("arrow")}else{this.draw.setTool(null)}}}),this.annotateCircleToolButton=Ext.widget({ui:"plain",xtype:"button",padding:5,glyph:FT.glyph("circle"),qtip:{align:"right",text:FT.i18n("Circle tool (C)")},pressed:this.draw.tool==="ellipse"?true:false,enableToggle:true,toggleGroup:"video-tool",scope:this,toggleHandler:function(a,b){if(b){this.draw.setTool("ellipse")}else{this.draw.setTool(null)}}}),"-",{ui:"plain",padding:5,glyph:FT.glyph("lens"),qtip:{align:"right",text:FT.i18n("Choose color")},scope:this,handler:function(a,b){this.showColorPicker(a)},listeners:{scope:this,afterrender:function(c){var b=this.draw.color||"#FF9900";var a=c&&c.btnIconEl;if(a){a.setStyle("color",b)}}}},"->",{ui:"plain",padding:5,glyph:FT.glyph("delete"),qtip:{align:"right",text:FT.i18n("Reset annotation")},scope:this,handler:function(){var a=this.getMediaEl();this.draw.clear(a&&a.dom)}}]});this.addDocked(this.drawToolbar)},hideDrawToolbar:function(){if(this.drawToolbar){this.removeDocked(this.drawToolbar);this.drawToolbar=null}},initWidget:function(a){this.draw=Ext.create("FTR.WebPlayerDraw",{zoomAndPanController:this.zoomAndPanController});this.callParent();this.register();var c="";if(this.videoPlaceholder){c=Ext.String.format("background-image: url({0});",this.videoPlaceholder)}var b=Ext.create("Ext.Component",{layout:"fit",cls:this.playerComponentCls,html:Ext.String.format('<div data-prevent-right-click-if-necessary class="ftr-webplayer" style="{0}"><div id="ftr-webplayer-body" style="height:100%" class="no-flicker"><div id="ftr-webplayer-zoom-reset"><div class="ftr-paint"><canvas></canvas></div><div id="ftr-webplayer-video" class="no-flicker"></div></div></div></div>',c)});this.add([b]);this.controls=Ext.create("FTR.PlayerControls",{dock:"bottom",enableAnnotations:this.disableAnnotations!==true,enableClipNavigation:this.enableClipNavigation,listeners:{scope:this,togglePlay:this.togglePlay,toggleLoop:this.toggleLoop,toggleDraw:this.toggleDraw,step:this.step,jumpRelative:this.jumpRelative,toggleFullscreen:this.toggleFullscreen,seek:this.onSeek,seekStart:this.onSeekStart}});if(this.addZoomAndPanTools){this.controls.add(this.userZoomAndPanControl.getButtons())}if(this.playerControlsCls){this.controls.cls=this.playerControlsCls}this.addDocked(this.controls)},listeners:{afterrender:function(){this.zoomAndPanController.bind(Ext.get("ftr-webplayer-body"));this.mon(this.el,"click",this.onVideoClick,this,{delegate:"#ftr-webplayer-video"})}},onVideoClick:function(a){if(a.button!==0){return}if(this.userZoomAndPanControl.isActive()){return}this.togglePlay()},register:function(){FT.Mediator.registerPlayer(this)},clearPlaylist:function(){this.stopDraw();this.playlist=[]},addSource:function(b){var a={src:b.source,framerate:b.frameRate,"in":b.frameIn/b.frameRate,out:b.frameOut/b.frameRate,format:b.format};if(b.format==="image"){this.playImage=true}else{this.playImage=false}this.playlist.push(a)},beginLoad:function(c){var a=this;this.controls.enableHotkeys();if(this.sequence){this.removePlaybackListeners();this.sequence.remove()}if(this.image){this.image.destroy();this.image=undefined}this.userZoomAndPanControl.setInactive();this.zoomAndPanController.reset();var b=Ext.get("ftr-webplayer-video"),e,d=0;if(this.playImage){this.controls.imageMode(true);e=Ext.create("Ext.Img",{cls:"ftr-visibility-hidden ftr-review-image",autoEl:{tag:"img",crossorigin:"Anonymous",src:this.playlist[0].src,style:"pointer-events: none;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;"},listeners:{afterrender:function(){var g=this;g.el.dom.onload=function h(){if(g.rendered){g.removeCls("ftr-visibility-hidden")}a.fireEvent("canplaythrough")}}}});e.render(b);this.image=e;this.controls.disableHotkeys()}else{this.sequence=Popcorn.sequence("ftr-webplayer-video",this.playlist,{crossOrign:true,controls:false,loop:!!this.loop});this.setupPlaybackListeners(c);d=this.sequence.duration();this.controls.imageMode(false);this.setLoadingUntilCanPlayThrough()}this.clearProgressIndicatorInterval();this.controls.createSeeker(d,this.playlist);this.controls.updateBufferProgress(0);this.controls.updateProgress(0,0);this.updateTotalFrameCount(0)},removePlaybackListeners:function(){this.sequence.off("loadedmetadata");this.sequence.off("canplaythrough");this.sequence.off("timeupdate");this.sequence.off("cycle");this.sequence.off("play");this.sequence.off("pause");this.sequence.off("progress");this.sequence.off("error")},resetInitialZoom:function(){var g=this.el.down("#ftr-webplayer-zoom-reset");var e=this.getMediaContainerSize();var a=this.getMediaSize();var b=Math.min(e.width/a.width,e.height/a.height);b=Math.min(b,1);this.initialZoomScale=b;var d=(e.width-a.width*b)/2;var c=(e.height-a.height*b)/2;this.zoomAndPanController.setElementTransform(g,b,[d,c]);if(this.draw){this.draw.resize(a,this.initialZoomScale)}},getMediaContainerSize:function(){var a=this.el.down("#ftr-webplayer-zoom-reset");return a.getSize()},getMediaSize:function(){var a=this.getMediaEl();var b=a&&a.dom||{};return{width:b.videoWidth||b.naturalWidth||b.width,height:b.videoHeight||b.naturalHeight||b.height}},setupPlaybackListeners:function(c){var a=this,d=this.sequence,b=this.el.down(".progress");d.listen("loadedmetadata",function(){a.fireEvent("loadedmetadata")});d.listen("canplaythrough",function(){a.fireEvent("canplaythrough");if(c!==false){d.play()}});if(c&&!this.isAutoplaySupported){d.play()}d.listen("timeupdate",function(){});d.listen("cycle",function(g,h){var e=h&&h.position&&h.position.current;if(Ext.isNumber(e)){a.fireEvent("changedIndex",e);a.updateTotalFrameCount(e)}});d.listen("play",Ext.bind(this.onPlay,this));d.listen("pause",Ext.bind(this.onPause,this));d.listen("progress",Ext.bind(this.onProgress,this));d.listen("error",function(){FT.notifyError(FT.i18n("Error loading video file"));a.fireEvent("loadingerror")})},updateTotalFrameCount:function(a){var c=this.playlist[a],b=(c.out-c["in"])*c.framerate;this.controls.setClipInfomation(b,c.framerate)},togglePlay:function(){var a=this.getCurrentPlayer();if(!a){return false}if(this.playImage){return false}this.stopDraw();if(a.paused()){this.fireEvent("videoplay");this.sequence.play()}else{this.sequence.pause()}},onPause:function(){if(this._copyToCanvasIssue){this.initializeCanvas()}this.clearProgressIndicatorInterval();this.updatePlayIcon(false)},clearProgressIndicatorInterval:function(){if(this.timeUpdateInterval){window.clearInterval(this.timeUpdateInterval)}},setLoadingUntilCanPlayThrough:function(){if(this.isAutoplaySupported){this.controls.setLoading(true);this.on("canplaythrough",function(){this.controls.setLoading(false)},this,{single:true})}},onProgress:function(d){try{if(this.playImage||this.playlist.length!==1){this.controls.updateBufferProgress(0);return}var c=d.target,a=0;if(!c||!c.buffered.length){return}a=c.buffered.end(0)/c.duration;this.controls.updateBufferProgress(a)}catch(b){log(b)}},updatePlayIcon:function(b){var a=this.controls;this.updatePlayIcon.delayedTask=this.updatePlayIcon.delayedTask||new Ext.util.DelayedTask(function(c){a.setPlaying(c)});this.updatePlayIcon.delayedTask.delay(30,null,null,[b])},isPlaying:function(){var a=this.getCurrentPlayer();if(!a||this.playImage){return false}return !a.paused()},onPlay:function(){var b=this,a=this.el.down(".ftr-toggleplay"),c=this.sequence;if(this.timeUpdateInterval){window.clearInterval(this.timeUpdateInterval)}this.timeUpdateInterval=setInterval(function(){b.onTimeupdate(c)},32);this.updatePlayIcon(true)},onSeekStart:function(){var a=this.sequence;if(!a){return false}a.pause()},onSeek:function(a){var d=this.sequence,c=d&&d.duration(),b=c*a||0;if(!d){return false}d.pause();d.jumpTo(b);this.onTimeupdate(this.sequence)},onTimeupdate:function(d){var c=d.currentTime(),b=d.duration(),a=b&&c/b||0;this.controls.updateProgress(a,this.getFrameNumber())},toggleLoop:function(){var a=this.el.down(".ftr-toggleloop");a.toggleCls("pressed");this.loop=!this.loop;if(this.sequence){this.sequence.loop=this.loop}},step:function(a){a=a||1;var d=this.sequence.active,b=this.playlist[d].framerate,c=this.sequence.currentTime();c+=a/b;this.sequence.pause();this.sequence.jumpTo(c);this.onTimeupdate(this.sequence)},jumpToIndex:function(a){if(this.sequence){this.sequence.jumpToIndex(a)}},jumpRelative:function(b){if(!this.sequence){return}var a=this.sequence.active+b;this.jumpToIndex(a)},getCurrentPlayer:function(){if(!this.sequence){return null}var a=this.sequence.active,b=this.sequence.eq(a);return b},getMediaEl:function(){if(this.playImage){var b=Ext.get("ftr-webplayer-video").child("img");return b}else{var a=this.getCurrentPlayer();return a&&Ext.get(a.video)}},switchToVideo:function(){var a=this.el.down("#ftr-webplayer-video"),b=this.el.down(".ftr-paint");this.draw.cleanUp();this.setDrawing(false);a.show();b.hide()},resizePaintElement:function(b,a){b.dom.style.left=0;b.dom.style.top=0;b.dom.style.width=a.width+"px";b.dom.style.height=a.height+"px"},initializeCanvas:function(){var d=this.getMediaEl(),a=this.getMediaSize(),b=this.el.down("canvas").dom,c=this.el.down(".ftr-paint");this.resizePaintElement(c,a);this.draw.init(b);this.draw.resize(a,this.initialZoomScale);this.draw.clear(d.dom)},switchToCanvas:function(){var a=this.el.down("#ftr-webplayer-video");var b=this.el.down(".ftr-paint");this.initializeCanvas();a.hide();b.show()},getFrameNumber:function(){var b=this.playlist[this.sequence.active].framerate,a=this.getMediaEl(),c=a&&a.dom&&a.dom.currentTime||0,d=Math.floor(c*b)+1;return d},getCurrentTime:function(){var a=this.getMediaEl(),b=a&&a.dom&&a.dom.currentTime||0;return b},getFileName:function(){if(this.playImage){return"annotation.jpg"}var b=this.getFrameNumber(),a=function(c,d){c=""+c;while(c.length<d){c="0"+c}return c};return"frame_"+a(b,3)+".jpg"},attachFrame:function(){if(this.drawing){this.saveCanvas()}else{this.switchToCanvas();this.saveCanvas()}this.stopDraw()},saveCanvas:function(){var b="image/jpeg",e=0.9,d=this.el.down("canvas").dom,a=this.draw.getDownsampledCanvas(d);if(!a){throw new Error("Unable to save canvas, no canvas found")}try{a.toBlob(Ext.bind(this._onBlobCreated,this),"image/jpeg",0.9)}catch(c){log(c);FT.notifyError(FT.i18n("Failed to save annotation"))}},_onBlobCreated:function(b){var a=this.getFileName();b.name=a;this._uploadFile(b)},_uploadFile:function(a){var c=this;var b=FT.Mediator.getUploadCallbacks();var d=FT.Uploader.upload(a,{scope:this,progress:function(j,g,e,h){this.fireEvent("progress",j,g,e,h);b.progress.apply(b.scope,[j,g,e,h])},failure:function(g,e){FT.notifyError(FT.i18n("Failed to upload annotation"));b.failure.apply(b.scope,[g,e])},success:function(j,h,g){var e={componentId:g,id:j,file:h,encode:false,version_id:null};FTApi.Component.finalizeUpload({id:g,encode:false},function(k){log("Finalized upload.");b.afterupload.apply(b.scope,[j,k,e]);c.fireEvent("attachedFrame",null)})}});b.beginupload.apply(b.scope,[d,a])},showColorPicker:function(b,a,c){a=a||"tl-tr";c=c||[10,0];if(!this.colorPicker){this.colorPicker=Ext.create("Ext.picker.Color",{cls:"ftr-webplayer-colorpicker",hidden:true,floating:true,value:"0000FF",renderTo:this.el,listeners:{scope:this,select:function(h,d){var g="#"+d;var j=this.colorButton;var e=j&&j.btnIconEl;if(e){e.setStyle("color",g)}this.draw.setColor(g);h.hide()}}})}if(this.colorPicker.isVisible()){this.colorPicker.hide()}else{this.colorPicker.show();this.colorButton=b;this.colorPicker.alignTo(b,a,c)}},toggleDraw:function(){if(this.drawing){this.fireEvent("stopdraw");if(this.draw.hasDrawn){this.saveCanvas()}return this.stopDraw()}else{this.fireEvent("startdraw");this.userZoomAndPanControl.setInactive();return this.startDraw()}},startDraw:function(){if(!this.sequence&&!this.playImage||this.drawing){return false}this.showDrawToolbar();this.switchToCanvas();if(this.sequence){this.sequence.pause()}this.setDrawing(true)},stopDraw:function(){if(!this.drawing){return false}this.hideDrawToolbar();this.switchToVideo();this.setDrawing(false)},setDrawing:function(a){this.controls.setAnnotationToolState(a);this.drawing=a},toggleFullscreen:function(b){var a=Ext.getBody().dom;FT.toggleFullscreen(a)},seekTo:function(a){if(this.sequence){this.stopDraw();this.sequence.pause();this.sequence.jumpToRelative(a);this.onTimeupdate(this.sequence)}},currentFrameInformation:function(){if(this.playImage){return}return{number:this.getFrameNumber(),time:this.getCurrentTime()}}});FT.updateFtrack=function(c){var b=null;try{b=Ext.decode(FT.decode64(c))}catch(a){log(a)}FT.Mediator.ftrackEvent(b)};Ext.ns("FTR.info");FTR.info.updateEntity=function(a,b){try{Ext.getCmp("freview-action-menu",true).updateEntity(a,b)}catch(c){log(c)}};Ext.define("RAW.RVWidget",{extend:"RAW.Widget",initWidget:function(){}});Ext.define("FT.ftrackreview.ZoomAndPanInterfaceToolkit",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},states:{INACTIVE:0,ZOOM_IN:1,ZOOM_OUT:2,PAN:3,PAN_ACTIVE:4},state:null,restoreToStateOnMouseUp:null,zoomAndPanController:null,constructor:function(a){this.buttons=[];this.mixins.observable.constructor.call(this,a);this.callParent(arguments);this.state=this.states.INACTIVE;this.zoomAndPanController=a.zoomAndPanController;this.zoomAndPanController.on("elementbind",this.bindListeners,this);this.on("statechanged",this._onStateChanged,this);Ext.fly(document).on({keydown:this.onKeyDown,keyup:this.onKeyUp,scope:this})},_onStateChanged:function(b,e,a){if(!this.zoomAndPanController.element){return}var d=this.zoomAndPanController.element.parent(".ftr-webplayer"),c={};c[this.states.ZOOM_IN]="zoom-in";c[this.states.ZOOM_OUT]="zoom-out";c[this.states.PAN]="pan";c[this.states.PAN_ACTIVE]="pan-active";if(c[a]){d.removeCls(c[a])}if(c[e]){d.addCls(c[e])}},setZoomActive:function(){this.setState(this.zoomButton.zoomState);this.updateButtonsFromState()},setPanActive:function(){this.setState(this.states.PAN);this.updateButtonsFromState()},setState:function(b){var a=this.state;if(b===a){return}this.state=b;this.fireEvent("statechanged",this,b,a)},bindListeners:function(b,a){a.on({mousedown:this.onMouseDown,mousemove:this.onMouseMove,mouseup:this.onMouseUp,mousewheel:this.onMouseScroll,scope:this})},onMouseScroll:function(d){var a,c,b=0.0125;a=Ext.isDefined(d.browserEvent.wheelDeltaY)?d.browserEvent.wheelDeltaY:-d.browserEvent.detail*3;c=1+b*Math.log(Math.abs(a));if(a>0){this.zoomAndPanController.zoomIn(c,d.getXY())}else{if(a<0){this.zoomAndPanController.zoomOut(c,d.getXY())}}},onMouseDown:function(b){var a=b.button;if(this.state===this.states.ZOOM_IN&&a===0){this.zoomAndPanController.zoomIn(1.25,b.getXY())}if(this.state===this.states.ZOOM_OUT&&a===0){this.zoomAndPanController.zoomOut(1.25,b.getXY())}if(this.state===this.states.PAN||a===1){this.trackPanMovement={x:b.browserEvent.pageX,y:b.browserEvent.pageY};this.restoreToStateOnMouseUp=this.state;this.setState(this.states.PAN_ACTIVE)}},onMouseMove:function(b){if(this.state===this.states.PAN_ACTIVE){if(b.button===0||b.button===1){var c=b.browserEvent.pageX-this.trackPanMovement.x,a=b.browserEvent.pageY-this.trackPanMovement.y;this.zoomAndPanController.translate(c,a);this.trackPanMovement={x:b.browserEvent.pageX,y:b.browserEvent.pageY}}else{this.setState(this.restoreToStateOnMouseUp)}}},onMouseUp:function(){if(this.state===this.states.PAN_ACTIVE){this.setState(this.restoreToStateOnMouseUp)}},onKeyDown:function(a){if(a.keyCode===Ext.EventObject.ALT){if(this.state===this.states.ZOOM_IN){this.setState(this.states.ZOOM_OUT)}else{if(this.state===this.states.ZOOM_OUT){this.setState(this.states.ZOOM_IN)}}}},onKeyUp:function(a){if(a.keyCode===Ext.EventObject.ALT){if(this.state===this.states.ZOOM_IN){this.setState(this.states.ZOOM_OUT)}else{if(this.state===this.states.ZOOM_OUT){this.setState(this.states.ZOOM_IN)}}}},isActive:function(){return this.state!==this.states.INACTIVE},setInactive:function(){this.setState(this.states.INACTIVE);this.updateButtonsFromState()},updateButtonsFromState:function(){var b=this.state,a=this.states;Ext.each(this.buttons,function(c){c.toggle(false,false)},this);if(b===a.PAN||b===a.PAN_ACTIVE){this.panButton.toggle(true,false)}if(b===a.ZOOM_IN){this.zoomButton.zoomState=b;this.zoomButton.toggle(true,false);this.zoomButton.setGlyph(FT.glyph("zoom-in"))}if(b===a.ZOOM_OUT){this.zoomButton.zoomState=b;this.zoomButton.toggle(true,false);this.zoomButton.setGlyph(FT.glyph("zoom-out"))}},getButtons:function(){if(this.buttons.length){return this.buttons}var b=Ext.create("Ext.SplitButton",{cls:"zoom-split-button",ui:"plain",glyph:FT.glyph("zoom-in"),toggleGroup:"video-tool",zoomState:this.states.ZOOM_IN,allowDepress:false,toggleHandler:function(d,c){this.setState(c?d.zoomState:this.states.INACTIVE)},scope:this,menu:[{glyph:FT.glyph("zoom-in"),text:FT.i18n("Zoom in"),qtip:FT.i18n("Zoom in (Z)"),handler:function(){this.setState(this.states.ZOOM_IN);b.zoomState=this.states.ZOOM_IN;this.zoomButton.setGlyph(FT.glyph("zoom-in"));b.toggle(true)},scope:this},{glyph:FT.glyph("zoom-out"),text:FT.i18n("Zoom out"),qtip:FT.i18n("Zoom out (Alt+Z)"),handler:function(){this.setState(this.states.ZOOM_OUT);b.zoomState=this.states.ZOOM_OUT;this.zoomButton.setGlyph(FT.glyph("zoom-out"));b.toggle(true)},scope:this},{glyph:FT.glyph("undo"),text:FT.i18n("Reset zoom"),handler:function(){this.zoomAndPanController.reset()},scope:this}]});var a=Ext.create("Ext.Button",{ui:"plain",glyph:FT.glyph("pan-tool"),qtip:FT.i18n("Pan (H)"),toggleGroup:"video-tool",allowDepress:false,toggleHandler:function(d,c){this.setState(c?this.states.PAN:this.states.INACTIVE)},scope:this});this.zoomButton=b;this.panButton=a;this.buttons.push(b);this.buttons.push(a);return this.buttons}});Ext.define("FT.ftrackreview.ZoomAndPanController",{extend:"Ext.Base",mixins:{observable:"Ext.util.Observable"},scaleMax:30,scaleMin:0.5,constructor:function(a){this.mixins.observable.constructor.call(this,a);this.callParent(arguments);this.addEvents("elementbind");this.reset()},zoomIn:function(c,d){var b,a,e;b=this.getConstrainedZoom(this.scale*c);a=b/this.scale;e=this.getZoomTranslation(a,d);this.zoom(b);this.translate(e[0],e[1])},zoomOut:function(c,d){var b,a,e;b=this.getConstrainedZoom(this.scale/c);a=this.scale/b;e=this.getZoomTranslation(a,d);this.zoom(b);this.translate(-e[0],-e[1])},getConstrainedZoom:function(a){return Ext.Number.constrain(a,this.scaleMin,this.scaleMax)},getZoomTranslation:function(c,g){var j=this.scale,b=this.element,a=b.getXY(),e=j*b.getWidth()/2+a[0],d=j*b.getHeight()/2+a[1],h;h=[g[0]-e,g[1]-d];return[-h[0]*(c-1),-h[1]*(c-1)]},zoom:function(a){this.scale=this.getConstrainedZoom(a);this.updateElement()},translate:function(a,b){this.setTranslation(this.translation[0]+a,this.translation[1]+b)},setTranslation:function(a,b){this.translation=[a,b];this.updateElement()},getTranslation:function(){return Ext.clone(this.translation)},reset:function(){this.scale=1;this.translation=[0,0];this.updateElement()},bind:function(a){this.element=a;this.fireEvent("elementbind",this,this.element);this.updateElement()},updateElement:function(){if(!this.element){return}this.setElementTransform(this.element,this.scale,this.translation)},setElementTransform:function(a,c,d){var b=Ext.String.format("translate3d({1}px, {2}px, 0) scale3d({0}, {0}, 1)",c,d[0],d[1]);a.dom.style.WebkitTransform=b;a.dom.style.MozTransform=b;a.dom.style.msTransform=b;a.dom.style.oTransform=b;a.dom.style.transform=b}});(function(u,p){if(!p.addEventListener){u.Popcorn={isSupported:false};var z=("byId forEach extend effects error guid sizeOf isArray nop position disable enable destroyaddTrackEvent removeTrackEvent getTrackEvents getTrackEvent getLastTrackEventId timeUpdate plugin removePlugin compose effect xhr getJSONP getScript").split(/\s+/);while(z.length){u.Popcorn[z.shift()]=function(){}}return}var k=Array.prototype,g=Object.prototype,x=k.forEach,q=k.slice,m=g.hasOwnProperty,t=g.toString,d=u.Popcorn,e=[],y=false,w=false,l={events:{hash:{},apis:{}}},h=function(){return u.requestAnimationFrame||u.webkitRequestAnimationFrame||u.mozRequestAnimationFrame||u.oRequestAnimationFrame||u.msRequestAnimationFrame||function(B,A){u.setTimeout(B,16)}}(),c=function(A){return Object.keys?Object.keys(A):function(D){var B,C=[];for(B in D){if(m.call(D,B)){C.push(B)}}return C}(A)},s=function(A,B){return new s.p.init(A,B||null)};s.version="1.3";s.isSupported=true;s.instances=[];s.p=s.prototype={init:function(C,D){var F,H,B=this;if(typeof C==="function"){if(p.readyState==="complete"){C(p,s);return}e.push(C);if(!y){y=true;var A=function(){w=true;p.removeEventListener("DOMContentLoaded",A,false);for(var J=0,I=e.length;J<I;J++){e[J].call(p,s)}e=null};p.addEventListener("DOMContentLoaded",A,false)}return}if(typeof C==="string"){try{F=p.querySelector(C)}catch(G){throw new Error("Popcorn.js Error: Invalid media element selector: "+C)}}this.media=F||C;H=this.media.nodeName&&this.media.nodeName.toLowerCase()||"video";this[H]=this.media;this.options=D||{};this.id=this.options.id||s.guid(H);if(s.byId(this.id)){throw new Error("Popcorn.js Error: Cannot use duplicate ID ("+this.id+")")}this.isDestroyed=false;this.data={running:{cue:[]},timeUpdate:s.nop,disabled:{},events:{},hooks:{},history:[],state:{volume:this.media.volume},trackRefs:{},trackEvents:{byStart:[{start:-1,end:-1}],byEnd:[{start:-1,end:-1}],animating:[],startIndex:0,endIndex:0,previousUpdateTime:-1}};s.instances.push(this);var E=function(){if(B.media.currentTime<0){B.media.currentTime=0}B.media.removeEventListener("loadeddata",E,false);var N,J,M,L,K,I;N=B.media.duration;J=N!=N?Number.MAX_VALUE:N+1;s.addTrackEvent(B,{start:J,end:J});if(B.options.frameAnimation){B.data.timeUpdate=function(){s.timeUpdate(B,{});s.forEach(s.manifest,function(P,Q){M=B.data.running[Q];if(M){K=M.length;for(var O=0;O<K;O++){L=M[O];I=L._natives;I&&I.frame&&I.frame.call(B,{},L,B.currentTime())}}});B.emit("timeupdate");!B.isDestroyed&&h(B.data.timeUpdate)};!B.isDestroyed&&h(B.data.timeUpdate)}else{B.data.timeUpdate=function(O){s.timeUpdate(B,O)};if(!B.isDestroyed){B.media.addEventListener("timeupdate",B.data.timeUpdate,false)}}};Object.defineProperty(this,"error",{get:function(){return B.media.error}});if(B.media.readyState>=2){E()}else{B.media.addEventListener("loadeddata",E,false)}return this}};s.p.init.prototype=s.p;s.byId=function(D){var C=s.instances,B=C.length,A=0;for(;A<B;A++){if(C[A].id===D){return C[A]}}return null};s.forEach=function(E,D,C){if(!E||!D){return{}}C=C||this;var B,A;if(x&&E.forEach===x){return E.forEach(D,C)}if(t.call(E)==="[object NodeList]"){for(B=0,A=E.length;B<A;B++){D.call(C,E[B],B,E)}return E}for(B in E){if(m.call(E,B)){D.call(C,E[B],B,E)}}return E};s.extend=function(B){var A=B,C=q.call(arguments,1);s.forEach(C,function(E){for(var D in E){A[D]=E[D]}});return A};s.extend(s,{noConflict:function(A){if(A){u.Popcorn=d}return s},error:function(A){throw new Error(A)},guid:function(A){s.guid.counter++;return(A?A:"")+(+new Date+s.guid.counter)},sizeOf:function(B){var A=0;for(var C in B){A++}return A},isArray:Array.isArray||function(A){return t.call(A)==="[object Array]"},nop:function(){},position:function(G){var B=G.getBoundingClientRect(),A={},M=G.ownerDocument,E=p.documentElement,J=p.body,I,K,D,H,L,F;I=E.clientTop||J.clientTop||0;K=E.clientLeft||J.clientLeft||0;D=u.pageYOffset&&E.scrollTop||J.scrollTop;H=u.pageXOffset&&E.scrollLeft||J.scrollLeft;L=Math.ceil(B.top+D-I);F=Math.ceil(B.left+H-K);for(var C in B){A[C]=Math.round(B[C])}return s.extend({},A,{top:L,left:F})},disable:function(A,D){if(!A.data.disabled[D]){A.data.disabled[D]=true;for(var B=A.data.running[D].length-1,C;B>=0;B--){C=A.data.running[D][B];C._natives.end.call(A,null,C)}}return A},enable:function(A,D){if(A.data.disabled[D]){A.data.disabled[D]=false;for(var B=A.data.running[D].length-1,C;B>=0;B--){C=A.data.running[D][B];C._natives.start.call(A,null,C)}}return A},destroy:function(A){var C=A.data.events,G=A.data.trackEvents,B,F,D,E;for(F in C){B=C[F];for(D in B){delete B[D]}C[F]=null}for(E in s.registryByName){s.removePlugin(A,E)}G.byStart.length=0;G.byEnd.length=0;if(!A.isDestroyed){A.data.timeUpdate&&A.media.removeEventListener("timeupdate",A.data.timeUpdate,false);A.isDestroyed=true}}});s.guid.counter=1;s.extend(s.p,function(){var A="load play pause currentTime playbackRate volume duration preload playbackRate autoplay loop controls muted buffered readyState seeking paused played seekable ended",B={};s.forEach(A.split(/\s+/g),function(C){B[C]=function(D){var F;if(typeof this.media[C]==="function"){if(D!=null&&/play|pause/.test(C)){this.media.currentTime=s.util.toSeconds(D)}this.media[C]();return this}if(D!=null){F=this.media[C];try{this.media[C]=D}catch(E){s.error("Failed to set atribute on media")}if(F!==D){this.emit("attrchange",{attribute:C,previousValue:F,currentValue:D})}return this}return this.media[C]}});return B}());s.forEach("enable disable".split(" "),function(A){s.p[A]=function(B){return s[A](this,B)}});s.extend(s.p,{roundTime:function(){return Math.round(this.media.currentTime)},exec:function(G,F,C){var D=arguments.length,A,B;try{B=s.util.toSeconds(G)}catch(E){}if(typeof B==="number"){G=B}if(typeof G==="number"&&D===2){C=F;F=G;G=s.guid("cue")}else{if(D===1){F=-1}else{A=this.getTrackEvent(G);if(A){if(typeof G==="string"&&D===2){if(typeof F==="number"){C=A._natives.start}if(typeof F==="function"){C=F;F=A.start}}}else{if(D>=2){if(typeof F==="string"){try{B=s.util.toSeconds(F)}catch(E){}F=B}if(typeof F==="number"){C=s.nop()}if(typeof F==="function"){C=F;F=-1}}}}}s.addTrackEvent(this,{id:G,start:F,end:F+1,_running:false,_natives:{start:C||s.nop,end:s.nop,type:"cue"}});return this},mute:function(A){var B=A==null||A===true?"muted":"unmuted";if(B==="unmuted"){this.media.muted=false;this.media.volume=this.data.state.volume}if(B==="muted"){this.data.state.volume=this.media.volume;this.media.muted=true}this.emit(B);return this},unmute:function(A){return this.mute(A==null?false:!A)},position:function(){return s.position(this.media)},toggle:function(A){return s[this.data.disabled[A]?"enable":"disable"](this,A)},defaults:function(A,B){if(s.isArray(A)){s.forEach(A,function(D){for(var C in D){this.defaults(C,D[C])}},this);return this}if(!this.options.defaults){this.options.defaults={}}if(!this.options.defaults[A]){this.options.defaults[A]={}}s.extend(this.options.defaults[A],B);return this}});s.Events={UIEvents:"blur focus focusin focusout load resize scroll unload",MouseEvents:"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave click dblclick",Events:"loadstart progress suspend emptied stalled play pause error loadedmetadata loadeddata waiting playing canplay canplaythrough seeking seeked timeupdate ended ratechange durationchange volumechange"};s.Events.Natives=s.Events.UIEvents+" "+s.Events.MouseEvents+" "+s.Events.Events;l.events.apiTypes=["UIEvents","MouseEvents","Events"];(function(D,E){var C=l.events.apiTypes,F=D.Natives.split(/\s+/g),B=0,A=F.length,G;for(;B<A;B++){E.hash[F[B]]=true}C.forEach(function(L,I){E.apis[L]={};var K=D[L].split(/\s+/g),H=K.length,J=0;for(;J<H;J++){E.apis[L][K[J]]=true}})})(s.Events,l.events);s.events={isNative:function(A){return !!l.events.hash[A]},getInterface:function(G){if(!s.events.isNative(G)){return false}var E=l.events,D=E.apiTypes,H=E.apis,B=0,A=D.length,F,C;for(;B<A;B++){C=D[B];if(H[C][G]){F=C;break}}return F},all:s.Events.Natives.split(/\s+/g),fn:{trigger:function(B,C){var D,A;if(this.data.events[B]&&s.sizeOf(this.data.events[B])){D=s.events.getInterface(B);if(D){A=p.createEvent(D);A.initEvent(B,true,true,u,1);this.media.dispatchEvent(A);return this}s.forEach(this.data.events[B],function(F,E){F.call(this,C)},this)}return this},listen:function(E,D){var A=this,H=true,F=s.events.hooks[E],C=E,B;if(!this.data.events[E]){this.data.events[E]={};H=false}if(F){if(F.add){F.add.call(this,{},D)}if(F.bind){E=F.bind}if(F.handler){B=D;D=function G(I){F.handler.call(A,I,B)}}H=true;if(!this.data.events[E]){this.data.events[E]={};H=false}}this.data.events[E][D.name||D.toString()+s.guid()]=D;if(!H&&s.events.all.indexOf(E)>-1){this.media.addEventListener(E,function(I){s.forEach(A.data.events[E],function(K,J){if(typeof K==="function"){K.call(A,I)}})},false)}return this},unlisten:function(B,A){if(this.data.events[B]&&this.data.events[B][A]){delete this.data.events[B][A];return this}this.data.events[B]=null;return this}},hooks:{canplayall:{bind:"canplaythrough",add:function(A,C){var B=false;if(this.media.readyState){C.call(this,A);B=true}this.data.hooks.canplayall={fired:B}},handler:function b(A,B){if(!this.data.hooks.canplayall.fired){B.call(this,A);this.data.hooks.canplayall.fired=true}}}}};s.forEach([["trigger","emit"],["listen","on"],["unlisten","off"]],function(A){s.p[A[0]]=s.p[A[1]]=s.events.fn[A[0]]});s.addTrackEvent=function(E,B){var H,I,A;if(B.id){H=E.getTrackEvent(B.id)}if(H){I=true;B=s.extend({},H,B);E.removeTrackEvent(B.id)}if(B&&B._natives&&B._natives.type&&E.options.defaults&&E.options.defaults[B._natives.type]){B=s.extend({},E.options.defaults[B._natives.type],B)}if(B._natives){B._id=B.id||B._id||s.guid(B._natives.type);E.data.history.push(B._id)}B.start=s.util.toSeconds(B.start,E.options.framerate);B.end=s.util.toSeconds(B.end,E.options.framerate);var C=E.data.trackEvents.byStart,D=E.data.trackEvents.byEnd,G,F;for(G=C.length-1;G>=0;G--){if(B.start>=C[G].start){C.splice(G+1,0,B);break}}for(F=D.length-1;F>=0;F--){if(B.end>D[F].end){D.splice(F+1,0,B);break}}if(B.end>E.media.currentTime&&B.start<=E.media.currentTime){B._running=true;E.data.running[B._natives.type].push(B);if(!E.data.disabled[B._natives.type]){B._natives.start.call(E,null,B)}}if(G<=E.data.trackEvents.startIndex&&B.start<=E.data.trackEvents.previousUpdateTime){E.data.trackEvents.startIndex++}if(F<=E.data.trackEvents.endIndex&&B.end<E.data.trackEvents.previousUpdateTime){E.data.trackEvents.endIndex++}this.timeUpdate(E,null,true);if(B._id){s.addTrackEvent.ref(E,B)}if(I){if(B._natives.type==="cue"){A="cuechange"}else{A="trackchange"}E.emit(A,{id:B.id,previousValue:{time:H.start,fn:H._natives.start},currentValue:{time:B.start,fn:B._natives.start}})}};s.addTrackEvent.ref=function(B,A){B.data.trackRefs[A._id]=A;return B};s.removeTrackEvent=function(H,I){var A,F,B,J=H.data.history.length,C=H.data.trackEvents.byStart.length,K=0,M=0,E=[],D=[],N=[],L=[];while(--C>-1){A=H.data.trackEvents.byStart[K];F=H.data.trackEvents.byEnd[K];if(!A._id){E.push(A);D.push(F)}if(A._id){if(A._id!==I){E.push(A)}if(F._id!==I){D.push(F)}if(A._id===I){M=K;if(A._natives._teardown){A._natives._teardown.call(H,A)}}}K++}C=H.data.trackEvents.animating.length;K=0;if(C){while(--C>-1){B=H.data.trackEvents.animating[K];if(!B._id){N.push(B)}if(B._id&&B._id!==I){N.push(B)}K++}}if(M<=H.data.trackEvents.startIndex){H.data.trackEvents.startIndex--}if(M<=H.data.trackEvents.endIndex){H.data.trackEvents.endIndex--}H.data.trackEvents.byStart=E;H.data.trackEvents.byEnd=D;H.data.trackEvents.animating=N;for(var G=0;G<J;G++){if(H.data.history[G]!==I){L.push(H.data.history[G])}}H.data.history=L;s.removeTrackEvent.ref(H,I)};s.removeTrackEvent.ref=function(B,A){delete B.data.trackRefs[A];return B};s.getTrackEvents=function(E){var F=[],B=E.data.trackEvents.byStart,D=B.length,A=0,C;for(;A<D;A++){C=B[A];if(C._id){F.push(C)}}return F};s.getTrackEvents.ref=function(A){return A.data.trackRefs};s.getTrackEvent=function(B,A){return B.data.trackRefs[A]};s.getTrackEvent.ref=function(B,A){return B.data.trackRefs[A]};s.getLastTrackEventId=function(A){return A.data.history[A.data.history.length-1]};s.timeUpdate=function(G,K){var O=G.media.currentTime,E=G.data.trackEvents.previousUpdateTime,M=G.data.trackEvents,C=M.endIndex,D=M.startIndex,N=M.byStart.length,L=M.byEnd.length,F=s.registryByName,J="trackstart",A="trackend",R,H,P,I,B,Q;if(E<=O){while(M.byEnd[C]&&M.byEnd[C].end<=O){R=M.byEnd[C];I=R._natives;B=I&&I.type;if(!I||!!F[B]||!!G[B]){if(R._running===true){R._running=false;Q=G.data.running[B];Q.splice(Q.indexOf(R),1);if(!G.data.disabled[B]){I.end.call(G,K,R);G.emit(A,s.extend({},R,{plugin:B,type:A}))}}C++}else{s.removeTrackEvent(G,R._id);return}}while(M.byStart[D]&&M.byStart[D].start<=O){H=M.byStart[D];I=H._natives;B=I&&I.type;if(!I||!!F[B]||!!G[B]){if(H.end>O&&H._running===false){H._running=true;G.data.running[B].push(H);if(!G.data.disabled[B]){I.start.call(G,K,H);G.emit(J,s.extend({},H,{plugin:B,type:J}))}}D++}else{s.removeTrackEvent(G,H._id);return}}}else{if(E>O){while(M.byStart[D]&&M.byStart[D].start>O){H=M.byStart[D];I=H._natives;B=I&&I.type;if(!I||!!F[B]||!!G[B]){if(H._running===true){H._running=false;Q=G.data.running[B];Q.splice(Q.indexOf(H),1);if(!G.data.disabled[B]){I.end.call(G,K,H);G.emit(A,s.extend({},H,{plugin:B,type:A}))}}D--}else{s.removeTrackEvent(G,H._id);return}}while(M.byEnd[C]&&M.byEnd[C].end>O){R=M.byEnd[C];I=R._natives;B=I&&I.type;if(!I||!!F[B]||!!G[B]){if(R.start<=O&&R._running===false){R._running=true;G.data.running[B].push(R);if(!G.data.disabled[B]){I.start.call(G,K,R);G.emit(J,s.extend({},R,{plugin:B,type:J}))}}C--}else{s.removeTrackEvent(G,R._id);return}}}}M.endIndex=C;M.startIndex=D;M.previousUpdateTime=O;M.byStart.length<N&&M.startIndex--;M.byEnd.length<L&&M.endIndex--};s.extend(s.p,{getTrackEvents:function(){return s.getTrackEvents.call(null,this)},getTrackEvent:function(A){return s.getTrackEvent.call(null,this,A)},getLastTrackEventId:function(){return s.getLastTrackEventId.call(null,this)},removeTrackEvent:function(A){s.removeTrackEvent.call(null,this,A);return this},removePlugin:function(A){s.removePlugin.call(null,this,A);return this},timeUpdate:function(A){s.timeUpdate.call(null,this,A);return this},destroy:function(){s.destroy.call(null,this);return this}});s.manifest={};s.registry=[];s.registryByName={};s.plugin=function(B,E,A){if(s.protect.natives.indexOf(B.toLowerCase())>=0){s.error("'"+B+"' is a protected function name");return}var D=["start","end"],I={},G,H=typeof E==="function",F=["_setup","_teardown","start","end","frame"];var C=function(M,L){M=M||s.nop;L=L||s.nop;return function(){M.apply(this,arguments);L.apply(this,arguments)}};s.manifest[B]=A=A||E.manifest||{};F.forEach(function(L){E[L]=o(E[L]||s.nop,B)});var K=function(L,N){if(!N){return this}if(N.ranges&&s.isArray(N.ranges)){s.forEach(N.ranges,function(R){var S=s.extend({},N,R);delete S.ranges;this[B](S)},this);return this}var M=N._natives={},Q="",O,P;s.extend(M,L);N._natives.type=B;N._running=false;M.start=M.start||M["in"];M.end=M.end||M.out;if(N.once){M.end=C(M.end,function(){this.removeTrackEvent(N._id)})}M._teardown=C(function(){var R=q.call(arguments),S=this.data.running[M.type];R.unshift(null);R[1]._running&&S.splice(S.indexOf(N),1)&&M.end.apply(this,R)},M._teardown);N.compose=N.compose&&N.compose.split(" ")||[];N.effect=N.effect&&N.effect.split(" ")||[];N.compose=N.compose.concat(N.effect);N.compose.forEach(function(R){Q=s.compositions[R]||{};F.forEach(function(S){M[S]=C(M[S],Q[S])})});N._natives.manifest=A;if(!("start" in N)){N.start=N["in"]||0}if(!N.end&&N.end!==0){N.end=N.out||Number.MAX_VALUE}if(!m.call(N,"toString")){N.toString=function(){var R=["start: "+N.start,"end: "+N.end,"id: "+(N.id||N._id)];if(N.target!=null){R.push("target: "+N.target)}return B+" ( "+R.join(", ")+" )"}}if(!N.target){P="options" in A&&A.options;N.target=P&&"target" in P&&P.target}if(N._natives){N._id=s.guid(N._natives.type)}N._natives._setup&&N._natives._setup.call(this,N);s.addTrackEvent(this,N);s.forEach(L,function(S,R){if(R!=="type"){if(D.indexOf(R)===-1){this.on(R,S)}}},this);return this};s.p[B]=I[B]=function(Q,M){var O=arguments.length,L,P,N;if(Q&&!M){M=Q;Q=null}else{L=this.getTrackEvent(Q);if(!L){M.id=Q}else{M=s.extend({},L,M);s.addTrackEvent(this,M);return this}}this.data.running[B]=this.data.running[B]||[];P=this.options.defaults&&this.options.defaults[B]||{};N=s.extend({},P,M);return K.call(this,H?E.call(this,N):E,N)};if(A){s.extend(E,{manifest:A})}var J={fn:I[B],definition:E,base:E,parents:[],name:B};s.registry.push(s.extend(I,J,{type:B}));s.registryByName[B]=J;return I};s.plugin.errors=[];function o(A,B){return function(){if(s.plugin.debug){return A.apply(this,arguments)}try{return A.apply(this,arguments)}catch(C){s.plugin.errors.push({plugin:B,thrown:C,source:A.toString()});this.emit("pluginerror",s.plugin.errors)}}}s.plugin.debug=s.version==="@VERSION";s.removePlugin=function(E,A){if(!A){A=E;E=s.p;if(s.protect.natives.indexOf(A.toLowerCase())>=0){s.error("'"+A+"' is a protected function name");return}var F=s.registry.length,H;for(H=0;H<F;H++){if(s.registry[H].name===A){s.registry.splice(H,1);delete s.registryByName[A];delete s.manifest[A];delete E[A];return}}}var C=E.data.trackEvents.byStart,D=E.data.trackEvents.byEnd,I=E.data.trackEvents.animating,G,B;for(G=0,B=C.length;G<B;G++){if(C[G]&&C[G]._natives&&C[G]._natives.type===A){C[G]._natives._teardown&&C[G]._natives._teardown.call(E,C[G]);C.splice(G,1);G--;B--;if(E.data.trackEvents.startIndex<=G){E.data.trackEvents.startIndex--;E.data.trackEvents.endIndex--}}if(D[G]&&D[G]._natives&&D[G]._natives.type===A){D.splice(G,1)}}for(G=0,B=I.length;G<B;G++){if(I[G]&&I[G]._natives&&I[G]._natives.type===A){I.splice(G,1);G--;B--}}};s.compositions={};s.compose=function(A,B,C){s.manifest[A]=C=C||B.manifest||{};s.compositions[A]=B};s.plugin.effect=s.effect=s.compose;var j=/^(?:\.|#|\[)/;s.dom={debug:false,find:function(A,B){var C=null;A=A.trim();B=B||p;if(A){if(!j.test(A)){C=p.getElementById(A);if(C!==null){return C}}try{C=B.querySelector(A)}catch(D){if(s.dom.debug){throw new Error(D)}}}return C}};var a=/\?/,n={url:"",data:"",dataType:"",success:s.nop,type:"GET",async:true,xhr:function(){return new u.XMLHttpRequest}};s.xhr=function(A){A.dataType=A.dataType&&A.dataType.toLowerCase()||null;if(A.dataType&&(A.dataType==="jsonp"||A.dataType==="script")){s.xhr.getJSONP(A.url,A.success,A.dataType==="script");return}var B=s.extend({},n,A);B.ajax=B.xhr();if(B.ajax){if(B.type==="GET"&&B.data){B.url+=(a.test(B.url)?"&":"?")+B.data;B.data=null}B.ajax.open(B.type,B.url,B.async);B.ajax.send(B.data||null);return s.xhr.httpData(B)}};s.xhr.httpData=function(C){var D,B=null,E,A=null;C.ajax.onreadystatechange=function(){if(C.ajax.readyState===4){try{B=JSON.parse(C.ajax.responseText)}catch(F){}D={xml:C.ajax.responseXML,text:C.ajax.responseText,json:B};if(!D.xml||!D.xml.documentElement){D.xml=null;try{E=new DOMParser;A=E.parseFromString(C.ajax.responseText,"text/xml");if(!A.getElementsByTagName("parsererror").length){D.xml=A}}catch(F){}}if(C.dataType){D=D[C.dataType]}C.success.call(C.ajax,D)}};return D};s.xhr.getJSONP=function(A,L,C){var I=p.head||p.getElementsByTagName("head")[0]||p.documentElement,J=p.createElement("script"),M=false,D=[],H=/(=)\?(?=&|$)|\?\?/,G,F,B,K,E;if(!C){E=A.match(/(callback=[^&]*)/);if(E!==null&&E.length){F=E[1].split("=")[1];if(F==="?"){F="jsonp"}K=s.guid(F);A=A.replace(/(callback=[^&]*)/,"callback="+K)}else{K=s.guid("jsonp");if(H.test(A)){A=A.replace(H,"$1"+K)}D=A.split(/\?(.+)?/);A=D[0]+"?";if(D[1]){A+=D[1]+"&"}A+="callback="+K}window[K]=function(N){L&&L(N);M=true}}J.addEventListener("load",function(){if(C){L&&L()}if(M){delete window[K]}I.removeChild(J)},false);J.src=A;I.insertBefore(J,I.firstChild);return};s.getJSONP=s.xhr.getJSONP;s.getScript=s.xhr.getScript=function(A,B){return s.xhr.getJSONP(A,B,true)};s.util={toSeconds:function(A,H){var J=/^([0-9]+:){0,2}[0-9]+([.;][0-9]+)?$/,F="Invalid time format",I,D,C,B,E,G;if(typeof A==="number"){return A}if(typeof A==="string"&&!J.test(A)){s.error(F)}I=A.split(":");D=I.length-1;C=I[D];if(C.indexOf(";")>-1){E=C.split(";");G=0;if(H&&typeof H==="number"){G=parseFloat(E[1],10)/H}I[D]=parseInt(E[0],10)+G}B=I[0];return{1:parseFloat(B,10),2:parseInt(B,10)*60+parseFloat(I[1],10),3:parseInt(B,10)*3600+parseInt(I[1],10)*60+parseFloat(I[2],10)}[I.length||1]}};s.p.cue=s.p.exec;s.protect={natives:c(s.p).map(function(A){return A.toLowerCase()})};s.forEach({listen:"on",unlisten:"off",trigger:"emit",exec:"cue"},function(C,B){var A=s.p[B];s.p[B]=function(){if(typeof console!=="undefined"&&console.warn){console.warn("Deprecated method '"+B+"', "+(C==null?"do not use.":"use '"+C+"' instead."));s.p[B]=A}return s.p[C].apply(this,[].slice.call(arguments))}});u.Popcorn=s})(window,window.document);(function(e,a){var h=e.document,c=e.location,g=/:\/\//,b=c.href.replace(c.href.split("/").slice(-1)[0],""),d=function(p,n,o){p=p||0;n=(n||p||0)+1;o=o||1;var l=Math.ceil((n-p)/o)||0,k=0,m=[];m.length=l;while(k<l){m[k++]=p;p+=o}return m};a.sequence=function(l,m,k){return new a.sequence.init(l,m,k)};a.sequence.init=function(n,o,l){this.parent=h.getElementById(n);this.seqId=a.guid("__sequenced");this.queue=[];this.playlist=[];this.inOuts={ofVideos:[],ofClips:[]};this.rate=1;this.volumeLevel=0.5;this.dims={width:0,height:0};if(l.width!=0&&l.height!=undefined){this.dims.width=l.width;this.dims.height=l.height}this.active=0;this.cycling=false;this.playing=false;this.loop=!!l.loop||false;this.times={last:0};this.events={};var k=this,m=0;a.forEach(o,function(u,p){var t=h.createElement("video");t.preload="auto";if(l.crossOrign){var w=RegExp("^(https?:)?//");if(w.test(u.src)){t.setAttribute("crossorigin","Anonymous")}}if(l.controls!=undefined){t.controls=l.controls}else{t.controls=true}t.style.display=p&&"none"||"";t.id=k.seqId+"-"+p;if(k.dims.width>0&&k.dims.height>0){t.width=k.dims.width;t.height=k.dims.height}k.queue.push(t);var s=u["in"],q=u.out;k.inOuts.ofVideos.push({"in":s!==undefined&&typeof s==="number"?s:1,out:q!==undefined&&typeof q==="number"?q:0});k.inOuts.ofVideos[p]["out"]=k.inOuts.ofVideos[p]["out"]||k.inOuts.ofVideos[p]["in"]+2;t.src=u.src;t.setAttribute("data-sequence-owner",n);t.setAttribute("data-sequence-guid",k.seqId);t.setAttribute("data-sequence-id",p);t.setAttribute("data-sequence-clip",[k.inOuts.ofVideos[p]["in"],k.inOuts.ofVideos[p]["out"]].join(":"));k.parent.appendChild(t);k.playlist.push(a("#"+t.id))});k.inOuts.ofVideos.forEach(function(s){var p=s.out-s["in"],q={"in":m,out:m+p};k.inOuts.ofClips.push(q);m=q.out});a.forEach(this.queue,function(s,p){function q(t){if(!p){if(k.dims.width==0||k.dims.height==0){k.dims.width=s.videoWidth;k.dims.height=s.videoHeight}}s.currentTime=k.inOuts.ofVideos[p]["in"]-0.2;s.removeEventListener("canplaythrough",q,false);return true}s.addEventListener("canplaythrough",q,false);s.addEventListener("play",function(t){k.playing=true},false);s.addEventListener("pause",function(t){k.playing=false},false);s.addEventListener("timeupdate",function(u){var x=u.srcElement||u.target,w=+(x.dataset&&x.dataset.sequenceId||x.getAttribute("data-sequence-id")),t=Math.floor(s.currentTime);if(k.times.last!==t&&w===k.active){k.times.last=t;if(t>=k.inOuts.ofVideos[w]["out"]){a.sequence.cycle.call(k,w)}}},false);s.addEventListener("ended",function(t){var w=t.srcElement||t.target,u=+(w.dataset&&w.dataset.sequenceId||w.getAttribute("data-sequence-id"));a.sequence.cycle.call(k,u)},false);s.addEventListener("error",function(t){k.trigger("error",t,s)},false);s.addEventListener("progress",function(t){k.trigger("progress",t,s)},false)});return this};a.sequence.init.prototype=a.sequence.prototype;a.sequence.cycle=function(l,t){if(!this.queue){a.error("Popcorn.sequence.cycle is not a public method")}if(l===t){return this}var p=this.queue,u=this.inOuts.ofVideos,q=p[l],s,o,n;var m,k;s=typeof t==="number"?t:l+1;if(!p[s]){s=0;this.playlist[l].pause();if(this.loop){if(l===s){q.currentTime=u[s]["in"];q.play()}else{a.sequence.cycle.call(this,l,s);this.play()}}}else{o=p[s];n=u[s];a.extend(o,{width:this.dims.width,height:this.dims.height});m=this.playlist[s];k=this.playlist[l];q.pause();this.active=s;this.times.last=n["in"]-1;m.currentTime(n["in"]);m.playbackRate(this.rate);m.volume(this.volumeLevel);m.play();this.trigger("cycle",{position:{previous:l,current:s}});q.style.display="none";o.style.display="";this.cycling=false}return this};var j=["timeupdate","play","pause","progress"];a.extend(a.sequence.prototype,{eq:function(k){return this.playlist[k]},remove:function(){this.parent.innerHTML=null},clip:function(k){return this.inOuts.ofVideos[k]},duration:function(){var m=0,l=this.inOuts.ofClips,k=0;for(;k<l.length;k++){m+=l[k]["out"]-l[k]["in"]}return m},play:function(){if(this.queue.length-1===this.active&&this.inOuts.ofVideos[this.active]["out"]<Math.round(this.queue[this.active].currentTime)){this.jumpTo(0)}else{this.playlist[this.active].playbackRate(this.rate);this.playlist[this.active].volume(this.volumeLevel);this.queue[this.active].play()}return this},pause:function(){this.queue[this.active].pause();return this},cue:function(m,l){var k=this.active;this.inOuts.ofClips.forEach(function(o,n){if(m>=o["in"]&&m<=o.out){k=n}});m+=this.inOuts.ofVideos[k]["in"]-this.inOuts.ofClips[k]["in"];this.playlist[k].cue(m,l);return this},on:function(m,q){var l=this,k=this.playlist,o=k.length,n=0,p;if(!q){q=a.nop}if(a.Events.Natives.indexOf(m)>-1){a.forEach(k,function(s){s.on(m,function(t){t.active=l;if(j.indexOf(m)>-1){q.call(s,t)}else{if(++n===o){q.call(s,t)}}})})}else{if(!this.events[m]){this.events[m]={}}p=q.name||a.guid("__"+m);this.events[m][p]=q}return this},off:function(m,l){var k=this.playlist;if(a.Events.Natives.indexOf(m)>-1){a.forEach(k,function(n){n.off(m,l)})}else{this.events[m]=null}return this},emit:function(l,m){var k=this;if(a.Events.Natives.indexOf(l)>-1){return}else{if(this.events[l]){a.forEach(this.events[l],function(o,n){o.call(k,{type:l},m)})}}return this},currentTime:function(){var k=this.active,l=0;this.inOuts.ofClips.forEach(function(n,m){if(m<k){l+=this.inOuts.ofVideos[m]["out"]-this.inOuts.ofVideos[m]["in"]}},this);l+=this.playlist[k].currentTime()-this.inOuts.ofVideos[k]["in"];return l},jumpTo:function(n){if(n<0||n>this.duration()){return this}var l,m,o,k;offsetTime=0;m=false;this.inOuts.ofClips.forEach(function(s,p){var q=this.inOuts;if(!m){if(n>=q.ofClips[p]["in"]&&n<=q.ofClips[p]["out"]){m=true;l=p;o=n-offsetTime+q.ofVideos[p]["in"]}else{offsetTime+=q.ofClips[p]["out"]-offsetTime}}},this);a.sequence.cycle.call(this,this.active,l);k=this.inOuts.ofVideos[l];this.playlist[l].currentTime(o>=k["in"]&&o<=k.out?o:k["in"]);return this},jumpToRelative:function(n){var l=this.currentTime();var m=this.playlist[this.active].currentTime();var k=l-m+n;return this.jumpTo(k)},jumpToIndex:function(l){var k=this.inOuts;if(l>=k.ofClips.length){l=0}else{if(l<0){l=k.ofClips.length-1}}a.sequence.cycle.call(this,this.active,l);return this},playbackRate:function(k){this.rate=k;this.playlist[this.active].playbackRate(k)},volume:function(k){this.volumeLevel=k;this.playlist[this.active].volume(k)}});[["exec","cue"],["listen","on"],["unlisten","off"],["trigger","emit"]].forEach(function(k){a.sequence.prototype[k[0]]=a.sequence.prototype[k[1]]});a.forEach(a.manifest,function(l,k){a.sequence.prototype[k]=function(C){var w={},n=[],z,s,p,m,y,B,u,q,o;for(z=0;z<this.inOuts.ofClips.length;z++){s=this.inOuts.ofClips[z];p=d(s["in"],s.out);m=p.indexOf(C.start);y=p.indexOf(C.end);if(m>-1){w[z]=a.extend({},s,{start:p[m],clipIdx:m})}if(y>-1){w[z]=a.extend({},s,{end:p[y],clipIdx:y})}}B=Object.keys(w).map(function(D){return +D});n=d(B[0],B[1]);for(z=0;z<n.length;z++){var A={},t=n[z],x=w[t];if(x){u=this.inOuts.ofVideos[t];q=x.clipIdx;o=d(u["in"],u.out);if(x.start){A.start=o[q];A.end=o[o.length-1]}if(x.end){A.start=o[0];A.end=o[q]}}else{A.start=this.inOuts.ofVideos[t]["in"];A.end=this.inOuts.ofVideos[t]["out"]}this.playlist[t][k](a.extend({},C,A))}return this}})})(this,Popcorn);(function(){window.HTML5Upload=function(){a.prototype.baseUrl="/component/getPutMetadata?";a.prototype.onSuccess=function(b){return b};a.prototype.onProgress=function(c,b){return{progress:c,status:b}};a.prototype.onError=function(b){return b};function a(b){if(!b){b={}}Ext.apply(this,b)}a.prototype.createCORSRequest=function(d,b){var c=new XMLHttpRequest;if(c.withCredentials!=null){c.open(d,b,true)}else{if(typeof XDomainRequest!=="undefined"){c=new XDomainRequest;c.open(d,b)}else{c=null}}return c};a.prototype.executeOnSignedUrl=function(c,g){var d,e;e=new XMLHttpRequest;var b=Ext.String.format("{0}{1}",this.baseUrl,Ext.Object.toQueryString({fileType:c.type,fileName:c.name||c.fileName,fileSize:c.size}));e.open("GET",b,true);e.overrideMimeType("text/plain; charset=x-user-defined");e.onreadystatechange=function(k){var h;if(this.readyState===4&&this.status===200){try{h=JSON.parse(this.responseText)}catch(j){g.onError('Signing server returned some ugly/empty JSON: "'+this.responseText+'"')}if(h.error){FT.notifyError(h.error);g.onError("amazonIsFull")}g.onSuccess(decodeURIComponent(h.url).replace(/\+/g,"%2B"),h.componentId,h.headers)}else{if(this.readyState===4&&this.status!==200){g.onError("Could not contact request signing server. Status = "+this.status)}}};return e.send()};a.prototype.uploadToS3=function(d,b,j,c,e,k,g){var h,l;h=this;l=this.createCORSRequest("PUT",b);if(!l){this.onError("CORS not supported")}else{l.onload=function(){if(l.status===200){k(d,1,"Upload completed.");return g(d,j)}else{return e("Upload error: "+l.status)}};l.onerror=function(){return e("XHR error.")};l.upload.onprogress=function(o){var m;if(o.lengthComputable){var n=Ext.util.Format.round(o.loaded/o.total,2);return k(d,n,n===1?"Finalizing.":"Uploading.")}}}Ext.iterate(c,function(m,n){l.setRequestHeader(m,n)});l.send(d);return l};a.prototype.uploadFile=function(c,b){var d,d=this,e={onSuccess:function(h,g,j){return d.uploadToS3(c,h,g,j,b.onError||this.onError,b.onProgress||this.onProgress,b.onSuccess||this.onSuccess)},onError:b.onError||this.onError};return this.executeOnSignedUrl(c,e)};a.prototype.cancel=function(b){if(b){b.abort()}};return a}()}).call(this);Ext.define("FTR.configure.Storage",{validPushEntities:[],alias:"widget.widget_ftr_storage_manager",extend:"RAW.Widget",layout:"border",cls:"ftr-storage-manager",header:false,margin:"10 0 0 0",initComponent:function(){var a=this;this.progressBar=Ext.create("FTR.configure.Usage",{region:"north"});this.callParent();this.add([this.progressBar]);this.updateWidget()},updateWidget:function(){this.progressBar.updateData()}});Ext.define("FTR.usage.Progress",{extend:"Ext.ProgressBar",region:"north",height:20,width:"100%",ui:"ft-upload",cls:"ftr-dropzone-progressbar",text:FT.i18n("Calculating encoding usage..."),style:{margin:"0 10px 20px 10px","text-align":"center"},updateUsage:function(){var a=this;this.method(function(g,j,h){if(h){var e=g.usage,b=g.limit,c=e/b,d=c*100;if(d>70&&d<90){a.addCls("ftr-yellow-progress");a.removeCls("ftr-red-progress")}else{if(d>90){a.addCls("ftr-red-progress");a.removeCls("ftr-yellow-progress")}else{a.removeCls("ftr-yellow-progress");a.removeCls("ftr-red-progress")}}a.updateProgress(c,a.getMessage(e,b,d))}})}});Ext.define("FTR.configure.Usage",{alias:"widget.ftr-configure-usage",extend:"Ext.container.Container",layout:"vbox",initComponent:function(){this.callParent(arguments);this.storageBar=Ext.create("FTR.usage.Progress",{method:FTApi.Review.storageUsage,text:FT.i18n("Calculating storage usage..."),getMessage:function(c,a,b){return"Using "+c+" GB of your "+Ext.util.Format.round(a,2)+" GB - "+Ext.util.Format.round(100-b,1)+"% free"}});this.add([{xtype:"component",width:"100%",cls:"ft-property-groupheader",margin:"20 0 0 0",html:FT.i18n("Storage usage (components in Server location)")},this.storageBar])},updateData:function(){this.storageBar.updateUsage()}});Ext.define("FT.reviewsession.InviteeView",{extend:"Ext.view.View",ui:"ft-widget-view",deferEmptyText:false,itemSelector:"li.ft-inviteeview-item",emptyText:"",disableSelection:true,autoScroll:true,tpl:new Ext.XTemplate('<h4 class="ft-inviteeview-title">{[FT.i18n("Invite collaborators")]}</h4>','<ul class="ft-inviteeview-list">','<tpl for=".">','<li class="ft-inviteeview-item text-ellipsis">','<div class="ft-inviteeview-actions">','<a href="#" data-qtip="{[FT.i18n("Remove collaborator")]}" ','class="ft-inviteeview-remove actionicon" ',">",'{[FT.glyphIcon("remove")]}',"</a>",'<a href="#" ','data-qtip="{[this.getSendInviteTooltip(values)]}" ','class="{[this.getSendInviteCls(values)]}" ',">",'{[FT.glyphIcon("email")]}',"</a>","</div>",'{[FT.glyphIcon("user", {cls: "icon--inline"})]} <span>{name}</span>',"</li>","</tpl>","</ul>",'<div class="ft-inviteeview-add"><a href="#">{[FT.i18n("Add collaborator")]}</a></div>',{getSendInviteTooltip:function(a){var b=a.last_sent_at;if(b){return FT.i18n("Last sent {lastSentAt, date, medium}",{values:{lastSentAt:b}})}else{return FT.i18n("Send invite email")}},getSendInviteCls:function(b){var a=["ft-inviteeview-send","actionicon"];if(b.last_sent_at){a.push("ft-inviteeview-send--sent")}return a.join(" ")}}),initComponent:function(){this.store=Ext.create("Ext.data.Store",{fields:["id","name","email","review_session_id",{name:"last_sent_at",type:"date"}],proxy:{type:"direct",api:{create:"FTApi.ReviewSessionInvitee.create",read:"FTApi.ReviewSessionInvitee.query",update:"FTApi.ReviewSessionInvitee.update",destroy:"FTApi.ReviewSessionInvitee.delete"},reader:{onMetaChange:Ext.emptyFn,root:"data"},extraParams:{limit:null}},autoLoad:false});this.on("containerclick",this.handleContainerClick,this);this.on("itemclick",this.handleItemClick,this);this.callParent()},updateEntity:function(a){if(a.entityId===this.reviewSessionId){return}this.reviewSessionId=a.entityId;this.reload()},reload:function(){this.resetForm();this.store.load({params:{criteria:this.reviewSessionId}})},handleContainerClick:function(b,d,c){if(d.getTarget(".ft-inviteeview-add")!==null){this.resetForm();this.on("itemadd",function(e,g,j,h){this.renderForm(e[0],j[0])},this,{single:true});var a=this.store.add({name:"",email:"",review_session_id:this.reviewSessionId});d.preventDefault()}},handleItemClick:function(b,a,g,c,h,d){if(h.getTarget(".ft-inviteeview-form")){return true}if(h.getTarget(".ft-inviteeview-remove")!==null){this.removeCollaborator(a);h.preventDefault();return true}if(h.getTarget(".ft-inviteeview-send")!==null){this.fireEvent("sendinvite",a);h.preventDefault();return true}if(h.getTarget(".ft-inviteeview-item")!==null){this.resetForm();this.renderForm(a,g);return true}},renderForm:function(a,c){c.innerHTML="";var b=this.getForm(a);b.render(c);b.items.getAt(0).focus();this.addCls("ft-inviteeview-form-show");b.on("destroy",function(){this.removeCls("ft-inviteeview-form-show")},this,{single:true})},getForm:function(a){if(this.form){this.form.destroy()}var b=Ext.create("Ext.toolbar.Toolbar",{padding:"10 0",items:[{text:FT.i18n("Cancel"),handler:this.resetForm,scope:this},"->",{text:FT.i18n("Save"),cls:"button-primary",margin:0,handler:this.saveForm,scope:this}]});this.form=Ext.create("Ext.form.Panel",{cls:"ft-inviteeview-form",border:false,bodyBorder:false,bodyCls:"background-inherit",padding:"10 0",layout:"anchor",defaults:{anchor:"100%"},defaultType:"textfield",items:[{emptyText:FT.i18n("Name"),name:"name",allowBlank:false},{emptyText:FT.i18n("Email"),name:"email",vtype:"email",allowBlank:false,validator:Ext.bind(this.validateInvitee,this)}],bbar:b});this.form.loadRecord(a);return this.form},validateInvitee:function(b){var a=this.form.getRecord(),c=true;this.store.each(function(d){if(a.getId()===d.getId()){return true}if(d.get("email")===b){c=false;return false}},this);return c?true:"A collaborator with this email already exists."},saveForm:function(){if(this.form.isValid()){this.form.getForm().updateRecord();var a=this.form.getRecord();if(a.dirty){this.store.sync({success:function(){this.resetForm()},scope:this})}else{this.resetForm()}}},resetForm:function(){var a,b;if(!this.form){return}a=this.form.getRecord();if(!a){return}if(a.phantom){this.store.remove(a)}else{this.refreshNode(this.indexOf(a))}this.form.destroy();delete this.form},removeCollaborator:function(a){var b=Ext.create("FT.window.CancelSave",{title:FT.i18n("Remove collaborator"),message:"Would you like to remove "+a.get("name")+" as collaborator?",saveText:FT.i18n("Remove collaborator"),saveAction:"delete",saveHandler:function(c){this.store.remove(a);this.store.sync();b.close()},cancelHandler:function(c){b.close()},scope:this})}});Ext.define("FT.upload.Uploader",{alternateClassName:"FT.Uploader",singleton:true,constructor:function(a){Ext.applyIf(this,{id:this._generateUuid()});this._processes=Ext.create("Ext.util.HashMap")},_generateUuid:function(){return Ext.data.IdGenerator.get("uuid").generate().replace(/-/g,"")},getUploader:function(){if(!this._uploader){this._uploader=new HTML5Upload}return this._uploader},upload:function(b,a){var d=this.getUploader(),e=a.id||this._generateUuid(),c;c=d.uploadFile(b,{onProgress:function(h,g,j){var k=FT.Uploader._processes.get(e)||{};k.progress=g;FT.Uploader._processes.replace(e,k);if(a.progress){a.progress.call(a.scope||this,e,h,g,j)}},onSuccess:function(h,g){FT.Uploader._processes.removeAtKey(e);if(a.success){a.success.call(a.scope||this,e,h,g)}},onError:function(g){FT.Uploader._processes.removeAtKey(e);if(a.failure){a.failure.call(a.scope||this,e,g)}}});this._processes.add(e,{progress:0,request:c});return e},getProgress:function(a){return this._processes.get(a)},cancelUpload:function(c){var b=this._processes.get(c),a=this.getUploader();if(b&&b.request){a.cancel(b.request)}},getFileExtension:function(b){var a=b.split(".").pop()||"";return a.toLowerCase()},isFileNameEncodable:function(d){var c=FT.Uploader.getFileExtension(d);var a=FT.Settings.get("ftrack","encodingSupportedTypes");var b=a.indexOf(c)!==-1;return b},isFileNameImage:function(d){var c=FT.Uploader.getFileExtension(d);var a=FT.Settings.get("ftrack","imageFileTypes");var b=a.indexOf(c)!==-1;return b},getAttachmentDataFromFile:function(b,a){var e=b.name||b.fileName||"";var d=FT.Uploader.isFileNameImage(e);var c={attachmentid:a,filename:e};if(d){c.icon={size:{y:25},attachmentid:a,thumbUrl:FT.util.getThumbnailUrl(a)}}return c}});Ext.define("FT.upload.DragAndDropUploader",{mixins:{observable:"Ext.util.Observable"},dragOverCls:"ft-dropzone-dragover",constructor:function(a){Ext.apply(this,a);this.mixins.observable.constructor.call(this,a);this.addEvents("dragover","dragleave","drop","beforeupload","beginupload","afterupload","finalizing","progress","failure");this.callParent(arguments)},isSupported:function(){return !!(typeof File!=="undefined"&&typeof Blob!=="undefined"&&typeof FileList!=="undefined"&&(!!Blob.prototype.webkitSlice||!!Blob.prototype.mozSlice||Blob.prototype.slice||false))},beforeUpload:function(b,a){a()},setDropElement:function(a){if(a.isComponent){a=a.getEl()}if(!a){log("Failed to set drop element to non-element");return}this.element=a;a.on("dragover",function(b){b.preventDefault();this.fireEvent("dragover",a);if(this.dragOverCls){a.addCls(this.dragOverCls)}},this);a.on("drop",function(b){b.preventDefault();this.fireEvent("drop",a);if(this.dragOverCls){a.removeCls(this.dragOverCls)}this._onDrop(b)},this);a.on("dragleave",function(){this.fireEvent("dragleave",a);if(this.dragOverCls){a.removeCls(this.dragOverCls)}},this)},setBrowseElement:function(a){if(a.isComponent){a=a.getEl()}if(!a){log("Failed to set browse element to non-element");return}var b=a.createChild({tag:"input",cls:"filebrowse-input",type:"file",multiple:"multiple"});b.on("change",function(c){this.uploadFiles(c.target.files);c.target.value=""},this)},_onDrop:function(b){var d=b.browserEvent,c=d&&d.dataTransfer,a=c&&c.files||[];this.uploadFiles(a)},uploadFiles:function(a){if(this.fireEvent("beforeupload",a)===false){return}if(!a.length){FT.notifyError(FT.i18n("Invalid file dropped. Please try again."));return}Ext.Array.each(a,function(d,b,e){var g=d.name||d.fileName;var c=this;this.beforeUpload(g,function(h){if(Ext.isString(h)){h={id:h}}else{h=h||{}}if(!Ext.isDefined(h.encode)&&h.version_id){h.encode=FT.Uploader.isFileNameEncodable(g)}else{h.encode=false}c._uploadSingleFile(h,d)},this)},this)},_uploadSingleFile:function(a,b){a=a||{};var c=FT.Uploader.upload(b,{id:a.id,encode:a.encode,version_id:a.version_id,scope:this,success:function(g,e,d){this._finalizeUpload(g,{id:g,file:e,componentId:d,encode:a.encode,version_id:a.version_id})},progress:function(h,e,d,g){this.fireEvent("progress",h,e,d,g)},failure:function(e,d){this.fireEvent("failure",e,d)}});this.fireEvent("beginupload",c,b)},_finalizeUpload:function(c,b){var a=this;a.fireEvent("finalizing",c,b);FTApi.Component.finalizeUpload({id:b.componentId,version_id:b.version_id,encode:b.encode},function(d){if(!d||!d.success){var e=d&&d.message||"Failed to finalize upload.";a.fireEvent("failure",c,d,b)}else{a.fireEvent("afterupload",c,d,b)}})}});(function(d){var e=d.HTMLCanvasElement&&d.HTMLCanvasElement.prototype,c=d.Blob&&function(){try{return Boolean(new Blob)}catch(h){return false}}(),g=c&&d.Uint8Array&&function(){try{return(new Blob([new Uint8Array(100)])).size===100}catch(h){return false}}(),b=d.BlobBuilder||d.WebKitBlobBuilder||d.MozBlobBuilder||d.MSBlobBuilder,a=(c||b)&&d.atob&&d.ArrayBuffer&&d.Uint8Array&&function(j){var o,l,n,k,h,m;if(j.split(",")[0].indexOf("base64")>=0){o=atob(j.split(",")[1])}else{o=decodeURIComponent(j.split(",")[1])}l=new ArrayBuffer(o.length);n=new Uint8Array(l);for(k=0;k<o.length;k+=1){n[k]=o.charCodeAt(k)}h=j.split(",")[0].split(":")[1].split(";")[0];if(c){return new Blob([g?n:l],{type:h})}m=new b;m.append(l);return m.getBlob(h)};if(d.HTMLCanvasElement&&!e.toBlob){if(e.mozGetAsFile){e.toBlob=function(k,h,j){if(j&&e.toDataURL&&a){k(a(this.toDataURL(h,j)))}else{k(this.mozGetAsFile("blob",h))}}}else{if(e.toDataURL&&a){e.toBlob=function(k,h,j){k(a(this.toDataURL(h,j)))}}}}if(typeof define==="function"&&define.amd){define(function(){return a})}else{d.dataURLtoBlob=a}})(this);Ext.define("FT.app.base.Application",{extend:"Ext.app.Application",name:"FT",enableQuickTips:false,appProperty:"app",delayData:null,suspendOpen:false,batchController:"batch",allowedEvents:[],launch:function(){var b=this;FTrack.fuzzyDate=new FT.util.FuzzyDate;FTrack.fuzzyDate.init();Ext.getBody().on("click",function(c){FTrack.util.delayOpenCancel(c)},this,{delegate:".delay-open-cancel"});Ext.getBody().on("click",function(e){var c=e.getTarget(".on-thumbnail-click");var d=c.attributes.attachmentid.value;var g=c.attributes.action.value;if(g=="loadprotocol"){FT.action.fn.loadprotocol({attachmentid:d})}else{if(g=="inspectimage"){FT.action.fn.inspectimage({src:FT.util.getComponentUrl(d)})}}},this,{delegate:".on-thumbnail-click"});Ext.tip.QuickTipManager.init(true,{className:"FT.tip.QuickOpentip"});this.setStateProvider();var a=["moduleactivated","modulesloaded","internalinitdone","aftermoduleactivated"];this.addEvents(a.concat(this.allowedEvents));this.debugTools=Ext.create("FT.DebugTools.Collector",{});window.onbeforeunload=function(){var c=b.fireEvent("beforeunload");if(!c){return"Are you sure you want to navigate away?"}};this.activeCfg={};FT.Settings=new FT.SettingsManager;FT.ReloadManager=new FT.util.ReloadManager({app:this});FT.Settings.settingsStore.on("load",function(){this.onSettingsLoaded();this.loadStoreBatch(function(){this.createModules();this.fireEvent("modulesloaded")},this)},this);FT.Settings.settingsStore.load()},setStateProvider:function(){if(FT.stateful){if(FT.localstorage()){var a=Ext.create("Ext.state.LocalStorageProvider",{prefix:"ftrack-"})}else{var a=Ext.create("Ext.state.CookieProvider",{prefix:"ftrack-"})}Ext.state.Manager.setProvider(a)}},getStores:function(){return[]},getModules:function(){return this.modules},encodeData:function(a){a=Ext.clone(a);return Ext.urlEncode(a)},decodeData:function(a){a=Ext.urlDecode(a);return a},getActiveModule:function(){return this.activeModule},safeFireEvent:function(){if(this.allowedEvents.indexOf(arguments[0])!=-1){this.fireEvent.apply(this,arguments)}},findModule:function(b){var a=null;Ext.each(this.modules,function(e,c,d){a=e.itemId==b?e:a},this);return a},getModuleAndConfig:function(b,a){var c={};if(b==null){b=this.activeModule;c=Ext.apply(Ext.clone(this.activeCfg),a)}else{if(Ext.isString(b)&&!Ext.isDefined(a)){var c=this.decodeData(b);Ext.each(this.modules,function(g,d,e){if(g.itemId==c.itemId){b=g}},this);if(Ext.isString(b)){return false}}else{if(Ext.isString(b)&&Ext.isDefined(a)){b=this.findModule(b);c=Ext.clone(a);c.itemId=b.itemId}else{c=Ext.clone(a);c.itemId=b.itemId}}}return{module:b,cfg:c}},openDefaultModule:function(){Ext.each(FT.app.modules,function(a){if(a.itemId==this.defaultModule){Ext.Function.defer(this.open,1,this,[a,{}])}},this)},open:function(d,b){if(this.activeCfg&&this.activeCfg.data){delete this.activeCfg.data}if(b&&b.data){this._tmpData=Ext.clone(b.data);delete b.data}var a=this.getModuleAndConfig(d,b);d=a.module;var e=a.cfg;if(d&&Ext.isFunction(d.getExtraConfig)){var c=d.getExtraConfig(e,b);if(c){Ext.apply(e,c)}}if(this.activeCfg&&e){if(this.activeCfg.view!=e.view||this.activeCfg.itemId!=e.itemId){delete e.slideEntityId;delete e.slideEntityType}}Ext.util.History.add(FT.app.encodeData(e));return true},internalOpen:function(d,c){var b=Ext.clone(c);var j=Ext.clone(d);var a=this.getModuleAndConfig(d,c);d=a.module;var g=a.cfg;if(this.activeModule){var e=Ext.clone(this.getCfg());var h=Ext.clone(g);if(this.activeModule.fireEvent("beforemodulechange",h,e)==false){this.delayData={module:j,cfg:b};FTrack.util.backHistorySilent();return}}if(Ext.isDefined(this.activeModule)&&!this.activeModule.beforeModuleChange(Ext.clone(g),d)){return false}if(Ext.isDefined(this.maximized)){this.maximize(this.maximized)}if(!Ext.isDefined(d)){FT.notifyError(FT.i18n("The link you are looking for could not be found."));return false}if(this._tmpData){g.data=this._tmpData;delete this._tmpData}this.verifyModule(d,g)},loadStoreBatch:function(d,b){var c=Ext.create("FT.util.StoreBatch",{});c.on("allstoresloaded",Ext.bind(d,b),this);var a=this.getStores();c.load(a)},activateModule:function(a,b){b.objectType=this.getObjectType();if(this.fireEvent("beforemoduleactivated",a,b)==false){return}this.previousEntityId=b.entityId;if(Ext.isDefined(a.entity)&&a.entity.itemId=="home"){this.location.setLocation({})}this.activeModule=a;this.activeCfg=FT.clone(b);this.fireEvent("moduleactivated",a,b);this.fireEvent("aftermoduleactivated",a,b)},delayedOpen:function(){if(this.delayData){this.open(this.delayData.module,this.delayData.cfg);this.delayData=null}},getCfg:function(){return Ext.clone(this.activeCfg)},getInviteeId:function(){return this.getCfg().id},onSettingsLoaded:function(){var c=FT.Settings.get("FORMAT","time"),a=FT.Settings.get("FORMAT","date"),b=FT.Settings.get("TIME","workday_length");FTrack.grid.dateRenderer=Ext.util.Format.dateRenderer(a);FTrack.grid.dateTimeRenderer=Ext.util.Format.dateRenderer(c);FT.timelogging.Duration=new FT.timelogging.DurationFormatter(b)},maximize:function(a,b){if(!Ext.isDefined(b)){b=false}if(!Ext.isDefined(this.maximized)){this.ownerCt=a.ownerCt;this.maximized=a;this.oldWidth=a.getWidth();this.maximizedIndex=this.ownerCt.items.indexOf(this.maximized);this.win=Ext.create("Ext.window.Window",{autoShow:true,maximized:true,layout:b?"auto":"fit",closable:false,header:false,resizable:false,items:[a],onEsc:function(){FT.app.maximize()}});if(b){this.maximized.setWidth(this.win.getWidth());this.win.updateLayout()}}else{if(b){this.maximized.setWidth(this.oldWidth)}this.win.hide();this.ownerCt.insert(this.maximizedIndex,this.maximized);delete this.ownerCt;delete this.maximized}}});Ext.define("FT.app.base.TopMenu",{extend:"Ext.toolbar.Toolbar",cls:"topmenu",defaultButtonUI:"plain-toolbar",defaults:{scale:"large"},padding:0,enableOverflow:true,layout:{type:"hbox",align:"strech",overflowHandler:"Menu"},initComponent:function(){this.createItems();this.callParent()},getLogo:function(){return null},createItems:function(){var b=this,a=this.app.getModules(),d,c,e=this.getLogo();d=[];if(e){d.push(e)}Ext.each(a,function(h,g,j){menuOptions=h.getTopMenuItems();Ext.each(menuOptions,function(m,k,l){m.btnId=h.itemId});d=d.concat(menuOptions)},this);Ext.each(d,function(j,g,h){if(j.rightAlign){c=g;return false}});Ext.Array.insert(d,c,["->"]);this.items=d;this.on("afterlayout",function(){b.setActiveItem()})},setActiveItemId:function(a){this.activeItemId=a},setActiveItem:function(){var b=this,a=b.getComponent(b.activeItemId);b.items.each(function(c){c.removeCls("menu-item-active")});if(Ext.isDefined(a)){a.addCls("menu-item-active")}}});Ext.define("FT.app.base.Viewport",{extend:"Ext.container.Viewport",layout:"border",topMenuCls:null,getUrlParameters:function(){return location.hash.substring(1)},onModuleActivated:function(b,a){this.topMenu.setActiveItemId(a.itemId);var c=b.internalInit(a);if(this.activeCanvas!=c){if(this.activeCanvas){this.remove(this.activeCanvas,false)}c.region="center";this.add(c)}this.moduleCanvas[b.itemId]=c;this.activeCanvas=c;c.show()},getTopBarHeight:function(){return this.topBar.isRendered?this.topBar.getHeight():this.topBar.height},supportedBrowsers:function(){return Ext.isChrome||Ext.isSafari||Ext.firefoxVersion>=4}});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.DirectDescriptors",fields:["remoteAPI"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getDirectDescriptors",data:Ext.JSON.encode({})},reader:{type:"json"}},sorters:[{property:"sort"}]});Ext.create("Ext.data.Store",{autoLoad:false,storeId:"FT.store.Dashboards",fields:["module","entityType","dashboards"],autoDestroy:false,proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getDashboards"},reader:{type:"json",root:"parents"}}});Ext.define("FT.App",{extend:"FT.app.base.Application",defaultModule:"home",allowedEvents:["showadded","entityadded","entityremoved","entitychanged","pushevent"],previousEntityId:null,launch:function(a){this.callParent(arguments);this.location=Ext.create("FT.Location",{});this.scope=Ext.create("FT.Scope",{});this.scope.on("scopechanged",this._onScopeChanged,this);this.getProjectId=Ext.bind(this.location.getProjectId,this.location);this.on("entityadded",function(){RAW.Widget.fireEvent("reloadwidget")})},_onScopeChanged:function(b,a){if(FT.Viewport){FT.Viewport.updateScopeMessage(b)}},getStores:function(){this.modulesStore=Ext.create("Ext.data.Store",{storeId:"Modules",fields:["name"],proxy:{type:"batch",url:"/batch/get",extraParams:{method:"getModules"},reader:{root:"modules"}}});return[Ext.data.StoreManager.lookup("FT.store.TaskStatus"),Ext.data.StoreManager.lookup("FT.store.PriorityType"),Ext.data.StoreManager.lookup("FT.store.AssetVersionFilters"),Ext.data.StoreManager.lookup("FT.store.TaskFilters"),Ext.data.StoreManager.lookup("FT.store.ShotFilters"),Ext.data.StoreManager.lookup("FT.store.FeedFilters"),Ext.data.StoreManager.lookup("FT.store.NoteFilters"),Ext.data.StoreManager.lookup("FT.store.GanttFilters"),Ext.data.StoreManager.lookup("FT.store.ListFilters"),Ext.data.StoreManager.lookup("FT.store.FilebinFilters"),Ext.data.StoreManager.lookup("FT.store.User"),Ext.data.StoreManager.lookup("FT.store.ActiveUser"),Ext.data.StoreManager.lookup("FT.store.TaskType"),Ext.data.StoreManager.lookup("FT.store.AssetType"),Ext.data.StoreManager.lookup("FT.store.Dashboards"),this.modulesStore,Ext.data.StoreManager.lookup("FT.store.AttributesGrid"),Ext.data.StoreManager.lookup("FT.store.Projects"),Ext.data.StoreManager.lookup("FT.store.EntityGridView_shot"),Ext.data.StoreManager.lookup("FT.store.EntityGridView_asset"),Ext.data.StoreManager.lookup("FT.store.SchedulerTaskModel"),Ext.data.StoreManager.lookup("FT.store.NoteCategory"),Ext.data.StoreManager.lookup("FT.store.GanttViews"),Ext.data.StoreManager.lookup("FT.store.Viewers"),Ext.data.StoreManager.lookup("FT.store.AttributeTypes"),Ext.data.StoreManager.lookup("FT.store.ListType"),Ext.data.StoreManager.lookup("FT.store.Roles"),Ext.data.StoreManager.lookup("FT.store.ObjectType"),Ext.data.StoreManager.lookup("FT.store.UserSettings"),Ext.data.StoreManager.lookup("FT.store.Scope"),Ext.data.StoreManager.lookup("FT.store.CustomAttributes"),Ext.data.StoreManager.lookup("FT.store.Resources"),Ext.data.StoreManager.lookup("FT.store.SchemaTranslations")]},onSettingsLoaded:function(){this.callParent(arguments);if(FT.Settings.get("intercom","enable")&&window.Intercom){var c=(new Date).getTime();this.on("aftermoduleactivated",function(){var d=((new Date).getTime()-c)/1000;if(d>600){window.Intercom("update");c=(new Date).getTime()}});this._discoverIntercomTask=Ext.TaskManager.start({run:this._discover_connect,scope:this,interval:600000});Ext.defer(this._discoverConnectAndUpdateIntercom,10000,this)}if(Ext.isDefined(Gnt.data.Calendar)){var a=FT.util.getWeekend();Ext.override(Gnt.data.Calendar,{weekendFirstDay:a[0],weekendSecondDay:a[1]})}FT.initPush({});FT.Bookmarks=Ext.create("FT.bookmark.Model");var b=Ext.data.StoreManager.lookup("FT.store.UserSettings");b.on("load",function(){this.scope.onScopesLoaded()},this,{single:true});FT.tour.Tour.loadConfiguration();if(FT.Settings.get("feature","isPreventMediaDownloadEnabled")){FT.util.preventRightClickIfNecessary()}},_discoverConnectAndUpdateIntercom:function(){log("Discovering if connect is running.");FT.EventHub.publish(Ext.create("FT.Event",{topic:"ftrack.connect.discover"}),function(a){Ext.TaskManager.stop(this._discoverIntercomTask);log("Connect is running.");window.Intercom("update",{"is-connect-installed":true})},this)},createModules:function(){this.modules=[];this.modulesStore.each(function(module){try{this.modules.push(new (eval(module.get("name")))({app:this}))}catch(e){log(e);log("Exception loading module: "+module.get("name"))}},this)},getObjectType:function(){return this.objectType},verifyModule:function(b,c){var a=false;if(Ext.isDefined(c.entityId)&&Ext.isDefined(c.entityType)){if(c.entityId!=this.previousEntityId){a=true}}if(a){Ext.Ajax.request({url:"/main/verifyModuleConfig",params:{config:Ext.encode(c)},success:function(e){var d=Ext.decode(e.responseText);if(d.success){this.location.setLocation(d.data.location);this.objectType=d.data.objectType;this.activateModule(b,c)}else{FT.notifyError(d.message)}},scope:this})}else{this.activateModule(b,c)}}});Ext.define("FT.app.Viewport",{extend:"FT.app.base.Viewport",silentHistory:false,initComponent:function(){this.moduleCanvas={};this.activeCanvas=false;this.items=[];var d=this.createTopMenu();if(d){this.top=d;this.items.push(this.top)}var b=this.getHistoryField();if(b){this.historyField=b;this.items.push(this.historyField)}this.app.on({moduleactivated:this.onModuleActivated,scope:this});this.callParent();this.app.slider=Ext.create("FT.core.Slider",{viewport:this});this.updateScopeMessage(FT.app.scope.getCurrentScope());var a=this.getUrlParameters();if(FT.Settings.get("ftrack","enforce2FAForCurrentUser")){var c=this.app.findModule("me");if(c){this.app.internalOpen(c,{view:"account_settings_override"})}this.enforceTwoFactorAuthentication(c)}else{if(Ext.isEmpty(a)){if(FT.app.modules.length){this.app.openDefaultModule()}}else{this.app.internalOpen(a)}}},getHistoryField:function(){return{xtype:"box",region:"south",html:'<form id="history-form" class="x-hide-display"><input type="hidden" id="x-history-field" /><iframe id="x-history-frame"></iframe></form>',listeners:{afterrender:function(){Ext.util.History.fieldId="x-history-field";Ext.util.History.iframeId="x-history-frame";Ext.util.History.init(function(){Ext.util.History.on({scope:this,change:this.onHistoryChange})},this)},scope:this}}},onHistoryChange:function(a){if(!this.silentHistory){if(FT.delayOpen){FT.delayOpen=false;FTrack.util.delayOpen(a)}else{this.app.internalOpen(a)}}else{this.silentHistory=false}},checkLicense:function(){var a=this;if(FT.isValidLicense===false){a.messageBar.setGlyph("error");a.messageBar.setText(FT.i18n("Your ftrack license is invalid. Please contact your administrator."));a.messageBar.setLevel("high")}else{if(FT.licenseWarning&&Ext.isString(FT.licenseWarning)){a.messageBar.setGlyph("error");a.messageBar.setText(FT.licenseWarning);a.messageBar.setLevel("high")}}},createMsgBarMessage:function(){this.messageBar=Ext.create("FT.core.MessageBar",{region:"north",height:36,hidden:true})},createTopMenu:function(){this.createMsgBarMessage();this.topMenu=Ext.create("FT.app.TopMenu",{height:46,padding:0,region:"north",app:this.app,hidden:true});if(!this.supportedBrowsers()){this.messageBar.setLevel("low");this.messageBar.setGlyph("error");this.messageBar.setText("You are using an unsupported or outdated version of your browser, please upgrade for a better ftrack experience.")}this.checkLicense();if(FT.topMessage){this.messageBar.setLevel("low");this.messageBar.setGlyph("error");this.messageBar.setText(FT.topMessage)}this.topBar=Ext.create("Ext.container.Container",{region:"north",style:{zIndex:3000},layout:{type:"vbox",align:"stretch"},items:[this.messageBar,this.topMenu]});this.updateTopBarHeight();this.messageBar.on({show:this.updateTopBarHeight,hide:this.updateTopBarHeight,scope:this});return this.topBar},updateScopeMessage:function(a){if(a&&a.length){this.showScopeMessage(a)}else{this.hideScopeMessage()}},showScopeMessage:function(a){if(!this.scopesIndicator){this.scopesIndicator=Ext.create("FT.core.MessageBar",{region:"north",centerContent:true,closable:false,height:20});this.add(this.scopesIndicator)}this.scopesIndicator.setGlyph("filter");this.scopesIndicator.setLevel("info");this.scopesIndicator.setText(Ext.util.Format.plural(a.length,"global filter is active","global filters are active"))},hideScopeMessage:function(){if(this.scopesIndicator){this.remove(this.scopesIndicator,true);this.scopesIndicator=null}},updateTopBarHeight:function(){var a=this.topMenu.height;if(!this.messageBar.isHidden()){a+=this.messageBar.height}this.topBar.setHeight(a)},enforceTwoFactorAuthentication:function(c){var a=false;var b=Ext.create("FT.spark.Component",{renderTo:Ext.getBody(),component:"TwoFactorDialog",props:{className:"ftrack-spark-root",messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},session:FT.spark.getSharedSession(),closable:false,onError:Ext.bind(function(){FT.i18n("Failed to activate two-factor authentication")},this),onClose:Ext.bind(function(){if(a){b.destroy()}else{FT.notifyError(FT.i18n("Two-factor authentication is enforced and must be enabled."))}},this),onActivated:Ext.bind(function(){a=true;if(c){var d=c.dashboardManager;if(d&&d.getCurrentDashboard()){d.getCurrentDashboard().reloadWidgets()}}},this)}})}});Ext.define("FT.app.TopMenu",{extend:"FT.app.base.TopMenu",defaults:{scale:"large",height:46},initComponent:function(){this.callParent();this.addExpiryButton()},addExpiryButton:function(){var a=FT.Settings.get("ftrack","requireBillingInfoBefore");if(!a){return}var b=this.items.findIndexBy(function(c){return c.rightAlign===true});this.expiryButton=Ext.create("FT.spark.Component",{component:"TrialExpiryButton",props:{messages:window.FT_I18N&&window.FT_I18N.MESSAGES||{},style:{marginTop:"7px"},variant:"dark",onClick:this.handleExpiryButtonClick,expiresAt:a}});this.insert(b,this.expiryButton)},handleExpiryButtonClick:function(){if(FT.isAuth("CONFIGURE")){FT.app.open("newconfigure",{view:"account"})}else{FT.notifyError(FT.i18n("Contact your ftrack Administrator to upgrade."))}}});

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.